YALLIC - Yet Another Linked List Implementation in C
yallic.h
Go to the documentation of this file.
1 #ifndef YALLIC_H
2 #define YALLIC_H
3 
31 #include <stddef.h>
32 #include <stdbool.h>
33 
34 
35 
40 typedef struct __linked_list_t List_t;
41 
42 
43 
52 List_t* List__new( size_t max_size );
53 
65 void List__delete_shallow( List_t** pp_list );
66 
76 void List__delete_deep( List_t** pp_list );
77 
87 void List__reverse( List_t** pp_list );
88 
99 size_t List__resize( List_t* p_list, size_t new_max_size );
100 
107 size_t List__get_max_size( List_t* p_list );
108 
116 void List__clear_shallow( List_t* p_list );
117 
127 void List__clear_deep( List_t* p_list );
128 
129 
138 int List__add( List_t* p_list, void* p_data );
139 
150 int List__add_at( List_t* p_list, void* p_data, size_t index );
151 
161 int List__extend( List_t* p_list_dest, List_t* p_list_src );
162 
172 int List__merge( List_t* p_list_dest, List_t* p_list_src );
173 
185 int List__extend_at( List_t* p_list_dest, List_t* p_list_src, size_t index );
186 
197 int List__merge_at( List_t* p_list_dest, List_t* p_list_src, size_t index );
198 
199 
212 List_t* List__slice( List_t* p_list, size_t from_index, size_t to_index );
213 
214 
223 List_t* List__clone( List_t* p_list );
224 
225 
235 List_t* List__copy( List_t* p_list, size_t element_size );
236 
237 
246 bool List__contains( List_t* p_list, void* p_data );
247 
254 bool List__is_empty( List_t* p_list );
255 
256 
264 void* List__get_first( List_t* p_list );
265 
273 void* List__get_last( List_t* p_list );
274 
283 void* List__get_at( List_t* p_list, size_t index );
284 
285 
295 int List__index_of( List_t* p_list, void* p_data );
296 
306 int List__last_index_of( List_t* p_list, void* p_data );
307 
308 
318 void* List__pop( List_t* p_list );
319 
329 int List__push( List_t* p_list, void* p_data );
330 
331 
339 void* List__remove_first( List_t* p_list );
340 
348 void* List__remove_last( List_t* p_list );
349 
358 void* List__remove_at( List_t* p_list, size_t index );
359 
369 void* List__remove_first_occurrence( List_t* p_list, void* p_data );
370 
380 void* List__remove_last_occurrence( List_t* p_list, void* p_data );
381 
382 
392 void* List__set_at( List_t* p_list, size_t index, void* p_new_data );
393 
394 
401 size_t List__length( List_t* p_list );
402 
409 size_t List__count( List_t* p_list );
410 
417 size_t List__size( List_t* p_list );
418 
419 
433 void* List__to_array( List_t* p_list, size_t element_size, size_t extra_bytes );
434 
448 List_t* List__from_array( void* p_array, size_t element_size, size_t count, size_t list_max_size );
449 
450 
451 
471 void List__for_each(
472  List_t* p_list,
473  void** pp_result,
474  void* p_input,
475  void (*action)(void*, void*, void**),
476  void (*callback)(void*, void**)
477 );
478 
479 
480 
481 #endif /* YALLIC_H */
List_t * List__clone(List_t *p_list)
Definition: yallic.c:403
int List__add_at(List_t *p_list, void *p_data, size_t index)
Definition: yallic.c:216
bool List__contains(List_t *p_list, void *p_data)
Definition: yallic.c:505
void * List__get_first(List_t *p_list)
Definition: yallic.c:519
List_t * List__new(size_t max_size)
Definition: yallic.c:74
void * List__to_array(List_t *p_list, size_t element_size, size_t extra_bytes)
Definition: yallic.c:727
size_t List__get_max_size(List_t *p_list)
Definition: yallic.c:149
List_t * List__copy(List_t *p_list, size_t element_size)
Definition: yallic.c:463
size_t List__size(List_t *p_list)
Definition: yallic.c:721
void * List__remove_first(List_t *p_list)
Definition: yallic.c:599
void List__for_each(List_t *p_list, void **pp_result, void *p_input, void(*action)(void *, void *, void **), void(*callback)(void *, void **))
Definition: yallic.c:814
int List__index_of(List_t *p_list, void *p_data)
Definition: yallic.c:543
int List__push(List_t *p_list, void *p_data)
Definition: yallic.c:578
int List__extend_at(List_t *p_list_dest, List_t *p_list_src, size_t index)
Definition: yallic.c:331
void * List__set_at(List_t *p_list, size_t index, void *p_new_data)
Definition: yallic.c:685
void List__clear_shallow(List_t *p_list)
Definition: yallic.c:155
void * List__pop(List_t *p_list)
Definition: yallic.c:560
List_t * List__from_array(void *p_array, size_t element_size, size_t count, size_t list_max_size)
Definition: yallic.c:762
int List__add(List_t *p_list, void *p_data)
Definition: yallic.c:189
void * List__remove_at(List_t *p_list, size_t index)
Definition: yallic.c:633
int List__merge_at(List_t *p_list_dest, List_t *p_list_src, size_t index)
Definition: yallic.c:392
void * List__get_at(List_t *p_list, size_t index)
Definition: yallic.c:535
void List__delete_shallow(List_t **pp_list)
Definition: yallic.c:87
size_t max_size
Definition: yallic.c:59
void List__delete_deep(List_t **pp_list)
Definition: yallic.c:98
bool List__is_empty(List_t *p_list)
Definition: yallic.c:513
List_t * List__slice(List_t *p_list, size_t from_index, size_t to_index)
Definition: yallic.c:439
size_t List__length(List_t *p_list)
Definition: yallic.c:699
void * List__remove_first_occurrence(List_t *p_list, void *p_data)
Definition: yallic.c:665
void * List__remove_last_occurrence(List_t *p_list, void *p_data)
Definition: yallic.c:675
void List__reverse(List_t **pp_list)
Definition: yallic.c:109
size_t List__resize(List_t *p_list, size_t new_max_size)
Definition: yallic.c:137
int List__merge(List_t *p_list_dest, List_t *p_list_src)
Definition: yallic.c:320
int List__extend(List_t *p_list_dest, List_t *p_list_src)
Definition: yallic.c:253
size_t List__count(List_t *p_list)
Definition: yallic.c:715
void * List__get_last(List_t *p_list)
Definition: yallic.c:527
Definition: yallic.c:57
void * List__remove_last(List_t *p_list)
Definition: yallic.c:605
void List__clear_deep(List_t *p_list)
Definition: yallic.c:170
int List__last_index_of(List_t *p_list, void *p_data)
Definition: yallic.c:551