Documentación de espacios de nombres con Doxygen

Documentación de espacios de nombres con Doxygen

Realicé un experimento usando Doxygen y los dos ejemplos y aquí están los resultados. Los nombres de las clases en los ejemplos han sido renombrados para evitar confusiones con Doxygen.

Ejemplo 1, espacio de nombres externo

/*!
 *  \addtogroup Records
 *  @{
 */

//! Generic record interfaces and implementations
namespace Records
{

  //! Describes the record interface  
  class Interface;

} // End namespace Records

/*! @} End of Doxygen Groups*/

Resultados de Doxygen:

Haga clic en el botón Módulos (en la barra principal).
Haga clic en el módulo "Registros" en la ventana.

Ejemplo 2:dentro del espacio de nombres (clase renombrada como Campos)

//! Generic record interfaces and implementations
namespace Fields
{
/*!
 *  \addtogroup Fields
 *  @{
 */


  //! Describes the record interface  
  class Interface;

/*! @} End of Doxygen Groups*/

} // End namespace Fields

Resultados de Doxygen:

Haga clic en el botón Módulos (en la barra principal).
Haga clic en el módulo "Registros" en la ventana.

Resumen

La ubicación de Doxygen \addtogroup El comando tiene diferentes resultados dependiendo de si se encuentra dentro de un namespace definición o fuera. Cuando se declaran fuera de un espacio de nombres, los Módulos de Doxygen La pestaña mostrará el espacio de nombres, como se muestra en el Ejemplo 1 anterior. Cuando el \addtogroup se coloca dentro de un espacio de nombres, los Módulos de Doxygen La pestaña no mostrará los espacios de nombres como se muestra en el Ejemplo 2 anterior. Si desea que su espacio de nombres aparezca en los Módulos de Doxygen pestaña, busque el \addtogroup comando fuera del espacio de nombres.


Como alternativa, también podría usar \ingroup Records en la documentación del espacio de nombres:

/**
 * \defgroup Records Title for records module
 * @brief Short doc of Records
 *
 * Long doc of Records.
 */

/**
 * @brief Generic record interfaces and implementations
 *
 * \ingroup Records
 */
namespace Records {
    /// Describes the record interface  
    class Interface;

} /* namespace Records */