picox  0.1
xintrusive_list.h ファイル

ノード侵入型のダブルリンクリストコンテナです。 [詳解]

#include <picox/core/xcore.h>
xintrusive_list.h の依存先関係図:
被依存関係図:

[ソースコード]

データ構造

struct  XIntrusiveList
 リストノードデータを格納するコンテナ [詳解]
 
struct  XIntrusiveNode
 双方向リンリストリストノード [詳解]
 

マクロ定義

#define xilist_foreach(list, ite)
 コンテナ先頭から順方向走査します [詳解]
 
#define xilist_rforeach(list, ite)
 コンテナ末尾から逆方向走査します [詳解]
 
#define xnode_entry(ptr, type, member)   X_CONTAINER_OF(ptr, type, member)
 XIntrusiveNodeにオーバーラップする型のポインタを取り出します [詳解]
 

関数

static XIntrusiveNodexilist_back (const XIntrusiveList *self)
 コンテナの末尾ノードを返します
 
static void xilist_clear (XIntrusiveList *self)
 コンテナを空にします
 
static bool xilist_empty (const XIntrusiveList *self)
 コンテナが空かどうかを返します
 
static XIntrusiveNodexilist_end (const XIntrusiveList *self)
 コンテナの終端を指すノードを返します
 
static XIntrusiveNodexilist_front (const XIntrusiveList *self)
 コンテナの先頭ノードを返します
 
static XIntrusiveNodexilist_head (XIntrusiveList *self)
 コンテナのルートノードのポインタを返します
 
static void xilist_init (XIntrusiveList *self)
 コンテナを初期化します
 
static bool xilist_is_singular (const XIntrusiveList *self)
 ノード数が1つかどうかを返します
 
static void xilist_move_back (XIntrusiveList *self, XIntrusiveNode *node)
 ノードのリンクを解除してから末尾に追加します [詳解]
 
static void xilist_move_front (XIntrusiveList *self, XIntrusiveNode *node)
 ノードのリンクを解除してから先頭に追加しま。 [詳解]
 
static XIntrusiveNodexilist_pop_back (const XIntrusiveList *self)
 末尾ノードをコンテナから除去して返します
 
static XIntrusiveNodexilist_pop_front (const XIntrusiveList *self)
 先頭ノードをコンテナから除去して返します
 
static void xilist_push_back (XIntrusiveList *self, XIntrusiveNode *node)
 ノードを末尾に追加します [詳解]
 
static void xilist_push_front (XIntrusiveList *self, XIntrusiveNode *node)
 ノードを先頭に追加します [詳解]
 
static size_t xilist_size (const XIntrusiveList *self)
 ノード数を返します
 
static void xilist_splice_back (XIntrusiveList *self, XIntrusiveList *other)
 otherを末尾に連結します [詳解]
 
static void xilist_splice_front (XIntrusiveList *self, XIntrusiveList *other)
 otherを先頭に連結します [詳解]
 
static void xilist_swap (XIntrusiveList *self, XIntrusiveList *other)
 2つのリストの中身を入れ替えます [詳解]
 
static void xilist_transfer_back (XIntrusiveList *self, XIntrusiveList *other, XIntrusiveNode *pos)
 末尾にotherの先頭要素からpos(pos自身も含む)までを転送します [詳解]
 
static void xilist_transfer_front (XIntrusiveList *self, XIntrusiveList *other, XIntrusiveNode *pos)
 先頭にotherの先頭要素からpos(pos自身も含む)までを転送します [詳解]
 
static void xnode_insert_next (XIntrusiveNode *p1, XIntrusiveNode *p2)
 p1の前にp2を挿入します
 
static void xnode_insert_prev (XIntrusiveNode *p1, XIntrusiveNode *p2)
 p1の後ろにp2を挿入します
 
static void xnode_replace (XIntrusiveNode *p1, XIntrusiveNode *p2)
 p1のリンクをにp2に置換えます
 
static void xnode_splice (XIntrusiveNode *prev, XIntrusiveNode *next, XIntrusiveList *list)
 prev, next間にlistを連結します
 
static void xnode_unlink (XIntrusiveNode *node)
 ノードのリンクを解除します [詳解]
 

詳解

ノード侵入型のダブルリンクリストコンテナです。

著者
MaskedW