#ifndef VM_H #define VM_H #include typedef enum vm_type { VM_TYPE_FUNCTION, VM_TYPE_INTEGER, VM_TYPE_STRING, VM_TYPE_ARRAY, VM_TYPE_ERROR, VM_TYPE_NULL, } vm_type; typedef struct vm_var { vm_type type; int isNull; int nullable; union { char* function; int32_t integer; char* string; struct vm_var* array; struct { char* msg; char* code; } error; } data; } vm_var; typedef struct vm { vm_var* vars; size_t numvars; } vm; //Initiate a VM vm* vm_create(); //Execute vm_var* vm_exec(); //Functions to create a variable vm_var* vm_var_create_function(char* function, int nullable); vm_var* vm_var_create_integer(int32_t integer, int nullable); vm_var* vm_var_create_string(char* string, int nullable); vm_var* vm_var_create_array(vm_var* array, int nullable); vm_var* vm_var_create_error(char* msg, char* code, int nullable); vm_var* vm_var_create_null(); #endif