// SPDX-License-Identifier: MIT // Copyright (c) 2023 John Watts and the LuminaSensum contributors #ifndef VM_H #define VM_H struct object; struct vm_state; struct vm_state *vm_create(void); void vm_destroy(struct vm_state **state); void vm_stack_set(struct vm_state *state, int index, struct object *obj); struct object *vm_stack_get(struct vm_state *state, int index); void vm_stack_push(struct vm_state *state, struct object *obj); struct object *vm_stack_pop(struct vm_state *state); void vm_stack_drop(struct vm_state *state, int count); void vm_call(struct object *obj, const char *name, int arg_count, struct vm_state *state); #endif