wl_array (配列) | |
struct wl_array | 配列 |
---|---|
wl_array_init | 初期化 |
wl_array_release | 解放 |
wl_array_add | 領域の追加 |
wl_array_copy | 複製 |
wl_array_for_each | 配列のデータを先頭から順に参照 |
wl_list (双方向リスト) | |
struct wl_list | リスト |
wl_list_init | 初期化 |
wl_list_insert | 挿入 |
wl_list_remove | リストから取り除く |
wl_list_length | アイテム数取得 |
wl_list_empty | リストが空かどうか |
wl_list_insert_list | リストの末尾に、他のリストのアイテムを追加 |
wl_list_for_each | 先頭から参照 |
wl_list_for_each_safe | 先頭から参照 (削除に対応) |
wl_list_for_each_reverse wl_list_for_each_reverse_safe | 終端から逆順に参照 |
wl_array (配列)
void *wl_array_add(struct wl_array *array, size_t size);
配列のサイズを、size バイト分拡張。
戻り値
新しい先頭のポインタ。NULL で失敗
#define wl_array_for_each(pos, array) for (pos = (array)->data; \ (const char *) pos < ((const char *) (array)->data + (array)->size); \ (pos)++)
配列のデータを先頭から順に参照
pos
データのポインタを示す変数。
繰り返すごとにポインタが移動する。
繰り返すごとにポインタが移動する。
wl_list (双方向リスト)
void wl_list_insert(struct wl_list *list, struct wl_list *elm);
list の後に elm を挿入する。
list が先頭なら、先頭へ挿入。
list が先頭なら、先頭へ挿入。
void wl_list_insert_list(struct wl_list *list, struct wl_list *other);
list の末尾に、other の全てのアイテムを追加する。
#define wl_list_for_each(pos, head, member) \ for (pos = wl_container_of((head)->next, pos, member); \ &pos->member != (head); \ pos = wl_container_of(pos->member.next, pos, member))
先頭から参照
pos
wl_list が含まれる構造体のポインタを示す変数。
繰り返すごとに、ポインタが次の位置へ移動する。
繰り返すごとに、ポインタが次の位置へ移動する。
head
繰り返しの先頭位置となる、wl_list *
member
構造体内の wl_list を示すメンバ名
#define wl_list_for_each_safe(pos, tmp, head, member) \ for (pos = wl_container_of((head)->next, pos, member), \ tmp = wl_container_of((pos)->member.next, tmp, member); \ &pos->member != (head); \ pos = tmp, \ tmp = wl_container_of(pos->member.next, tmp, member))
先頭から、各データを参照する。
for 内でデータを削除する場合でも、正しく動作する。
tmp は次のデータ用の wl_list * の変数名。
for 内でデータを削除する場合でも、正しく動作する。
tmp は次のデータ用の wl_list * の変数名。