1. 修改错误值
This commit is contained in:
parent
3a97f14fe2
commit
47ad1bc8d3
@ -18,15 +18,16 @@ typedef uint8_t HByteType; // 栈类型
|
|||||||
typedef uint32_t HByteDataType; // 栈数据类型
|
typedef uint32_t HByteDataType; // 栈数据类型
|
||||||
|
|
||||||
#ifdef _HBYTE_STACK_LEN_USE32
|
#ifdef _HBYTE_STACK_LEN_USE32
|
||||||
|
#define HBYTE_STACK_ERROR (0xffffffff)
|
||||||
typedef uint32_t HByteLenType;
|
typedef uint32_t HByteLenType;
|
||||||
#elif defined(_HBYTE_STACK_LEN_USE16)
|
#elif defined(_HBYTE_STACK_LEN_USE16)
|
||||||
|
#define HBYTE_STACK_ERROR (0xffff)
|
||||||
typedef uint16_t HByteLenType;
|
typedef uint16_t HByteLenType;
|
||||||
#else
|
#else
|
||||||
|
#define HBYTE_STACK_ERROR (0xff)
|
||||||
typedef uint8_t HByteLenType; // 栈长度类型
|
typedef uint8_t HByteLenType; // 栈长度类型
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// 失败返回值
|
|
||||||
#define HBYTE_STACK_ERROR (-1)
|
|
||||||
|
|
||||||
/** ================================================================================ **/
|
/** ================================================================================ **/
|
||||||
|
|
||||||
|
|||||||
@ -24,16 +24,18 @@ enum eHVectorFlag {
|
|||||||
kHVectorNeedInit = 0x80, // 需要初始化
|
kHVectorNeedInit = 0x80, // 需要初始化
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HVECTOR_ERROR (-1)
|
|
||||||
|
|
||||||
typedef uint8_t HVectorType; // vector类型
|
typedef uint8_t HVectorType; // vector类型
|
||||||
typedef uint32_t HVectorDataType; // vector统一数据类型
|
typedef uint32_t HVectorDataType; // vector统一数据类型
|
||||||
|
|
||||||
#ifdef _HVECTOR_LEN_USE32
|
#ifdef _HVECTOR_LEN_USE32
|
||||||
|
#define HVECTOR_ERROR (0xffffffff)
|
||||||
typedef uint32_t HVectorLenType;
|
typedef uint32_t HVectorLenType;
|
||||||
#elif defined(_HVECTOR_LEN_USE16)
|
#elif defined(_HVECTOR_LEN_USE16)
|
||||||
|
#define HVECTOR_ERROR (0xffff)
|
||||||
typedef uint16_t HVectorLenType;
|
typedef uint16_t HVectorLenType;
|
||||||
#else
|
#else
|
||||||
|
#define HVECTOR_ERROR (0xff)
|
||||||
typedef uint8_t HVectorLenType; // vector长度类型
|
typedef uint8_t HVectorLenType; // vector长度类型
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -100,10 +102,10 @@ typedef struct _HVector32 {
|
|||||||
|
|
||||||
// 添加数据, 成功返回1, 失败返回 0
|
// 添加数据, 成功返回1, 失败返回 0
|
||||||
uint8_t HVectorAddData(HVectorType *vector, HVectorDataType data);
|
uint8_t HVectorAddData(HVectorType *vector, HVectorDataType data);
|
||||||
// 添加字节数据, 超出仅复制到最大长度
|
// 添加字节数据, 超出仅复制到最大长度, 返回复制长度
|
||||||
void HVectorAddBytes(HVectorType *vector, const uint8_t *datas, HVectorLenType byteLen);
|
HVectorLenType HVectorAddBytes(HVectorType *vector, const uint8_t *datas, HVectorLenType byteLen);
|
||||||
// 添加对应格式数据, 要求datas类型是同一对应位类型, 长度为字节长度, 超出仅复制到最大长度
|
// 添加对应格式数据, 要求datas类型是同一对应位类型, 长度为字节长度, 超出仅复制到最大长度, 返回复制长度
|
||||||
void HVectorAddDatas(HVectorType *vector, const void *datas, HVectorLenType byteLen);
|
HVectorLenType HVectorAddDatas(HVectorType *vector, const void *datas, HVectorLenType byteLen);
|
||||||
|
|
||||||
// 获取数据, 失败返回 HVECTOR_ERROR
|
// 获取数据, 失败返回 HVECTOR_ERROR
|
||||||
HVectorDataType HVectorGetData(HVectorType *vector, HVectorLenType index);
|
HVectorDataType HVectorGetData(HVectorType *vector, HVectorLenType index);
|
||||||
|
|||||||
@ -4,6 +4,10 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
static void InitVector(HVectorType *vector) {
|
static void InitVector(HVectorType *vector) {
|
||||||
|
if (vector == NULL) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
if ((vector[0] & kHVectorNeedInit) == 0) {
|
if ((vector[0] & kHVectorNeedInit) == 0) {
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
@ -17,6 +21,10 @@ static void InitVector(HVectorType *vector) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t GetVectorType(const HVectorType *vector) {
|
static uint8_t GetVectorType(const HVectorType *vector) {
|
||||||
|
if (vector == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
InitVector((HVectorType *)vector);
|
InitVector((HVectorType *)vector);
|
||||||
const _HVectorBase *base = (const _HVectorBase *)vector;
|
const _HVectorBase *base = (const _HVectorBase *)vector;
|
||||||
return base->flag & kHVectorFlagAllMask;
|
return base->flag & kHVectorFlagAllMask;
|
||||||
@ -51,22 +59,38 @@ static void SetVectorData(HVectorType *vector, HVectorLenType pos, HVectorDataTy
|
|||||||
}
|
}
|
||||||
|
|
||||||
static HVectorLenType GetVectorLen(const HVectorType *vector) {
|
static HVectorLenType GetVectorLen(const HVectorType *vector) {
|
||||||
|
if (vector == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
const _HVectorBase *base = (const _HVectorBase *)vector;
|
const _HVectorBase *base = (const _HVectorBase *)vector;
|
||||||
InitVector((HVectorType *)vector);
|
InitVector((HVectorType *)vector);
|
||||||
return base->len;
|
return base->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HVectorLenType GetVectorUseLen(const HVectorType *vector) {
|
static HVectorLenType GetVectorUseLen(const HVectorType *vector) {
|
||||||
|
if (vector == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
const _HVectorBase *base = (const _HVectorBase *)vector;
|
const _HVectorBase *base = (const _HVectorBase *)vector;
|
||||||
InitVector((HVectorType *)vector);
|
InitVector((HVectorType *)vector);
|
||||||
return base->useLen;
|
return base->useLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HVectorLenType GetVectorByteLen(const HVectorType *vector) {
|
static HVectorLenType GetVectorByteLen(const HVectorType *vector) {
|
||||||
|
if (vector == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return GetVectorTypeSize(vector) * ((const _HVectorBase *)vector)->len;
|
return GetVectorTypeSize(vector) * ((const _HVectorBase *)vector)->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HVectorLenType GetVectorByteUseLen(const HVectorType *vector) {
|
static HVectorLenType GetVectorByteUseLen(const HVectorType *vector) {
|
||||||
|
if (vector == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return GetVectorTypeSize(vector) * ((const _HVectorBase *)vector)->useLen;
|
return GetVectorTypeSize(vector) * ((const _HVectorBase *)vector)->useLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,6 +107,10 @@ static void *GetVectorDataPtr(HVectorType *vector, HVectorLenType pos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void SetVectorUseLen(HVectorType *vector, HVectorLenType len) {
|
static void SetVectorUseLen(HVectorType *vector, HVectorLenType len) {
|
||||||
|
if (vector == NULL) {
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
_HVectorBase *base = (_HVectorBase *)vector;
|
_HVectorBase *base = (_HVectorBase *)vector;
|
||||||
InitVector((HVectorType *)vector);
|
InitVector((HVectorType *)vector);
|
||||||
base->useLen = len;
|
base->useLen = len;
|
||||||
@ -100,7 +128,7 @@ uint8_t HVectorAddData(HVectorType *vector, HVectorDataType data) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HVectorAddBytes(HVectorType *vector, const uint8_t *datas, HVectorLenType byteLen) {
|
HVectorLenType HVectorAddBytes(HVectorType *vector, const uint8_t *datas, HVectorLenType byteLen) {
|
||||||
HVectorLenType useLen = GetVectorUseLen(vector);
|
HVectorLenType useLen = GetVectorUseLen(vector);
|
||||||
HVectorLenType maxLen = GetVectorByteLen(vector) - useLen;
|
HVectorLenType maxLen = GetVectorByteLen(vector) - useLen;
|
||||||
HVectorLenType typeSize = GetVectorTypeSize(vector);
|
HVectorLenType typeSize = GetVectorTypeSize(vector);
|
||||||
@ -109,16 +137,17 @@ void HVectorAddBytes(HVectorType *vector, const uint8_t *datas, HVectorLenType b
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (byteLen == 0) {
|
if (byteLen == 0) {
|
||||||
return;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *dest = (uint8_t *)GetVectorDataBytePtr(vector, GetVectorByteUseLen(vector));
|
uint8_t *dest = (uint8_t *)GetVectorDataBytePtr(vector, GetVectorByteUseLen(vector));
|
||||||
memcpy(dest, datas, byteLen);
|
memcpy(dest, datas, byteLen);
|
||||||
SetVectorUseLen(vector, useLen + (byteLen + typeSize - 1) / typeSize);
|
SetVectorUseLen(vector, useLen + (byteLen + typeSize - 1) / typeSize);
|
||||||
|
return byteLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HVectorAddDatas(HVectorType *vector, const void *datas, HVectorLenType byteLen) {
|
HVectorLenType HVectorAddDatas(HVectorType *vector, const void *datas, HVectorLenType byteLen) {
|
||||||
HVectorAddBytes(vector, (const uint8_t *)datas, byteLen * GetVectorTypeSize(vector));
|
return HVectorAddBytes(vector, (const uint8_t *)datas, byteLen * GetVectorTypeSize(vector)) / GetVectorTypeSize(vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取数据, 失败返回 HVECTOR_ERROR
|
// 获取数据, 失败返回 HVECTOR_ERROR
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user