Doxygen generates extra spaces in some function return types (e.g. involving
a const reference) and template parameter defaults (in partucular, when
the default is formatted across multiple lines in the C++ source).
Normalize spaces in those cases.
When there are multiple \throws entries in a function documentation, the second
and further exception names were omitted from output and a combined description
was associated with the first exception. Fix this by producing separate
paragraphs, one per exception.
Additionally, support free form exception description when the exception type
is specified as "~". In this case, the exception name is not used, and the
entry description is used to initialize the paragraph in the output.
Updated test to verify these changes.
This makes the entries after "See Also:" to be displayed inline rather
than starting from the next line. This is consistent with other kinds
of paragraphs generated from Doxygen output.
Sorted parameters are more difficult to read, as you normally expect
the parameters to be described in the order they are listed in the
function signature. This also breaks parameter grouping when adjacent
parameters are related (e.g. a pair of iterators).
Instead of Doxygen-synthesized names like "@0", either omit the name
entirely, when the enum name is not a link to a separate definition,
or display "[unnamed]" placeholder for the name that serves as a link.
Similar to other contexts, replace default types and values in template
parameter lists that mention implementation details, as configured in
boost.doxygen.detail parameter, with "unspecified".
This fixes dangling refs to implementation detail types and values that
were removed from BoostBook output but are still mentioned in template
parameter defaults.
When Doxygen option INLINE_INHERITED_MEMB=YES is used, Doxygen generates
duplicate class member definitions with the same ids, when the member is
inherited from a base class. This results in duplicate ids in BoostBook output
and the corresponding errors.
Work around this by checking if the member id starts with the id of the
enclosing class. If it does then the member is assumed to be a genuine member
of the class and we generate a Doxygen id for it. Doxygen refs will point to
this definition of the member. If the member id is different then it must be
an inherited member, and we don't generate a Doxygen id for it. BoostBook
stylesheets will generate a unique id for it, which will be used to link
synopsis to reference of the member in the derived class' documentation.
\parblock can be used to group multiple paragraps under a block command
that expects a single paragraph as argument (e.g. \returns). So just
forward the contents of the parblock in the current context.
Produce id attributes for all entities generated by Doxygen. For refs,
generate link tags referencing those ids. Preface the ids with "doxygen."
prefix to avoid potential clashes with ids that may be present in other
places of the resulting DocBook document. Also add the document refid to
the prefix to avoid potential clashes between multiple Doxygen-generated
documents with SHORT_NAMES=YES.
In order to pass through the generated ids without modification (to keep
links working in the output), change generate.id template so that it
returns the value of the id attribute, if one is present, instead of
generating a new id.
The end result is that all references generated by Doxygen (to methods,
classes, variables and so on) propagate to the final HTML output instead
of being stripped during Doxygen to BoostBook translation.
Previously, class members and free functions in sectiondef with
kind="user-defined" would be stripped from HTML output, making function
grouping effectively non-functional. This commit fixes this by converting
such sectiondefs to either method-group or free-function-group in BoostBook
output, depending on whether the grouping is within a class or namespace.
Additionally, previously constructors, destructors and assignment operators
were not allowed to be inside method-groups, which were another reason for
these members to be stripped from the output. This commit allows these members
in member-groups and modifies DTD accordingly.
Also, this fixes duplicate constructors, destructors and assignment operators
generated after the sections for public, private and protected member
functions. This was due to applying XSL templates twice - once when generating
method-group, and then after the method-group.
This commit adds a new XSL parameter boost.sort.params, which allows
users to disable alphabetical sorting of the function and template
parameters in detailed descriptions of functions and classes. By
default, sorting is enabled, which maintains the previous behavior.
Sorting is disabled when the parameter is set to 0. In this case,
parameters are listed in the order they are listed in the BoostBook
documentation, which is normally the same as they are listed in the
function signature or template preamble.
Doxygen 1.9.1 generates enum <initializer> tags with text starting with
an equal sign ('=') followed by the enum value initializer. This sign
was copied under the BoostBook <default> tag, and BoostBook styleseets
add an equal sign of their own when converting this tag to HTML. This
resulted in duplicate equal signs in the HTML output.
This commit strips the leading equal sign from the initializer before
putting it into the <default> tag.
In the last commit I changed it to store in fast-elements with the wrong id.
Unfortunately this can't be picked up in testing, as the fallback still works
correctly. Although it didn't make any notable difference to the build time,
so maybe the fast-elements mechanism isn't needed?
I get HTTP 303 errors when retrieving images from the old location (browser is fine, but Java chokes while building the PDF's). I couldn't find a git location that didn't also give 303 errors, so this seems to be the next best alternative.
It turns out the '\code' blocks don't have this problem, so an easier
fix would be just to use them. But now I've implemented the workaround,
might as well leave it in, in case anyone wants to use <pre> blocks in
the future.
This improves layout on mobile devices. I had to remove declaration
for the 'rev' element as otherwise the 'meta' element would have
namespace declaration as well, for no reason. Possibly there's a
better solution.
The footer template has code to generate revision number,
which was never updated to git and therefore generates no text,
but still generates a somewhat complex table structure. This
commit removes code for version numbers, and makes output a simple
div.
I've also added a hook to use pick content of whatever paragraph
with role of 'copyright' the document has, since right now we
pick copyright only from 'bookinfo' element, and Docbook renders
bookinfo element right at the start, and for Boost.Build documentation
I want documentation to start with some hints how to start, not
with a copyright statement.
Remove stray text on end of line.
Fixes PDF doc build.
Aside: this whole Q&A set block could probably be removed now given that it appears to be a workaround for the ancient FOP-0.2.