|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #ifndef VM_H
- #define VM_H
-
- #include <stdint.h>
-
- 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
|