68 lines
1.7 KiB
C
68 lines
1.7 KiB
C
/**
|
||
* @file rt_string.h
|
||
* @brief 运行时字符串与内存操作
|
||
*
|
||
* 提供基本的内存操作和字符串处理函数实现
|
||
*/
|
||
|
||
#ifndef __SMCC_RT_STRING_H__
|
||
#define __SMCC_RT_STRING_H__
|
||
|
||
#include "std/rt_api_def.h"
|
||
|
||
/** @defgroup memory_operations 内存操作 */
|
||
|
||
/**
|
||
* @brief 内存区域比较
|
||
* @param s1 第一个内存区域指针
|
||
* @param s2 第二个内存区域指针
|
||
* @param n 比较的字节数
|
||
* @return 差异值(<0: s1<s2, 0: 相等, >0: s1>s2)
|
||
*/
|
||
int rt_memcmp(const void* s1, const void* s2, rt_size_t n);
|
||
|
||
/**
|
||
* @brief 安全内存拷贝(要求内存区域不重叠)
|
||
* @param dest 目标内存地址(restrict修饰)
|
||
* @param src 源内存地址(restrict修饰)
|
||
* @param n 拷贝的字节数
|
||
* @return 目标内存地址
|
||
*/
|
||
void* rt_memcpy(void* restrict dest, const void* restrict src, rt_size_t n);
|
||
|
||
/**
|
||
* @brief 内存区域填充
|
||
* @param s 目标内存地址
|
||
* @param c 填充字节值(转换为unsigned char)
|
||
* @param n 填充的字节数
|
||
* @return 原始内存地址
|
||
*/
|
||
void* rt_memset(void* dest, int val, rt_size_t n);
|
||
|
||
/** @defgroup string_operations 字符串操作 */
|
||
|
||
/**
|
||
* @brief 字符串比较
|
||
* @param s1 第一个字符串指针
|
||
* @param s2 第二个字符串指针
|
||
* @return 差异值(<0: s1<s2, 0: 相等, >0: s1>s2)
|
||
*/
|
||
int rt_strcmp(const char* s1, const char* s2);
|
||
|
||
/**
|
||
* @brief 计算字符串长度
|
||
* @param s 字符串指针
|
||
* @return 字符串长度(不含终止符)
|
||
*/
|
||
rt_size_t rt_strlen(const char* s);
|
||
|
||
/**
|
||
* @brief 计算字符串哈希值
|
||
* @param s 输入字符串
|
||
* @return 32位无符号哈希值
|
||
* @note 使用FNV-1a哈希算法实现
|
||
*/
|
||
u32_t rt_strhash(const char* s);
|
||
|
||
#endif // __SMCC_RT_STRING_H__
|