#ifndef __SMCC_CORE_MEM_H__ #define __SMCC_CORE_MEM_H__ #include "core_type.h" void *smcc_memcpy(void *dest, const void *src, usize n); 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) { hash ^= *s++; hash *= 16777619u; } return hash; } /** * @brief 获取 C 字符串长度 * * @param str * @return usize */ static inline usize smcc_strlen(const char *str) { usize len = 0; while (*str) { len++; 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++; s2++; } return *s1 - *s2; } #endif /* __SMCC_CORE_MEM_H__ */