Forum: PC-Programmierung Doxygen Befehlsübersicht erzeugen


von Sebastian R. (lange_leitung)


Lesenswert?

Liebe Doxygennutzer.

Ich habe ein Projekt übernommen, bei dem schon seh viel Code existiert, 
aber der kaum bis nicht dokumentiert ist. Überraschung!! :)
Jetzt möchte ich da mit Doxygen Ordnung reinbringen, was auch gut 
funktioniert. Nur stellt sich mir gerade eine Aufgabe, für die ich noch 
keine befriedigende Lösung habe.

Der Code kann viele Benutzerbefehle abarbeiten. Dazu wird der Befehl 
über eine Schnittstelle eingelesen. Je nachdem, was in dem Befehl steht, 
erfolgen verschiedene Aktionen. Soweit normal.
Nur wird jetzt nicht für jeden Befehl eine eigene Funktion aufgerufen, 
sondern alles innerhalb EINER Funktion über switch case abgearbeitet. 
Damit habe ich nicht mehr viele Funktionen, die ich einzeln 
dokumentieren kann. Ich frage mich jetzt, wie ich am besten eine 
Befehlsüberischt anlegen kann. Was könnt ihr mir da für Doxygenbefehle 
empfehlen?
Ich hab mir jetzt mal das Grouping mit \defgroup angeschaut und \page 
mit \section. Aber so richtig glücklich bin ich damit noch nicht.

Danke!
Sebastian

von Walter T. (nicolas)


Lesenswert?

Sebastian R. schrieb:
> Nur wird jetzt nicht für jeden Befehl eine eigene Funktion aufgerufen,
> sondern alles innerhalb EINER Funktion über switch case abgearbeitet.

Suchst Du eine Übersicht über alle enums und ihre Werte?

von Sebastian R. (lange_leitung)


Lesenswert?

Nein, das sind keine enums.
Die Struktur ist etwa so:
1
switch (Befehl[0])
2
{
3
    case 'a': mach_irgendwas(Befehl[1]);
4
    case 'b': mach_irgendwas(Befehl[2]);
5
    case 'c': mach_was_anderes(Befehl[3]);
6
    case 'd': mach_was_anderes(Befehl[4]);
7
}

: Bearbeitet durch User
von Walter T. (nicolas)


Lesenswert?

Ich kenne keine gute Lösung, aber das muss nichts heißen.

von sid (Gast)


Lesenswert?

ehrlich gesagt hab ich das in doxygen auch schonmal gesucht (erfolglos)
ich hab mir dann selber geholfen indem ich
den kompletten Quellcode Ordner nach dem switch keyword durchsucht hab
(es waren zum Glück nur zwei Dateien und drei Funktionen die mir da 
relevant waren letzenendes.. und sieben Dateien die ich mir dafür 
ansehen musste, ging also)

die 'paar' switchcases hab ich dann manuell dokumentiert
(--!) und das war's dann schon


wenn es leichter geht, bin ich interessiert zu erfahren wie ;)
(wer weiss wann ich das wieder brauche)

'sid

von Sebastian R. (lange_leitung)


Lesenswert?

Lösung 1:
1
/// \page Befehlliste
2
/// \secreflist
3
/// \refitem cmd0 Befehl 0
4
/// \refitem cmd1 Befehl 1
5
/// \refitem cmd2 Befehl 2
6
/// \endsecreflist
7
8
switch (command[0])
9
10
/// \page Befehlliste
11
/// \section cmd0 Befehl 0
12
/// Der 0 Befehl macht was tolles.
13
case 0: ........

Ich leg eine eigene Seite für die Befehlsübersicht an. Darin gibt es 
dann eine Liste, die auch verlinkt ist.

Nachteil: Die Liste muss manuell angelegt und sortiert werden.

: Bearbeitet durch User
von Nick M. (Gast)


Lesenswert?

Ich hab sowas händisch in die funktionsbeschreibung reingeschrieben. Da 
ging es um Message-types die das Modul (hatte eine Einstiegs-funktion 
und viele Helper-functions) verarbeitet oder verschickt.
Ging anders nicht, das Ergebnis aber durchaus zufriedenstellend.

Ja, manchmal kann/könnte man enums einsetzen und das lohnt sich auch 
durchaus dann auch auf enums umzustellen.

von Sebastian R. (lange_leitung)


Lesenswert?

Lösung 2:
1
/// \defgroup Befehle Befehlsübersicht
2
3
switch (command[0])
4
5
/// \ingroup Befehle
6
/// \defgroup cmd0 Befehl 0
7
/// Der 0 Befehl macht was tolles.
8
case 0: ........
9
10
/// \ingroup Befehle
11
/// \defgroup cmd1 Befehl 1
12
/// Der 1 Befehl macht was anderes.
13
case 1: ........

Damit geht´s auch, aber es wird keine Liste am Anfang angelegt. Und die 
erzeugte Seite tauscht nur unter "Module" auf. Also evtl. nicht so 
leicht zu finden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.