[doxygen] Globales enum Dokumentieren



  • Hi Leute,

    ich Dokumentiere seit einiger Zeit meine Quelltexte mit doxygen aber erst jetzt ich mir aufgefallen das globale Enum's nicht in dem generiertem HTML-Dokument ist.

    Folgenderweise ist meine Header-Datei aufgebaut:

    //Forwärtsdeklaration
    enum RecordState;
    
    //! Datensatz des Einkaufspreises
    /*!
      Diese Klasse spiegelt den Datensatz eines Einkaufspreises wieder. In dieser
      Klasse habe ich alle Möglichkeiten um diesen Datensatz zu modifizieren,
      löschen und erstellen.
    */
    class Record
    {
       public:
          //! Der Konstruktor der Klasse
          Record();
       private:
    
          //! Status des Datensatzes
          /*!
            Diese Eigenschaft beinhaltet den Status dieses Datensatzes. 
            Also ob es geändert, neu erstellt oder gelöscht wurde.
    
            \sa RecordState, setRecordState() und recordState()
          */
          RecordState m_state;
    };
    
    //! Status des Datensatzes
    /*! 
      Das Enum enthält die mögliche Zustände des Datensatzes.
    */
    enum RecordState
    {
       rsNewRecord,      /*!< Neuer Datensatz */
       rsEditRecord,     /*!< Bearbeiteter Datensatz */
       rsDeleteRecord,   /*!< Gelöschter Datensatz */
       rsNativeRecord    /*!< Ursprünglicher Datensatz */
    };
    

    Das enum ist nirgendwo in der Dokumentation zu finden. Scheinbar scheint doxygen nur Klassen zu dokumentieren und alles außerhalb der Klasse ignoriert er.

    Ich hoffe das es doch geht und ich irgendwo einen Fehler habe.

    Würde mich sehr freuen wenn einer mir sagen könnte ob und wie es geht.

    Liebe Grüße
    Rudi G



  • Warum machst du das Enum nicht einfach in die Record-Klasse? Offensichtlich gehört es ja zu dieser.



  • Prokkramierer schrieb:

    Warum machst du das Enum nicht einfach in die Record-Klasse? Offensichtlich gehört es ja zu dieser.

    Aber wenn ich von außerhalb der Klasse eine Öffentliche Methode dieser Klasse aufrufe und der einen Wert eines Enums übergeben muss, kann ich das doch nicht machen wenn der Enum in der Klasse definiert ist, oder muss ich dann Klassenamen::Enum::typ übergeben?

    Gruß
    Rudi G



  • Rudi G schrieb:

    Prokkramierer schrieb:

    Warum machst du das Enum nicht einfach in die Record-Klasse? Offensichtlich gehört es ja zu dieser.

    Aber wenn ich von außerhalb der Klasse eine Öffentliche Methode dieser Klasse aufrufe und der einen Wert eines Enums übergeben muss, kann ich das doch nicht machen wenn der Enum in der Klasse definiert ist, oder muss ich dann Klassenamen::Enum::typ übergeben?

    Gruß
    Rudi G

    Nein, das sieht dann so aus: Klassenname::typ



  • Prokkramierer schrieb:

    Nein, das sieht dann so aus: Klassenname::typ

    Cool, vielen Dank für den Hinweis.

    Falls ich aber mal ein globales enum benötigen würde, wie müsste/könnte ich es dann machen?

    Gruß
    Rudi G

    edit: Ich habe mal hier http://www.stack.nl/~dimitri/doxygen/autolink.html (das Beispiel unter "Links to variables, typedefs, enum types, enum values and defines.") ein Beispiel gefunden und in Ihrer Dokumentation die generiert wurde, gibt es auch dieses Globale Enum. Ich habe es genau so ausprobiert bei mir wird das enum allerdings ignoriert und nicht in die Doku eingebunden. Was mache ich falsch/anders?



  • Rudi G schrieb:

    Prokkramierer schrieb:

    Nein, das sieht dann so aus: Klassenname::typ

    Cool, vielen Dank für den Hinweis.

    Falls ich aber mal ein globales enum benötigen würde, wie müsste/könnte ich es dann machen?

    Gruß
    Rudi G

    edit: Ich habe mal hier http://www.stack.nl/~dimitri/doxygen/autolink.html (das Beispiel unter "Links to variables, typedefs, enum types, enum values and defines.") ein Beispiel gefunden und in Ihrer Dokumentation die generiert wurde, gibt es auch dieses Globale Enum. Ich habe es genau so ausprobiert bei mir wird das enum allerdings ignoriert und nicht in die Doku eingebunden. Was mache ich falsch/anders?

    Du hast wohl eine andere Konfiguration für Doxygen verwendet als die Leute aus dem Link.



  • Prokkramierer schrieb:

    Du hast wohl eine andere Konfiguration für Doxygen verwendet als die Leute aus dem Link.

    Das glaube ich langsam auch, allerdings habe ich unter Experten garnichts gefunden was sich mir so anhören würde.

    Würde mich freuen wenn mir jemand helfen könnte.

    Gruß
    Rudi G



  • wie heißt deine config? Doxyfile ist glaube ich der Default-Name.

    Was ist, wenn du EXTRACT_ALL = YES setzt?
    HIDE_UNDOC_MEMBERS = NO ?



  • u_ser-l schrieb:

    wie heißt deine config? Doxyfile ist glaube ich der Default-Name.

    Spielt der Name der Config eine Rolle?

    u_ser-l schrieb:

    Was ist, wenn du EXTRACT_ALL = YES setzt?
    HIDE_UNDOC_MEMBERS = NO ?

    Ok, vielen Dank für den Tipp. Ich werde es Testen wenn ich heute abend dafür Zeit haben werde.

    Gruß
    Rudi G



  • u_ser-l schrieb:

    Was ist, wenn du EXTRACT_ALL = YES setzt?
    HIDE_UNDOC_MEMBERS = NO ?

    Ich habe es mal getestet und es funktioniert jetzt endlich.

    Vielen, vielen Dank.

    Gruß
    Rudi G



  • Auf der folgenden Seite gibt es noch einen besseren Hinweis zu dem Thema:

    http://www.stack.nl/~dimitri/doxygen/docblocks.html#structuralcommands

    To document a global C function, typedef, enum or preprocessor definition you must first document the file that contains it (usually this will be a header file, because that file contains the information that is exported to other source files).

    Let's repeat that, because it is often overlooked: to document global objects (functions, typedefs, enum, macros, etc), you must document the file in which they are defined. In other words, there must at least be a

    /*! \file */
    

    or a

    /** @file */
    

    line in this file.


Anmelden zum Antworten