summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Slice/Parser.cpp32
-rw-r--r--cpp/src/slice2cpp/Gen.cpp264
-rw-r--r--cpp/src/slice2cpp/Gen.h42
-rw-r--r--cpp/src/slice2cpp/GenUtil.cpp7
-rw-r--r--cpp/src/slice2docbook/Gen.cpp16
-rw-r--r--cpp/src/slice2docbook/Gen.h8
6 files changed, 195 insertions, 174 deletions
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index 3730d84c3e9..a14094e513b 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -1023,9 +1023,11 @@ Slice::Module::visit(ParserVisitor* visitor)
return;
}
- visitor->visitModuleStart(this);
- Container::visit(visitor);
- visitor->visitModuleEnd(this);
+ if (visitor->visitModuleStart(this))
+ {
+ Container::visit(visitor);
+ visitor->visitModuleEnd(this);
+ }
}
Slice::Module::Module(const ContainerPtr& container, const string& name) :
@@ -1342,9 +1344,11 @@ Slice::ClassDef::visit(ParserVisitor* visitor)
return;
}
- visitor->visitClassDefStart(this);
- Container::visit(visitor);
- visitor->visitClassDefEnd(this);
+ if (visitor->visitClassDefStart(this))
+ {
+ Container::visit(visitor);
+ visitor->visitClassDefEnd(this);
+ }
}
Slice::ClassDef::ClassDef(const ContainerPtr& container, const string& name, bool local, bool intf,
@@ -1469,9 +1473,11 @@ Slice::Struct::visit(ParserVisitor* visitor)
return;
}
- visitor->visitStructStart(this);
- Container::visit(visitor);
- visitor->visitStructEnd(this);
+ if (visitor->visitStructStart(this))
+ {
+ Container::visit(visitor);
+ visitor->visitStructEnd(this);
+ }
}
Slice::Struct::Struct(const ContainerPtr& container, const string& name) :
@@ -1994,9 +2000,11 @@ Slice::Unit::destroy()
void
Slice::Unit::visit(ParserVisitor* visitor)
{
- visitor->visitUnitStart(this);
- Container::visit(visitor);
- visitor->visitUnitEnd(this);
+ if (visitor->visitUnitStart(this))
+ {
+ Container::visit(visitor);
+ visitor->visitUnitEnd(this);
+ }
}
BuiltinPtr
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 5215bf7f554..37d0491360f 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -253,30 +253,78 @@ Slice::Gen::TypesVisitor::TypesVisitor(Output& h, Output& c, const string& dllEx
{
}
-void
+bool
Slice::Gen::TypesVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasOtherConstructedTypes())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::TypesVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasOtherConstructedTypes())
+ H << sp;
+ H << nl << '}';
+}
+
+bool
+Slice::Gen::TypesVisitor::visitStructStart(const StructPtr& p)
+{
+ string name = p->name();
+
+ H << sp;
+ H << nl << "struct" << _dllExport << ' ' << name;
+ H << sb;
+
+ return true;
+}
+
+void
+Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
+{
+ string name = p->name();
+ string scoped = p->scoped();
+
+ H << sp;
+ H << nl << "void __write(::IceInternal::Stream*) const;"; // NOT virtual!
+ H << nl << "void __read(::IceInternal::Stream*);"; // NOT virtual!
+ H << eb << ';';
+
+ TypeStringList memberList;
+ DataMemberList dataMembers = p->dataMembers();
+ DataMemberList::const_iterator q;
+ for (q = dataMembers.begin(); q != dataMembers.end(); ++q)
{
- return;
+ memberList.push_back(make_pair((*q)->type(), (*q)->name()));
}
+ C << sp;
+ C << nl << "void" << nl << scoped.substr(2) << "::__write(::IceInternal::Stream* __os) const";
+ C << sb;
+ writeMarshalCode(C, memberList, 0);
+ C << eb;
+ C << sp;
+ C << nl << "void" << nl << scoped.substr(2) << "::__read(::IceInternal::Stream* __is)";
+ C << sb;
+ writeUnmarshalCode(C, memberList, 0);
+ C << eb;
+}
+void
+Slice::Gen::TypesVisitor::visitDataMember(const DataMemberPtr& p)
+{
+ string name = p->name();
+ string s = typeToString(p->type());
H << sp;
- H << nl << '}';
+ H << nl << s << ' ' << name << ';';
}
void
@@ -494,52 +542,46 @@ Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& h, Output& c, const strin
{
}
-void
+bool
Slice::Gen::ProxyDeclVisitor::visitUnitStart(const UnitPtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
H << sp;
H << nl << "namespace IceProxy" << nl << '{';
+
+ return true;
}
void
Slice::Gen::ProxyDeclVisitor::visitUnitEnd(const UnitPtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::ProxyDeclVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::ProxyDeclVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
@@ -563,62 +605,56 @@ Slice::Gen::ProxyVisitor::ProxyVisitor(Output& h, Output& c, const string& dllEx
{
}
-void
+bool
Slice::Gen::ProxyVisitor::visitUnitStart(const UnitPtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
H << sp;
H << nl << "namespace IceProxy" << nl << '{';
+
+ return true;
}
void
Slice::Gen::ProxyVisitor::visitUnitEnd(const UnitPtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::ProxyVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::ProxyVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::ProxyVisitor::visitClassDefStart(const ClassDefPtr& p)
{
if (p->isLocal())
{
- return;
+ return false;
}
string name = p->name();
@@ -657,16 +693,13 @@ Slice::Gen::ProxyVisitor::visitClassDefStart(const ClassDefPtr& p)
C << sb;
C << nl << "throw " << scoped << "PrxE(this);";
C << eb;
+
+ return true;
}
void
Slice::Gen::ProxyVisitor::visitClassDefEnd(const ClassDefPtr& p)
{
- if (p->isLocal())
- {
- return;
- }
-
string scoped = p->scoped();
H.dec();
@@ -687,13 +720,6 @@ Slice::Gen::ProxyVisitor::visitClassDefEnd(const ClassDefPtr& p)
void
Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
{
- ContainerPtr container = p->container();
- ClassDefPtr cl = ClassDefPtr::dynamicCast(container);
- if (cl->isLocal())
- {
- return;
- }
-
string name = p->name();
string scoped = p->scoped();
string scope = p->scope();
@@ -800,62 +826,56 @@ Slice::Gen::DelegateVisitor::DelegateVisitor(Output& h, Output& c, const string&
{
}
-void
+bool
Slice::Gen::DelegateVisitor::visitUnitStart(const UnitPtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
H << sp;
H << nl << "namespace IceDelegate" << nl << '{';
+
+ return true;
}
void
Slice::Gen::DelegateVisitor::visitUnitEnd(const UnitPtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::DelegateVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::DelegateVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::DelegateVisitor::visitClassDefStart(const ClassDefPtr& p)
{
if (p->isLocal())
{
- return;
+ return false;
}
string name = p->name();
@@ -885,29 +905,19 @@ Slice::Gen::DelegateVisitor::visitClassDefStart(const ClassDefPtr& p)
H.dec();
H << nl << "public: ";
H.inc();
+
+ return true;
}
void
Slice::Gen::DelegateVisitor::visitClassDefEnd(const ClassDefPtr& p)
{
- if (p->isLocal())
- {
- return;
- }
-
H << eb << ';';
}
void
Slice::Gen::DelegateVisitor::visitOperation(const OperationPtr& p)
{
- ContainerPtr container = p->container();
- ClassDefPtr cl = ClassDefPtr::dynamicCast(container);
- if (cl->isLocal())
- {
- return;
- }
-
string name = p->name();
TypePtr ret = p->returnType();
@@ -960,62 +970,56 @@ Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& h, Output& c, const strin
{
}
-void
+bool
Slice::Gen::DelegateMVisitor::visitUnitStart(const UnitPtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
H << sp;
H << nl << "namespace IceDelegateM" << nl << '{';
+
+ return true;
}
void
Slice::Gen::DelegateMVisitor::visitUnitEnd(const UnitPtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::DelegateMVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasProxies())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::DelegateMVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasProxies())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
{
if (p->isLocal())
{
- return;
+ return false;
}
string name = p->name();
@@ -1047,29 +1051,19 @@ Slice::Gen::DelegateMVisitor::visitClassDefStart(const ClassDefPtr& p)
H.dec();
H << nl << "public: ";
H.inc();
+
+ return true;
}
void
Slice::Gen::DelegateMVisitor::visitClassDefEnd(const ClassDefPtr& p)
{
- if (p->isLocal())
- {
- return;
- }
-
H << eb << ';';
}
void
Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p)
{
- ContainerPtr container = p->container();
- ClassDefPtr cl = ClassDefPtr::dynamicCast(container);
- if (cl->isLocal())
- {
- return;
- }
-
string name = p->name();
string scoped = p->scoped();
string scope = p->scope();
@@ -1188,28 +1182,25 @@ Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& h, Output& c, const str
{
}
-void
+bool
Slice::Gen::ObjectDeclVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasClassDecls())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::ObjectDeclVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasClassDecls())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
@@ -1228,33 +1219,30 @@ Slice::Gen::ObjectVisitor::ObjectVisitor(Output& h, Output& c, const string& dll
{
}
-void
+bool
Slice::Gen::ObjectVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasClassDefs())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::ObjectVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasClassDefs())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
-void
+bool
Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p)
{
string name = p->name();
@@ -1505,6 +1493,8 @@ Slice::Gen::ObjectVisitor::visitClassDefStart(const ClassDefPtr& p)
C << nl << "return __classIds;";
C << eb;
}
+
+ return true;
}
void
@@ -1636,6 +1626,12 @@ Slice::Gen::ObjectVisitor::visitClassDefEnd(const ClassDefPtr& p)
H << eb << ';';
}
+bool
+Slice::Gen::ObjectVisitor::visitStructStart(const StructPtr&)
+{
+ return false;
+}
+
void
Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p)
{
@@ -1773,26 +1769,23 @@ Slice::Gen::IceVisitor::IceVisitor(Output& h, Output& c, const string& dllExport
{
}
-void
+bool
Slice::Gen::IceVisitor::visitUnitStart(const UnitPtr& p)
{
if (!p->hasClassDecls())
{
- return;
+ return false;
}
H << sp;
H << nl << "namespace IceInternal" << nl << '{';
+
+ return true;
}
void
Slice::Gen::IceVisitor::visitUnitEnd(const UnitPtr& p)
{
- if (!p->hasClassDecls())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
@@ -1816,7 +1809,7 @@ Slice::Gen::IceVisitor::visitClassDecl(const ClassDeclPtr& p)
}
}
-void
+bool
Slice::Gen::IceVisitor::visitClassDefStart(const ClassDefPtr& p)
{
string scoped = p->scoped();
@@ -1851,6 +1844,8 @@ Slice::Gen::IceVisitor::visitClassDefStart(const ClassDefPtr& p)
C << eb;
C << eb;
}
+
+ return true;
}
Slice::Gen::HandleVisitor::HandleVisitor(Output& h, Output& c, const string& dllExport) :
@@ -1858,28 +1853,25 @@ Slice::Gen::HandleVisitor::HandleVisitor(Output& h, Output& c, const string& dll
{
}
-void
+bool
Slice::Gen::HandleVisitor::visitModuleStart(const ModulePtr& p)
{
if (!p->hasClassDecls())
{
- return;
+ return false;
}
string name = p->name();
H << sp;
H << nl << "namespace " << name << nl << '{';
+
+ return true;
}
void
Slice::Gen::HandleVisitor::visitModuleEnd(const ModulePtr& p)
{
- if (!p->hasClassDecls())
- {
- return;
- }
-
H << sp;
H << nl << '}';
}
@@ -1901,12 +1893,12 @@ Slice::Gen::HandleVisitor::visitClassDecl(const ClassDeclPtr& p)
}
}
-void
+bool
Slice::Gen::HandleVisitor::visitClassDefStart(const ClassDefPtr& p)
{
if (p->isLocal())
{
- return;
+ return false;
}
string scoped = p->scoped();
@@ -1936,4 +1928,6 @@ Slice::Gen::HandleVisitor::visitClassDefStart(const ClassDefPtr& p)
C << nl << "proxy->__copyTo(v.get());";
C << eb;
C << eb;
+
+ return true;
}
diff --git a/cpp/src/slice2cpp/Gen.h b/cpp/src/slice2cpp/Gen.h
index a0b44a45dc7..42ab3f41d30 100644
--- a/cpp/src/slice2cpp/Gen.h
+++ b/cpp/src/slice2cpp/Gen.h
@@ -51,12 +51,15 @@ private:
TypesVisitor(Output&, Output&, const std::string&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
+ virtual bool visitStructStart(const StructPtr&);
+ virtual void visitStructEnd(const StructPtr&);
virtual void visitSequence(const SequencePtr&);
virtual void visitDictionary(const DictionaryPtr&);
virtual void visitEnum(const EnumPtr&);
virtual void visitNative(const NativePtr&);
+ virtual void visitDataMember(const DataMemberPtr&);
private:
@@ -72,9 +75,9 @@ private:
ProxyDeclVisitor(Output&, Output&, const std::string&);
- virtual void visitUnitStart(const UnitPtr&);
+ virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
virtual void visitClassDecl(const ClassDeclPtr&);
@@ -92,11 +95,11 @@ private:
ProxyVisitor(Output&, Output&, const std::string&);
- virtual void visitUnitStart(const UnitPtr&);
+ virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
- virtual void visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
virtual void visitOperation(const OperationPtr&);
@@ -114,11 +117,11 @@ private:
DelegateVisitor(Output&, Output&, const std::string&);
- virtual void visitUnitStart(const UnitPtr&);
+ virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
- virtual void visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
virtual void visitOperation(const OperationPtr&);
@@ -136,11 +139,11 @@ private:
DelegateMVisitor(Output&, Output&, const std::string&);
- virtual void visitUnitStart(const UnitPtr&);
+ virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
- virtual void visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
virtual void visitOperation(const OperationPtr&);
@@ -158,7 +161,7 @@ private:
ObjectDeclVisitor(Output&, Output&, const std::string&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
virtual void visitClassDecl(const ClassDeclPtr&);
@@ -176,10 +179,11 @@ private:
ObjectVisitor(Output&, Output&, const std::string&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
- virtual void visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
+ virtual bool visitStructStart(const StructPtr&);
virtual void visitOperation(const OperationPtr&);
virtual void visitDataMember(const DataMemberPtr&);
@@ -197,10 +201,10 @@ private:
IceVisitor(Output&, Output&, const std::string&);
- virtual void visitUnitStart(const UnitPtr&);
+ virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
virtual void visitClassDecl(const ClassDeclPtr&);
- virtual void visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
private:
@@ -216,10 +220,10 @@ private:
HandleVisitor(Output&, Output&, const std::string&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
virtual void visitClassDecl(const ClassDeclPtr&);
- virtual void visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
private:
diff --git a/cpp/src/slice2cpp/GenUtil.cpp b/cpp/src/slice2cpp/GenUtil.cpp
index 1a94c7a1a41..9fa50d2553c 100644
--- a/cpp/src/slice2cpp/GenUtil.cpp
+++ b/cpp/src/slice2cpp/GenUtil.cpp
@@ -287,6 +287,13 @@ Slice::writeMarshalUnmarshalCode(Output& out, const TypePtr& type, const string&
return;
}
+ StructPtr st = StructPtr::dynamicCast(type);
+ if (st)
+ {
+ out << nl << param << ".__" << func << stream << ");";
+ return;
+ }
+
SequencePtr seq = SequencePtr::dynamicCast(type);
if (seq)
{
diff --git a/cpp/src/slice2docbook/Gen.cpp b/cpp/src/slice2docbook/Gen.cpp
index 93203be4ffe..706950f6080 100644
--- a/cpp/src/slice2docbook/Gen.cpp
+++ b/cpp/src/slice2docbook/Gen.cpp
@@ -53,7 +53,7 @@ Slice::Gen::generate(const UnitPtr& unit)
unit->visit(this);
}
-void
+bool
Slice::Gen::visitUnitStart(const UnitPtr& p)
{
if (_standAlone)
@@ -73,6 +73,8 @@ Slice::Gen::visitUnitStart(const UnitPtr& p)
start("section", "Overview");
visitContainer(p);
}
+
+ return true;
}
void
@@ -84,7 +86,7 @@ Slice::Gen::visitUnitEnd(const UnitPtr& p)
}
}
-void
+bool
Slice::Gen::visitModuleStart(const ModulePtr& p)
{
start(_chapter + " id=" + scopedToId(p->scoped()), p->scoped().substr(2));
@@ -94,6 +96,8 @@ Slice::Gen::visitModuleStart(const ModulePtr& p)
O.restoreIndent();
printComment(p);
visitContainer(p);
+
+ return true;
}
void
@@ -372,7 +376,7 @@ Slice::Gen::visitContainer(const ContainerPtr& p)
end();
}
-void
+bool
Slice::Gen::visitClassDefStart(const ClassDefPtr& p)
{
start(_chapter + " id=" + scopedToId(p->scoped()), p->scoped().substr(2));
@@ -566,9 +570,11 @@ Slice::Gen::visitClassDefStart(const ClassDefPtr& p)
}
end();
+
+ return true;
}
-void
+bool
Slice::Gen::visitStructStart(const StructPtr& p)
{
start(_chapter + " id=" + scopedToId(p->scoped()), p->scoped().substr(2));
@@ -626,6 +632,8 @@ Slice::Gen::visitStructStart(const StructPtr& p)
}
end();
+
+ return true;
}
void
diff --git a/cpp/src/slice2docbook/Gen.h b/cpp/src/slice2docbook/Gen.h
index 4e420dcfaa6..c463c199be5 100644
--- a/cpp/src/slice2docbook/Gen.h
+++ b/cpp/src/slice2docbook/Gen.h
@@ -29,12 +29,12 @@ public:
void generate(const UnitPtr&);
- virtual void visitUnitStart(const UnitPtr&);
+ virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
- virtual void visitModuleStart(const ModulePtr&);
+ virtual bool visitModuleStart(const ModulePtr&);
virtual void visitContainer(const ContainerPtr&);
- virtual void visitClassDefStart(const ClassDefPtr&);
- virtual void visitStructStart(const StructPtr&);
+ virtual bool visitClassDefStart(const ClassDefPtr&);
+ virtual bool visitStructStart(const StructPtr&);
private: