6 #include "../src/expression.h"
16 void *(*copy )(void *data);
17 void (*delete)(void *data);
18 char *(*print )(void *data);
24 UwUVMNativeType *type;
27 typedef struct UwUVMArgs
30 struct UwUVMValue **evaluated;
31 struct UwUVMExpression *unevaluated;
32 struct UwUVMArgs *super;
35 typedef struct UwUVMValue (*UwUVMNativeFunction)(UwUVMArgs *args);
42 struct UwUVMExpression *plain;
43 UwUVMNativeFunction native;
47 typedef struct UwUVMValue
60 UwUVMFunction *ref_value;
61 UwUVMNativeValue nat_value;
65 typedef struct UwUVMExpression
72 UwUVMFunction *function;
73 struct UwUVMExpression *args;
78 UwUVMFunction *ref_value;
85 UwUVMFunction *main_function;
86 UwUVMFunction **functions;
92 void uwuvm_free_value(UwUVMValue value);
93 void uwuvm_free_args(UwUVMArgs *args);
94 UwUVMValue uwuvm_copy_value(UwUVMValue value);
95 UwUVMValue uwuvm_get_arg(UwUVMArgs *args, size_t i);
96 UwUVMValue uwuvm_evaluate_expression(UwUVMExpression *expression, UwUVMArgs *args);
97 UwUVMValue uwuvm_run_function(UwUVMFunction *function, UwUVMArgs args);