Mercurial > hg > dmlib
diff dmeval.c @ 700:6d96d5bf9653
Add output file stream argument to dm_print_optree().
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 16 Apr 2013 21:29:37 +0300 |
parents | f6cf172a6ef7 |
children | e8224750f576 |
line wrap: on
line diff
--- a/dmeval.c Tue Apr 16 21:03:52 2013 +0300 +++ b/dmeval.c Tue Apr 16 21:29:37 2013 +0300 @@ -679,7 +679,7 @@ }; -static void dm_print_optree_do(DMEvalContext *ev, DMEvalNode *node, const int level) +static void dm_print_optree_do(FILE *out, DMEvalContext *ev, DMEvalNode *node, const int level) { int i; while (node != NULL) @@ -687,38 +687,38 @@ switch (node->op) { case OP_FUNC: - printf("%s(", node->id != NULL ? node->id->name : "?ERROR"); + fprintf(out, "%s(", node->id != NULL ? node->id->name : "?ERROR"); for (i = 0; i < node->id->nargs; i++) { - dm_print_optree_do(ev, node->args[i], level + 1); + dm_print_optree_do(out, ev, node->args[i], level + 1); if (i < node->id->nargs - 1) - printf(","); + fprintf(out, ","); } - printf(")"); + fprintf(out, ")"); break; case OP_VAR: - printf("%s", node->id != NULL ? node->id->name : "?ERROR"); + fprintf(out, "%s", node->id != NULL ? node->id->name : "?ERROR"); break; case OP_CONST: - printf("%.1f", node->val); + fprintf(out, "%.1f", node->val); break; case OP_SUBEXPR: - printf("("); + fprintf(out, "("); if (node->subexpr != NULL) - dm_print_optree_do(ev, node->subexpr, level + 1); + dm_print_optree_do(out, ev, node->subexpr, level + 1); else - printf("?ERROR"); - printf(")"); + fprintf(out, "?ERROR"); + fprintf(out, ")"); break; default: if (node->op > 0 && node->op < OP_NOPERS) - printf("%s", dm_oper_names[node->op]); + fprintf(out, "%s", dm_oper_names[node->op]); else - printf("ERROR!"); + fprintf(out, "ERROR!"); break; } node = node->next; @@ -726,10 +726,10 @@ } -void dm_print_optree(DMEvalContext *ev, DMEvalNode *node) +void dm_print_optree(FILE *out, DMEvalContext *ev, DMEvalNode *node) { - dm_print_optree_do(ev, node, 0); - printf("\n"); + dm_print_optree_do(out, ev, node, 0); + fprintf(out, "\n"); }