From 68a62ad356603d64d537e231f06b5d9445e79abe Mon Sep 17 00:00:00 2001 From: kartofen Date: Fri, 23 Aug 2024 19:55:13 +0300 Subject: usefull commit message --- src/env.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 src/env.h (limited to 'src/env.h') diff --git a/src/env.h b/src/env.h new file mode 100644 index 0000000..577133a --- /dev/null +++ b/src/env.h @@ -0,0 +1,30 @@ +#ifndef ENV_H +#define ENV_H + +// #include "value.h" +typedef struct value * value_t; + +#include "hashtable.h" + +typedef struct symbol_table *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_destroy_func destroy_func; +}; + +env_t env_create(env_t parent, env_destroy_func destroy_func); +void env_destroy(env_t env); + +int env_insert(env_t env, value_t key, value_t data); +int env_query (env_t env, value_t key, value_t *data); +int env_delete(env_t env, value_t key); + +#endif -- cgit v1.2.3