wl_array | |
wl_array_init | 初期化 |
---|---|
wl_array_release | 解放 |
wl_array_add | サイズの追加 |
wl_array_copy | 複製する |
wl_array_for_each | データを順に参照 |
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_init(struct wl_array *array);
データを初期化。
struct wl_array { size_t size; size_t alloc; void *data; };
void *wl_array_add(struct wl_array *array, size_t size);
配列のサイズを size byte 分追加。
戻り値
先頭のポインタ。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_init(struct wl_list *list);
データを初期化する。
struct wl_list { struct wl_list *prev; struct wl_list *next; };
void wl_list_insert(struct wl_list *list, struct wl_list *elm);
list の後に elm を挿入する。
list が先頭なら、先頭へ挿入。
list が先頭なら、先頭へ挿入。
#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 は構造体データのポインタ、head は先頭の wl_list *、member は構造体内の wl_list のメンバ名。
pos は構造体データのポインタ、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 * の変数名。