From 0dd38d08551ac2fcff53eb604f6363f37b25aef9 Mon Sep 17 00:00:00 2001 From: kartofen Date: Sun, 3 Nov 2024 17:35:51 +0200 Subject: env is just linked list now, uses much less memory --- src/env.h | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/env.h') diff --git a/src/env.h b/src/env.h index a233a09..3415410 100644 --- a/src/env.h +++ b/src/env.h @@ -1,22 +1,26 @@ #ifndef ENV_H #define ENV_H +#include "list.h" + // #include "value.h" typedef struct value * _value_t; typedef struct env * env_t; #define ENV_EMPTY NULL -typedef void (*env_destroy_func)(char *key, _value_t value); +enum env_kv_flag { + ENV_KV_FREE_KEY = 1, + ENV_KV_CIRCULAR_REF = 2 +}; -env_t env_create(env_t parent, env_destroy_func destroy_func); +env_t env_create(env_t parent); void env_destroy(env_t env); -int env_insert(env_t env, char *key, _value_t data, - char **prevkey, _value_t *prevdata); +int env_insert(env_t env, char *key, _value_t value, + _value_t *prevval, int flags); int env_query(env_t env, char *key, _value_t *data); env_t env_copy(env_t env); -env_t env_parent(env_t env); #endif -- cgit v1.2.3