Added TRUTHY preprocessor macro
This commit is contained in:
parent
50f90dcf84
commit
024af6a778
|
|
@ -755,6 +755,54 @@ Boolean load_builtins(InterpreterState *interpreter_state) {
|
||||||
}); \
|
}); \
|
||||||
} \
|
} \
|
||||||
|
|
||||||
|
#define TRUTHY \
|
||||||
|
Boolean value = FALSE; \
|
||||||
|
switch (conditional->type) { \
|
||||||
|
case STACK_IDENTIFIER: \
|
||||||
|
value = FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_I64: \
|
||||||
|
value = (conditional->i64) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_I32: \
|
||||||
|
value = (conditional->i32) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_I16: \
|
||||||
|
value = (conditional->i16) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_I8: \
|
||||||
|
value = (conditional->i8) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_U64: \
|
||||||
|
value = (conditional->u64) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_U32: \
|
||||||
|
value = (conditional->u32) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_U16: \
|
||||||
|
value = (conditional->u16) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_U8: \
|
||||||
|
value = (conditional->u8) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_FLOAT: \
|
||||||
|
value = (conditional->f32) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_DOUBLE: \
|
||||||
|
value = (conditional->f64) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_CHARACTER: \
|
||||||
|
value = (conditional->character) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
case STACK_BOOLEAN: \
|
||||||
|
value = conditional->boolean; \
|
||||||
|
break; \
|
||||||
|
case STACK_TOKEN_STRING: \
|
||||||
|
case STACK_CALLABLE: \
|
||||||
|
value = (conditional->token_string.length && conditional->token_string.tokens[0].type != TOKEN_EOF) ? TRUE : FALSE; \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
|
||||||
Boolean builtin_addition(InterpreterState *interpreter_state) {
|
Boolean builtin_addition(InterpreterState *interpreter_state) {
|
||||||
NUMERIC_TYPES;
|
NUMERIC_TYPES;
|
||||||
ARITHMETIC(+);
|
ARITHMETIC(+);
|
||||||
|
|
@ -1549,52 +1597,7 @@ Boolean builtin_if(InterpreterState *interpreter_state) {
|
||||||
interpreter_state->stack = conditional->next;
|
interpreter_state->stack = conditional->next;
|
||||||
conditional->next = NULL;
|
conditional->next = NULL;
|
||||||
|
|
||||||
Boolean value = FALSE;
|
TRUTHY;
|
||||||
switch (conditional->type) {
|
|
||||||
case STACK_IDENTIFIER:
|
|
||||||
value = TRUE;
|
|
||||||
break;
|
|
||||||
case STACK_I64:
|
|
||||||
value = (conditional->i64) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_I32:
|
|
||||||
value = (conditional->i32) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_I16:
|
|
||||||
value = (conditional->i16) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_I8:
|
|
||||||
value = (conditional->i8) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_U64:
|
|
||||||
value = (conditional->u64) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_U32:
|
|
||||||
value = (conditional->u32) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_U16:
|
|
||||||
value = (conditional->u16) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_U8:
|
|
||||||
value = (conditional->u8) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_FLOAT:
|
|
||||||
value = (conditional->f32) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_DOUBLE:
|
|
||||||
value = (conditional->f64) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_CHARACTER:
|
|
||||||
value = (conditional->character) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
case STACK_BOOLEAN:
|
|
||||||
value = conditional->boolean;
|
|
||||||
break;
|
|
||||||
case STACK_TOKEN_STRING:
|
|
||||||
case STACK_CALLABLE:
|
|
||||||
value = (conditional->token_string.length && conditional->token_string.tokens[0].type != TOKEN_EOF) ? TRUE : FALSE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
Boolean return_value = FALSE;
|
Boolean return_value = FALSE;
|
||||||
if (value) {
|
if (value) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue