diff options
Diffstat (limited to 'clox/src/value.c')
-rw-r--r-- | clox/src/value.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/clox/src/value.c b/clox/src/value.c index 0737999..34e55b8 100644 --- a/clox/src/value.c +++ b/clox/src/value.c @@ -26,4 +26,31 @@ void freeValueArray(ValueArray *array) { initValueArray(array); } -void printValue(Value value) { printf("%g", AS_NUMBER(value)); } +void printValue(Value value) { + switch (value.type) { + case VAL_BOOL: + printf(AS_BOOL(value) ? "true" : "false"); + break; + case VAL_NIL: + printf("nil"); + break; + case VAL_NUMBER: + printf("%g", AS_NUMBER(value)); + break; + } +} + +bool valuesEqual(Value a, Value b) { + if (a.type != b.type) + return false; + switch (a.type) { + case VAL_BOOL: + return AS_BOOL(a) == AS_BOOL(b); + case VAL_NIL: + return true; + case VAL_NUMBER: + return AS_NUMBER(a) == AS_NUMBER(b); + default: + return false; /* Unreachable */ + } +} |