#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
Go to the source code of this file.
|
| void | list_init (struct list *) |
| |
| struct list_elem * | list_begin (struct list *) |
| |
| struct list_elem * | list_next (struct list_elem *) |
| |
| struct list_elem * | list_end (struct list *) |
| |
| struct list_elem * | list_rbegin (struct list *) |
| |
| struct list_elem * | list_prev (struct list_elem *) |
| |
| struct list_elem * | list_rend (struct list *) |
| |
| struct list_elem * | list_head (struct list *) |
| |
| struct list_elem * | list_tail (struct list *) |
| |
| void | list_insert (struct list_elem *, struct list_elem *) |
| |
| void | list_splice (struct list_elem *before, struct list_elem *first, struct list_elem *last) |
| |
| void | list_push_front (struct list *, struct list_elem *) |
| |
| void | list_push_back (struct list *, struct list_elem *) |
| |
| struct list_elem * | list_remove (struct list_elem *) |
| |
| struct list_elem * | list_pop_front (struct list *) |
| |
| struct list_elem * | list_pop_back (struct list *) |
| |
| struct list_elem * | list_front (struct list *) |
| |
| struct list_elem * | list_back (struct list *) |
| |
| size_t | list_size (struct list *) |
| |
| bool | list_empty (struct list *) |
| |
| void | list_reverse (struct list *) |
| |
| void | list_sort (struct list *, list_less_func *, void *aux) |
| |
| void | list_insert_ordered (struct list *, struct list_elem *, list_less_func *, void *aux) |
| |
| void | list_unique (struct list *, struct list *duplicates, list_less_func *, void *aux) |
| |
| struct list_elem * | list_max (struct list *, list_less_func *, void *aux) |
| |
| struct list_elem * | list_min (struct list *, list_less_func *, void *aux) |
| |
◆ list_entry
| #define list_entry |
( |
|
LIST_ELEM, |
|
|
|
STRUCT, |
|
|
|
MEMBER |
|
) |
| |
Value:
static int next(int pos)
Definition: intq.c:74
#define offsetof(TYPE, MEMBER)
Definition: stddef.h:5
unsigned char uint8_t
Definition: stdint.h:20
◆ list_less_func
◆ list_back()
277 {
280}
#define ASSERT(CONDITION)
Definition: debug.h:30
bool list_empty(struct list *list)
Definition: list.c:296
struct list_elem * prev
Definition: list.h:88
struct list_elem tail
Definition: list.h:95
◆ list_begin()
68 {
71}
#define NULL
Definition: stddef.h:4
struct list_elem * next
Definition: list.h:89
struct list_elem head
Definition: list.h:94
◆ list_empty()
296 {
298}
struct list_elem * list_begin(struct list *list)
Definition: list.c:68
struct list_elem * list_end(struct list *list)
Definition: list.c:88
◆ list_end()
◆ list_front()
◆ list_head()
◆ list_init()
| void list_init |
( |
struct list * |
list | ) |
|
◆ list_insert()
157 {
160
165}
static bool is_interior(struct list_elem *elem)
Definition: list.c:46
static bool is_tail(struct list_elem *elem)
Definition: list.c:52
◆ list_insert_ordered()
420 {
422
426
428 if (less (elem, e, aux))
429 break;
431}
void list_insert(struct list_elem *before, struct list_elem *elem)
Definition: list.c:157
struct list_elem * list_next(struct list_elem *elem)
Definition: list.c:77
◆ list_max()
462 {
466
468 if (less (max, e, aux))
469 max = e;
470 }
471 return max;
472}
◆ list_min()
479 {
483
485 if (less (e, min, aux))
486 min = e;
487 }
488 return min;
489}
◆ list_next()
77 {
80}
static bool is_head(struct list_elem *elem)
Definition: list.c:39
◆ list_pop_back()
260 {
263 return back;
264}
struct list_elem * list_remove(struct list_elem *elem)
Definition: list.c:241
struct list_elem * list_back(struct list *list)
Definition: list.c:277
◆ list_pop_front()
251 {
254 return front;
255}
struct list_elem * list_front(struct list *list)
Definition: list.c:269
◆ list_prev()
◆ list_push_back()
| void list_push_back |
( |
struct list * |
list, |
|
|
struct list_elem * |
elem |
|
) |
| |
◆ list_push_front()
| void list_push_front |
( |
struct list * |
list, |
|
|
struct list_elem * |
elem |
|
) |
| |
◆ list_rbegin()
◆ list_remove()
◆ list_rend()
◆ list_reverse()
| void list_reverse |
( |
struct list * |
list | ) |
|
310 {
313
318 }
319}
static void swap(struct list_elem **a, struct list_elem **b)
Definition: list.c:302
◆ list_size()
285 {
287 size_t cnt = 0;
288
290 cnt++;
291 return cnt;
292}
◆ list_sort()
381 {
382 size_t output_run_cnt;
383
386
387
388
389 do {
393
394 output_run_cnt = 0;
396
397 output_run_cnt++;
398
399
400
403 break;
405
406
408 }
409 }
410 while (output_run_cnt > 1);
411
413}
static void inplace_merge(struct list_elem *a0, struct list_elem *a1b0, struct list_elem *b1, list_less_func *less, void *aux)
Definition: list.c:358
static bool is_sorted(struct list_elem *a, struct list_elem *b, list_less_func *less, void *aux) UNUSED
Definition: list.c:324
static struct list_elem * find_end_of_run(struct list_elem *a, struct list_elem *b, list_less_func *less, void *aux)
Definition: list.c:339
◆ list_splice()
172 {
174 if (first == last)
175 return;
177
180
181
184
185
190}
struct list_elem * list_prev(struct list_elem *elem)
Definition: list.c:105
◆ list_tail()
◆ list_unique()
439 {
441
445 return;
446
449 if (!less (elem,
next, aux) && !less (
next, elem, aux)) {
451 if (duplicates !=
NULL)
453 } else
455}
void list_push_back(struct list *list, struct list_elem *elem)
Definition: list.c:202