summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cpp/Gen.cpp
diff options
context:
space:
mode:
authorMichi Henning <michi@zeroc.com>2006-02-14 02:19:00 +0000
committerMichi Henning <michi@zeroc.com>2006-02-14 02:19:00 +0000
commit9095a7496f3db56f5a3b8a0d171f24fe641c2381 (patch)
treebb1a51eef101dcca4d9f356d292a1c80f5a4b31f /cpp/src/slice2cpp/Gen.cpp
parentAdded bindingC and bindingS to all target dependencies. (diff)
downloadice-9095a7496f3db56f5a3b8a0d171f24fe641c2381.tar.bz2
ice-9095a7496f3db56f5a3b8a0d171f24fe641c2381.tar.xz
ice-9095a7496f3db56f5a3b8a0d171f24fe641c2381.zip
Bug 853.
Diffstat (limited to 'cpp/src/slice2cpp/Gen.cpp')
-rw-r--r--cpp/src/slice2cpp/Gen.cpp30
1 files changed, 16 insertions, 14 deletions
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 94c99dc646c..96e87b88255 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -3539,7 +3539,7 @@ Slice::Gen::ObjectVisitor::emitGCClearCode(const TypePtr& p, const string& prefi
}
bool
-Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p, bool first)
+Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p)
{
DataMemberList allDataMembers = p->allDataMembers();
if(allDataMembers.empty())
@@ -3547,9 +3547,13 @@ Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p, boo
return false;
}
- if(!first)
+ ClassList bases = p->bases();
+ if(!bases.empty() && !bases.front()->isInterface())
{
- C << ",";
+ if(emitVirtualBaseInitializers(bases.front()))
+ {
+ C << ',';
+ }
}
string upcall = "(";
@@ -3566,13 +3570,6 @@ Slice::Gen::ObjectVisitor::emitVirtualBaseInitializers(const ClassDefPtr& p, boo
C << nl << fixKwd(p->name()) << upcall;
- ClassList bases = p->bases();
- ClassDefPtr base;
- if(!bases.empty() && !bases.front()->isInterface())
- {
- emitVirtualBaseInitializers(bases.front(), false);
- }
-
return true;
}
@@ -3601,14 +3598,19 @@ Slice::Gen::ObjectVisitor::emitOneShotConstructor(const ClassDefPtr& p)
ClassDefPtr base;
if(!bases.empty() && !bases.front()->isInterface())
{
- if(emitVirtualBaseInitializers(bases.front(), true) && !dataMembers.empty())
+ if(emitVirtualBaseInitializers(bases.front()))
{
- C << ',';
+ if(!dataMembers.empty())
+ {
+ C << ',';
+ }
}
}
- C << nl;
-
+ if(!dataMembers.empty())
+ {
+ C << nl;
+ }
for(q = dataMembers.begin(); q != dataMembers.end(); ++q)
{
if(q != dataMembers.begin())