36 lines
831 B
C
36 lines
831 B
C
#ifndef CODEGEN_VAR_MAP_H_
|
|
#define CODEGEN_VAR_MAP_H_
|
|
|
|
#include <blue/ds/hashmap.h>
|
|
#include <ivy/status.h>
|
|
|
|
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 {
|
|
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
|