summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cpp/Gen.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2009-09-21 16:15:07 +0200
committerJose <jose@zeroc.com>2009-09-21 16:15:07 +0200
commit43cbfc83ab7190102d4d893272e443ef774f00dc (patch)
treeb0bf90ab7cc1f1958de4077639cd8920caa4425d /cpp/src/slice2cpp/Gen.cpp
parentFixed bug 4118 - don't run IceGrid/admin as root (diff)
downloadice-43cbfc83ab7190102d4d893272e443ef774f00dc.tar.bz2
ice-43cbfc83ab7190102d4d893272e443ef774f00dc.tar.xz
ice-43cbfc83ab7190102d4d893272e443ef774f00dc.zip
2214 - Generated code for AMD callbacks.
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r--cpp/src/slice2cpp/Gen.cpp41
1 files changed, 11 insertions, 30 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 926abaaffab..c58b78e32c6 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -5509,15 +5509,13 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
if(cl->hasMetaData("amd") || p->hasMetaData("amd"))
{
H << sp << nl << "class " << _dllExport << classNameAMD << '_' << name
- << " : virtual public ::IceUtil::Shared";
+ << " : virtual public ::Ice::AMDCallback";
H << sb;
H.dec();
H << nl << "public:";
H.inc();
H << sp;
H << nl << "virtual void ice_response" << spar << paramsAMD << epar << " = 0;";
- H << nl << "virtual void ice_exception(const ::std::exception&) = 0;";
- H << nl << "virtual void ice_exception() = 0;";
H << eb << ';';
H << sp << nl << "typedef ::IceUtil::Handle< " << classScopedAMD << '_' << name << "> "
<< classNameAMD << '_' << name << "Ptr;";
@@ -5674,8 +5672,10 @@ Slice::Gen::AsyncImplVisitor::visitOperation(const OperationPtr& p)
H << sp;
H << nl << "virtual void ice_response(" << params << ");";
- H << nl << "virtual void ice_exception(const ::std::exception&);";
- H << nl << "virtual void ice_exception();";
+ if(!throws.empty())
+ {
+ H << nl << "virtual void ice_exception(const ::std::exception&);";
+ }
H << eb << ';';
C << sp << nl << "IceAsync" << classScopedAMD << '_' << name << "::" << classNameAMD << '_' << name
@@ -5716,28 +5716,21 @@ Slice::Gen::AsyncImplVisitor::visitOperation(const OperationPtr& p)
C << eb;
C << eb;
- C << sp << nl << "void" << nl << "IceAsync" << classScopedAMD << '_' << name
- << "::ice_exception(const ::std::exception& ex)";
- C << sb;
- if(throws.empty())
+ if(!throws.empty())
{
- C << nl << "if(__validateException(ex))";
+ C << sp << nl << "void" << nl << "IceAsync" << classScopedAMD << '_' << name
+ << "::ice_exception(const ::std::exception& ex)";
C << sb;
- C << nl << "__exception(ex);";
- C << eb;
- }
- else
- {
ExceptionList::const_iterator r;
for(r = throws.begin(); r != throws.end(); ++r)
{
C << nl;
if(r != throws.begin())
{
- C << "else ";
+ C << "else ";
}
C << "if(const " << fixKwd((*r)->scoped()) << "* __ex = dynamic_cast<const " << fixKwd((*r)->scoped())
- << "*>(&ex))";
+ << "*>(&ex))";
C << sb;
C << nl <<"if(__validateResponse(false))";
C << sb;
@@ -5748,22 +5741,10 @@ Slice::Gen::AsyncImplVisitor::visitOperation(const OperationPtr& p)
}
C << nl << "else";
C << sb;
- C << nl << "if(__validateException(ex))";
- C << sb;
- C << nl << "__exception(ex);";
+ C << nl << "ice_exception(ex);";
C << eb;
C << eb;
}
- C << eb;
-
- C << sp << nl << "void" << nl << "IceAsync" << classScopedAMD << '_' << name
- << "::ice_exception()";
- C << sb;
- C << nl << "if(__validateException())";
- C << sb;
- C << nl << "__exception();";
- C << eb;
- C << eb;
}
void