tp/libs/SSystem/SComponent/c_node_iter.cpp

42 lines
901 B
C++

#include "global.h"
#include "SComponent/c_node_iter.h"
extern "C" {
#define NODE_GET_PREV(pNode) (pNode ? pNode->mpPrevNode : NULL)
#define NODE_GET_NEXT(pNode) (pNode ? pNode->mpNextNode : NULL)
int cNdIt_Method(node_class *pNode, cNdIt_MethodFunc pMethod, void *pUserData)
{
int ret = 1;
node_class *pNext = NODE_GET_NEXT(pNode);
while (pNode) {
int methodRet = pMethod(pNode, pUserData);
if (!methodRet)
ret = 0;
pNode = pNext;
pNext = NODE_GET_NEXT(pNext);
}
return ret;
}
void * cNdIt_Judge(node_class *pNode, cNdIt_JudgeFunc pJudge, void *pUserData)
{
node_class *pNext = NODE_GET_NEXT(pNode);
while (pNode) {
void *pJudgeRet = pJudge(pNode, pUserData);
if (pJudgeRet != NULL)
return pJudgeRet;
pNode = pNext;
pNext = NODE_GET_NEXT(pNext);
}
return NULL;
}
};