@kv  0.0.4
Library for graph problems in C and Python
list.h
1 
18 #if !defined(AT_CORE_H_INSIDE)
19 #error "Only <at/core.h> can be included directly."
20 #endif
21 #ifndef AT_LIST_H
22 #define AT_LIST_H
23 #include <at/core/macro.h>
24 AT_BEGIN_DECLS
25 #include <stdint.h>
26 /*=============================================================================
27  STRUCTURE
28  ============================================================================*/
29 typedef struct AtListU64 AtListU64;
33 struct AtListU64{
36  uint64_t value;
37 };
38 
39 typedef struct _AtList{
40  AtSList base;
41  struct _AtList* prev;
42 }AtList;
43 
44 /*=============================================================================
45  PUBLIC API
46  ============================================================================*/
52 AtListU64*
53 at_listu64_new_array(uint64_t n_items);
58 void
59 at_listu64_destroy(AtListU64** list_ptr);
64 void
65 at_listu64_destroy_array(AtListU64** list);
66 
67 
72 AtList* at_list_new();
79 AtList* at_list_prepend(AtList* list, void* value);
86 AtList* at_list_append(AtList* list, void* value);
94 AtList* at_list_prepend_at(AtList* list, AtList* item, void* value);
102 AtList* at_list_append_at(AtList* list, AtList* item, void* value);
110 AtList* at_list_prepend_at_index(AtList* list, uint32_t index, void* value);
118 AtList* at_list_append_at_index(AtList* list, uint32_t index, void* value);
125 AtList* at_list_prepend_item(AtList *list, AtList *new_item);
133 AtList* at_list_prepend_item_at(AtList* list, AtList* item, AtList* item_new);
141 AtList* at_list_append_item_at(AtList* list, AtList* item, AtList* item_new);
149 AtList* at_list_prepend_item_at_index(AtList* list, uint32_t index, AtList* item_new);
157 AtList* at_list_append_item_at_index(AtList* list, uint32_t index, AtList* item_new);
164 AtList* at_list_remove(AtList* list, AtList* item);
171 AtList* at_list_remove_from_value(AtList* list, void* value);
178 AtList* at_list_remove_at_index(AtList* list, uint32_t index);
184 AtList* at_list_remove_begin(AtList* list);
190 AtList* at_list_remove_end(AtList* list);
195 void at_list_free(AtList* list);
202 int32_t at_list_index_of(AtList* list, void* value);
208 AtList* at_list_begin(AtList* list);
214 AtList* at_list_end(AtList* list);
220 uint32_t at_list_length(AtList* list);
226 uint8_t at_list_is_empty(AtList* list);
233 AtList* at_list_at(AtList* list, uint32_t index);
240 void* at_list_value_at(AtList* list, uint32_t index);
246 AtList* at_list_next(AtList* list);
252 AtList* at_list_prev(AtList* list);
259 AtList* at_list_join(AtList* list1, AtList* list2);
266 AtList* at_list_split_at(AtList* list, uint32_t index);
274 AtList* at_list_swap_items(AtList* list, AtList* item1, AtList* item2);
282 AtList* at_list_swap_items_at(AtList* list, uint32_t index1, uint32_t index2);
290 AtList* at_list_swap(AtList* list, AtList* item1, AtList* item2);
298 AtList* at_list_swap_at(AtList* list, uint32_t index1, uint32_t index2);
304 AtList* at_list_copy(AtList* list);
312 AtList* at_list_replace(AtList* list, AtList* item, AtList* item2);
320 AtList* at_list_replace_at(AtList* list, uint32_t index, AtList* item2);
326 AtList* at_list_reverse(AtList* list);
332 AtList* at_list_sort(AtList* list, AtCompareFunc compare_function);
339 uint8_t at_list_is_different(AtList* list, AtList* list2);
346 uint8_t at_list_is_equal(AtList* list, AtList* list2);
353 AtList* at_list_find(AtList* list, void* value);
360 void at_list_foreach(AtList* list, AtDataFunc data_function, void* value);
367 AtList* at_list_append_sorted(AtList* list, AtCompareFunc compare_function, void* value);
375 AtList* at_list_append_sorted_with_data(AtList* list, AtCompareDataFunc compare_function, void* value, void* user_data);
382 AtList* at_list_prepend_sorted(AtList* list, AtCompareFunc compare_function, void* value);
390 AtList* at_list_prepend_sorted_with_data(AtList* list, AtCompareDataFunc compare_function, void* value, void* user_data);
396 void at_list_set_next(AtList* item, AtList* next);
402 void at_list_set_prev(AtList* item, AtList* prev);
408 void at_list_set_value(AtList* item, void* value);
414 void* at_list_value(AtList* item);
420 AtList* at_list_new_with_value(void* value);
421 AT_END_DECLS
422 #endif
List 64 bits.
Definition: list.h:33
Definition: list.h:39
AtListU64 * next
Definition: list.h:35
AtListU64 * prev
Definition: list.h:34
struct _AtList * prev
Definition: list.h:41
uint64_t value
Definition: list.h:36
AtSList base
Definition: list.h:40