added a pkpy_vm_push method

This commit is contained in:
Kolten Pearson 2023-05-08 20:41:44 -06:00
parent 8abaebbf9f
commit e2bf81d7f2
3 changed files with 14 additions and 0 deletions

View File

@ -547,3 +547,11 @@ bool pkpy_pop(pkpy_vm* vm_handle, int n) {
vm->c_data->shrink(n);
return true;
}
bool pkpy_push(pkpy_vm* vm_handle, int index) {
CVM* vm = (CVM*) vm_handle;
index = lua_to_cstack_index(index, vm->c_data->size());
vm->c_data->push(vm->c_data->begin()[index]);
return true;
}

View File

@ -30,6 +30,10 @@ typedef int (*pkpy_function)(pkpy_vm*);
bool pkpy_pop(pkpy_vm*, int n);
//push the item at index onto the top of the stack (as well as leaving it where
//it is on the stack)
bool pkpy_push(pkpy_vm*, int index);
bool pkpy_push_function(pkpy_vm*, pkpy_function);
bool pkpy_push_int(pkpy_vm*, int);
bool pkpy_push_float(pkpy_vm*, double);

View File

@ -209,6 +209,8 @@ int main(int argc, char** argv) {
check(pkpy_is_string(vm, -3));
check(pkpy_is_none(vm, -2));
check(pkpy_is_voidp(vm, -1));
check(pkpy_push(vm, -3));
check(pkpy_is_string(vm, -1));
printf("\ntesting error catching\n");
error(pkpy_vm_run(vm, "let's make sure syntax errors get caught"));