97typedef void *(*BSL_LIST_PFUNC_DUP)(
const void *);
104#define BSL_LIST_CURR_ELMT(pList) ((pList) ? ((pList)->curr ? ((pList)->curr->data) : NULL) : NULL)
107#define BSL_LIST_NEXT_ELMT(pList) \
108 ((pList) ? ((pList)->curr ? ((pList)->curr->next ? ((pList)->curr->next->data) : NULL) : NULL) : NULL)
111#define BSL_LIST_PREV_ELMT(pList) \
112 ((pList) ? ((pList)->curr ? ((pList)->curr->prev ? ((pList)->curr->prev->data) : NULL) : NULL) : NULL)
115#define BSL_LIST_LAST_ELMT(pList) ((pList) ? ((pList)->last ? ((pList)->last->data) : NULL) : NULL)
118#define BSL_LIST_FIRST_ELMT(pList) ((pList) ? ((pList)->first ? ((pList)->first->data) : NULL) : NULL)
121#define BSL_LIST_EMPTY(pList) (((pList) != NULL) ? ((pList)->count == 0) : 0)
124#define BSL_LIST_COUNT(pList) ((pList) ? ((pList)->count) : 0)
127#define BSL_LIST_IS_END(pList) ((pList) ? (NULL == (pList)->curr) : 0)
130#define BSL_LIST_IS_START(pList) ((pList) ? ((pList)->first == (pList)->curr) : 0)
133#define BSL_LIST_GET_NEXT(pList) ((pList) ? (BSL_LIST_Next(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
136#define BSL_LIST_GET_PREV(pList) ((pList) ? (BSL_LIST_Prev(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
139#define BSL_LIST_GET_FIRST(pList) ((pList) ? (BSL_LIST_First(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
142#define BSL_LIST_GET_LAST(pList) ((pList) ? (BSL_LIST_Last(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
149#define BSL_LIST_FREE(pList, pFreeFunc) \
151 BSL_LIST_DeleteAll((pList), pFreeFunc); \
152 if (NULL != (pList)) { \
153 BSL_SAL_Free(pList); \
159#define SEC_INT_ERROR (-2)
int32_t BSL_LIST_SetMaxElements(int32_t iMaxElements)
void * BSL_LIST_Prev(BslList *pstList)
BslList * BSL_LIST_Copy(BslList *pSrcList, BSL_LIST_PFUNC_DUP pFuncCpy, BSL_LIST_PFUNC_FREE pfFreeFunc)
void BSL_LIST_DeleteAll(BslList *pList, BSL_LIST_PFUNC_FREE pfFreeFunc)
void BSL_LIST_DeleteCurrent(BslList *pList, BSL_LIST_PFUNC_FREE pfFreeFunc)
BslListNode * BSL_LIST_GetPrevNode(const BslListNode *pstListNode)
void BSL_LIST_FreeWithoutData(BslList *pstList)
void * BSL_LIST_Curr(const BslList *pstList)
int32_t BSL_LIST_GetMaxElements(void)
uint32_t BSL_LIST_GetMaxQsortCount(void)
BslList * BSL_LIST_Sort(BslList *pList, BSL_LIST_PFUNC_CMP pfCmp)
void BSL_LIST_DeleteNode(BslList *pstList, const BslListNode *pstListNode, BSL_LIST_PFUNC_FREE pfFreeFunc)
void * BSL_LIST_Search(BslList *pList, const void *pSearchFor, BSL_LIST_PFUNC_CMP pSearcher, int32_t *pstErr)
int32_t(* BSL_LIST_PFUNC_CMP)(const void *, const void *)
定义 bsl_list.h:81
void BSL_LIST_DetachNode(BslList *pstList, BslListNode **pstListNode)
void BSL_LIST_DetachCurrent(BslList *pList)
BslListNode * BSL_LIST_FirstNode(const BslList *list)
BslListPosition
定义 bsl_list.h:67
void BSL_LIST_RevList(BslList *pstList)
void * BSL_LIST_Last(BslList *pstList)
void * BSL_LIST_GetData(const BslListNode *pstNode)
void * BSL_LIST_Next(BslList *pstList)
BslList * BSL_LIST_Concat(BslList *pDestList, const BslList *pSrcList)
void BSL_LIST_DeleteAllAfterSort(BslList *pList)
void(* BSL_LIST_PFUNC_FREE)(void *)
定义 bsl_list.h:89
int32_t BSL_LIST_SetMaxQsortCount(uint32_t uiQsortSize)
void * BSL_LIST_First(BslList *pstList)
int32_t BSL_LIST_GetElmtIndex(const void *elmt, BslList *pstList)
void *(* BSL_LIST_PFUNC_DUP)(const void *)
定义 bsl_list.h:97
BslListNode * BSL_LIST_GetNextNode(const BslList *pstList, const BslListNode *pstListNode)
BslList * BSL_LIST_New(int32_t dataSize)
int32_t BSL_LIST_AddElement(BslList *pList, void *pData, BslListPosition enPosition)
void * BSL_LIST_GetIndexNode(uint32_t ulIndex, BslList *pList)
@ BSL_LIST_POS_AFTER
定义 bsl_list.h:69
@ BSL_LIST_POS_BEGIN
定义 bsl_list.h:70
@ BSL_LIST_POS_BEFORE
定义 bsl_list.h:68
@ BSL_LIST_POS_END
定义 bsl_list.h:71
void * data
定义 bsl_list.h:42
struct BslListNode * next
定义 bsl_list.h:41
struct BslListNode * prev
定义 bsl_list.h:40
int32_t count
定义 bsl_list.h:53
BslListNode * first
定义 bsl_list.h:50
BslListNode * last
定义 bsl_list.h:51
BslListNode * curr
定义 bsl_list.h:52
int32_t dataSize
定义 bsl_list.h:54