⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dll_pub.h

📁 abstract rtos
💻 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 + -