6 #include "../src/expression.h"
16 void *(*clone)(void *data);
17 void (*delet)(void *data);
18 char *(*print)(void *data);
27 typedef struct UwUVMArgs
30 UwUVMValue **evaluated;
31 struct UwUVMExpression *unevaluated;
32 struct UwUVMArgs *super;
35 typedef UwUVMValue (*UwUVMNativeFunction)(UwUVMArgs *args);
42 struct UwUVMExpression *plain;
43 UwUVMNativeFunction native;
47 typedef struct UwUVMExpression
54 UwUVMFunction *function;
55 struct UwUVMExpression *args;
60 UwUVMFunction *ref_value;
67 UwUVMFunction *main_function;
68 UwUVMFunction **functions;
74 UwUVMValue uwuvm_clone_value(UwUVMValue value);
75 void uwuvm_delet_value(UwUVMValue value);
76 char *uwuvm_print_value(UwUVMValue value);
77 UwUVMValue uwuvm_get_arg(UwUVMArgs *args, size_t i);
78 UwUVMValue uwuvm_evaluate_expression(UwUVMExpression *expression, UwUVMArgs *args);
79 UwUVMValue uwuvm_call_function(UwUVMFunction *function, size_t num_args, UwUVMExpression *unevaluated_args, UwUVMArgs *super_args);