mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-02-17 01:11:45 +00:00
Create a usable dot for vector expressions
It leaves a lot to be desired, but it beats "FIXME".
This commit is contained in:
parent
607ec3124e
commit
319ecfbbfa
1 changed files with 36 additions and 1 deletions
|
@ -367,7 +367,42 @@ print_vector (dstring_t *dstr, expr_t *e, int level, int id, expr_t *next)
|
|||
{
|
||||
int indent = level * 2 + 2;
|
||||
|
||||
dasprintf (dstr, "%*se_%p [label=\"vector FIXME\"];\n", indent, "", e);
|
||||
if (e->e.vector.type == &type_vector) {
|
||||
expr_t *x = e->e.vector.list;
|
||||
expr_t *y = x->next;
|
||||
expr_t *z = y->next;
|
||||
_print_expr (dstr, x, level, id, next);
|
||||
_print_expr (dstr, y, level, id, next);
|
||||
_print_expr (dstr, z, level, id, next);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, x);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, y);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, z);
|
||||
}
|
||||
if (e->e.vector.type == &type_quaternion) {
|
||||
if (e->e.vector.list->next->next) {
|
||||
expr_t *x = e->e.vector.list;
|
||||
expr_t *y = x->next;
|
||||
expr_t *z = y->next;
|
||||
expr_t *w = z->next;
|
||||
_print_expr (dstr, x, level, id, next);
|
||||
_print_expr (dstr, y, level, id, next);
|
||||
_print_expr (dstr, z, level, id, next);
|
||||
_print_expr (dstr, w, level, id, next);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, x);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, y);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, z);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, w);
|
||||
} else {
|
||||
expr_t *v = e->e.vector.list;
|
||||
expr_t *s = v->next;
|
||||
_print_expr (dstr, v, level, id, next);
|
||||
_print_expr (dstr, s, level, id, next);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, v);
|
||||
dasprintf (dstr, "%*se_%p -> \"e_%p\";\n", indent, "", e, s);
|
||||
}
|
||||
}
|
||||
dasprintf (dstr, "%*se_%p [label=\"vector %d\"];\n", indent, "", e,
|
||||
e->line);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in a new issue