vovkos / doxyrest

A compiler from Doxygen XML to reStructuredText -- hence, the name. It parses XML databases generated by Doxygen and produces reStructuredText for the Python documentation generator Sphinx.
MIT License
306 stars 23 forks source link

Class in multiple groups - only listed in first #26

Closed loebl closed 4 years ago

loebl commented 4 years ago

Hi

I noticed that classes which were part of multiple doxygen groups are only displayed in the first group mentioned on the class page.

Is this a limitation of doxyrest or result of how groups are processed in the frames?

Attached is a minimal example showing this behaviour: group_b is mentioned first, so the class is only listed in it.

System: Debian 9.11/amd64 doxygen: 1.8.13 doxyrest built from doxyrest_b repo commit 8d8b21cd (current HEAD)

multi_group.zip

vovkos commented 4 years ago

Apologies for the late reply.

This behavior is by design. I wouldn't really call it a critical limitation, but even if it sometimes is -- it's a limitation of Sphinx, not Doxyrest. In Sphinx, any page must belong to exactly one parent TOC-subtree. As such, a class/struct/page/etc cannot be added to two groups (otherwise, where in the global TOC-tree will it belong?)

The Doxyrest builds TOC-tree as follows. Each item belongs to one and only one parent namespace (just like in any programming language) and zero or one group (there is a single initially nullified m_groupCompound pointer; if the Doxygen XML DB tries to put it into more than one, Doxyrest simply overwrites the previous group pointer). Now, if there is a non-null group pointer, then the item goes to the TOC-tree of this group; otherwise, it goes to the TOC-tree of its parent namespace.

Hope this helps.

Closing the issue, as this behavior is dictated by the Sphinx TOC-model.