diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-10-08 15:03:46 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-10-08 15:03:46 +0200 |
commit | d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae (patch) | |
tree | 7abffd29e98ff112cec85b658fab404961f8306a /cpp/src/slice2cpp/Gen.cpp | |
parent | FreeBSD port (diff) | |
parent | Win32 fixes (diff) | |
download | ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.tar.bz2 ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.tar.xz ice-d36ec7c740d5dfaa8e4ce2a2df6c9cb0818f01ae.zip |
Merge branch 'mx' into encoding11
Conflicts:
cpp/demo/Freeze/backup/.depend
cpp/demo/Freeze/backup/.depend.mak
cpp/demo/Freeze/bench/.depend
cpp/demo/Freeze/bench/.depend.mak
cpp/demo/Freeze/casino/.depend
cpp/demo/Freeze/casino/.depend.mak
cpp/demo/Freeze/customEvictor/.depend
cpp/demo/Freeze/customEvictor/.depend.mak
cpp/demo/Freeze/library/.depend
cpp/demo/Freeze/library/.depend.mak
cpp/demo/Freeze/phonebook/.depend
cpp/demo/Freeze/phonebook/.depend.mak
cpp/demo/Freeze/transform/.depend
cpp/demo/Freeze/transform/.depend.mak
cpp/demo/Glacier2/callback/.depend
cpp/demo/Glacier2/callback/.depend.mak
cpp/demo/Glacier2/chat/.depend
cpp/demo/Glacier2/chat/.depend.mak
cpp/demo/Ice/async/.depend
cpp/demo/Ice/async/.depend.mak
cpp/demo/Ice/bidir/.depend
cpp/demo/Ice/bidir/.depend.mak
cpp/demo/Ice/callback/.depend
cpp/demo/Ice/callback/.depend.mak
cpp/demo/Ice/converter/.depend
cpp/demo/Ice/converter/.depend.mak
cpp/demo/Ice/hello/.depend
cpp/demo/Ice/hello/.depend.mak
cpp/demo/Ice/interleaved/.depend
cpp/demo/Ice/interleaved/.depend.mak
cpp/demo/Ice/invoke/.depend
cpp/demo/Ice/invoke/.depend.mak
cpp/demo/Ice/latency/.depend
cpp/demo/Ice/latency/.depend.mak
cpp/demo/Ice/minimal/.depend
cpp/demo/Ice/minimal/.depend.mak
cpp/demo/Ice/multicast/.depend
cpp/demo/Ice/multicast/.depend.mak
cpp/demo/Ice/nested/.depend
cpp/demo/Ice/nested/.depend.mak
cpp/demo/Ice/nrvo/.depend
cpp/demo/Ice/nrvo/.depend.mak
cpp/demo/Ice/plugin/.depend
cpp/demo/Ice/plugin/.depend.mak
cpp/demo/Ice/session/.depend
cpp/demo/Ice/session/.depend.mak
cpp/demo/Ice/throughput/.depend
cpp/demo/Ice/throughput/.depend.mak
cpp/demo/Ice/value/.depend
cpp/demo/Ice/value/.depend.mak
cpp/demo/IceBox/hello/.depend
cpp/demo/IceBox/hello/.depend.mak
cpp/demo/IceGrid/allocate/.depend
cpp/demo/IceGrid/allocate/.depend.mak
cpp/demo/IceGrid/icebox/.depend
cpp/demo/IceGrid/icebox/.depend.mak
cpp/demo/IceGrid/replication/.depend
cpp/demo/IceGrid/replication/.depend.mak
cpp/demo/IceGrid/secure/.depend
cpp/demo/IceGrid/secure/.depend.mak
cpp/demo/IceGrid/sessionActivation/.depend
cpp/demo/IceGrid/sessionActivation/.depend.mak
cpp/demo/IceGrid/simple/.depend
cpp/demo/IceGrid/simple/.depend.mak
cpp/demo/IceStorm/clock/.depend
cpp/demo/IceStorm/clock/.depend.mak
cpp/demo/IceStorm/counter/.depend
cpp/demo/IceStorm/counter/.depend.mak
cpp/demo/IceStorm/replicated/.depend
cpp/demo/IceStorm/replicated/.depend.mak
cpp/demo/IceStorm/replicated2/.depend
cpp/demo/IceStorm/replicated2/.depend.mak
cpp/demo/book/evictor_filesystem/.depend
cpp/demo/book/evictor_filesystem/.depend.mak
cpp/demo/book/lifecycle/.depend
cpp/demo/book/lifecycle/.depend.mak
cpp/demo/book/map_filesystem/.depend
cpp/demo/book/map_filesystem/.depend.mak
cpp/demo/book/printer/.depend
cpp/demo/book/printer/.depend.mak
cpp/demo/book/simple_filesystem/.depend
cpp/demo/book/simple_filesystem/.depend.mak
cpp/include/Ice/Outgoing.h
cpp/include/Ice/OutgoingAsync.h
cpp/include/Ice/StreamTraits.h
cpp/src/Freeze/.depend
cpp/src/Freeze/.depend.mak
cpp/src/FreezeScript/.depend
cpp/src/FreezeScript/.depend.mak
cpp/src/Glacier2/.depend
cpp/src/Glacier2/.depend.mak
cpp/src/Glacier2Lib/.depend
cpp/src/Glacier2Lib/.depend.mak
cpp/src/Ice/.depend
cpp/src/Ice/.depend.mak
cpp/src/IceBox/.depend
cpp/src/IceBox/.depend.mak
cpp/src/IceDB/.depend
cpp/src/IceDB/.depend.mak
cpp/src/IceGrid/.depend
cpp/src/IceGrid/.depend.mak
cpp/src/IceGrid/FreezeDB/.depend
cpp/src/IceGrid/FreezeDB/.depend.mak
cpp/src/IceGrid/ServerCache.h
cpp/src/IceGrid/ServerI.h
cpp/src/IceGridLib/.depend
cpp/src/IceGridLib/.depend.mak
cpp/src/IcePatch2/.depend
cpp/src/IcePatch2/.depend.mak
cpp/src/IcePatch2Lib/.depend
cpp/src/IcePatch2Lib/.depend.mak
cpp/src/IceSSL/.depend
cpp/src/IceSSL/.depend.mak
cpp/src/IceStorm/.depend
cpp/src/IceStorm/.depend.mak
cpp/src/IceStorm/FreezeDB/.depend
cpp/src/IceStorm/FreezeDB/.depend.mak
cpp/src/IceStormLib/.depend
cpp/src/IceStormLib/.depend.mak
cpp/src/slice2cpp/Gen.cpp
cpp/test/Freeze/complex/.depend
cpp/test/Freeze/complex/.depend.mak
cpp/test/Freeze/dbmap/.depend
cpp/test/Freeze/dbmap/.depend.mak
cpp/test/Freeze/evictor/.depend
cpp/test/Freeze/evictor/.depend.mak
cpp/test/Freeze/fileLock/.depend
cpp/test/Freeze/fileLock/.depend.mak
cpp/test/FreezeScript/dbmap/.depend
cpp/test/FreezeScript/dbmap/.depend.mak
cpp/test/FreezeScript/evictor/.depend
cpp/test/FreezeScript/evictor/.depend.mak
cpp/test/Glacier2/attack/.depend
cpp/test/Glacier2/attack/.depend.mak
cpp/test/Glacier2/dynamicFiltering/.depend
cpp/test/Glacier2/dynamicFiltering/.depend.mak
cpp/test/Glacier2/override/.depend
cpp/test/Glacier2/override/.depend.mak
cpp/test/Glacier2/router/.depend
cpp/test/Glacier2/router/.depend.mak
cpp/test/Glacier2/sessionControl/.depend
cpp/test/Glacier2/sessionControl/.depend.mak
cpp/test/Glacier2/sessionHelper/.depend
cpp/test/Glacier2/sessionHelper/.depend.mak
cpp/test/Glacier2/ssl/.depend
cpp/test/Glacier2/ssl/.depend.mak
cpp/test/Glacier2/staticFiltering/.depend
cpp/test/Glacier2/staticFiltering/.depend.mak
cpp/test/Ice/adapterDeactivation/.depend
cpp/test/Ice/adapterDeactivation/.depend.mak
cpp/test/Ice/ami/.depend
cpp/test/Ice/ami/.depend.mak
cpp/test/Ice/background/.depend
cpp/test/Ice/background/.depend.mak
cpp/test/Ice/binding/.depend
cpp/test/Ice/binding/.depend.mak
cpp/test/Ice/checksum/.depend
cpp/test/Ice/checksum/.depend.mak
cpp/test/Ice/checksum/server/.depend
cpp/test/Ice/checksum/server/.depend.mak
cpp/test/Ice/custom/.depend
cpp/test/Ice/custom/.depend.mak
cpp/test/Ice/defaultServant/.depend
cpp/test/Ice/defaultServant/.depend.mak
cpp/test/Ice/defaultValue/.depend
cpp/test/Ice/defaultValue/.depend.mak
cpp/test/Ice/dispatcher/.depend
cpp/test/Ice/dispatcher/.depend.mak
cpp/test/Ice/exceptions/.depend
cpp/test/Ice/exceptions/.depend.mak
cpp/test/Ice/facets/.depend
cpp/test/Ice/facets/.depend.mak
cpp/test/Ice/faultTolerance/.depend
cpp/test/Ice/faultTolerance/.depend.mak
cpp/test/Ice/gc/.depend
cpp/test/Ice/gc/.depend.mak
cpp/test/Ice/hash/.depend
cpp/test/Ice/hash/.depend.mak
cpp/test/Ice/hold/.depend
cpp/test/Ice/hold/.depend.mak
cpp/test/Ice/info/.depend
cpp/test/Ice/info/.depend.mak
cpp/test/Ice/inheritance/.depend
cpp/test/Ice/inheritance/.depend.mak
cpp/test/Ice/interceptor/.depend
cpp/test/Ice/interceptor/.depend.mak
cpp/test/Ice/invoke/.depend
cpp/test/Ice/invoke/.depend.mak
cpp/test/Ice/location/.depend
cpp/test/Ice/location/.depend.mak
cpp/test/Ice/objects/.depend
cpp/test/Ice/objects/.depend.mak
cpp/test/Ice/operations/.depend
cpp/test/Ice/operations/.depend.mak
cpp/test/Ice/plugin/.depend
cpp/test/Ice/plugin/.depend.mak
cpp/test/Ice/properties/.depend
cpp/test/Ice/properties/.depend.mak
cpp/test/Ice/proxy/.depend
cpp/test/Ice/proxy/.depend.mak
cpp/test/Ice/retry/.depend
cpp/test/Ice/retry/.depend.mak
cpp/test/Ice/servantLocator/.depend
cpp/test/Ice/servantLocator/.depend.mak
cpp/test/Ice/slicing/exceptions/.depend
cpp/test/Ice/slicing/exceptions/.depend.mak
cpp/test/Ice/slicing/objects/.depend
cpp/test/Ice/slicing/objects/.depend.mak
cpp/test/Ice/stream/.depend
cpp/test/Ice/stream/.depend.mak
cpp/test/Ice/stringConverter/.depend
cpp/test/Ice/stringConverter/.depend.mak
cpp/test/Ice/threadPoolPriority/.depend
cpp/test/Ice/threadPoolPriority/.depend.mak
cpp/test/Ice/timeout/.depend
cpp/test/Ice/timeout/.depend.mak
cpp/test/Ice/udp/.depend
cpp/test/Ice/udp/.depend.mak
cpp/test/IceBox/configuration/.depend
cpp/test/IceBox/configuration/.depend.mak
cpp/test/IceGrid/activation/.depend
cpp/test/IceGrid/activation/.depend.mak
cpp/test/IceGrid/admin/.depend
cpp/test/IceGrid/admin/.depend.mak
cpp/test/IceGrid/allocation/.depend
cpp/test/IceGrid/allocation/.depend.mak
cpp/test/IceGrid/deployer/.depend
cpp/test/IceGrid/deployer/.depend.mak
cpp/test/IceGrid/distribution/.depend
cpp/test/IceGrid/distribution/.depend.mak
cpp/test/IceGrid/replicaGroup/.depend
cpp/test/IceGrid/replicaGroup/.depend.mak
cpp/test/IceGrid/replication/.depend
cpp/test/IceGrid/replication/.depend.mak
cpp/test/IceGrid/session/.depend
cpp/test/IceGrid/session/.depend.mak
cpp/test/IceGrid/simple/.depend
cpp/test/IceGrid/simple/.depend.mak
cpp/test/IceGrid/update/.depend
cpp/test/IceGrid/update/.depend.mak
cpp/test/IceSSL/configuration/.depend
cpp/test/IceSSL/configuration/.depend.mak
cpp/test/IceStorm/federation/.depend
cpp/test/IceStorm/federation/.depend.mak
cpp/test/IceStorm/federation2/.depend
cpp/test/IceStorm/federation2/.depend.mak
cpp/test/IceStorm/rep1/.depend
cpp/test/IceStorm/rep1/.depend.mak
cpp/test/IceStorm/repgrid/.depend
cpp/test/IceStorm/repgrid/.depend.mak
cpp/test/IceStorm/repstress/.depend
cpp/test/IceStorm/repstress/.depend.mak
cpp/test/IceStorm/single/.depend
cpp/test/IceStorm/single/.depend.mak
cpp/test/IceStorm/stress/.depend
cpp/test/IceStorm/stress/.depend.mak
cpp/test/Slice/keyword/.depend
cpp/test/Slice/keyword/.depend.mak
cpp/test/Slice/parser/.depend
cpp/test/Slice/parser/.depend.mak
cpp/test/Slice/structure/.depend
cpp/test/Slice/structure/.depend.mak
py/modules/IcePy/.depend
py/modules/IcePy/.depend.mak
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 64 |
1 files changed, 32 insertions, 32 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index bf4d9b4c595..72ac920e597 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -352,20 +352,15 @@ Slice::Gen::generate(const UnitPtr& p) C << _base << "." << _headerExtension << ">"; - H << "\n#include <Ice/LocalObjectF.h>"; H << "\n#include <Ice/ProxyF.h>"; H << "\n#include <Ice/ObjectF.h>"; H << "\n#include <Ice/Exception.h>"; H << "\n#include <Ice/LocalObject.h>"; H << "\n#include <Ice/StreamHelpers.h>"; - if(p->usesProxies()) - { - H << "\n#include <Ice/Proxy.h>"; - } - if(p->hasNonLocalClassDefs()) { + H << "\n#include <Ice/Proxy.h>"; H << "\n#include <Ice/Object.h>"; H << "\n#include <Ice/Outgoing.h>"; H << "\n#include <Ice/OutgoingAsync.h>"; @@ -379,17 +374,12 @@ Slice::Gen::generate(const UnitPtr& p) C << "\n#include <Ice/LocalException.h>"; C << "\n#include <Ice/ObjectFactory.h>"; } - else if(p->hasNonLocalClassDecls()) - { - - H << "\n#include <Ice/Object.h>"; - } if(p->hasNonLocalDataOnlyClasses() || p->hasNonLocalExceptions()) { H << "\n#include <Ice/FactoryTableInit.h>"; } - + H << "\n#include <IceUtil/ScopedArray.h>"; H << "\n#include <IceUtil/Optional.h>"; @@ -1001,14 +991,14 @@ Slice::Gen::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p) // C << sp << nl << "void" << nl << scoped.substr(2) << "::__write(const ::Ice::OutputStreamPtr&) const"; C << sb; - C << nl << "Ice::MarshalException ex(__FILE__, __LINE__);"; + C << nl << "::Ice::MarshalException ex(__FILE__, __LINE__);"; C << nl << "ex.reason = \"exception " << scoped.substr(2) << " was not generated with stream support\";"; C << nl << "throw ex;"; C << eb; C << sp << nl << "void" << nl << scoped.substr(2) << "::__read(const ::Ice::InputStreamPtr&)"; C << sb; - C << nl << "Ice::MarshalException ex(__FILE__, __LINE__);"; + C << nl << "::Ice::MarshalException ex(__FILE__, __LINE__);"; C << nl << "ex.reason = \"exception " << scoped .substr(2)<< " was not generated with stream support\";"; C << nl << "throw ex;"; C << eb; @@ -2181,6 +2171,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) C << sp << nl << retS << nl << "IceProxy" << scoped << spar << paramsDecl << "const ::Ice::Context* __ctx" << epar; C << sb; + C << nl << "::IceInternal::InvocationObserver __observer(this, " << p->flattenedScope() << p->name() + << "_name, __ctx);"; C << nl << "int __cnt = 0;"; C << nl << "while(true)"; C << sb; @@ -2200,7 +2192,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) { C << "return "; } - C << "__del->" << fixKwd(name) << spar << args << "__ctx" << epar << ';'; + C << "__del->" << fixKwd(name) << spar << args << "__ctx" << "__observer" << epar << ';'; if(!ret) { C << nl << "return;"; @@ -2210,16 +2202,16 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) C << sb; if(p->mode() == Operation::Idempotent || p->mode() == Operation::Nonmutating) { - C << nl << "__handleExceptionWrapperRelaxed(__delBase, __ex, true, __cnt);"; + C << nl << "__handleExceptionWrapperRelaxed(__delBase, __ex, true, __cnt, __observer);"; } else { - C << nl << "__handleExceptionWrapper(__delBase, __ex);"; + C << nl << "__handleExceptionWrapper(__delBase, __ex, __observer);"; } C << eb; C << nl << "catch(const ::Ice::LocalException& __ex)"; C << sb; - C << nl << "__handleException(__delBase, __ex, true, __cnt);"; + C << nl << "__handleException(__delBase, __ex, true, __cnt, __observer);"; C << eb; C << eb; C << eb; @@ -2622,6 +2614,7 @@ Slice::Gen::DelegateVisitor::visitOperation(const OperationPtr& p) } params.push_back("const ::Ice::Context*"); + params.push_back("::IceInternal::InvocationObserver&"); H << sp << nl << "virtual " << retS << ' ' << name << spar << params << epar << " = 0;"; } @@ -2763,7 +2756,9 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p) } params.push_back("const ::Ice::Context*"); + params.push_back("::IceInternal::InvocationObserver&"); paramsDecl.push_back("const ::Ice::Context* __context"); + paramsDecl.push_back("::IceInternal::InvocationObserver& __observer"); string flatName = p->flattenedScope() + p->name() + "_name"; @@ -2771,7 +2766,7 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p) C << sp << nl << retS << nl << "IceDelegateM" << scoped << spar << paramsDecl << epar; C << sb; C << nl << "::IceInternal::Outgoing __og(__handler.get(), " << flatName << ", " - << operationModeToString(p->sendMode()) << ", __context);"; + << operationModeToString(p->sendMode()) << ", __context, __observer);"; if(inParams.empty()) { C << nl << "__og.writeEmptyParams();"; @@ -3025,6 +3020,9 @@ Slice::Gen::DelegateDVisitor::visitOperation(const OperationPtr& p) } params.push_back("const ::Ice::Context*"); + params.push_back("::IceInternal::InvocationObserver&"); + paramsDecl.push_back("const ::Ice::Context* __context"); + paramsDecl.push_back("::IceInternal::InvocationObserver&"); args.push_back("__current"); argMembers.push_back("_current"); @@ -3049,8 +3047,7 @@ Slice::Gen::DelegateDVisitor::visitOperation(const OperationPtr& p) } else { - C << sp << nl << retS << nl << "IceDelegateD" << scoped << spar << paramsDecl - << "const ::Ice::Context* __context" << epar; + C << sp << nl << retS << nl << "IceDelegateD" << scoped << spar << paramsDecl << epar; C << sb; C << nl << "class _DirectI : public ::IceInternal::Direct"; C << sb; @@ -3965,7 +3962,7 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) // C << sp << nl << "void" << nl << scoped.substr(2) << "::__write(const ::Ice::OutputStreamPtr&) const"; C << sb; - C << nl << "Ice::MarshalException ex(__FILE__, __LINE__);"; + C << nl << "::Ice::MarshalException ex(__FILE__, __LINE__);"; C << nl << "ex.reason = \"type " << scoped.substr(2) << " was not generated with stream support\";"; C << nl << "throw ex;"; C << eb; @@ -3973,7 +3970,7 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p) C << sp; C << nl << "void" << nl << scoped.substr(2) << "::__read(const ::Ice::InputStreamPtr&)"; C << sb; - C << nl << "Ice::MarshalException ex(__FILE__, __LINE__);"; + C << nl << "::Ice::MarshalException ex(__FILE__, __LINE__);"; C << nl << "ex.reason = \"type " << scoped.substr(2) << " was not generated with stream support\";"; C << nl << "throw ex;"; C << eb; @@ -6124,15 +6121,18 @@ Slice::Gen::StreamVisitor::visitStructStart(const StructPtr& p) void Slice::Gen::StreamVisitor::visitEnum(const EnumPtr& p) { - string scoped = fixKwd(p->scoped()); - H << nl << "template<>"; - H << nl << "struct StreamableTraits< " << scoped << ">"; - H << sb; - H << nl << "static const StreamHelperCategory helper = StreamHelperCategoryEnum;"; - H << nl << "static const int enumLimit = " << p->getEnumerators().size() << ";"; - H << nl << "static const int minWireSize = " << p->minWireSize() << ";"; - H << nl << "static const bool fixedLength = false;"; - H << eb << ";" << nl; + if(!p->isLocal()) + { + string scoped = fixKwd(p->scoped()); + H << nl << "template<>"; + H << nl << "struct StreamableTraits< " << scoped << ">"; + H << sb; + H << nl << "static const StreamHelperCategory helper = StreamHelperCategoryEnum;"; + H << nl << "static const int enumLimit = " << p->getEnumerators().size() << ";"; + H << nl << "static const int minWireSize = " << p->minWireSize() << ";"; + H << nl << "static const bool fixedLength = false;"; + H << eb << ";" << nl; + } } void |