int Node_Dump (node* my_node) { //fprintf (LOG, "\n=================================================="); char tmp_type[TMPLEN] = {}; DEF_TYPE (my_node -> type); fprintf (LOG, "{%s}\t", tmp_type); switch (my_node -> type) { case PGM: case OP: case OP_PRINT: case OP_IF: case OP_WHILE: case OP_ASSIGN: case OP_ELSE: break; case FUNC: case MATH_OP: case CMP: fprintf (LOG, "[%d]", my_node -> op); break; case VAR: case STR: fprintf (LOG, "[%s]", my_node -> word); break; case NUMBER: fprintf (LOG, "[%lg]", my_node -> num); break; } int err_index = Node_OK (my_node); if (err_index == HAPPY) fprintf (LOG, "\t\t\tNode [%.8x] is OK\t", my_node); else { fprintf (LOG, "Node [%.8x] is NOT ok!\t", my_node); Check_Error (err_index); fputc ('\n', LOG); return HAPPY; } fprintf (LOG, "left [%.8x] right [%.8x] prev [%.8x]\n", my_node -> left, my_node -> right, my_node -> prev); return HAPPY; }
namespace helper { struct Signed; struct Unsigned; struct Integer; struct Floating; template<typename T> struct TypeClass { }; template<> struct TypeClass<signed char> { DEF_TYPE(Signed, Integer) }; template<> struct TypeClass<signed short> { DEF_TYPE(Signed, Integer) }; template<> struct TypeClass<signed int> { DEF_TYPE(Signed, Integer) }; template<>