aboutsummaryrefslogtreecommitdiffstats
path: root/src/bootstrap/environment.c
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-11 09:40:39 +0200
committerBad Diode <bd@badd10de.dev>2021-10-11 09:40:39 +0200
commitc497aca556295479b1ed5632e125ff1d0658d8d8 (patch)
tree114aadd19644b32e2046241c4f3955b00de5422f /src/bootstrap/environment.c
parent581116c655df4eb753098e013dd5854df95f7865 (diff)
downloadbdl-c497aca556295479b1ed5632e125ff1d0658d8d8.tar.gz
bdl-c497aca556295479b1ed5632e125ff1d0658d8d8.zip
Add a base struct to start environment refactoring
Diffstat (limited to 'src/bootstrap/environment.c')
-rw-r--r--src/bootstrap/environment.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/bootstrap/environment.c b/src/bootstrap/environment.c
index 4eda2ad..fca2449 100644
--- a/src/bootstrap/environment.c
+++ b/src/bootstrap/environment.c
@@ -7,17 +7,36 @@ typedef struct EnvSymbol {
7 Object *value; 7 Object *value;
8} EnvSymbol; 8} EnvSymbol;
9 9
10typedef struct Environment {
11 struct Environment *parent;
12 EnvSymbol *memory;
13 size_t size;
14 size_t capacity;
15} Environment;
16
10#define ENV_SIZE 256 17#define ENV_SIZE 256
11static EnvSymbol environment[ENV_SIZE]; 18static EnvSymbol environment[ENV_SIZE];
12static size_t env_n = 0; 19static size_t env_n = 0;
13 20
14Object * 21Object *
15find_environment_symbol(Object *symbol) { 22env_find_symbol(Object *symbol) {
16 for (size_t i = 0; i < env_n; i++) { 23 for (size_t i = 0; i < env_n; i++) {
17 if (symbol_eq(environment[i].symbol, symbol)) { 24 if (symbol_eq(environment[i].symbol, symbol)) {
18 return environment[i].value; 25 return environment[i].value;
19 } 26 }
20 } 27 }
28 return obj_nil;
29}
30
31Environment *
32env_create(Environment *parent) {
33 // TODO: calloc env and assign parent.
21 return NULL; 34 return NULL;
22} 35}
23 36
37void
38env_add_symbol(EnvSymbol symbol, Environment *env) {
39 // TODO: If empty allocate enough for one object.
40 // TODO: If full double the capacity and realloc.
41 // TODO: Put the symbol on the next slot available.
42}