From c497aca556295479b1ed5632e125ff1d0658d8d8 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 11 Oct 2021 09:40:39 +0200 Subject: Add a base struct to start environment refactoring --- src/bootstrap/environment.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/bootstrap/environment.c') 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 { Object *value; } EnvSymbol; +typedef struct Environment { + struct Environment *parent; + EnvSymbol *memory; + size_t size; + size_t capacity; +} Environment; + #define ENV_SIZE 256 static EnvSymbol environment[ENV_SIZE]; static size_t env_n = 0; Object * -find_environment_symbol(Object *symbol) { +env_find_symbol(Object *symbol) { for (size_t i = 0; i < env_n; i++) { if (symbol_eq(environment[i].symbol, symbol)) { return environment[i].value; } } + return obj_nil; +} + +Environment * +env_create(Environment *parent) { + // TODO: calloc env and assign parent. return NULL; } +void +env_add_symbol(EnvSymbol symbol, Environment *env) { + // TODO: If empty allocate enough for one object. + // TODO: If full double the capacity and realloc. + // TODO: Put the symbol on the next slot available. +} -- cgit v1.2.1