77#include <string.h>
88
99typedef enum {
10- TYPE_NIL ,
11- TYPE_BOOL ,
12- TYPE_INT ,
13- TYPE_FLOAT ,
14- TYPE_STRING ,
15- TYPE_OBJ
10+ VAL_NIL ,
11+ VAL_BOOL ,
12+ VAL_INT ,
13+ VAL_FLOAT ,
14+ VAL_STRING ,
15+ VAL_OBJ
1616} ValueType ;
1717
18- typedef struct Object Object ;
1918typedef struct Value Value ;
2019
21- struct Object {
22- Object * next ;
20+ typedef struct Object {
21+ struct Object * next ;
2322 bool marked ;
2423 Value value ;
25- };
24+ } Object ;
2625
2726struct Value {
2827 ValueType type ;
@@ -35,21 +34,21 @@ struct Value {
3534 } data ;
3635};
3736
38- #define NIL_VAL ((Value){TYPE_NIL , {.int_val = 0}})
39- #define BOOL_VAL (v ) ((Value){TYPE_BOOL , {.bool_val = (v)}})
40- #define INT_VAL (v ) ((Value){TYPE_INT , {.int_val = (v)}})
41- #define FLOAT_VAL (v ) ((Value){TYPE_FLOAT , {.float_val = (v)}})
42- #define NUMBER_VAL (v ) FLOAT_VAL(v) // Alias for FLOAT_VAL
43- #define STRING_VAL (s ) ((Value){TYPE_STRING , {.str_val = (s)}})
44- #define OBJ_VAL (o ) ((Value){TYPE_OBJ , {.obj = (o)}})
37+ #define NIL_VAL ((Value){VAL_NIL , {.int_val = 0}})
38+ #define BOOL_VAL (v ) ((Value){VAL_BOOL , {.bool_val = (v)}})
39+ #define INT_VAL (v ) ((Value){VAL_INT , {.int_val = (v)}})
40+ #define FLOAT_VAL (v ) ((Value){VAL_FLOAT , {.float_val = (v)}})
41+ #define NUMBER_VAL (v ) FLOAT_VAL(v)
42+ #define STRING_VAL (s ) ((Value){VAL_STRING , {.str_val = (s)}})
43+ #define OBJ_VAL (o ) ((Value){VAL_OBJ , {.obj = (o)}})
4544
46- #define IS_BOOL (v ) ((v).type == TYPE_BOOL )
47- #define IS_NIL (v ) ((v).type == TYPE_NIL )
48- #define IS_INT (v ) ((v).type == TYPE_INT )
49- #define IS_FLOAT (v ) ((v).type == TYPE_FLOAT )
50- #define IS_STRING (v ) ((v).type == TYPE_STRING )
45+ #define IS_BOOL (v ) ((v).type == VAL_BOOL )
46+ #define IS_NIL (v ) ((v).type == VAL_NIL )
47+ #define IS_INT (v ) ((v).type == VAL_INT )
48+ #define IS_FLOAT (v ) ((v).type == VAL_FLOAT )
49+ #define IS_STRING (v ) ((v).type == VAL_STRING )
5150#define IS_NUMBER (v ) (IS_INT(v) || IS_FLOAT(v))
52- #define IS_OBJ (v ) ((v).type == TYPE_OBJ )
51+ #define IS_OBJ (v ) ((v).type == VAL_OBJ )
5352
5453#define AS_BOOL (v ) ((v).data.bool_val)
5554#define AS_INT (v ) ((v).data.int_val)
0 commit comments