2011-11-30 2 views
7

Sto provando a documentare due enumerazioni di classi contenenti alcuni valori simili con Doxygen. Ma questo genera un duplicato di testo per ogni campo con lo stesso nome.Come documentare i valori di enumerazione con lo stesso nome con Doxygen?

Qui sono i miei due enumerazioni:

/*! 
* \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 descrizione per il membro pila di ogni enumerazione è la concatenazione di entrambe le descrizioni e c'è lo stesso problema per GLOBAL.

La descrizione di stack è:

Una variabile sullo stack

Un operando nello stack

C'è un modo per documentare ognuno di loro in particolare?

+4

Doxygen ha un pessimo supporto per C++ 11. – Pubby

+1

Funziona se si inserisce una delle enumerie in uno spazio dei nomi e successivamente si importa l'enum nello spazio dei nomi genitore? Immagino che ci sia un modo meno brutto, ma non conosco bene l'ossigeno. Speriamo che il supporto per C++ 11 migliori rapidamente – bames53

risposta

2

Soluzione è di metterlo in uno spazio dei nomi e using per farlo uscire.

/*! 
* 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.*/ 
}; 

Si può mettere PositionType in uno spazio dei nomi separato (enumeration) se non ti piace la separazione.

+0

Funziona ma l'enumerazione è documentata in enum_class e non sotto il mio spazio dei nomi. Penso che questo non sia l'ideale, dato che la persona che usa questo enumerro cercherà la documentazione nello spazio dei nomi di root. C'è un modo per dire a Doxygen di generare documentazione per un utilizzo? –