24#include "hitls_build.h"
30#include "bsl_hash_list.h"
41struct ListTagRawListNode {
42 struct ListTagRawListNode *next;
43 struct ListTagRawListNode *prev;
50typedef struct ListTagRawListNode ListRawNode;
59 ListFreeFunc freeFunc;
68 ListDupFreeFuncPair dataFunc;
96int32_t ListRawInit(RawList *list, ListFreeFunc freeFunc);
107int32_t ListRawClear(RawList *list);
118int32_t ListRawDeinit(RawList *list);
128bool ListRawEmpty(
const RawList *list);
137size_t ListRawSize(
const RawList *list);
146int32_t ListRawPushFront(RawList *list, ListRawNode *node);
155int32_t ListRawPushBack(RawList *list, ListRawNode *node);
164int32_t ListRawInsert(
const ListRawNode *curNode, ListRawNode *newNode);
175int32_t ListRawPopFront(RawList *list);
186int32_t ListRawPopBack(RawList *list);
200int32_t ListRawRemove(RawList *list, ListRawNode *node);
213ListRawNode *ListRawFront(
const RawList *list);
226ListRawNode *ListRawBack(
const RawList *list);
240ListRawNode *ListRawGetPrev(
const RawList *list,
const ListRawNode *node);
254ListRawNode *ListRawGetNext(
const RawList *list,
const ListRawNode *node);
276ListRawNode *ListRawFindNode(
const RawList *list, ListMatchFunc nodeMatchFunc, uintptr_t data);
291#define BSL_CONTAINER_OF(ptr, type, member) \
292 ((type *)((uintptr_t)(ptr) - (uintptr_t)(&(((type *)0)->member))))