1 /******************************************************************************/
2 /* src/include/MLib/Basic/MLibBasicList.h */
4 /* Copyright (C) 2017 Mochi */
5 /******************************************************************************/
6 #ifndef _MLIB_BASIC_LIST_H_
7 #define _MLIB_BASIC_LIST_H_
8 /******************************************************************************/
10 /******************************************************************************/
13 #include <MLib/MLib.h>
16 /******************************************************************************/
18 /******************************************************************************/
20 typedef struct MLibBasicListNode {
21 struct MLibBasicListNode *pNext; /**< 前ノード */
22 struct MLibBasicListNode *pPrev; /**< 次ノード */
23 } MLibBasicListNode_t;
27 MLibBasicListNode_t *pHead; /**< 先頭ノード */
28 MLibBasicListNode_t *pTail; /**< 最後尾ノード */
29 size_t size; /**< 連結リストのノード個数 */
33 /******************************************************************************/
35 /******************************************************************************/
37 extern MLibRet_t MLibBasicListInit( MLibBasicList_t *pList );
40 extern MLibRet_t MLibBasicListInsertAfter( MLibBasicList_t *pList,
41 MLibBasicListNode_t *pNode,
42 MLibBasicListNode_t *pNewNode );
45 extern MLibRet_t MLibBasicListInsertBefore( MLibBasicList_t *pList,
46 MLibBasicListNode_t *pNode,
47 MLibBasicListNode_t *pNewNode );
50 extern MLibRet_t MLibBasicListInsertHead( MLibBasicList_t *pList,
51 MLibBasicListNode_t *pNewNode );
54 extern MLibRet_t MLibBasicListInsertTail( MLibBasicList_t *pList,
55 MLibBasicListNode_t *pNewNode );
58 extern MLibRet_t MLibBasicListRemove( MLibBasicList_t *pList,
59 MLibBasicListNode_t *pNode );
62 extern MLibBasicListNode_t *MLibBasicListRemoveHead( MLibBasicList_t *pList );
65 extern MLibBasicListNode_t *MLibBasicListRemoveTail( MLibBasicList_t *pList );
68 /******************************************************************************/