Boost logo

Boost :

From: Vinnie Falco (vinnie.falco_at_[hidden])
Date: 2023-05-10 13:41:48


On Wed, May 10, 2023 at 1:46 AM Antony Polukhin via Boost
<boost_at_[hidden]> wrote:
> Adding support of it to Doxygen should do the job of implementing both
> searches and helping the C++ community in general.

To add some context to what Mohammad is saying, I've been using
Doxygen for years as part of my "docca" toolchain for building C++
library reference pages. For example:

https://www.boost.org/doc/libs/1_82_0/libs/json/doc/html/json/ref/boost__json__parse/overload1.html

I've reached the limit of what Doxygen is capable of and now it is
blocking the improvement of documentation. Doxygen's XML output is
always behind the HTML output, and there is no really good Asciidoc
output. Furthermore Doxygen uses outdated technology for analyzing the
C++ program.

That is why I have created a new program called "Mr. Dox." This
program uses clang's unstable libtooling API to generate an AST tree
of a library's actual translation units (the .cpp files) and not just
looking at headers using fancy regex or the simplified libclang API.
Some discussion on that:

https://www.foonathan.net/2019/11/standardese-post-mortem/

Because MrDox uses the exact same API that clang uses to actually
compile your program, it can understand every C++ construct. If clang
can compile it, then MrDox can see it. That means we can see deduction
guides, alias templates, class template specializations, and much much
more. The capability of extracting C++ source code features with
perfect fidelity allows us to build features which enhance the
generated reference in ways that Doxygen never can. For example we can
recurse deeply into the AST and analyze the expression inside a
conditional noexcept specification. We can understand abbreviated
function template parameters.

In fact, MrDox can eventually understand C++ features which are not
yet part of the Standard but merged into the trunk of LLVM because
they are supported by Technical Specifications ("TS") approved by the
C++ Standardization Committee. This means MrDox can always stay
current and keep pace with every innovation that comes to C++.

The program is still in development but we are targeting the winter
release date of Boost for having an packaged executable that is ready
for production, with a good Asciidoc generator. Check it out here:

https://github.com/cppalliance/mrdox

Thanks!

Vinnie


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk