# HG changeset patch # User Matti Hamalainen # Date 1366136977 -10800 # Node ID 6d96d5bf96536772c829097a7f8d07dbcd82e9c0 # Parent f6cf172a6ef79f23914900676d81b210969ef600 Add output file stream argument to dm_print_optree(). diff -r f6cf172a6ef7 -r 6d96d5bf9653 dmeval.c --- 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"); } diff -r f6cf172a6ef7 -r 6d96d5bf9653 dmeval.h --- a/dmeval.h Tue Apr 16 21:03:52 2013 +0300 +++ b/dmeval.h Tue Apr 16 21:29:37 2013 +0300 @@ -93,7 +93,7 @@ int dm_eval_reorder(DMEvalContext *ev, DMEvalNode *node, DMEvalNode **result); int dm_eval_exec(DMEvalContext *ev, DMEvalNode *tree, DMValue *presult); -void dm_print_optree(DMEvalContext *ev, DMEvalNode *node); +void dm_print_optree(FILE *out, DMEvalContext *ev, DMEvalNode *node); #endif // DMEVAL_H diff -r f6cf172a6ef7 -r 6d96d5bf9653 tests/evaltest.c --- a/tests/evaltest.c Tue Apr 16 21:03:52 2013 +0300 +++ b/tests/evaltest.c Tue Apr 16 21:29:37 2013 +0300 @@ -95,7 +95,7 @@ dmError("%s\n", ev->errStr); if (dmVerbosity > 0) - dm_print_optree(ev, parsed); + dm_print_optree(stdout, ev, parsed); if (ret != 0) return -1; @@ -109,7 +109,7 @@ dmError("%s\n", ev->errStr); if (dmVerbosity > 0) - dm_print_optree(ev, ordered); + dm_print_optree(stdout, ev, ordered); if (ret != 0) return -2;