89typedef void *(*BSL_LIST_PFUNC_DUP)(
const void *);
96#define BSL_LIST_CURR_ELMT(pList) ((pList) ? ((pList)->curr ? ((pList)->curr->data) : NULL) : NULL)
99#define BSL_LIST_NEXT_ELMT(pList) \
100 ((pList) ? ((pList)->curr ? ((pList)->curr->next ? ((pList)->curr->next->data) : NULL) : NULL) : NULL)
103#define BSL_LIST_PREV_ELMT(pList) \
104 ((pList) ? ((pList)->curr ? ((pList)->curr->prev ? ((pList)->curr->prev->data) : NULL) : NULL) : NULL)
107#define BSL_LIST_LAST_ELMT(pList) ((pList) ? ((pList)->last ? ((pList)->last->data) : NULL) : NULL)
110#define BSL_LIST_FIRST_ELMT(pList) ((pList) ? ((pList)->first ? ((pList)->first->data) : NULL) : NULL)
113#define BSL_LIST_EMPTY(pList) (((pList) != NULL) ? ((pList)->count == 0) : 0)
116#define BSL_LIST_COUNT(pList) ((pList) ? ((pList)->count) : 0)
119#define BSL_LIST_IS_END(pList) ((pList) ? (NULL == (pList)->curr) : 0)
122#define BSL_LIST_IS_START(pList) ((pList) ? ((pList)->first == (pList)->curr) : 0)
125#define BSL_LIST_GET_NEXT(pList) ((pList) ? (BSL_LIST_Next(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
128#define BSL_LIST_GET_PREV(pList) ((pList) ? (BSL_LIST_Prev(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
131#define BSL_LIST_GET_FIRST(pList) ((pList) ? (BSL_LIST_First(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
134#define BSL_LIST_GET_LAST(pList) ((pList) ? (BSL_LIST_Last(pList) ? BSL_LIST_CURR_ELMT(pList) : NULL) : NULL)
141#define BSL_LIST_FREE(pList, pFreeFunc) \
143 BSL_LIST_DeleteAll((pList), pFreeFunc); \
144 if (NULL != (pList)) { \
145 BSL_SAL_FREE(pList); \
158#define BSL_LIST_FREE_AFTER_SORT(pList) \
160 BSL_LIST_DeleteAllAfterSort(pList); \
161 if (NULL != (pList)) { \
162 BSL_SAL_FREE(pList); \
167#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 *)
Definition bsl_list.h:73
void BSL_LIST_DetachNode(BslList *pstList, BslListNode **pstListNode)
void BSL_LIST_DetachCurrent(BslList *pList)
BslListNode * BSL_LIST_FirstNode(const BslList *list)
BslListPosition
Definition bsl_list.h:59
@ BSL_LIST_POS_AFTER
Definition bsl_list.h:61
@ BSL_LIST_POS_BEGIN
Definition bsl_list.h:62
@ BSL_LIST_POS_BEFORE
Definition bsl_list.h:60
@ BSL_LIST_POS_END
Definition bsl_list.h:63
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 *)
Definition bsl_list.h:81
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 *)
Definition bsl_list.h:89
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)
void * data
Definition bsl_list.h:34
struct BslListNode * next
Definition bsl_list.h:33
struct BslListNode * prev
Definition bsl_list.h:32
BslListNode * first
Definition bsl_list.h:42
int32_t count
Definition bsl_list.h:45
BslListNode * last
Definition bsl_list.h:43
int32_t dataSize
Definition bsl_list.h:46
BslListNode * curr
Definition bsl_list.h:44