diff options
author | Bad Diode <bd@badd10de.dev> | 2021-10-13 20:15:14 +0200 |
---|---|---|
committer | Bad Diode <bd@badd10de.dev> | 2021-10-13 20:15:14 +0200 |
commit | e81f139ecd62a7db014ec40ec887abb9afb17664 (patch) | |
tree | 7a140288a11987c396b26e656b516d1a26a49da6 /src | |
parent | b2426dc8cc473a4b796f0f96136b2f254c84913f (diff) | |
download | bdl-e81f139ecd62a7db014ec40ec887abb9afb17664.tar.gz bdl-e81f139ecd62a7db014ec40ec887abb9afb17664.zip |
Add an update method for changing environment values
Diffstat (limited to 'src')
-rw-r--r-- | src/bootstrap/environment.c | 14 |
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 | ||
63 | void | ||
64 | env_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. |