Seite 1 von 1

Visualisierer fuer C code

Verfasst: Dienstag 28. Oktober 2008, 00:08
von farid
Beim Lesen von "TCP/IP Illustrated, Vol. 2'" haben mir die vielen Graphiken gefallen, die miteinander verbundener C struct sehr anschaulich darstellen.

Eine Idee waere, ein Python Package zu schreiben, das C code parst (z.B. mit
gcc-xml), und daraus solche Graphiken erzeugt (etwa im gpic(1) Format).

Es gibt auch andere Vektorgraphik-Formate, aber gpic hat den Vorteil, dass es per Hand nacheditiert werden kann, wenn es erforderlich ist.

Vielleicht gibt es auch bereits einen anderen Ansatz?

Re: Visualisierer fuer C code

Verfasst: Dienstag 28. Oktober 2008, 16:38
von derdon
farid hat geschrieben:Es gibt auch andere Vektorgraphik-Formate, aber gpic hat den Vorteil, dass es per Hand nacheditiert werden kann, wenn es erforderlich ist.
Mann kan doch auch *.svg-Dateien nachträglich mit einem Texteditor bearbeiten. :roll:

Verfasst: Dienstag 28. Oktober 2008, 17:45
von BlackJack
PIC-Dateien kann man vielleicht einfacher erstellen, weil man bei SVG sicher mehr Arbeit in einen Layout-Algorithmus stecken muss.

Ich würde ja erst einmal *.dot-Dateien für GraphViz ausprobieren. Nettes Beispiel ist datastruct.

GraphViz

Verfasst: Mittwoch 29. Oktober 2008, 01:02
von farid
BlackJack hat geschrieben:PIC-Dateien kann man vielleicht einfacher erstellen, weil man bei SVG sicher mehr Arbeit in einen Layout-Algorithmus stecken muss.
Yep. Das ist genau der Punkt!
BlackJack hat geschrieben:Ich würde ja erst einmal *.dot-Dateien für GraphViz ausprobieren. Nettes Beispiel ist datastruct.
Hey, danke! Das ist gar nicht mal so schlecht fuer den Anfang! ;)

Verfasst: Mittwoch 29. Oktober 2008, 09:11
von BlackJack
Grundsätzlich gibt's so etwas ja schon mit Doxygen. Das setzt auch auf GraphViz. Beispiele:

Code: Alles auswählen

typedef struct {
    double x;
    double y;
} Point;

typedef struct {
    Point points[3];
} Triangle;

typedef struct LinkedList {
    void *data;
    struct LinkedList *next;
} LinkedList;
Aus dem Dreieck und Punkt wird:
Bild

Aus der Liste:

Bild

Etwas kompakter geht's auch, wenn es nur um die Zusammenhänge der Strukturen und nicht um alle Felder geht:

Bild