186 #ifndef LEGATO_DOUBLY_LINKED_LIST_INCLUDE_GUARD 187 #define LEGATO_DOUBLY_LINKED_LIST_INCLUDE_GUARD 200 typedef struct le_dls_Link
239 #define LE_DLS_LIST_DECL_INIT {NULL} 247 #define LE_DLS_LIST_INIT (le_dls_List_t)LE_DLS_LIST_DECL_INIT 256 #define LE_DLS_LINK_INIT (le_dls_Link_t){NULL, NULL} 552 #define LE_DLS_FOREACH(listPtr, iteratorPtr, type, member) \ 553 for ((iteratorPtr) = CONTAINER_OF(le_dls_Peek(listPtr), type, member); \ 554 &((iteratorPtr)->member); \ 555 (iteratorPtr) = CONTAINER_OF(le_dls_PeekNext((listPtr),&((iteratorPtr)->member)), \ 559 #endif // LEGATO_DOUBLY_LINKED_LIST_INCLUDE_GUARD bool le_dls_IsInList(const le_dls_List_t *listPtr, const le_dls_Link_t *linkPtr)
size_t le_dls_NumLinks(const le_dls_List_t *listPtr)
void le_dls_Remove(le_dls_List_t *listPtr, le_dls_Link_t *linkToRemovePtr)
le_dls_Link_t * le_dls_PeekPrev(const le_dls_List_t *listPtr, const le_dls_Link_t *currentLinkPtr)
void le_dls_Swap(le_dls_List_t *listPtr, le_dls_Link_t *linkPtr, le_dls_Link_t *otherLinkPtr)
struct le_dls_Link * nextPtr
Next link pointer.
Definition: le_doublyLinkedList.h:202
Definition: le_doublyLinkedList.h:200
le_dls_Link_t * le_dls_Pop(le_dls_List_t *listPtr)
LE_DECLARE_INLINE bool le_dls_IsHead(const le_dls_List_t *listPtr, const le_dls_Link_t *linkPtr)
Definition: le_doublyLinkedList.h:491
bool(* le_dls_LessThanFunc_t)(le_dls_Link_t *a, le_dls_Link_t *b)
Definition: le_doublyLinkedList.h:230
LE_DECLARE_INLINE bool le_dls_IsEmpty(const le_dls_List_t *listPtr)
Definition: le_doublyLinkedList.h:393
void le_dls_AddAfter(le_dls_List_t *listPtr, le_dls_Link_t *currentLinkPtr, le_dls_Link_t *newLinkPtr)
void le_dls_Queue(le_dls_List_t *listPtr, le_dls_Link_t *newLinkPtr)
le_dls_Link_t * headLinkPtr
Link to list head.
Definition: le_doublyLinkedList.h:218
Definition: le_doublyLinkedList.h:216
le_dls_Link_t * le_dls_PeekTail(const le_dls_List_t *listPtr)
le_dls_Link_t * le_dls_Peek(const le_dls_List_t *listPtr)
#define LE_DECLARE_INLINE
Definition: le_basics.h:330
void le_dls_AddBefore(le_dls_List_t *listPtr, le_dls_Link_t *currentLinkPtr, le_dls_Link_t *newLinkPtr)
le_dls_Link_t * le_dls_PopTail(le_dls_List_t *listPtr)
struct le_dls_Link * prevPtr
Previous link pointer.
Definition: le_doublyLinkedList.h:203
void le_dls_Stack(le_dls_List_t *listPtr, le_dls_Link_t *newLinkPtr)
le_dls_Link_t * le_dls_PeekNext(const le_dls_List_t *listPtr, const le_dls_Link_t *currentLinkPtr)
bool le_dls_IsListCorrupted(const le_dls_List_t *listPtr)
void le_dls_Sort(le_dls_List_t *listPtr, le_dls_LessThanFunc_t comparatorPtr)
LE_DECLARE_INLINE bool le_dls_IsTail(const le_dls_List_t *listPtr, const le_dls_Link_t *linkPtr)
Definition: le_doublyLinkedList.h:510