Files
bshell/bshell.runtime/runtime/var-map.c
T
2026-05-30 19:52:36 +01:00

43 lines
959 B
C

#include "var-map.h"
static void var_entry_cleanup(fx_namemap_entry *entry)
{
struct var_map_entry *map_entry
= fx_unbox(struct var_map_entry, entry, e_entry);
bshell_variable_unref(map_entry->e_var);
free(map_entry);
}
void var_map_cleanup(struct var_map *map)
{
fx_namemap_cleanup(&map->m_vars, var_entry_cleanup);
}
enum bshell_status var_map_put(struct var_map *map, bshell_variable *var)
{
const char *name = bshell_variable_get_name(var);
struct var_map_entry *entry = malloc(sizeof *entry);
if (!entry) {
return BSHELL_ERR_NO_MEMORY;
}
memset(entry, 0x0, sizeof *entry);
entry->e_var = var;
fx_namemap_put(&map->m_vars, name, &entry->e_entry);
return BSHELL_SUCCESS;
}
bshell_variable *var_map_get(struct var_map *map, const char *name)
{
fx_namemap_entry *e = fx_namemap_get(&map->m_vars, name);
if (!e) {
return NULL;
}
struct var_map_entry *entry
= fx_unbox(struct var_map_entry, e, e_entry);
return entry->e_var;
}