2012-12-06 10 views
28

Dato:Documentare valori enum con doxygen

namespace Foo { 
    class Foo { 
    public: 
     /// Foo enum, possible ways to foo 
     enum class Foo { 
      /// Foo it with an A 
      A, 
      /// Foo it with a B 
      B, 
      /// Foo it with a C 
      C 
     } 
    } 
} 

E il default Doxyfile fatto con doxygen -g, ottengo questo:

generated documentation

Come posso ottenere i valori enum documentati? Ho provato a mettere il commento prima/dopo il membro, usando ///<, ecc, senza alcun risultato. Potrebbe essere solo un insetto in doxygen? Gli esempi nei documenti funzionano. (Cliccando sul nome della enum non mi porta da nessuna parte)

+0

Ho eliminato la mia risposta perché non si applicava al C++ 11. enum class {} – drescherjm

+0

Grazie per il tuo tempo :) –

+0

Uno degli stili in questa domanda o le risposte funzionano con Doxygen 1.8.2. D'altra parte, nessuno di loro lavora sulla macchina dei miei colleghi, anche con Doxygen 1.8.2 e con ingressi identici freschi dal controllo del codice sorgente. Qui sta succedendo qualcosa di spettrale. –

risposta

16

Con Doxygen 1.8.2, sia il seguente lavoro per me:

Utilizzando ///

/// This is an enum class 
enum class fooenum { 
    FOO, ///< this is foo 
    BAR, ///< this is bar 
}; 

Utilizzando /*! ... */

/*! This is an enum class */ 
enum class fooenum { 
    FOO, /*!< this is foo */ 
    BAR, /*!< this is bar */ 
}; 

Brief Description Detailed Description

Il doxygen changelog dice che enum class è supportato in Doxygen 1.8.2, così ho il sospetto ci può essere qualche problema di sintassi minore in comandi. Potresti confrontare i tuoi comandi con i due snippet precedenti?

nuove funzionalità

Aggiunto il supporto per C++ 11:

strongly typed enums, e.g.: 
enum class E 
+0

Con https://gist.github.com/c9b75f0a41525b2cbaf2 ottengo http://i.imgur.com/nvsD2.png. Stesso risultato quando è un membro della classe. Cosa ottieni con quello? Come si differenzia? –

+1

Sto riscontrando un problema con questa soluzione, quando assegno anche i valori ai membri enumerati. Per esempio: classe enum Posizioni:!! Std :: int8_t { NON DEFINITO = -1,/* madduci

+0

@blackibiza Vorrei poterti aiutare a capirlo (non posso garantire che sarei in grado di risolvere il problema), ma sono stato un fanatico di doxygen molto tempo fa, e da allora sono passato a cose più grandi e migliori. Se avessi un setup di doxygen funzionante, avrei dato un'occhiata. Fino ad allora la cosa migliore da fare è chiedere una nuova domanda per ottenere maggiore visibilità, e spero che qualcun altro la guardi. Nota anche che il creatore e lo sviluppatore principale di doxygen è un [membro attivo] (http://stackoverflow.com/users/784672/doxygen) qui. –

4

Lo stile soffietto funziona per me:

enum class Foo { 
    /**Foo it with A*/ 
    A, 
    /**Foo it with B*/ 
    B 
} 
5

Nota che io personalmente odio dover file di intestazione che vanno alla grande (perché documentare significa scrivere almeno 2 o 3 linee di documentazione, n di una parola quindi di solito non ho abbastanza con il brief) quindi preferisco documentare nel file .cpp.

Per fare ciò si utilizza la funzione \ var di Doxygen.

Quindi l'intestazione viene nuda:

namespace Foo { 
    class Foo { 
    public: 
     enum class Foo { 
      A, 
      B, 
      C 
     }; 
    }; 
} 

e il file cpp ha:

namespace Foo { 

/** \enum Foo::Foo 
* \brief Foo enum, possible ways to foo 
* 
* All the necessary details about this enumeration. 
*/ 

/** \var Foo::A 
* \brief Foo it with an A 
* 
* When you use A... etc. 
*/ 

/** \var Foo::B 
* \brief Foo it with an B 
* 
* When you use B... etc. 
*/ 

/** \var Foo::C 
* \brief Foo it with an C 
* 
* When you use C... etc. 
*/ 

} 

In questo modo, posso davvero documentare a lungo che spesso accade a me.

+1

Grazie. Preferisco anche questo stile. Metti la documentazione in cui mantieni la fonte * non * nell'intestazione. –

+0

Tuttavia, se si intende distribuire il file di intestazione per una libreria che è stata scritta, lo stile indica che il file di intestazione è privo di commenti. – hmijail

+0

@hmijail Sì e puoi avere i tuoi file HTML di Doxygen su qualche sito web (gratuito) da qualche parte ... Quindi puoi includere un link nel tuo file di intestazione dicendo: "I documenti possono essere trovati lì". –