Even more pretty
This commit is contained in:
parent
0e88711a50
commit
e776864b45
88
main.c
88
main.c
|
@ -137,43 +137,43 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, a_set, {TT_BOS, 'A', TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_BOS, 'B', TT_EOS}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t C = tt_trie_union_map(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
}
|
||||
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("after1", TT_NO_PTR, &a, 1);
|
||||
tt_dump_arena_dot_styled("after1", TT_NO_PTR, &a, TT_STYLE_TEXT_LABELS);
|
||||
|
||||
printf("\n============================================================ 2\n");
|
||||
{
|
||||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, a_set, {TT_BOS, 'A', TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_BOS, TT_WILD, TT_EOS}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t C = tt_trie_union_map(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
|
@ -184,18 +184,18 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, a_set, {TT_BOS, 'A', TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_WILD}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t C = tt_trie_union_map(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
|
@ -206,18 +206,18 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, b_set /* !!! */, {TT_BOS, 'A', TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_WILD}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t C = tt_trie_union_map(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
|
@ -228,18 +228,18 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, a_set, {TT_BOS, 'A', 'B', TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_BOS, TT_WILD, TT_EOS}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t C = tt_trie_union_map(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
|
@ -250,18 +250,18 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, a_set, {TT_BOS, 'A', 'B', TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_BOS, TT_WILD, TT_WILD, TT_EOS}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t C = tt_trie_union_map(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
|
@ -272,41 +272,41 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, a_set, {TT_BOS, 'A', TT_WILD, TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_BOS, TT_WILD, 'B', TT_EOS}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t C = tt_trie_union_map(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
|
||||
tt_node_ptr_t D = tt_trie_union_map(&a, C, C);
|
||||
tt_drop(&a, C);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("D", D, &a, 1);
|
||||
tt_dump_arena_dot_styled("D", D, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_dump_routingtable(&a, D, 0);
|
||||
|
||||
tt_node_ptr_t E = tt_grab(&a, MAKE_PATH(&a, b_set, {TT_WILD}));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("E", E, &a, 1);
|
||||
tt_dump_arena_dot_styled("E", E, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_node_ptr_t F = tt_trie_union_map(&a, D, E);
|
||||
tt_drop(&a, D);
|
||||
tt_drop(&a, E);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("F", F, &a, 1);
|
||||
tt_dump_arena_dot_styled("F", F, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_dump_routingtable(&a, F, 0);
|
||||
|
||||
tt_node_ptr_t G = tt_grab(&a, tt_trie_relabel_const(&a, F, a_set));
|
||||
tt_drop(&a, F);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("G", G, &a, 1);
|
||||
tt_dump_arena_dot_styled("G", G, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_dump_routingtable(&a, G, 0);
|
||||
tt_drop(&a, G);
|
||||
}
|
||||
|
@ -316,20 +316,20 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, TT_EMPTY_DICT, {TT_BOS, 'A', TT_WILD, TT_EOS}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_dump_routingtable(&a, A, 0);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, TT_EMPTY_DICT, {TT_BOS, TT_WILD, 'B', TT_EOS}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_dump_routingtable(&a, B, 0);
|
||||
tt_node_ptr_t C = tt_trie_subtract_set(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
|
@ -340,24 +340,24 @@ int main(int argc, char *argv[]) {
|
|||
tt_node_ptr_t A = tt_grab(&a, MAKE_PATH(&a, TT_EMPTY_DICT, {TT_WILD}));
|
||||
printf("\nA node: %u/%u\n", tt_ptr_idx(A), tt_ptr_tag(A));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("A", A, &a, 1);
|
||||
tt_dump_arena_dot_styled("A", A, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_dump_routingtable(&a, A, 0);
|
||||
tt_node_ptr_t B = tt_grab(&a, MAKE_PATH(&a, TT_EMPTY_DICT, {TT_BOS, 'A', 'B', TT_EOS}));
|
||||
printf("\nB node: %u/%u\n", tt_ptr_idx(B), tt_ptr_tag(B));
|
||||
tt_dump_arena_dot_styled("B", B, &a, 1);
|
||||
tt_dump_arena_dot_styled("B", B, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_dump_routingtable(&a, B, 0);
|
||||
tt_node_ptr_t C = tt_trie_subtract_set(&a, A, B);
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpredrop", C, &a, TT_STYLE_TEXT_LABELS);
|
||||
tt_drop(&a, A);
|
||||
tt_drop(&a, B);
|
||||
printf("\nC node: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostdrop", C, &a, TT_STYLE_TEXT_LABELS | TT_STYLE_HIDE_DETAILS);
|
||||
tt_replace(&a, &C, tt_trie_relabel_const(&a, C, a_set));
|
||||
printf("\nC node post relabel: %u/%u\n", tt_ptr_idx(C), tt_ptr_tag(C));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("Cpostrelabel", C, &a, 1);
|
||||
tt_dump_arena_dot_styled("Cpostrelabel", C, &a, TT_STYLE_TEXT_LABELS | TT_STYLE_HIDE_DETAILS);
|
||||
putchar('\n');
|
||||
tt_dump_routingtable(&a, C, 0);
|
||||
tt_drop(&a, C);
|
||||
|
@ -381,12 +381,12 @@ int main(int argc, char *argv[]) {
|
|||
tt_replace(&a, &d, tt_dict_set(&a, d, LITERAL4("void"), TT_EMPTY));
|
||||
printf("\nd node: %u/%u\n", tt_ptr_idx(d), tt_ptr_tag(d));
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("d", d, &a, 1);
|
||||
tt_dump_arena_dot_styled("d", d, &a, TT_STYLE_TEXT_LABELS | TT_STYLE_HIDE_DETAILS);
|
||||
tt_drop(&a, d);
|
||||
}
|
||||
|
||||
tt_arena_flush(&a);
|
||||
tt_dump_arena_dot_styled("afterAll", TT_NO_PTR, &a, 1); /* expect a_set and b_set here */
|
||||
tt_dump_arena_dot_styled("afterAll", TT_NO_PTR, &a, TT_STYLE_TEXT_LABELS); /* expect a_set and b_set here */
|
||||
|
||||
tt_arena_done(&a);
|
||||
return EXIT_SUCCESS;
|
||||
|
|
60
treetrie.c
60
treetrie.c
|
@ -361,7 +361,7 @@ static void dump_dot_edge(tt_arena_t *a, tt_node_ptr_t p, int lr, char const *ed
|
|||
void tt_dump_arena_dot_styled(char const *rootlabel,
|
||||
tt_node_ptr_t rootptr,
|
||||
tt_arena_t *a,
|
||||
int style)
|
||||
int flags)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -400,36 +400,32 @@ void tt_dump_arena_dot_styled(char const *rootlabel,
|
|||
printf("label=\"branch");
|
||||
break;
|
||||
case TT_TAG_LEAF:
|
||||
switch (style) {
|
||||
case 1: {
|
||||
char buf[5];
|
||||
int v = (int) a->nodes[n].b;
|
||||
if (v < -9 || v >= 32) {
|
||||
int j;
|
||||
v = htonl(v);
|
||||
memcpy(buf, &v, 4);
|
||||
for (j = 0; j < 4; j++) {
|
||||
if (buf[j] < 32) { buf[j] = ' '; }
|
||||
}
|
||||
buf[4] = '\0';
|
||||
} else {
|
||||
switch (v) {
|
||||
case TT_WILD: buf[0] = '*'; buf[1] = '\0'; break;
|
||||
case TT_BOS: buf[0] = buf[1] = '<'; buf[2] = '\0'; break;
|
||||
case TT_EOS: buf[0] = buf[1] = '>'; buf[2] = '\0'; break;
|
||||
case TT_BOC: buf[0] = buf[1] = '{'; buf[2] = '\0'; break;
|
||||
case TT_EOC: buf[0] = buf[1] = '}'; buf[2] = '\0'; break;
|
||||
default:
|
||||
snprintf(buf, sizeof(buf), "%d", v);
|
||||
buf[4] = '\0';
|
||||
}
|
||||
if (flags & TT_STYLE_TEXT_LABELS) {
|
||||
char buf[5];
|
||||
int v = (int) a->nodes[n].b;
|
||||
if (v < -9 || v >= 32) {
|
||||
int j;
|
||||
v = htonl(v);
|
||||
memcpy(buf, &v, 4);
|
||||
for (j = 0; j < 4; j++) {
|
||||
if (buf[j] < 32) { buf[j] = ' '; }
|
||||
}
|
||||
buf[4] = '\0';
|
||||
} else {
|
||||
switch (v) {
|
||||
case TT_WILD: buf[0] = '*'; buf[1] = '\0'; break;
|
||||
case TT_BOS: buf[0] = buf[1] = '<'; buf[2] = '\0'; break;
|
||||
case TT_EOS: buf[0] = buf[1] = '>'; buf[2] = '\0'; break;
|
||||
case TT_BOC: buf[0] = buf[1] = '{'; buf[2] = '\0'; break;
|
||||
case TT_EOC: buf[0] = buf[1] = '}'; buf[2] = '\0'; break;
|
||||
default:
|
||||
snprintf(buf, sizeof(buf), "%d", v);
|
||||
buf[4] = '\0';
|
||||
}
|
||||
printf("shape=underline,label=\"leaf '%s'", buf);
|
||||
break;
|
||||
}
|
||||
case 0:
|
||||
default:
|
||||
printf("shape=underline,label=\"leaf a%d", (int) a->nodes[n].b);
|
||||
printf("shape=underline,label=\"leaf '%s'", buf);
|
||||
} else {
|
||||
printf("shape=underline,label=\"leaf a%d", (int) a->nodes[n].b);
|
||||
}
|
||||
break;
|
||||
case TT_TAG_NODE:
|
||||
|
@ -443,7 +439,11 @@ void tt_dump_arena_dot_styled(char const *rootlabel,
|
|||
assert(0);
|
||||
}
|
||||
/* printf(" #%u d%d r%d\"];\n", i, distance, a->headers[n].inuse.refcount); */
|
||||
printf(" i%u r%d\"];\n", n, a->headers[n].inuse.refcount);
|
||||
if (flags & TT_STYLE_HIDE_DETAILS) {
|
||||
printf("\"];\n");
|
||||
} else {
|
||||
printf(" i%u r%d\"];\n", n, a->headers[n].inuse.refcount);
|
||||
}
|
||||
switch (tt_ptr_tag(p)) {
|
||||
case TT_TAG_TAIL:
|
||||
dump_dot_edge(a, p, 0, "trie");
|
||||
|
|
|
@ -24,6 +24,10 @@ typedef enum tt_special_idx_t {
|
|||
TT_EMPTY_DICT_IDX, /* empty dict */
|
||||
} tt_special_idx_t;
|
||||
|
||||
#define TT_STYLE_UNSTYLED 0x00000000
|
||||
#define TT_STYLE_TEXT_LABELS 0x00000001
|
||||
#define TT_STYLE_HIDE_DETAILS 0x00000002
|
||||
|
||||
typedef uint32_t tt_node_idx_t; /* N.B. tt_special_idx_t; and 0 is reserved. */
|
||||
typedef uint32_t tt_node_ptr_t; /* An index shifted left 2 with tag or'd in low bits */
|
||||
|
||||
|
@ -112,7 +116,7 @@ extern void tt_dump_arena(tt_arena_t *a, int show_free_chain);
|
|||
extern void tt_dump_arena_dot_styled(char const *rootlabel,
|
||||
tt_node_ptr_t rootptr,
|
||||
tt_arena_t *a,
|
||||
int style);
|
||||
int flags);
|
||||
extern void tt_dump_arena_dot(char const *rootlabel, tt_node_ptr_t rootptr, tt_arena_t *a);
|
||||
|
||||
extern void tt_arena_flush(tt_arena_t *a);
|
||||
|
|
Loading…
Reference in New Issue