Files
scc/runtime/scc_utils/include/scc_path.h
zzy 8b817da3b6 feat(ast): 将AST上下文重构为模块并添加字符串池支持
- 将scc_ast_ctx重命名为scc_ast_module以更好地反映其功能
- 添加scc_strpool_t用于统一管理AST节点名称字符串的生命周期
- 实现scc_ast_module_intern函数用于字符串驻留
- 更新所有相关的初始化、销毁和访问函数命名
- 修改内存分配宏以使用新的模块结构

refactor(parser): 更新解析器以使用AST模块和字符串池

- 将解析器中的ast_ctx字段替换为ast_module
- 在创建AST节点时使用新的ast_module参数
- 使用scc_ast_module_intern函数处理标识符和字符串字面量
- 确保所有字符串都被正确驻留到模块的字符串池中

refactor(sema): 更新语义分析器使用AST模块

- 将sema_ctx中的ast_ctx字段替换为ast_module
- 更新语义分析器初始化函数参数

refactor(ast2ir): 更新AST到IR转换器使用AST模块

- 将ast_ctx字段替换为ast_module
- 更新上下文初始化函数参数和实现

fix(cfg): 修复CFG模块中的符号查找错误

- 修正scc_cfg_module_unsafe_get_symbol函数中的边界检查条件

perf(ir): 完善各IR层模块的内存清理机制

- 为HIR模块添加函数和基本块元数据的释放逻辑
- 为MIR和LIR模块完善完整的资源清理和内存释放
- 确保所有分配的元数据结构都能被正确释放

chore(deps): 添加scc_utils依赖到AST库

- 在libs/ast/cbuild.toml中添加对scc_utils的依赖
2026-05-31 19:56:19 +08:00

31 lines
742 B
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef __SCC_PATH_H__
#define __SCC_PATH_H__
/**
* @brief 检查路径是否为绝对路径
* @param path 要检查的路径
* @return 1 是绝对路径, 0 不是
*/
int scc_path_is_absolute(const char *path);
/**
* @brief 检查路径是否包含 .. 路径穿越组件
* @param path 要检查的路径
* @return 1 包含 .., 0 不包含
*/
int scc_path_has_dotdot(const char *path);
/**
* @brief 检查路径是否安全用作 #include 文件名
*
* 拒绝条件:
* - 绝对路径(以 / \ 开头,或 Windows 驱动符如 C:\
* - 包含 .. 路径穿越组件
*
* @param path 要检查的路径
* @return 0 安全, -1 不安全
*/
int scc_path_check_include_safe(const char *path);
#endif /* __SCC_PATH_H__ */