1. 修改序列化宏注释
This commit is contained in:
parent
41fe54b1bf
commit
95abe54968
@ -34,18 +34,22 @@
|
||||
* HSTRUCT_END();
|
||||
* }
|
||||
* // 使用已有的来序列化和反序列化
|
||||
* HSTRUCT_CONV_DEFINE(uint16_t)
|
||||
* typedef struct Demo {
|
||||
* uint8_t a;
|
||||
* } Demo;
|
||||
* HSTRUCT_CONV_DEFINE(Demo)
|
||||
* {
|
||||
* HSTRUCT_FROM_BEGIN(uint16_t);
|
||||
* // 这里只是示例, 使用 HSTRUCT_USE_CONV_FUNC 调用外部序列化, 数据偏移会自动调整
|
||||
* HSTRUCT_USE_CONV_FUNC(uint8_t, sizeof(uint8_t), HSTRUCT_GET_TYPE());
|
||||
* // 初始化对象
|
||||
* HSTRUCT_CONV_BEGIN(Demo);
|
||||
* // 使用uint8_t来序列化Demo.a
|
||||
* HSTRUCT_USE_CONV_FUNC(uint8_t, sizeof(uint8_t), HSTRUCT_GET_TYPE().a);
|
||||
* HSTRUCT_END();
|
||||
* }
|
||||
*/
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
// 固定函数名 _HStructConvXXX
|
||||
// 固定函数名 _HStructConv_XXX | _HStructFrom_XXX
|
||||
|
||||
/**
|
||||
* @brief 类型数据转换成字节数据
|
||||
@ -103,7 +107,7 @@
|
||||
HSTRUCT_UPDATE(0); \
|
||||
} while (0)
|
||||
|
||||
// 定义或生命该类型的转换函数
|
||||
// 定义或声明该类型的转换函数
|
||||
#define HSTRUCT_CONV_DEFINE(type) int _HStructConv_##type(const void *_var, char *_data, int _len)
|
||||
#define HSTRUCT_FROM_DEFINE(type) int _HStructFrom_##type(void *_var, const char *_data, int _len)
|
||||
|
||||
@ -113,6 +117,7 @@
|
||||
#define HSTRUCT_FROM_ALIAS(type, aliasType) \
|
||||
static inline int _HStructFrom_##type(void *_var, const char *_data, int _len) { return _HStructFrom_##aliasType(_var, _data, _len); }
|
||||
|
||||
|
||||
// 对应参数获取方法
|
||||
#define HSTRUCT_GET_TYPE_RAW() (_convVar)
|
||||
#define HSTRUCT_GET_TYPE() (*_convVar)
|
||||
@ -120,19 +125,23 @@
|
||||
#define HSTRUCT_GET_DATA_RAW(type) ((type)_convData)
|
||||
#define HSTRUCT_GET_DATA(type) (*((type *)_convData))
|
||||
|
||||
// 函数实现的开始和结束
|
||||
|
||||
// 反序列化函数实现的开始
|
||||
#define HSTRUCT_FROM_BEGIN(type) \
|
||||
type *_convVar = (type *)_var; \
|
||||
const void *_convData = _data; \
|
||||
int _useLen = 0;
|
||||
// 序列化函数实现的开始
|
||||
#define HSTRUCT_CONV_BEGIN(type) \
|
||||
const type *_convVar = (const type *)_var; \
|
||||
char *_convData = (char *)_data; \
|
||||
int _useLen = 0;
|
||||
// 序列化和反序列化函数实现的结束
|
||||
#define HSTRUCT_END() return _useLen
|
||||
|
||||
|
||||
// 函数的检查数据是否足够
|
||||
#define HSTRUCT_CHECK_LEN(len) \
|
||||
#define _HSTRUCT_CHECK_LEN(len) \
|
||||
if (HSTRUCT_GET_LEN() < len + _useLen) \
|
||||
{ \
|
||||
LogD("data len[%d], use[%d]", __FILE_NAME__, __FUNCTION__, __LINE__, HSTRUCT_GET_LEN(), _useLen); \
|
||||
@ -142,7 +151,7 @@
|
||||
// 更新长度数据
|
||||
#define HSTRUCT_UPDATE(nextLen) \
|
||||
_convData = (_data + _useLen); \
|
||||
HSTRUCT_CHECK_LEN(nextLen) \
|
||||
_HSTRUCT_CHECK_LEN(nextLen) \
|
||||
_useLen += nextLen
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user