diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-24 09:26:25 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-24 09:26:25 +0200 |
commit | f372586069ea0a92db65bc90cf844c1a35187430 (patch) | |
tree | b6b9c9cf27844505a3863567aeff057d339ad87d /src/bytecode/objects.h | |
parent | 8aa57dd5a87b454ce99a336ed86a6bd4d6f77c1e (diff) | |
download | bdl-f372586069ea0a92db65bc90cf844c1a35187430.tar.gz bdl-f372586069ea0a92db65bc90cf844c1a35187430.zip |
Remove constant duplication on compile time
Diffstat (limited to 'src/bytecode/objects.h')
-rwxr-xr-x | src/bytecode/objects.h | 38 |
1 files changed, 38 insertions, 0 deletions
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) { | |||
121 | return; | 121 | return; |
122 | } | 122 | } |
123 | 123 | ||
124 | void | ||
125 | object_free(Object obj) { | ||
126 | if (IS_STRING(obj) || IS_SYMBOL(obj)) { | ||
127 | array_free(obj.text); | ||
128 | } | ||
129 | } | ||
130 | |||
131 | bool | ||
132 | object_equal(Object a, Object b) { | ||
133 | if (a.type != b.type) { | ||
134 | return false; | ||
135 | } | ||
136 | switch (a.type) { | ||
137 | case OBJ_TYPE_TRUE: | ||
138 | case OBJ_TYPE_FALSE: { | ||
139 | return true; | ||
140 | } break; | ||
141 | case OBJ_TYPE_FIXNUM: { | ||
142 | return a.fixnum == b.fixnum; | ||
143 | } break; | ||
144 | case OBJ_TYPE_SYMBOL: | ||
145 | case OBJ_TYPE_STRING: { | ||
146 | if (array_size(a.text) != array_size(b.text)) { | ||
147 | return false; | ||
148 | } | ||
149 | for (size_t i = 0; i < array_size(a.text); i++) { | ||
150 | if (a.text[i] != b.text[i]) { | ||
151 | return false; | ||
152 | } | ||
153 | } | ||
154 | } break; | ||
155 | default: { | ||
156 | return false; | ||
157 | } break; | ||
158 | } | ||
159 | return true; | ||
160 | } | ||
161 | |||
124 | #endif // BDL_OBJECTS_H | 162 | #endif // BDL_OBJECTS_H |