📄 dll_pub.h
字号:
#ifdef __cplusplus#if __cplusplusextern "C"{#endif #endif #ifndef __INC_DLL_PUB_H__#define __INC_DLL_PUB_H__#define DLL_GET_HANDLE(pNode) ((pNode)->ulHandle)#define DLL_SET_HANDLE(pNode, ulValue) ((pNode)->ulHandle = (U32)(ulValue))#define DLL_Init(pList) \ {\ (pList)->Head.pNext = &(pList)-> Head; \ (pList)->Head.pPrev = &(pList)-> Head; \ (pList)->ulCount = 0; \ }#define DLL_Init_Node(pNode) \ (pNode)->pPrev = (pNode)->pNext = NULL;#define DLL_Add(pList,pNode) \ dll_insert_in_middle((pList),(pList)->Head.pPrev,(pNode),&(pList)->Head)#define DLL_Count(pList) ((pList)->ulCount)#define DLL_First(pList) \ ((DLL_Count((pList)) == 0) ? NULL: (pList)->Head.pNext)#define DLL_Last(pList) \ ((DLL_Count((pList)) == 0) ? NULL : (pList)->Head.pPrev)#define DLL_Next(pList,pNode) \ (((pNode) == NULL) ? DLL_First(pList) : \ (((pNode)->pNext == &(pList)->Head) ? NULL : (pNode)->pNext))#define DLL_Previous(pList,pNode) \ (((pNode) == NULL) ? DLL_Last(pList) : \ (((pNode)->pPrev == &(pList)->Head) ? NULL : (pNode)->pPrev))#define DLL_Is_Node_In_List(pNode) \ (((pNode)->pNext != NULL) && \ ((pNode)->pPrev != NULL) && \ ((pNode)->pNext->pPrev == pNode) && \ ((pNode)->pPrev->pNext == pNode))#define DLL_Scan(pList,pNode,TypeCast) \ for(pNode = (TypeCast)(DLL_First((pList))); \ pNode != NULL; \ pNode = (TypeCast)(DLL_Next((pList),((DLL_NODE_S *)(pNode))))) typedef struct dll_node{ struct dll_node *pNext; struct dll_node*pPrev; U32 ulHandle; }DLL_NODE_S;typedef struct DLL{ DLL_NODE_S Head; U32 ulCount; }DLL_S;DLL_NODE_S *dll_find(DLL_S *pList, VOID *pKey, S32 (*fnValCmp)(VOID *, DLL_NODE_S *));VOID dll_insert_in_middle (DLL_S *pList, DLL_NODE_S *pPrev, DLL_NODE_S *pMid, DLL_NODE_S *pNext);#undef dll_insert VOID dll_insert (DLL_S *pList, DLL_NODE_S *pPrev, DLL_NODE_S *pNode);VOID dll_delete_in_middle (DLL_S *pList, DLL_NODE_S *pPrev, DLL_NODE_S *pNode, DLL_NODE_S *pNext);VOID dll_delete(DLL_S *pList, DLL_NODE_S *pNode);DLL_NODE_S *dll_get (DLL_S *pList);VOID dll_free_all (DLL_S *pList, VOID (*fnFree)(VOID *));S32 dll_walk(DLL_S *pList, VOID (*fnVisit)(DLL_NODE_S *));#endif#ifdef __cplusplus#if __cplusplus}#endif #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -