From f372586069ea0a92db65bc90cf844c1a35187430 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Sun, 24 Oct 2021 09:26:25 +0200 Subject: Remove constant duplication on compile time --- src/bytecode/objects.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src/bytecode/objects.h') diff --git a/src/bytecode/objects.h b/src/bytecode/objects.h index 17809d5..fc5e069 100755 --- a/src/bytecode/objects.h +++ b/src/bytecode/objects.h @@ -121,4 +121,42 @@ display(Object obj) { return; } +void +object_free(Object obj) { + if (IS_STRING(obj) || IS_SYMBOL(obj)) { + array_free(obj.text); + } +} + +bool +object_equal(Object a, Object b) { + if (a.type != b.type) { + return false; + } + switch (a.type) { + case OBJ_TYPE_TRUE: + case OBJ_TYPE_FALSE: { + return true; + } break; + case OBJ_TYPE_FIXNUM: { + return a.fixnum == b.fixnum; + } break; + case OBJ_TYPE_SYMBOL: + case OBJ_TYPE_STRING: { + if (array_size(a.text) != array_size(b.text)) { + return false; + } + for (size_t i = 0; i < array_size(a.text); i++) { + if (a.text[i] != b.text[i]) { + return false; + } + } + } break; + default: { + return false; + } break; + } + return true; +} + #endif // BDL_OBJECTS_H -- cgit v1.2.1