#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); env_t env_copy(env_t env); void env_destroy(env_t env); #endif