Changeset ad5c8a48 in mainline for uspace/app/bithenge/expression.c
- Timestamp:
- 2012-08-07T21:35:50Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- a66ea217
- Parents:
- c12b2ae
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bithenge/expression.c
rc12b2ae rad5c8a48 94 94 return rc; 95 95 } 96 97 /* Check types and get values. */ 98 bithenge_int_t a_int, b_int; 96 99 switch (self->op) { 100 case BITHENGE_EXPRESSION_ADD: /* fallthrough */ 101 case BITHENGE_EXPRESSION_SUBTRACT: /* fallthrough */ 102 case BITHENGE_EXPRESSION_MULTIPLY: 103 rc = EINVAL; 104 if (bithenge_node_type(a) != BITHENGE_NODE_INTEGER) 105 goto error; 106 if (bithenge_node_type(b) != BITHENGE_NODE_INTEGER) 107 goto error; 108 a_int = bithenge_integer_node_value(a); 109 b_int = bithenge_integer_node_value(b); 110 break; 111 default: 112 break; 113 } 114 115 switch (self->op) { 116 case BITHENGE_EXPRESSION_ADD: 117 rc = bithenge_new_integer_node(out, a_int + b_int); 118 break; 119 case BITHENGE_EXPRESSION_SUBTRACT: 120 rc = bithenge_new_integer_node(out, a_int - b_int); 121 break; 122 case BITHENGE_EXPRESSION_MULTIPLY: 123 rc = bithenge_new_integer_node(out, a_int * b_int); 124 break; 97 125 case BITHENGE_EXPRESSION_EQUALS: 98 126 rc = bithenge_new_boolean_node(out, bithenge_node_equal(a, b)); 99 127 break; 100 } 128 case BITHENGE_EXPRESSION_INVALID_BINARY_OP: 129 assert(false); 130 break; 131 } 132 133 error: 101 134 bithenge_node_dec_ref(a); 102 135 bithenge_node_dec_ref(b);
Note:
See TracChangeset
for help on using the changeset viewer.