summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rwxr-xr-xcpp/src/slice2cs/Gen.cpp32
1 files changed, 24 insertions, 8 deletions
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index b9d5bfaee64..9212e81f86f 100755
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -242,17 +242,16 @@ Slice::CsVisitor::writeDispatch(const ClassDefPtr& p)
//
for(q = inParams.begin(); q != inParams.end(); ++q)
{
+ string param = fixId(q->second);
string typeS = typeToString(q->first);
BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->first);
- if((builtin && builtin->kind() == Builtin::KindObject) || ClassDeclPtr::dynamicCast(q->first))
- {
- writeMarshalUnmarshalCode(_out, q->first, fixId(q->second), false, false, true);
- }
- else
+ bool isClass = (builtin && builtin->kind() == Builtin::KindObject)
+ || ClassDeclPtr::dynamicCast(q->first);
+ if(!isClass)
{
- _out << nl << typeS << ' ' << fixId(q->second) << ';';
- writeMarshalUnmarshalCode(_out, q->first, fixId(q->second), false, false, true);
+ _out << nl << typeS << ' ' << param << ';';
}
+ writeMarshalUnmarshalCode(_out, q->first, param, false, false, true);
}
if(op->sendsClasses())
{
@@ -364,7 +363,13 @@ Slice::CsVisitor::writeDispatch(const ClassDefPtr& p)
//
for(q = inParams.begin(); q != inParams.end(); ++q)
{
- _out << nl << typeToString(q->first) << ' ' << fixId(q->second) << ';';
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->first);
+ bool isClass = (builtin && builtin->kind() == Builtin::KindObject)
+ || ClassDeclPtr::dynamicCast(q->first);
+ if(!isClass)
+ {
+ _out << nl << typeToString(q->first) << ' ' << fixId(q->second) << ';';
+ }
writeMarshalUnmarshalCode(_out, q->first, fixId(q->second), false, false, true);
}
if(op->sendsClasses())
@@ -383,7 +388,18 @@ Slice::CsVisitor::writeDispatch(const ClassDefPtr& p)
_out << nl << "__obj." << opName << (amd ? "_async(__cb, " : "(");
for(q = inParams.begin(); q != inParams.end(); ++q)
{
+ BuiltinPtr builtin = BuiltinPtr::dynamicCast(q->first);
+ bool isClass = (builtin && builtin->kind() == Builtin::KindObject)
+ || ClassDeclPtr::dynamicCast(q->first);
+ if(isClass)
+ {
+ _out << "(" << typeToString(q->first) << ")";
+ }
_out << fixId(q->second);
+ if(isClass)
+ {
+ _out << "_PP.value";
+ }
_out << ", ";
}
_out << "__current);";