#219 array list: implement insert via iterator

Sun, 20 Nov 2022 16:21:03 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 20 Nov 2022 16:21:03 +0100
changeset 619
5e58187ac707
parent 618
1f5a8f6f3015
child 620
f220695aded6

#219 array list: implement insert via iterator

src/array_list.c file | annotate | diff | comparison | revisions
test/test_list.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/array_list.c	Sun Nov 20 15:51:02 2022 +0100
     1.2 +++ b/src/array_list.c	Sun Nov 20 16:21:03 2022 +0100
     1.3 @@ -183,7 +183,23 @@
     1.4          void const *elem,
     1.5          int prepend
     1.6  ) {
     1.7 -    return 1;
     1.8 +    struct cx_list_s *list = iter->src_handle;
     1.9 +    if (iter->index < list->size) {
    1.10 +        int result = cx_arl_insert(
    1.11 +                list,
    1.12 +                iter->index + 1 - prepend,
    1.13 +                elem
    1.14 +        );
    1.15 +        if (result == 0 && prepend != 0) {
    1.16 +            iter->index++;
    1.17 +            iter->elem_handle = ((char *) iter->elem_handle) + list->itemsize;
    1.18 +        }
    1.19 +        return result;
    1.20 +    } else {
    1.21 +        int result = cx_arl_add(list, elem);
    1.22 +        iter->index = list->size;
    1.23 +        return result;
    1.24 +    }
    1.25  }
    1.26  
    1.27  static int cx_arl_remove(
     2.1 --- a/test/test_list.cpp	Sun Nov 20 15:51:02 2022 +0100
     2.2 +++ b/test/test_list.cpp	Sun Nov 20 16:21:03 2022 +0100
     2.3 @@ -917,7 +917,6 @@
     2.4  }
     2.5  
     2.6  TEST_F(ArrayList, InsertViaIterator) {
     2.7 -    ASSERT_EQ(1,0); // TODO: remove when implemented
     2.8      int fivenums[] = {0, 1, 2, 3, 4, 5};
     2.9      CxList *list = autofree(cxArrayListCreate(&testingAllocator, cx_cmp_int, sizeof(int), 4));
    2.10      // TODO: replace with cxListAddArray

mercurial