1.1 --- a/src/linked_list.c Mon Sep 27 17:49:23 2021 +0200 1.2 +++ b/src/linked_list.c Mon Sep 27 18:33:30 2021 +0200 1.3 @@ -34,6 +34,16 @@ 1.4 1.5 #define CX_LL_PTR(cur, off) ((void**)(((char*)cur)+off)) 1.6 1.7 +void *cx_linked_list_at(void *start, size_t start_index, ptrdiff_t loc_advance, size_t index) { 1.8 + size_t i = start_index; 1.9 + void* cur = start; 1.10 + while (i != index && cur != NULL) { 1.11 + cur = *CX_LL_PTR(cur, loc_advance); 1.12 + i < index ? i++ : i--; 1.13 + } 1.14 + return cur; 1.15 +} 1.16 + 1.17 void *cx_linked_list_last(void **begin, void **end, ptrdiff_t loc_next) { 1.18 if (end != NULL) { 1.19 return *end; 1.20 @@ -97,7 +107,7 @@ 1.21 ptrdiff_t loc_next; 1.22 } cx_linked_list; 1.23 1.24 -int cx_ll_add(cx_list_s *list, void *elem) { 1.25 +static int cx_ll_add(cx_list_s *list, void *elem) { 1.26 cx_linked_list *ll = (cx_linked_list *) list; 1.27 1.28 struct cx_linked_list_node *node = cxMalloc(list->allocator, 1.29 @@ -122,19 +132,22 @@ 1.30 } 1.31 } 1.32 1.33 -int cx_ll_insert(cx_list_s *list, size_t index, void *elem) { 1.34 +static int cx_ll_insert(cx_list_s *list, size_t index, void *elem) { 1.35 cx_linked_list *ll = (cx_linked_list *) list; 1.36 // TODO: implement using low level API 1.37 return 1; 1.38 } 1.39 1.40 -void *cx_ll_remove(cx_list_s *list, size_t index) { 1.41 +static int cx_ll_remove(cx_list_s *list, size_t index) { 1.42 + if (index >= list->size) { 1.43 + return 1; 1.44 + } 1.45 cx_linked_list *ll = (cx_linked_list *) list; 1.46 // TODO: implement using low level API 1.47 - return NULL; 1.48 + return 0; 1.49 } 1.50 1.51 -size_t cx_ll_find(cx_list_s *list, void *elem) { 1.52 +static size_t cx_ll_find(cx_list_s *list, void *elem) { 1.53 CxListComparator cmp = list->cmpfunc; 1.54 cx_linked_list *ll = (cx_linked_list *) list; 1.55 1.56 @@ -150,7 +163,7 @@ 1.57 return index; 1.58 } 1.59 1.60 -void *cx_ll_last(cx_list_s *list) { 1.61 +static void *cx_ll_last(cx_list_s *list) { 1.62 cx_linked_list *linkedList = (cx_linked_list *) list; 1.63 struct cx_linked_list_node *last = cx_linked_list_last( 1.64 NULL, &linkedList->end, offsetof(struct cx_linked_list_node, next));