|[eigen] Getting doxygen to include inherited members in class API docs (was: RowMajor vs ColMajor... )|
[ Thread Index |
| More lists.tuxfamily.org/eigen Archives
- To: eigen <eigen@xxxxxxxxxxxxxxxxxxx>, Michael Dixon <mdixon@xxxxxxxxxxxxxxxx>, Radu Bogdan Rusu <rusu@xxxxxxxxxxxxxxxx>
- Subject: [eigen] Getting doxygen to include inherited members in class API docs (was: RowMajor vs ColMajor... )
- From: Benoit Jacob <jacob.benoit.1@xxxxxxxxx>
- Date: Mon, 19 Dec 2011 08:22:59 -0500
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; bh=YU9wOieEgLxj/sDw4YQHOP5hqH1KJJc+jkpr7KYl+1k=; b=MH0/e5ONsa5NQDqbXm3nw+4GrBiuyX2YaQhMGS2iUx6vpxCrIMrbq13hAXus2fWl5/ yXC88N01zjk6eEQ1/Soisp9ty2Ol8LDNrjz0Y05OjnLd9aFj5YAJF4gMq9f4WSfk4b0h wAKuM5kIGnH8qAqMqkdXCeTTSRE/Omp/Ug2zo=
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
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
Or does anyone know a Doxygen replacement that can understand C++?
Maybe something based on LLVM or GCC?