Re: [eigen] Getting doxygen to include inherited members in class API docs (was: RowMajor vs ColMajor... ) |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/eigen Archives
]
- To: eigen@xxxxxxxxxxxxxxxxxxx
- Subject: Re: [eigen] Getting doxygen to include inherited members in class API docs (was: RowMajor vs ColMajor... )
- From: Gael Guennebaud <gael.guennebaud@xxxxxxxxx>
- Date: Mon, 19 Dec 2011 14:49:28 +0100
- Cc: Michael Dixon <mdixon@xxxxxxxxxxxxxxxx>, Radu Bogdan Rusu <rusu@xxxxxxxxxxxxxxxx>
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=xq14bN6jZIVPkbsYEUFyaoaYq+W9wNLi2wh/J8z68fw=; b=KHrjE4b/a6zu2xlXtrTJJwx7yxAvKzQ3VlWsV8UBFswOxTz2k09StavfPM+m7TlBHd ZV7Vp1lIvqzkj8FfurCYfSVAgffRjHQDlkRILug4vQBe4r6roaqjXBYat4r0ap3MylHN sInkQD8kd5k+tJOVh6gpjBD7TAKrdO6rJmbsc=
Indeed, I looked at this issue a while ago and started to search for
an alternative to doxygen with no luck.
Projects that heavily uses c++ templates seem to rely on home made non
fully automatic documentation generation tools. See for instance the
documentation of CGAL:
The ToC:
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/contents.html
The "user manual" page of a given package:
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/AABB_tree/Chapter_main.html
Its respective reference page:
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/AABB_tree_ref/Chapter_introduction.html
The reference page of a given concept:
http://www.cgal.org/Manual/latest/doc_html/cgal_manual/AABB_tree_ref/Concept_AABBPrimitive.html#Cross_link_anchor_1726
It is based on latex and homemade scripts. Not as convenient as
Doxygen and I don't know if you can include all members coming from
the base classes, but I can ask.
gael
On Mon, Dec 19, 2011 at 2:22 PM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> Hi,
>
> In recent discussion it's been clear again that we need to get Doxygen
> to include inherited members in class API docs, so that finding
> documentation for a method doesn't require anymore knowing in what
> base class it is defined.
>
> In theory, this is as simple as setting INLINE_INHERITED_MEMB = YES in
> the doxyfile.
>
> In practice, I ran into 2 bugs:
>
> 1. Doxygen doesn't understand our inheritance patterns with the
> internal::dense_xpr_base helper. For example, it sees that Matrix
> inherits PlainObjectBase<Matrix> but can't unfold the template helper
> that makes this inherit MatrixBase<Matrix>.
>
> 2. I tried worked around this by adding #ifdef EIGEN_PARSED_BY_DOXYGEN
> a direct MatrixBase<Matrix> parent to Matrix, alongside the
> PlainObjectBase parent, using multiple inheritance. Alas, Doxygen has
> a bug making INLINE_INHERITED_MEMB only take effect for the first
> parent in multiple inheritance.
>
> I think the best course of action is to try to fix 1. in Doxygen
> itself, by allowing to pass an explicit inheritance diagram to
> Doxygen.
>
> Or does anyone know a Doxygen replacement that can understand C++?
> Maybe something based on LLVM or GCC?
>
> Benoit
>
>