#define SLOWGRAPH_IMPL #include "../slowgraph.h" static void write_csv_field(char const* s) { char const* y; int quote = 0; for (y = s; *y; y++) { if (*y == '\n' || *y == '"') { quote = 1; break; } } if (quote) putchar('"'); for (; *s; s++) { if (*s == '"') putchar('"'); putchar(*s); } if (quote) putchar('"'); } static void dump_adj_matrix_row(SlowGraph* g, SlowGraphNode* row) { SlowGraphNode* col; write_csv_field(row->name); printf(","); for (col = g->first; col; col = col->next) { if (SlowGraphNode_findConnection(row, col)) { printf("1,"); } else { printf("0,"); } } printf("\n"); } static void dump_adj_matrix(SlowGraph* g) { SlowGraphNode* n; printf(","); for (n = g->first; n; n = n->next) { if (n != g->first) printf(","); write_csv_field(n->name); } printf("\n"); for (n = g->first; n; n = n->next) { dump_adj_matrix_row(g, n); } } int main(int argc, char** argv) { SlowGraph graph = {0}; if (SlowGraph_readDGTXT(&graph, stdin)) return 1; dump_adj_matrix(&graph); return 0; }