feat(runtime): 添加字符串和内存操作工具函数
- 在 `core_mem.h` 中新增 `smcc_strhash32`、`smcc_strlen` 和 `smcc_strcmp` 函数, 提供 C 字符串的哈希、长度获取和比较功能 - 完善 `core_str.h` 中 `cstring_t` 结构体及相关操作函数的注释说明 - 更新 `core_str.h` 头文件保护宏命名,增强模块标识一致性 - 修改 `core_vec.h` 文件头部保护宏名称以匹配实际文件名 另外,在 lexer 测试运行代码中引入日志相关头文件并调整日志级别设置逻辑。
This commit is contained in:
@@ -8,6 +8,12 @@ void *smcc_memmove(void *dest, const void *src, usize n);
|
||||
void *smcc_memset(void *s, int c, usize n);
|
||||
int smcc_memcmp(const void *s1, const void *s2, usize n);
|
||||
|
||||
/**
|
||||
* @brief 使用FNV-1a进行 C 字符串哈希
|
||||
*
|
||||
* @param s
|
||||
* @return u32
|
||||
*/
|
||||
static inline u32 smcc_strhash32(const char *s) {
|
||||
u32 hash = 2166136261u; // FNV-1a偏移基础值
|
||||
while (*s) {
|
||||
@@ -17,6 +23,12 @@ static inline u32 smcc_strhash32(const char *s) {
|
||||
return hash;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取 C 字符串长度
|
||||
*
|
||||
* @param str
|
||||
* @return usize
|
||||
*/
|
||||
static inline usize smcc_strlen(const char *str) {
|
||||
usize len = 0;
|
||||
while (*str) {
|
||||
@@ -26,6 +38,13 @@ static inline usize smcc_strlen(const char *str) {
|
||||
return len;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 比较两个 C 字符串
|
||||
*
|
||||
* @param s1
|
||||
* @param s2
|
||||
* @return int
|
||||
*/
|
||||
static inline int smcc_strcmp(const char *s1, const char *s2) {
|
||||
while (*s1 && *s2 && *s1 == *s2) {
|
||||
s1++;
|
||||
|
||||
Reference in New Issue
Block a user