diff options
-rw-r--r-- | cpp/include/Slice/CPlusPlusUtil.h | 11 | ||||
-rw-r--r-- | cpp/src/Slice/CPlusPlusUtil.cpp | 10 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 22 |
3 files changed, 23 insertions, 20 deletions
diff --git a/cpp/include/Slice/CPlusPlusUtil.h b/cpp/include/Slice/CPlusPlusUtil.h index a5d42eb91cd..9338bfe32cd 100644 --- a/cpp/include/Slice/CPlusPlusUtil.h +++ b/cpp/include/Slice/CPlusPlusUtil.h @@ -17,6 +17,7 @@ namespace Slice { SLICE_API extern FeatureProfile featureProfile; +SLICE_API extern std::string paramPrefix; struct ToIfdef { @@ -47,13 +48,13 @@ SLICE_API std::string fixKwd(const std::string&); SLICE_API void writeMarshalUnmarshalCode(::IceUtilInternal::Output&, const TypePtr&, bool, int, const std::string&, bool, const StringList& = StringList(), int = 0, const std::string& = "", bool = true); - -SLICE_API void writeMarshalCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool prepend, int = 0); -SLICE_API void writeUnmarshalCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool prepend, int = 0); -SLICE_API void writeAllocateCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool prepend, int = 0); + +SLICE_API void writeMarshalCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool, int = 0); +SLICE_API void writeUnmarshalCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool, int = 0); +SLICE_API void writeAllocateCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool, int = 0); SLICE_API std::string getEndArg(const TypePtr&, const StringList&, const std::string&); -SLICE_API void writeEndCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&); +SLICE_API void writeEndCode(::IceUtilInternal::Output&, const ParamDeclList&, const OperationPtr&, bool = false); SLICE_API std::string findMetaData(const StringList&, int = 0); SLICE_API bool inWstringModule(const SequencePtr&); diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp index e04291a02ee..95b34a2ec66 100644 --- a/cpp/src/Slice/CPlusPlusUtil.cpp +++ b/cpp/src/Slice/CPlusPlusUtil.cpp @@ -297,7 +297,7 @@ writeParamEndCode(Output& out, const TypePtr& type, bool optional, const string& void writeMarshalUnmarshalParams(Output& out, const ParamDeclList& params, const OperationPtr& op, bool marshal, bool prepend, int typeCtx) { - string prefix = prepend ? "__p_" : ""; + string prefix = prepend ? paramPrefix : ""; // // Marshal non optional parameters. @@ -361,6 +361,7 @@ writeMarshalUnmarshalParams(Output& out, const ParamDeclList& params, const Oper } Slice::FeatureProfile Slice::featureProfile = Slice::Ice; +string Slice::paramPrefix = "__p_"; char Slice::ToIfdef::operator()(char c) @@ -948,7 +949,7 @@ Slice::writeUnmarshalCode(Output& out, const ParamDeclList& params, const Operat void Slice::writeAllocateCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend, int typeCtx) { - string prefix = prepend ? "__p_" : ""; + string prefix = prepend ? paramPrefix : ""; for(ParamDeclList::const_iterator p = params.begin(); p != params.end(); ++p) { writeParamAllocateCode(out, (*p)->type(), (*p)->optional(), fixKwd(prefix + (*p)->name()), (*p)->getMetaData(), @@ -1004,11 +1005,12 @@ Slice::getEndArg(const TypePtr& type, const StringList& metaData, const string& } void -Slice::writeEndCode(Output& out, const ParamDeclList& params, const OperationPtr& op) +Slice::writeEndCode(Output& out, const ParamDeclList& params, const OperationPtr& op, bool prepend) { + string prefix = prepend ? paramPrefix : ""; for(ParamDeclList::const_iterator p = params.begin(); p != params.end(); ++p) { - writeParamEndCode(out, (*p)->type(), (*p)->optional(), fixKwd((*p)->name()), (*p)->getMetaData()); + writeParamEndCode(out, (*p)->type(), (*p)->optional(), fixKwd(prefix + (*p)->name()), (*p)->getMetaData()); } if(op && op->returnType()) { diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 9e0e6b022da..02f1eb94d77 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -1730,7 +1730,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) for(ParamDeclList::const_iterator q = paramList.begin(); q != paramList.end(); ++q) { - string paramName = fixKwd((*q)->name()); + string paramName = fixKwd(paramPrefix + (*q)->name()); StringList metaData = (*q)->getMetaData(); string typeString; @@ -2075,7 +2075,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) C << nl << "try"; C << sb; C << nl<< "::IceInternal::BasicStream* __os = __og.startWriteParams(" << opFormatTypeToString(p) << ");"; - writeMarshalCode(C, inParams, 0, false, TypeContextInParam); + writeMarshalCode(C, inParams, 0, true, TypeContextInParam); if(p->sendsClasses(false)) { C << nl << "__os->writePendingObjects();"; @@ -2152,9 +2152,9 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) if(ret || !outParams.empty()) { - writeAllocateCode(C, ParamDeclList(), p, false, _useWstring); + writeAllocateCode(C, ParamDeclList(), p, true, _useWstring); C << nl << "::IceInternal::BasicStream* __is = __og.startReadParams();"; - writeUnmarshalCode(C, outParams, p, false); + writeUnmarshalCode(C, outParams, p, true); if(p->returnsClasses(false)) { C << nl << "__is->readPendingObjects();"; @@ -2189,7 +2189,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) else { C << nl << "::IceInternal::BasicStream* __os = __result->startWriteParams(" << opFormatTypeToString(p) <<");"; - writeMarshalCode(C, inParams, 0, false, TypeContextInParam); + writeMarshalCode(C, inParams, 0, true, TypeContextInParam); if(p->sendsClasses(false)) { C << nl << "__os->writePendingObjects();"; @@ -2268,7 +2268,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) C << sb; C << nl << clScope << clName << "Prx __proxy = " << clScope << clName << "Prx::uncheckedCast(__result->getProxy());"; - writeAllocateCode(C, outParams, p, false, _useWstring | TypeContextInParam | TypeContextAMICallPrivateEnd); + writeAllocateCode(C, outParams, p, true, _useWstring | TypeContextInParam | TypeContextAMICallPrivateEnd); C << nl << "try"; C << sb; C << nl; @@ -2289,7 +2289,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) } C << "__result" << epar << ';'; } - writeEndCode(C, outParams, p); + writeEndCode(C, outParams, p, true); C << eb; C << nl << "catch(const ::Ice::Exception& ex)"; C << sb; @@ -2352,7 +2352,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) // access violations errors with the test/Ice/slicing/objects test on VC9 // and Windows 64 bits when compiled with optimization (see bug 4400). // - writeAllocateCode(C, ParamDeclList(), p, false, _useWstring | TypeContextAMIEnd); + writeAllocateCode(C, ParamDeclList(), p, true, _useWstring | TypeContextAMIEnd); C << nl << "if(!__result->__wait())"; C << sb; C << nl << "try"; @@ -2386,7 +2386,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) if(ret || !outParams.empty()) { C << nl << "::IceInternal::BasicStream* __is = __result->__startReadParams();"; - writeUnmarshalCode(C, outParams, p, false, _useWstring | TypeContextAMIEnd); + writeUnmarshalCode(C, outParams, p, true, _useWstring | TypeContextAMIEnd); if(p->returnsClasses(false)) { C << nl << "__is->readPendingObjects();"; @@ -2449,7 +2449,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) if(ret || !outParams.empty()) { C << nl << "::IceInternal::BasicStream* __is = __result->__startReadParams();"; - writeUnmarshalCode(C, outParams, p, false, _useWstring | TypeContextAMIPrivateEnd); + writeUnmarshalCode(C, outParams, p, true, _useWstring | TypeContextAMIPrivateEnd); if(p->returnsClasses(false)) { C << nl << "__is->readPendingObjects();"; @@ -3408,7 +3408,7 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p) vector< string> outDecls; for(ParamDeclList::iterator q = paramList.begin(); q != paramList.end(); ++q) { - string paramName = fixKwd(string("__p_") + (*q)->name()); + string paramName = fixKwd(string(paramPrefix) + (*q)->name()); TypePtr type = (*q)->type(); bool isOutParam = (*q)->isOutParam(); string typeString; |