aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBad Diode <bd@badd10de.dev>2021-10-13 20:15:14 +0200
committerBad Diode <bd@badd10de.dev>2021-10-13 20:15:14 +0200
commite81f139ecd62a7db014ec40ec887abb9afb17664 (patch)
tree7a140288a11987c396b26e656b516d1a26a49da6
parentb2426dc8cc473a4b796f0f96136b2f254c84913f (diff)
downloadbdl-e81f139ecd62a7db014ec40ec887abb9afb17664.tar.gz
bdl-e81f139ecd62a7db014ec40ec887abb9afb17664.zip
Add an update method for changing environment values
-rw-r--r--src/bootstrap/environment.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/bootstrap/environment.c b/src/bootstrap/environment.c
index 0a6a866..d4e9f86 100644
--- a/src/bootstrap/environment.c
+++ b/src/bootstrap/environment.c
@@ -60,4 +60,18 @@ env_lookup(Environment *env, Object *symbol) {
60 return obj_err; 60 return obj_err;
61} 61}
62 62
63void
64env_update_symbol(Environment *env, Object *symbol, Object *value) {
65 // Try to find an existing symbol in the current environment.
66 for (size_t i = 0; i < env->size; i++) {
67 EnvEntry entry = env->buf[i];
68 if (obj_eq(symbol, entry.symbol)) {
69 env->buf[i].value = value;
70 return;
71 }
72 }
73 // If we don't find the symbol, add a new entry.
74 env_add_symbol(env, symbol, value);
75}
76
63// TODO: Free env function. 77// TODO: Free env function.