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.
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:
Aus der Liste:
Etwas kompakter geht's auch, wenn es nur um die Zusammenhänge der Strukturen und nicht um alle Felder geht: