cstl_public 公共模块对外定义
更多...
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
浏览源代码.
cstl_public 公共模块对外定义
- 版权所有
- Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved.
cstl公共定义实现源码
- 日期
- 2021-05-14
- 版本
- v0.1.0
- 修改日志:
| Date | Version | Description |
| 2021-05-14 | 0.1.0 | 创建初始版本 |
◆ CSTL_CONTAINER_OF
该API通过结构的某个成员变量,得到这个结构的起始地址。
- 描述:
- 该API通过结构的某个成员变量,得到这个结构的起始地址。该API是一个特殊的宏,输入参数取决于宏的实现。
- 注意
- 参数
-
| ptr | [IN] 该参数表示结点某成员的地址。取值范围为数据类型。 |
| type | [IN] 该参数表示传入的成员所属的结点类型结构。取值范围为数据类型。 |
| member | [IN] 该参数表示结构中成员变量的名字。取值范围为数据类型。 |
- 返回值
-
- 参见
- 无。
◆ CSTL_ERRNO_BASE
| #define CSTL_ERRNO_BASE (uint32_t)0x0a03u |
◆ CSTL_ERROR
◆ CSTL_OK
◆ ERRNO_CSTL_ELEMENT_EMPTY
容器不是NULL但是内容为空,该值为十六进制的0xa030001
◆ ERRNO_CSTL_INPUT_INVALID
容器的入参是非法的,该值为十六进制的0xa030002
◆ ERRNO_CSTL_NODE_CREATE_FAIL
◆ CstlDataCmpFunc
| typedef int32_t(* CstlDataCmpFunc) (const void *data1, const void *data2) |
比较函数原型
- 描述:比较函数原型,用于排序场景。
- 注意
- 注意:这里只定义了比较函数原型,由于不知道数据类型和长度,因此钩子函数需要业务自己实现。
- 参数
-
| data1 | [IN] 数据1 |
| data2 | [IN] 数据2 |
- 返回值
-
◆ CstlDupFunc
| typedef void *(* CstlDupFunc) (void *ptr, size_t size) |
用户数据拷贝函数原型
- 注意
- 注意:源缓冲区长度需要调用者获取,由于不知道数据类型和长度,因此钩子函数需要业务自己实现。
- 参数
-
| ptr | [IN] 指向用户数据的指针 |
| size | [IN] 用户数据拷贝长度 |
- 返回值
-
◆ CstlFreeFunc
| typedef void(* CstlFreeFunc) (void *ptr) |
用户内存释放函数原型
- 描述:资源释放函数原型,一般用于机制批量free内存时,内存中可能含有用户私有资源,这是需要用户自行释放
- 参数
-
- 返回值
-
◆ CstlKeyCmpFunc
比较函数原型
- 描述:比较函数原型,用于排序场景。
- 注意
- 注意:这里只定义了比较函数原型,由于不知道数据类型和长度,因此钩子函数需要业务自己实现。
当前源码内有默认的比较函数:该函数不对外提供,但是用户如果不指定默认比较方法会调用它,对此简单解释: 其比较方式为把当前数据转化为有符号数进行比较,即处理含有负数的场景,比较方式为升序。 如果用户需要存储的数据是无符号整数类型。此时排序结果可能不是预期的。 这种场景下的数据比较,用户需要自定义比较函数来解决这种情况的数据比较。 例如对于大数A = uintptr_t(-1) 和 大数 B = 1ULL << 50,目前的函数会认为A < B,实际上A是大于B的。 综上所述,用户对于使用什么样的比较函数,应该根据自己的数据类型来编写(包括降序或其它比较规则)
- 参数
-
| key1 | [IN] key1 |
| key2 | [IN] key2 |
- 返回值
-
◆ CstlMallocFunc
| typedef void *(* CstlMallocFunc) (size_t size) |
用户内存申请函数原型
- 注意
- 注意:用户内存申请函数原型,需要用户自己实现。
- 参数
-
- 返回值
-
◆ CstlMatchFunc
匹配函数原型
- 描述:用于匹配查询场景。
- 注意
- 注意:这里只定义了函数原型,由于不知道用户查询匹配机制,因此钩子函数需要业务自己实现。
- 参数
-
| node | [IN] 算法结构体节点 |
| data | [IN] 关键信息 |
- 返回值
-
◆ anonymous enum
| 枚举值 |
|---|
| ERRNO_ELEMENT_EMPTY | |
| ERRNO_INPUT_INVALID | |
| ERRNO_NODE_CREATE_FAIL | |