From 7edffea39a3d666098ebeca27ea398769e8b981b Mon Sep 17 00:00:00 2001 From: kartofen Date: Sun, 22 Sep 2024 15:35:40 +0300 Subject: make env opaque --- src/env.h | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'src/env.h') diff --git a/src/env.h b/src/env.h index 6f3e169..a233a09 100644 --- a/src/env.h +++ b/src/env.h @@ -4,24 +4,19 @@ // #include "value.h" typedef struct value * _value_t; -#include "hashtable.h" - -typedef struct symbol_table *env_t; +typedef struct env * env_t; #define ENV_EMPTY NULL typedef void (*env_destroy_func)(char *key, _value_t value); -struct symbol_table { - hashtable_t table; - - struct symbol_table *parent; - size_t refs; +env_t env_create(env_t parent, env_destroy_func destroy_func); +void env_destroy(env_t env); - env_destroy_func destroy_func; -}; +int env_insert(env_t env, char *key, _value_t data, + char **prevkey, _value_t *prevdata); +int env_query(env_t env, char *key, _value_t *data); -env_t env_create(env_t parent, env_destroy_func destroy_func); env_t env_copy(env_t env); -void env_destroy(env_t env); +env_t env_parent(env_t env); #endif -- cgit v1.2.3