I also encountered the same problem (with doxygen 1.4.4 and 1.3.9.1).
The attached is my quick hack for
tools/boostbook/xsl/doxygen/doxygen2boostbook.xsl, which should solve
the problem.

Best regards,
Synge

Thank you!

The patch almost solves this problem but fails with partial template specializations. I've also seen that member template classes (like rebind<> in allocators) are not generated with BoostBook Doxygen. Anyway, the patch is a big improvement. I think it should be added to Boostbook development branch.

Here I attach a new test case with partial specialization and member rebind<> class. 3 files are attached: the Jamfile.v2 to construct documentation, the .qbk file and a header. To construct documentation:

$ quickbook dummy.qbk
$ bjam --v2

The rebind<> member is not documented and the partial specialization of has_trivial_constructor breaks documentation. Doxywizard has no problems with these.

Regards,

Ion



import boostbook : boostbook ;
using quickbook ;
import doxygen : doxygen ;

boostbook dummy
:
   dummy.xml
   dummy.doxygen
:
   <xsl:param>boost.root=../../../..
;

doxygen dummy.doxygen
:
   [ glob dummy_classes.hpp ]
;

[library Dummy
    [version 2005-09-18]
    [authors [Gazta&ntilde;aga, Ion]]
    [copyright 2005 Ion Gazta&ntilde;aga]
    [purpose Shared memory utilities]
    [license
         Distributed under the Boost Software License, Version 1.0.
         (See accompanying file LICENSE_1_0.txt or copy at
         <ulink url="http://www.boost.org/LICENSE_1_0.txt";>
            http://www.boost.org/LICENSE_1_0.txt
         </ulink>)
    ]
    [last-revision $Date: 2005/09/18 00:00:00 $]
]

[/ QuickBook Document version 1.1 ]

[xinclude dummy.doxygen.boostbook]

#ifndef _DUMMY_CLASSES_HPP_
#define _DUMMY_CLASSES_HPP_

namespace boost
{
namespace dummy_namespace
{

/*!Dummy class*/
template <class T>
class dummy_class
{
 public:
   /*!rebind structure*/

   template <class T2>
   struct rebind
   {
      typedef dummy_class<T2> type;
   };

   /*!dummy_func() function*/
   void dummy_func();
};

template<class T>
struct has_trivial_constructor< dummy_namespace::dummy_class<T> >
: true_type
{};

}
}
#endif

Reply via email to