diff options
Diffstat (limited to 'cpp/src/slice2docbook/Gen.cpp')
-rw-r--r-- | cpp/src/slice2docbook/Gen.cpp | 92 |
1 files changed, 65 insertions, 27 deletions
diff --git a/cpp/src/slice2docbook/Gen.cpp b/cpp/src/slice2docbook/Gen.cpp index c3d16d4d726..ee3e6b952b3 100644 --- a/cpp/src/slice2docbook/Gen.cpp +++ b/cpp/src/slice2docbook/Gen.cpp @@ -322,33 +322,6 @@ Slice::Gen::visitContainer(const ContainerPtr& p) end(); } } - - { - for (EnumList::iterator q = enums.begin(); q != enums.end(); ++q) - { - start("section id=" + containedToId(*q), (*q)->name()); - - O.zeroIndent(); - O << nl << "<synopsis>enum <type>" << (*q)->name() << "</type>"; - O << sb; - StringList enumerators = (*q)->enumerators(); - StringList::iterator r = enumerators.begin(); - while (r != enumerators.end()) - { - O << nl << "<structfield>" << *r << "</structfield>"; - if (++r != enumerators.end()) - { - O << ','; - } - } - O << eb << ";</synopsis>"; - O.restoreIndent(); - - printComment(*q); - - end(); - } - } { for (NativeList::iterator q = natives.begin(); q != natives.end(); ++q) @@ -629,6 +602,63 @@ Slice::Gen::visitStructStart(const StructPtr& p) } void +Slice::Gen::visitEnum(const EnumPtr& p) +{ + start(_chapter + " id=" + containedToId(p), p->scoped().substr(2)); + + start("section", "Overview"); + O.zeroIndent(); + O << nl << "<synopsis>"; + O << "enum <type>" << p->name() << "</type>"; + O << "</synopsis>"; + O.restoreIndent(); + + printComment(p); + + EnumeratorList enumerators = p->getEnumerators(); + enumerators.sort(); + if (!enumerators.empty()) + { + start("section", "Enumerator Index"); + start("variablelist"); + + for (EnumeratorList::iterator q = enumerators.begin(); q != enumerators.end(); ++q) + { + start("varlistentry"); + start("term"); + O << nl << toString(*q, p->container()); + end(); + start("listitem"); + printSummary(*q); + end(); + end(); + } + + end(); + end(); + } + + end(); + + { + for (EnumeratorList::iterator q = enumerators.begin(); q != enumerators.end(); ++q) + { + start("section id=" + containedToId(*q), (*q)->name()); + + O.zeroIndent(); + O << nl << "<synopsis><constant>" << (*q)->name() << "</constant></synopsis>"; + O.restoreIndent(); + + printComment(*q); + + end(); + } + } + + end(); +} + +void Slice::Gen::printHeader() { static const char* header = @@ -994,6 +1024,14 @@ Slice::Gen::toString(const SyntaxTreeBasePtr& p, const ContainerPtr& container) tag = "structname"; } + EnumeratorPtr en = EnumeratorPtr::dynamicCast(p); + if (en) + { + linkend = containedToId(en); + s = getScopedMinimized(en, container); + tag = "constant"; + } + if (s.empty()) { ContainedPtr contained = ContainedPtr::dynamicCast(p); |