Files
ivy/lang/codegen/var-map.h

36 lines
827 B
C
Raw Normal View History

#ifndef CODEGEN_VAR_MAP_H_
#define CODEGEN_VAR_MAP_H_
#include <ivy/status.h>
struct b_hashmap;
struct mie_value;
struct ivy_ast_node;
enum codegen_var_flags {
CODEGEN_VAR_F_PTR = 0x01u,
CODEGEN_VAR_F_CAPTURE = 0x02u,
};
struct codegen_var {
enum codegen_var_flags v_flags;
struct mie_type *v_type;
struct ivy_ast_node *v_node;
struct mie_value *v_value;
};
struct codegen_var_map {
struct b_hashmap *m_map;
};
extern enum ivy_status codegen_var_map_init(struct codegen_var_map *map);
extern enum ivy_status codegen_var_map_fini(struct codegen_var_map *map);
extern enum ivy_status codegen_var_map_get(
struct codegen_var_map *map, const char *ident, struct codegen_var **out);
extern enum ivy_status codegen_var_map_put(
struct codegen_var_map *map, const char *ident,
const struct codegen_var *var);
#endif