From 31519e8a586791d60e6e56e558c2a3bf973cc1f9 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 26 Jan 2020 08:02:17 +0100 Subject: Implement plus operator and indexing of strings --- include/value.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'include/value.h') diff --git a/include/value.h b/include/value.h index 7dd6d28..b90b446 100644 --- a/include/value.h +++ b/include/value.h @@ -6,7 +6,6 @@ #include #include "string_view.h" #include "std_gc/list.h" -#include "std_gc/hash_map.h" typedef enum { TSL_TYPE_NULL, @@ -36,10 +35,16 @@ typedef struct { /* This is an index to the function */ typedef int TslFunction; +typedef struct TslHashMap TslHashMap; + struct TslValue { union { TslNumber number; TslString *string; + /* + TODO: Make this an int that refers to the index in the bytecode which contains the string view. + Then the size of this union will be 8 bytes instead of 16 bytes on 64-bit systems. + */ TslStringView string_ref; TslBool boolean; TslBool null; @@ -58,4 +63,9 @@ int tsl_value_equals(const TslValue *lhs, const TslValue *rhs); /* This should be called before setting/modifying the data of the value */ void tsl_value_clear(TslValue *self); +int tsl_value_add(const TslValue *lhs_value, const TslValue *rhs_value, TslValue *result); + +/* Returns NULL if index is out of bounds of the list */ +TslValue* tsl_string_ref_get(const TslStringView *self, double index); + #endif /* TSL_VALUE_H */ -- cgit v1.2.3