27 lines
708 B
C
27 lines
708 B
C
#ifndef __SPL_AST2IR_H__
|
||
#define __SPL_AST2IR_H__
|
||
|
||
#include "spl_ir.h"
|
||
#include "spl_sema.h"
|
||
|
||
/* 全局 var/const 的 def → gdata 向量中的 value 节点索引 */
|
||
typedef struct {
|
||
spl_def_id_t def_id;
|
||
usize gdata_idx;
|
||
} spl_ast2ir_gref_t;
|
||
|
||
typedef struct {
|
||
const spl_sema_t *sema;
|
||
spl_ir_t ir;
|
||
VEC(char *) owned_names; /* 本模块 malloc 的函数名,drop 时释放 */
|
||
VEC(spl_ast2ir_gref_t) gdata_ref; /* def_id → gdata value 节点索引 */
|
||
int err_count;
|
||
} spl_ast2ir_t;
|
||
|
||
void spl_ast2ir_init(spl_ast2ir_t *ast2ir, const spl_sema_t *sema);
|
||
void spl_ast2ir_drop(spl_ast2ir_t *ast2ir);
|
||
|
||
void spl_ast2ir_run(spl_ast2ir_t *ast2ir);
|
||
|
||
#endif /* __SPL_AST2IR_H__ */
|