diff options
author | Tom Willemse | 2021-09-06 02:24:56 -0700 |
---|---|---|
committer | Tom Willemse | 2021-09-06 02:24:56 -0700 |
commit | ba52787271b246255b8788942cdb74560f840bfe (patch) | |
tree | 85febc8cd97beb7fc498bc16e01bb496c3941b20 /clox/src/value.h | |
parent | c10cbcdf99824bf81fb0874deb258d5c8c7cb22d (diff) | |
download | crafting-interpreters-ba52787271b246255b8788942cdb74560f840bfe.tar.gz crafting-interpreters-ba52787271b246255b8788942cdb74560f840bfe.zip |
Chapter 19.1 - 19.2
Diffstat (limited to 'clox/src/value.h')
-rw-r--r-- | clox/src/value.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clox/src/value.h b/clox/src/value.h index 96df347..6896bea 100644 --- a/clox/src/value.h +++ b/clox/src/value.h @@ -3,10 +3,14 @@ #include "common.h" +typedef struct Obj Obj; +typedef struct ObjString ObjString; + typedef enum { VAL_BOOL, VAL_NIL, VAL_NUMBER, + VAL_OBJ, } ValueType; typedef struct { @@ -14,19 +18,23 @@ typedef struct { union { bool boolean; double number; + Obj *obj; } as; } Value; #define IS_BOOL(value) ((value).type == VAL_BOOL) #define IS_NIL(value) ((value).type == VAL_NIL) #define IS_NUMBER(value) ((value).type == VAL_NUMBER) +#define IS_OBJ(value) ((value).type == VAL_OBJ) +#define AS_OBJ(value) ((value).as.obj) #define AS_BOOL(value) ((value).as.boolean) #define AS_NUMBER(value) ((value).as.number) #define BOOL_VAL(value) ((Value){VAL_BOOL, {.boolean = value}}) #define NIL_VAL ((Value){VAL_NIL, {.number = 0}}) #define NUMBER_VAL(value) ((Value){VAL_NUMBER, {.number = value}}) +#define OBJ_VAL(value) ((Value){VAL_OBJ, {.obj = (Obj *)object}}) typedef struct { int capacity; |