Visualisierer fuer C code

Du hast eine Idee für ein Projekt?
Antworten
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

Dienstag 28. Oktober 2008, 00:08

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?
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Dienstag 28. Oktober 2008, 16:38

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:
BlackJack

Dienstag 28. Oktober 2008, 17:45

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.
farid
User
Beiträge: 95
Registriert: Mittwoch 8. Oktober 2008, 15:37

Mittwoch 29. Oktober 2008, 01:02

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! ;)
BlackJack

Mittwoch 29. Oktober 2008, 09:11

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
Antworten