void FreeExpr (ExprNode* Root) /* Free the expression, Root is pointing to. */ { if (Root) { FreeExpr (Root->Left); FreeExpr (Root->Right); FreeExprNode (Root); } }
static void JumpTrue( TREEPTR expr, LABEL_INDEX label ) { if( expr->op.opr == OPR_PUSHINT ) { if( expr->op.long_value ) { Jump( label ); } FreeExprNode( expr ); } else { JumpCond( expr, label, OPR_JUMPTRUE, OPR_JUMPFALSE ); } }
static int JumpFalse( TREEPTR expr, LABEL_INDEX label ) { int jump_generated; jump_generated = 0; if( expr->op.opr == OPR_PUSHINT ) { if( ! expr->op.long_value ) { Jump( label ); jump_generated = 1; } FreeExprNode( expr ); } else { JumpCond( expr, label, OPR_JUMPFALSE, OPR_JUMPTRUE ); jump_generated = 1; } return( jump_generated ); }