implemented dup
This commit is contained in:
parent
8a5e3494e6
commit
b287c00c65
|
|
@ -515,7 +515,7 @@ Boolean load_builtins(InterpreterState *interpreter_state) {
|
||||||
break; \
|
break; \
|
||||||
case STACK_TOKEN_STRING: \
|
case STACK_TOKEN_STRING: \
|
||||||
return FALSE; \
|
return FALSE; \
|
||||||
}
|
} \
|
||||||
|
|
||||||
#define NUMERIC_TYPES \
|
#define NUMERIC_TYPES \
|
||||||
double af = 0, bf = 0; \
|
double af = 0, bf = 0; \
|
||||||
|
|
@ -1445,8 +1445,60 @@ Boolean builtin_drop(InterpreterState *interpreter_state) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Boolean builtin_dup(InterpreterState *interpreter_state) {
|
Boolean builtin_dup(InterpreterState *interpreter_state) {
|
||||||
(void)interpreter_state;
|
if (interpreter_state->stack == NULL) return FALSE;
|
||||||
return FALSE;
|
|
||||||
|
StackItem *item = (StackItem *)malloc(sizeof(StackItem));
|
||||||
|
if (item == NULL) return FALSE;
|
||||||
|
item->type = interpreter_state->stack->type;
|
||||||
|
item->next = interpreter_state->stack;
|
||||||
|
|
||||||
|
switch (interpreter_state->stack->type) {
|
||||||
|
case STACK_IDENTIFIER:
|
||||||
|
item->identifier = interpreter_state->stack->identifier;
|
||||||
|
break;
|
||||||
|
case STACK_I64:
|
||||||
|
item->i64 = interpreter_state->stack->i64;
|
||||||
|
break;
|
||||||
|
case STACK_I32:
|
||||||
|
item->i32 = interpreter_state->stack->i32;
|
||||||
|
break;
|
||||||
|
case STACK_I16:
|
||||||
|
item->i16 = interpreter_state->stack->i16;
|
||||||
|
break;
|
||||||
|
case STACK_I8:
|
||||||
|
item->i8 = interpreter_state->stack->i8;
|
||||||
|
break;
|
||||||
|
case STACK_U64:
|
||||||
|
item->u64 = interpreter_state->stack->u64;
|
||||||
|
break;
|
||||||
|
case STACK_U32:
|
||||||
|
item->u32 = interpreter_state->stack->u32;
|
||||||
|
break;
|
||||||
|
case STACK_U16:
|
||||||
|
item->u16 = interpreter_state->stack->u16;
|
||||||
|
break;
|
||||||
|
case STACK_U8:
|
||||||
|
item->u8 = interpreter_state->stack->u8;
|
||||||
|
break;
|
||||||
|
case STACK_FLOAT:
|
||||||
|
item->f32 = interpreter_state->stack->f32;
|
||||||
|
break;
|
||||||
|
case STACK_DOUBLE:
|
||||||
|
item->f64 = interpreter_state->stack->f64;
|
||||||
|
break;
|
||||||
|
case STACK_CHARACTER:
|
||||||
|
item->character = interpreter_state->stack->character;
|
||||||
|
break;
|
||||||
|
case STACK_BOOLEAN:
|
||||||
|
item->boolean = interpreter_state->stack->boolean;
|
||||||
|
break;
|
||||||
|
case STACK_TOKEN_STRING:
|
||||||
|
item->token_string = copy_token_string(interpreter_state->stack->token_string);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
interpreter_state->stack = item;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Boolean builtin_eval(InterpreterState *interpreter_state) {
|
Boolean builtin_eval(InterpreterState *interpreter_state) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue