diff options
author | Michi Henning <michi@zeroc.com> | 2006-02-14 02:19:00 +0000 |
---|---|---|
committer | Michi Henning <michi@zeroc.com> | 2006-02-14 02:19:00 +0000 |
commit | 9095a7496f3db56f5a3b8a0d171f24fe641c2381 (patch) | |
tree | bb1a51eef101dcca4d9f356d292a1c80f5a4b31f /cpp/src/slice2cpp/Gen.cpp | |
parent | Added bindingC and bindingS to all target dependencies. (diff) | |
download | ice-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.cpp | 30 |
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()) |