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) {
|
||||
NUMERIC_TYPES;
|
||||
ARITHMETIC(+);
|
||||
|
|
@ -1549,52 +1597,7 @@ Boolean builtin_if(InterpreterState *interpreter_state) {
|
|||
interpreter_state->stack = conditional->next;
|
||||
conditional->next = NULL;
|
||||
|
||||
Boolean value = FALSE;
|
||||
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;
|
||||
}
|
||||
TRUTHY;
|
||||
|
||||
Boolean return_value = FALSE;
|
||||
if (value) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue