diff options
author | Benoit Foucher <benoit@zeroc.com> | 2011-10-18 22:18:35 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2011-10-18 22:50:09 +0200 |
commit | 54a5e8d05528c379b1c3465b908c18fe5aa5d2b3 (patch) | |
tree | da218465a52a7eaf19c44d281fc3952e40f9f59b /cpp/src | |
parent | Fixed ICE-4722 - Bogus communicator initialization in Freeze map (diff) | |
download | ice-54a5e8d05528c379b1c3465b908c18fe5aa5d2b3.tar.bz2 ice-54a5e8d05528c379b1c3465b908c18fe5aa5d2b3.tar.xz ice-54a5e8d05528c379b1c3465b908c18fe5aa5d2b3.zip |
Fixed ICE-4721 - support for OS X clang
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/ConnectionI.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/Exception.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/IncomingAsync.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/LocalObject.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/Object.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/OutgoingAsync.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/Stream.cpp | 4 | ||||
-rw-r--r-- | cpp/src/IceGrid/DescriptorHelper.cpp | 20 | ||||
-rw-r--r-- | cpp/src/IceGrid/ReplicaCache.cpp | 2 | ||||
-rw-r--r-- | cpp/src/IceGrid/SessionI.h | 2 | ||||
-rw-r--r-- | cpp/src/IceSSL/Instance.cpp | 2 | ||||
-rw-r--r-- | cpp/src/IceSSL/InstanceF.h | 12 | ||||
-rw-r--r-- | cpp/src/IceSSL/TrustManager.cpp | 2 | ||||
-rw-r--r-- | cpp/src/IceSSL/TrustManagerF.h | 12 | ||||
-rw-r--r-- | cpp/src/IceSSL/Util.cpp | 2 | ||||
-rw-r--r-- | cpp/src/IceSSL/UtilF.h | 12 | ||||
-rw-r--r-- | cpp/src/Slice/CPlusPlusUtil.cpp | 4 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 121 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.h | 19 |
19 files changed, 67 insertions, 163 deletions
diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index 2d942ca02b7..34317d920ee 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -31,7 +31,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -Ice::LocalObject* IceInternal::upCast(ConnectionI* p) { return p; } +Ice::LocalObject* Ice::upCast(ConnectionI* p) { return p; } namespace { diff --git a/cpp/src/Ice/Exception.cpp b/cpp/src/Ice/Exception.cpp index d0572ff0323..a6b77505c5d 100644 --- a/cpp/src/Ice/Exception.cpp +++ b/cpp/src/Ice/Exception.cpp @@ -40,6 +40,12 @@ throwMemoryLimitException(const char* file, int line, size_t requested, size_t m throw Ice::MemoryLimitException(file, line, s.str()); } +void +throwMarshalException(const char* file, int line, const string& reason) +{ + throw Ice::MarshalException(file, line, reason); +} + } } diff --git a/cpp/src/Ice/IncomingAsync.cpp b/cpp/src/Ice/IncomingAsync.cpp index ca108ee37d4..91c0580e2fb 100644 --- a/cpp/src/Ice/IncomingAsync.cpp +++ b/cpp/src/Ice/IncomingAsync.cpp @@ -24,7 +24,7 @@ using namespace Ice; using namespace IceInternal; IceUtil::Shared* IceInternal::upCast(IncomingAsync* p) { return p; } -IceUtil::Shared* IceInternal::upCast(AMD_Object_ice_invoke* p) { return p; } +IceUtil::Shared* Ice::upCast(AMD_Object_ice_invoke* p) { return p; } namespace { diff --git a/cpp/src/Ice/LocalObject.cpp b/cpp/src/Ice/LocalObject.cpp index 77bee3d0317..ee74c0b259b 100644 --- a/cpp/src/Ice/LocalObject.cpp +++ b/cpp/src/Ice/LocalObject.cpp @@ -13,7 +13,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -IceUtil::Shared* IceInternal::upCast(LocalObject* obj) { return obj; } +IceUtil::Shared* Ice::upCast(LocalObject* obj) { return obj; } bool Ice::LocalObject::operator==(const LocalObject& r) const diff --git a/cpp/src/Ice/Object.cpp b/cpp/src/Ice/Object.cpp index fa7793ab7d1..9705ce98a86 100644 --- a/cpp/src/Ice/Object.cpp +++ b/cpp/src/Ice/Object.cpp @@ -19,7 +19,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -IceUtil::Shared* IceInternal::upCast(Object* p) { return p; } +IceUtil::Shared* Ice::upCast(Object* p) { return p; } bool Ice::Object::operator==(const Object& r) const diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp index 527d29cf570..d707321f150 100644 --- a/cpp/src/Ice/OutgoingAsync.cpp +++ b/cpp/src/Ice/OutgoingAsync.cpp @@ -30,7 +30,7 @@ using namespace std; using namespace Ice; using namespace IceInternal; -IceUtil::Shared* IceInternal::upCast(AsyncResult* p) { return p; } +IceUtil::Shared* Ice::upCast(AsyncResult* p) { return p; } IceUtil::Shared* IceInternal::upCast(OutgoingAsyncMessageCallback* p) { return p; } IceUtil::Shared* IceInternal::upCast(OutgoingAsync* p) { return p; } diff --git a/cpp/src/Ice/Stream.cpp b/cpp/src/Ice/Stream.cpp index 9924da01021..55f984df9b0 100644 --- a/cpp/src/Ice/Stream.cpp +++ b/cpp/src/Ice/Stream.cpp @@ -13,5 +13,5 @@ using namespace std; using namespace Ice; using namespace IceInternal; -IceUtil::Shared* IceInternal::upCast(InputStream* p) { return p; } -IceUtil::Shared* IceInternal::upCast(OutputStream* p) { return p; } +IceUtil::Shared* Ice::upCast(InputStream* p) { return p; } +IceUtil::Shared* Ice::upCast(OutputStream* p) { return p; } diff --git a/cpp/src/IceGrid/DescriptorHelper.cpp b/cpp/src/IceGrid/DescriptorHelper.cpp index 9126c2fc7b4..bdc04a91217 100644 --- a/cpp/src/IceGrid/DescriptorHelper.cpp +++ b/cpp/src/IceGrid/DescriptorHelper.cpp @@ -198,16 +198,6 @@ updateSeqElts(const Seq& seq, const Seq& update, const Ice::StringSeq& remove, G return result; } -template<typename Dict> Dict -getDictUpdatedElts(const Dict& ldict, const Dict& rdict) -{ -#if defined(_MSC_VER) && (_MSC_VER < 1300) - return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<Dict::mapped_type>()); -#else - return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<typename Dict::mapped_type>()); -#endif -} - template<typename EqFunc, typename Dict> Dict getDictUpdatedEltsWithEq(const Dict& ldict, const Dict& rdict, EqFunc eq) { @@ -223,6 +213,16 @@ getDictUpdatedEltsWithEq(const Dict& ldict, const Dict& rdict, EqFunc eq) return result; } +template<typename Dict> Dict +getDictUpdatedElts(const Dict& ldict, const Dict& rdict) +{ +#if defined(_MSC_VER) && (_MSC_VER < 1300) + return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<Dict::mapped_type>()); +#else + return getDictUpdatedEltsWithEq(ldict, rdict, equal_to<typename Dict::mapped_type>()); +#endif +} + template <typename Dict> Ice::StringSeq getDictRemovedElts(const Dict& ldict, const Dict& rdict) { diff --git a/cpp/src/IceGrid/ReplicaCache.cpp b/cpp/src/IceGrid/ReplicaCache.cpp index 53ad03eee3a..154853d2dce 100644 --- a/cpp/src/IceGrid/ReplicaCache.cpp +++ b/cpp/src/IceGrid/ReplicaCache.cpp @@ -40,7 +40,7 @@ ReplicaCache::add(const string& name, const ReplicaSessionIPtr& session) Lock sync(*this); ReplicaEntryPtr entry; - while(entry = getImpl(name)) + while((entry = getImpl(name))) { ReplicaSessionIPtr session = entry->getSession(); if(session->isDestroyed()) diff --git a/cpp/src/IceGrid/SessionI.h b/cpp/src/IceGrid/SessionI.h index 3c67e209fd9..f5c1b2ec04b 100644 --- a/cpp/src/IceGrid/SessionI.h +++ b/cpp/src/IceGrid/SessionI.h @@ -35,7 +35,7 @@ typedef IceUtil::Handle<Allocatable> AllocatablePtr; class SessionI; typedef IceUtil::Handle<SessionI> SessionIPtr; -class BaseSessionI : virtual Ice::Object, public IceUtil::Mutex +class BaseSessionI : virtual public Ice::Object, public IceUtil::Mutex { public: diff --git a/cpp/src/IceSSL/Instance.cpp b/cpp/src/IceSSL/Instance.cpp index 5eb4c58c731..585620c1c58 100644 --- a/cpp/src/IceSSL/Instance.cpp +++ b/cpp/src/IceSSL/Instance.cpp @@ -38,7 +38,7 @@ using namespace std; using namespace Ice; using namespace IceSSL; -IceUtil::Shared* IceInternal::upCast(IceSSL::Instance* p) { return p; } +IceUtil::Shared* IceSSL::upCast(IceSSL::Instance* p) { return p; } namespace { diff --git a/cpp/src/IceSSL/InstanceF.h b/cpp/src/IceSSL/InstanceF.h index d08a3a93168..1ab8894ddfc 100644 --- a/cpp/src/IceSSL/InstanceF.h +++ b/cpp/src/IceSSL/InstanceF.h @@ -18,19 +18,7 @@ namespace IceSSL { class Instance; - -} - -namespace IceInternal -{ - IceUtil::Shared* upCast(IceSSL::Instance*); - -} - -namespace IceSSL -{ - typedef IceInternal::Handle<Instance> InstancePtr; } diff --git a/cpp/src/IceSSL/TrustManager.cpp b/cpp/src/IceSSL/TrustManager.cpp index 0ec6e285135..c4549b95ce0 100644 --- a/cpp/src/IceSSL/TrustManager.cpp +++ b/cpp/src/IceSSL/TrustManager.cpp @@ -20,7 +20,7 @@ using namespace std; using namespace IceSSL; -IceUtil::Shared* IceInternal::upCast(IceSSL::TrustManager* p) { return p; } +IceUtil::Shared* IceSSL::upCast(IceSSL::TrustManager* p) { return p; } TrustManager::TrustManager(const Ice::CommunicatorPtr& communicator) : _communicator(communicator) diff --git a/cpp/src/IceSSL/TrustManagerF.h b/cpp/src/IceSSL/TrustManagerF.h index 346775cbb07..052f4658c47 100644 --- a/cpp/src/IceSSL/TrustManagerF.h +++ b/cpp/src/IceSSL/TrustManagerF.h @@ -18,19 +18,7 @@ namespace IceSSL { class TrustManager; - -} - -namespace IceInternal -{ - IceUtil::Shared* upCast(IceSSL::TrustManager*); - -} - -namespace IceSSL -{ - typedef IceInternal::Handle<TrustManager> TrustManagerPtr; } diff --git a/cpp/src/IceSSL/Util.cpp b/cpp/src/IceSSL/Util.cpp index fc7e19ceaca..63f6b441368 100644 --- a/cpp/src/IceSSL/Util.cpp +++ b/cpp/src/IceSSL/Util.cpp @@ -175,7 +175,7 @@ convertDH(unsigned char* p, int plen, unsigned char* g, int glen) return dh; } -IceUtil::Shared* IceInternal::upCast(IceSSL::DHParams* p) { return p; } +IceUtil::Shared* IceSSL::upCast(IceSSL::DHParams* p) { return p; } IceSSL::DHParams::DHParams() : _dh512(0), _dh1024(0), _dh2048(0), _dh4096(0) diff --git a/cpp/src/IceSSL/UtilF.h b/cpp/src/IceSSL/UtilF.h index 4c06e1fa625..3df329be3e0 100644 --- a/cpp/src/IceSSL/UtilF.h +++ b/cpp/src/IceSSL/UtilF.h @@ -21,19 +21,7 @@ namespace IceSSL { class DHParams; - -} - -namespace IceInternal -{ - IceUtil::Shared* upCast(IceSSL::DHParams*); - -} - -namespace IceSSL -{ - typedef IceInternal::Handle<DHParams> DHParamsPtr; } diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp index f0d6a514e75..0d5024d9d91 100644 --- a/cpp/src/Slice/CPlusPlusUtil.cpp +++ b/cpp/src/Slice/CPlusPlusUtil.cpp @@ -631,7 +631,7 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string& string scope = fixKwd(cl->scope()); if(marshal) { - out << nl << stream << deref << "write(::Ice::ObjectPtr(::IceInternal::upCast(" << fixedParam + out << nl << stream << deref << "write(::Ice::ObjectPtr(" << scope << "upCast(" << fixedParam << ".get())));"; } else @@ -649,7 +649,7 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string& string scope = fixKwd(px->_class()->scope()); if(marshal) { - out << nl << stream << deref << "write(::Ice::ObjectPrx(::IceInternal::upCast(" << fixedParam + out << nl << stream << deref << "write(::Ice::ObjectPrx(::IceProxy" << scope << "upCast(" << fixedParam << ".get())));"; } else diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index dfceb00e3d6..dc7b7333286 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -442,9 +442,6 @@ Slice::Gen::generate(const UnitPtr& p) ObjectDeclVisitor objectDeclVisitor(H, C, _dllExport); p->visit(&objectDeclVisitor, false); - IceInternalVisitor iceInternalVisitor(H, C, _dllExport); - p->visit(&iceInternalVisitor, false); - HandleVisitor handleVisitor(H, C, _dllExport, _stream); p->visit(&handleVisitor, false); @@ -1779,11 +1776,11 @@ Slice::Gen::TypesVisitor::visitEnum(const EnumPtr& p) } H << eb << ';'; + string scoped = fixKwd(p->scoped()); + string scope = fixKwd(p->scope()); + if(!p->isLocal()) { - string scoped = fixKwd(p->scoped()); - string scope = fixKwd(p->scope()); - size_t sz = enumerators.size(); assert(sz <= 0x7fffffff); // 64-bit enums are not supported @@ -1944,8 +1941,10 @@ Slice::Gen::ProxyDeclVisitor::visitClassDecl(const ClassDeclPtr& p) } string name = fixKwd(p->name()); + string scoped = fixKwd(p->scoped()); H << sp << nl << "class " << name << ';'; + H << nl << _dllExport << "::IceProxy::Ice::Object* upCast(::IceProxy" << scoped << "*);"; } Slice::Gen::ProxyVisitor::ProxyVisitor(Output& h, Output& c, const string& dllExport) : @@ -2008,6 +2007,7 @@ Slice::Gen::ProxyVisitor::visitClassDefStart(const ClassDefPtr& p) _useWstring = setUseWstring(p, _useWstringHist, _useWstring); string name = fixKwd(p->name()); + string scope = fixKwd(p->scope()); string scoped = fixKwd(p->scoped()); ClassList bases = p->bases(); @@ -2048,6 +2048,11 @@ Slice::Gen::ProxyVisitor::visitClassDefStart(const ClassDefPtr& p) C << nl << "#endif"; } + C << nl + << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ") + << "::IceProxy::Ice::Object* ::IceProxy" << scope << "upCast(::IceProxy" << scoped + << "* p) { return p; }"; + return true; } @@ -3691,10 +3696,22 @@ void Slice::Gen::ObjectDeclVisitor::visitClassDecl(const ClassDeclPtr& p) { string name = fixKwd(p->name()); + string scoped = fixKwd(p->scoped()); H << sp << nl << "class " << name << ';'; H << nl << "bool operator==(const " << name << "&, const " << name << "&);"; H << nl << "bool operator<(const " << name << "&, const " << name << "&);"; + if(!p->isLocal()) + { + H << nl << _dllExport << "::Ice::Object* upCast(" << scoped << "*);"; + H << nl << "typedef ::IceInternal::Handle< " << scoped << "> " << p->name() << "Ptr;"; + H << nl << "typedef ::IceInternal::ProxyHandle< ::IceProxy" << scoped << "> " << p->name() << "Prx;"; + } + else + { + H << nl << _dllExport << "::Ice::LocalObject* upCast(" << scoped << "*);"; + H << nl << "typedef ::IceInternal::Handle< " << scoped << "> " << p->name() << "Ptr;"; + } } void @@ -3741,6 +3758,7 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p) _useWstring = setUseWstring(p, _useWstringHist, _useWstring); string name = fixKwd(p->name()); + string scope = fixKwd(p->scope()); string scoped = fixKwd(p->scoped()); ClassList bases = p->bases(); ClassDefPtr base; @@ -3971,6 +3989,10 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p) { H << nl << "virtual ::Ice::ObjectPtr ice_clone() const;"; + C << sp << nl + << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ") + << "::Ice::Object* " << scope.substr(2) << "upCast(" << scoped << "* p) { return p; }"; + C << sp; C << nl << "::Ice::ObjectPtr"; C << nl << scoped.substr(2) << "::ice_clone() const"; @@ -4068,6 +4090,10 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p) C << eb; emitGCFunctions(p); + } else { + C << sp << nl + << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ") + << "::Ice::LocalObject* " << scope.substr(2) << "upCast(" << scoped << "* p) { return p; }"; } return true; @@ -4928,7 +4954,8 @@ Slice::Gen::ObjectVisitor::emitGCInsertCode(const TypePtr& p, const string& pref ClassDeclPtr decl = ClassDeclPtr::dynamicCast(p); if(decl) { - C << nl << "::IceInternal::upCast(" << prefix << name << ".get())->__addObject(_c);"; + string scope = fixKwd(decl->scope()); + C << nl << scope << "upCast(" << prefix << name << ".get())->__addObject(_c);"; } else { @@ -4991,9 +5018,10 @@ Slice::Gen::ObjectVisitor::emitGCClearCode(const TypePtr& p, const string& prefi ClassDeclPtr decl = ClassDeclPtr::dynamicCast(p); if(decl) { - C << nl << "if(" << "::IceInternal::upCast(" << prefix << name << ".get())->__usesClasses())"; + string scope = fixKwd(decl->scope()); + C << nl << "if(" << scope << "upCast(" << prefix << name << ".get())->__usesClasses())"; C << sb; - C << nl << "::IceInternal::upCast(" << prefix << name << ".get())->__decRefUnsafe();"; + C << nl << scope << "upCast(" << prefix << name << ".get())->__decRefUnsafe();"; C << nl << prefix << name << ".__clearHandleUnsafe();"; } @@ -5598,76 +5626,6 @@ Slice::Gen::AsyncCallbackTemplateVisitor::generateOperation(const OperationPtr& } } -Slice::Gen::IceInternalVisitor::IceInternalVisitor(Output& h, Output& c, const string& dllExport) : - H(h), C(c), _dllExport(dllExport) -{ -} - -bool -Slice::Gen::IceInternalVisitor::visitUnitStart(const UnitPtr& p) -{ - if(!p->hasClassDecls()) - { - return false; - } - - H << sp; - H << nl << "namespace IceInternal" << nl << '{'; - - return true; -} - -void -Slice::Gen::IceInternalVisitor::visitUnitEnd(const UnitPtr& p) -{ - H << sp; - H << nl << '}'; -} - -void -Slice::Gen::IceInternalVisitor::visitClassDecl(const ClassDeclPtr& p) -{ - string scoped = fixKwd(p->scoped()); - - H << sp; - - if(!p->isLocal()) - { - H << nl << _dllExport << "::Ice::Object* upCast(" << scoped << "*);"; - H << nl << _dllExport << "::IceProxy::Ice::Object* upCast(::IceProxy" << scoped << "*);"; - } - else - { - H << nl << _dllExport << "::Ice::LocalObject* upCast(" << scoped << "*);"; - } -} - -bool -Slice::Gen::IceInternalVisitor::visitClassDefStart(const ClassDefPtr& p) -{ - string scoped = fixKwd(p->scoped()); - - C << sp; - if(!p->isLocal()) - { - C << nl - << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ") - << "::Ice::Object* IceInternal::upCast(" << scoped << "* p) { return p; }"; - C << nl - << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ") - << "::IceProxy::Ice::Object* IceInternal::upCast(::IceProxy" << scoped - << "* p) { return p; }"; - } - else - { - C << nl - << (_dllExport.empty() ? "" : "ICE_DECLSPEC_EXPORT ") - << "::Ice::LocalObject* IceInternal::upCast(" << scoped << "* p) { return p; }"; - } - - return true; -} - Slice::Gen::HandleVisitor::HandleVisitor(Output& h, Output& c, const string& dllExport, bool stream) : H(h), C(c), _dllExport(dllExport), _stream(stream) { @@ -5702,13 +5660,8 @@ Slice::Gen::HandleVisitor::visitClassDecl(const ClassDeclPtr& p) string name = p->name(); string scoped = fixKwd(p->scoped()); - H << sp; - H << nl << "typedef ::IceInternal::Handle< " << scoped << "> " << name << "Ptr;"; - if(!p->isLocal()) { - H << nl << "typedef ::IceInternal::ProxyHandle< ::IceProxy" << scoped << "> " << name << "Prx;"; - H << sp; H << nl << _dllExport << "void __read(::IceInternal::BasicStream*, " << name << "Prx&);"; H << nl << _dllExport << "void __patch__" << name << "Ptr(void*, ::Ice::ObjectPtr&);"; diff --git a/cpp/src/slice2cpp/Gen.h b/cpp/src/slice2cpp/Gen.h index c9fda07af43..fff1ee30675 100644 --- a/cpp/src/slice2cpp/Gen.h +++ b/cpp/src/slice2cpp/Gen.h @@ -320,25 +320,6 @@ private: std::list<int> _useWstringHist; }; - class IceInternalVisitor : private ::IceUtil::noncopyable, public ParserVisitor - { - public: - - IceInternalVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); - - virtual bool visitUnitStart(const UnitPtr&); - virtual void visitUnitEnd(const UnitPtr&); - virtual void visitClassDecl(const ClassDeclPtr&); - virtual bool visitClassDefStart(const ClassDefPtr&); - - private: - - ::IceUtilInternal::Output& H; - ::IceUtilInternal::Output& C; - - std::string _dllExport; - }; - class HandleVisitor : private ::IceUtil::noncopyable, public ParserVisitor { public: |