2011-11-30 14 views
7

Estoy tratando de documentar dos enumeraciones de clases que contienen algunos valores similares con Doxygen. Pero eso genera texto duplicado para cada campo con el mismo nombre.¿Cómo documentar los valores de enumeración con el mismo nombre con Doxygen?

Aquí están mis dos enumeraciones:

/*! 
* \enum OperandType 
* \brief A type of operand. Represents the location of the operand. 
*/ 
enum class OperandType : unsigned int { 
    IMMEDIATE,   /**< An immediate operand */ 
    REGISTER,   /**< An operand in a register */ 
    STACK,    /**< An operand on the stack */ 
    GLOBAL    /**< A global operand */ 
}; 
/*! 
* \enum PositionType 
* \brief A type of position for a variable 
*/ 
enum class PositionType : unsigned int { 
    STACK,   /**< A variable on the stack */ 
    PARAMETER,  /**< A parameter */ 
    GLOBAL,   /**< A global variable */ 
    CONST   /**< A const variable.*/ 
}; 

La descripción para el elemento de pila de cada enumeración es la concatenación de las dos descripciones y hay el mismo problema para GLOBAL.

La descripción de la pila es:

Una variable en la pila

Un operando en la pila

¿Hay una manera de documentar cada uno de ellos en concreto?

+4

Doxygen tiene bastante mal soporte para C++ 11. – Pubby

+1

¿Funciona si coloca una de las enumeraciones en un espacio de nombre y luego importa la enumeración en el espacio de nombres primario? Me imagino que hay un camino menos feo, pero no conozco bien a Doxygen. Esperemos que su compatibilidad con C++ 11 mejore rápidamente – bames53

Respuesta

2

Solución alternativa es ponerlo en un espacio de nombre y using para ponerlo en funcionamiento.

/*! 
* enum class 
*/ 
namespace enum_class { 
    /*! 
    * \enum OperandType 
    * \brief A type of operand. Represents the location of the operand. 
    * Ok 
    */ 
    enum class OperandType : unsigned int { 
     IMMEDIATE,   /**< An immediate operand */ 
      REGISTER,   /**< An operand in a register */ 
     STACK,    /**< An operand on the stack */ 
     GLOBAL    /**< A global operand */ 
    }; 
} 
using enum_class::OperandType; 
/*! 
* \enum PositionType 
* \brief A type of position for a variable 
*/ 
enum class PositionType : unsigned int { 
    STACK,   /**< A variable on the stack */ 
    PARAMETER,  /**< A parameter */ 
    GLOBAL,   /**< A global variable */ 
    CONST   /**< A const variable.*/ 
}; 

Usted puede poner PositionType en un espacio de nombres separado (enumeration) si no te gusta la separación.

+0

Funciona pero la enumeración está documentada en enum_class y no en mi espacio de nombres. Creo que esto no es ideal ya que la persona que usa esta enumeración buscará la documentación en el espacio de nombres raíz. ¿Hay alguna manera de decirle a Doxygen que genere documentación para un uso? –

Cuestiones relacionadas