aboutsummaryrefslogtreecommitdiff
path: root/api/vm.h
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-12-30 16:02:10 +0100
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-12-30 16:02:10 +0100
commit058d954e80f83c26deb209008f11d87a5b59418e (patch)
treeef7b5a95cfd1dbdba71041e1f0608d551adfa360 /api/vm.h
parent3ba311b0afdf9cc62d630687d171bee0b6435e4a (diff)
downloaduwu-lang-058d954e80f83c26deb209008f11d87a5b59418e.tar.xz
Unify value types
Diffstat (limited to 'api/vm.h')
-rw-r--r--api/vm.h32
1 files changed, 7 insertions, 25 deletions
diff --git a/api/vm.h b/api/vm.h
index 94103d5..7286f63 100644
--- a/api/vm.h
+++ b/api/vm.h
@@ -16,23 +16,23 @@ typedef struct
void *(*copy )(void *data);
void (*delete)(void *data);
char *(*print )(void *data);
-} UwUVMNativeType;
+} UwUVMType;
typedef struct
{
void *data;
- UwUVMNativeType *type;
-} UwUVMNativeValue;
+ UwUVMType *type;
+} UwUVMValue;
typedef struct UwUVMArgs
{
size_t num;
- struct UwUVMValue **evaluated;
+ UwUVMValue **evaluated;
struct UwUVMExpression *unevaluated;
struct UwUVMArgs *super;
} UwUVMArgs;
-typedef struct UwUVMValue (*UwUVMNativeFunction)(UwUVMArgs *args);
+typedef UwUVMValue (*UwUVMNativeFunction)(UwUVMArgs *args);
typedef struct
{
@@ -44,24 +44,6 @@ typedef struct
} value;
} UwUVMFunction;
-typedef struct UwUVMValue
-{
- enum
- {
- VT_INT,
- VT_STR,
- VT_REF,
- VT_NAT,
- } type;
- union
- {
- int int_value;
- char *str_value;
- UwUVMFunction *ref_value;
- UwUVMNativeValue nat_value;
- } value;
-} UwUVMValue;
-
typedef struct UwUVMExpression
{
ExpressionType type;
@@ -83,8 +65,8 @@ typedef struct
{
void *api_library;
UwUVMFunction *main_function;
- UwUVMFunction **functions;
- size_t num_functions;
+ UwUVMFunction **functions;
+ size_t num_functions;
void **libraries;
size_t num_libraries;
} UwUVMProgram;