21 } UwUVMExpressionType;
25 void *(*clone)(void *data);
26 void (*delet)(void *data);
27 char *(*print)(void *data);
36 typedef struct UwUVMArgs
39 UwUVMValue **evaluated;
40 struct UwUVMExpression *unevaluated;
41 struct UwUVMArgs *super;
44 typedef UwUVMValue (*UwUVMNativeFunction)(UwUVMArgs *args);
51 struct UwUVMExpression *plain;
52 UwUVMNativeFunction native;
56 typedef struct UwUVMExpression
58 UwUVMExpressionType type;
63 UwUVMFunction *function;
64 struct UwUVMExpression *args;
69 UwUVMFunction *ref_value;
73 UwUVMValue uwuvm_clone_value(UwUVMValue value);
74 void uwuvm_delet_value(UwUVMValue value);
75 char *uwuvm_print_value(UwUVMValue value);
76 UwUVMValue uwuvm_get_arg(UwUVMArgs *args, size_t i);
77 UwUVMValue uwuvm_evaluate_expression(UwUVMExpression *expression, UwUVMArgs *args);
78 UwUVMValue uwuvm_call_function(UwUVMFunction *function, size_t num_args, UwUVMExpression *unevaluated_args, UwUVMArgs *super_args);