refactor(hashtable): 简化哈希表初始化接口并优化文件打开模式

- 将哈希表初始化从两步设置改为一步完成,直接传递哈希函数和比较函数
- 重构scc_hashtable_init函数签名,接受函数指针参数
- 更新内部字段名从key_cmp为cmp_func以保持一致性
- 添加类型定义scc_hashtable_hash_func_t和scc_hashtable_equal_func_t
- 修改PAL层文件操作接口,使用枚举模式替代固定只读模式
- 更新IR上下文、预处理器宏表等组件使用新的初始化方式
- 移除AST头文件中未使用的语义分析回调类型定义
- 修复预处理器中的空指针访问问题
This commit is contained in:
zzy
2026-03-04 16:47:28 +08:00
parent 2c4b803058
commit 4015acd866
10 changed files with 48 additions and 51 deletions

View File

@@ -20,8 +20,17 @@ void *scc_pal_realloc(void *ptr, size_t new_size) {
void scc_pal_free(void *ptr) { free(ptr); }
scc_pal_file_t scc_pal_fopen(const char *path) {
return (scc_pal_file_t)fopen(path, "r+b");
scc_pal_file_t scc_pal_fopen(const char *path, scc_pal_fmode_t mode) {
switch (mode) {
case SCC_FILE_PAL_READ:
return fopen(path, "rb");
case SCC_FILE_PAL_WRITE:
return fopen(path, "wb");
case SCC_FILE_PAL_APPEND:
return fopen(path, "ab");
default:
return (scc_pal_file_t)0;
}
}
void scc_pal_fclose(scc_pal_file_t file) {

View File

@@ -11,7 +11,7 @@
void putchar_(char ch) { LOG_FATAL("you can't use printf.c directly"); }
scc_file_t scc_fopen(const char *path, scc_fmode_t mode) {
return scc_pal_fopen(path);
return scc_pal_fopen(path, (scc_pal_fmode_t)mode); // FIXME
}
void scc_fclose(scc_file_t file) { scc_pal_fclose(file); }