1. 增加字节栈查找可以指定结束索引

This commit is contained in:
coffee 2025-04-02 10:23:06 +08:00
parent 808ea9273e
commit 4cfecb4117
2 changed files with 9 additions and 2 deletions

View File

@ -119,6 +119,9 @@ void HByteStackClear(HByteType *stackData);
// 从栈顶开始查找, 成功返回位置, 失败返回 HBYTE_STACK_ERROR // 从栈顶开始查找, 成功返回位置, 失败返回 HBYTE_STACK_ERROR
HByteLenType HByteStackFind(const HByteType *stackData, HByteDataType value); HByteLenType HByteStackFind(const HByteType *stackData, HByteDataType value);
// 从栈顶开始查找, 到pos索引结束, 成功返回位置, 失败返回 HBYTE_STACK_ERROR
HByteLenType HByteStackFindEx(const HByteType *stackData, HByteDataType value, HByteLenType endPos);
// 即当前栈位置 // 即当前栈位置
HByteLenType HByteStackGetUseLen(const HByteType *stackData); HByteLenType HByteStackGetUseLen(const HByteType *stackData);

View File

@ -126,11 +126,15 @@ void HByteStackClear(HByteType *stackData) {
} }
HByteLenType HByteStackFind(const HByteType *stackData, HByteDataType value) { HByteLenType HByteStackFind(const HByteType *stackData, HByteDataType value) {
if (HByteStackEmpty(stackData)) { return HByteStackFindEx(stackData, value, 0);
}
HByteLenType HByteStackFindEx(const HByteType *stackData, HByteDataType value, HByteLenType endPos) {
if (endPos >= GetStackUseLen(stackData)) {
return HBYTE_STACK_ERROR; return HBYTE_STACK_ERROR;
} }
for (HByteLenType i = GetStackUseLen(stackData); i-- > 0;) { for (HByteLenType i = GetStackUseLen(stackData); i-- > endPos;) {
if (GetStackData(stackData, i) == value) { if (GetStackData(stackData, i) == value) {
return i; return i;
} }