docs/Writerside/topics/array_list.h.md

Wed, 12 Mar 2025 18:32:57 +0100

author
Mike Becker <universe@uap-core.de>
date
Wed, 12 Mar 2025 18:32:57 +0100
changeset 1245
721e2032fa25
parent 1190
a7b913d5d589
permissions
-rw-r--r--

define structure for array_list.h documentation

relates to #451

1143
0559812df10c assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents: 1142
diff changeset
1 # Array List
1141
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2
1245
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
3 Next to an array list implementation of the list interface,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
4 UCX offers several functions to work with plain C arrays equipped with a size and a capacity.
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
5
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
6 The high level [list interface](list.h.md) is documented on a separate page and explains how lists are used
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
7 that are created by one of the following functions.
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
8
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
9 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
10 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
11
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
12 CxList *cxArrayListCreate(const CxAllocator *allocator,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
13 cx_compare_func comparator, size_t elem_size,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
14 size_t initial_capacity);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
15
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
16 CxList *cxArrayListCreateSimple(size_t elem_size,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
17 size_t initial_capacity);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
18 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
19
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
20 The remaining documentation on this page concentrates on dealing with plain C arrays.
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
21
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
22 ## Declare Array with Size and Capacity
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
23
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
24 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
25 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
26
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
27 #define CX_ARRAY_DECLARE_SIZED(type, name, size_type)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
28
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
29 #define CX_ARRAY_DECLARE(type, name)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
30
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
31 #define cx_array_initialize(ARRAY, capacity)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
32
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
33 #define cx_array_initialize_a(allocator, ARRAY, capacity)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
34 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
35
1146
151c057faf7c add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
36 <warning>
1245
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
37 TODO: document
1146
151c057faf7c add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
38 </warning>
151c057faf7c add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
39
1245
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
40 ## Array Reallocator
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
41
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
42 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
43 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
44
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
45 typedef struct {
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
46 void *(*realloc)(void *array, size_t capacity, size_t elem_size,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
47 CxArrayReallocator *alloc);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
48 void *ptr1;
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
49 void *ptr2;
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
50 size_t int1;
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
51 size_t int2;
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
52 } CxArrayReallocator;
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
53
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
54 CxArrayReallocator cx_array_reallocator(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
55 const struct cx_allocator_s *allocator,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
56 const void *stackmem
1141
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
57 );
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
58 ```
1245
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
59
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
60 <warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
61 TODO: document
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
62 </warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
63
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
64 ## Add Elements
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
65
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
66 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
67 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
68
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
69 cx_array_add(target, size, capacity, elem_size, elem, reallocator)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
70
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
71 #define cx_array_simple_add(ARRAY, elem)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
72
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
73 #define cx_array_simple_add_a(reallocator, ARRAY, elem)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
74 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
75
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
76 <warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
77 TODO: document
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
78 </warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
79
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
80 ## Reserve
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
81
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
82 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
83 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
84
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
85 int cx_array_reserve(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
86 void **array, void *size, void *capacity, unsigned width,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
87 size_t elem_size, size_t elem_count,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
88 CxArrayReallocator *reallocator);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
89
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
90 #define cx_array_simple_reserve(ARRAY, count)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
91 #define cx_array_simple_reserve_a(reallocator, ARRAY, count)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
92 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
93
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
94 <warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
95 TODO: document
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
96 </warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
97
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
98 ## Copy
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
99
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
100 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
101 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
102
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
103 int cx_array_copy(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
104 void **target, void *size, void *capacity, unsigned width,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
105 size_t index, const void *src,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
106 size_t elem_size, size_t elem_count,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
107 CxArrayReallocator *reallocator);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
108
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
109 #define cx_array_simple_copy(ARRAY, index, src, count)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
110
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
111 #define cx_array_simple_copy_a(reallocator, ARRAY, index, src, count)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
112 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
113
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
114 <warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
115 TODO: outdated - rewrite
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
116 </warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
117
1141
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
118 The `target` argument is a pointer to the target array pointer.
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
119 The reason for this additional indirection is that this function writes
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
120 back the pointer to the possibly reallocated array.
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
121 The next two arguments are pointers to the `size` and `capacity` of the target array for which the width
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
122 (in bits) is specified in the `width` argument.
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
123
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
124 On a successful invocation, the function copies `elem_count` number of elements, each of size `elem_size` from
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
125 `src` to `*target` and uses the `reallocator` to extend the array when necessary.
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
126 Finally, the size, capacity, and the pointer to the array are all updated and the function returns zero.
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
127
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
128 A few things to note:
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
129 * `*target` and `src` can point to the same memory region, effectively copying elements within the array with `memmove`
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
130 * `*target` does not need to point to the start of the array, but `size` and `capacity` always start counting from the
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
131 position, `*target` points to - in this scenario, the need for reallocation must be avoided for obvious reasons
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
132 * `index` does not need to be within size of the current array
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
133 * `index` does not even need to be within the capacity of the array
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
134 * `width` must be one of 8, 16, 32, 64 (only on 64-bit systems), or zero (in which case the native word width is used)
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
135
1245
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
136 ## Insertion Sort
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
137
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
138 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
139 int cx_array_insert_sorted(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
140 void **target, size_t *size, size_t *capacity,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
141 cx_compare_func cmp_func,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
142 const void *src, size_t elem_size, size_t elem_count,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
143 CxArrayReallocator *reallocator);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
144
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
145 #define cx_array_simple_insert_sorted(ARRAY,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
146 src, elem_count, cmp_func)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
147
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
148 #define cx_array_simple_insert_sorted_a(reallocator, ARRAY,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
149 src, elem_count, cmp_func)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
150
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
151 int cx_array_add_sorted(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
152 void **target, size_t *size, size_t *capacity,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
153 size_t elem_size, const void *elem,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
154 cx_compare_func cmp_func,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
155 CxArrayReallocator *reallocator);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
156
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
157 #define cx_array_simple_add_sorted(ARRAY,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
158 elem, cmp_func)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
159
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
160 #define cx_array_simple_add_sorted_a(reallocator, ARRAY,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
161 elem, cmp_func)
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
162 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
163
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
164 <warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
165 TODO: document
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
166 </warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
167
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
168 ## Binary Search
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
169
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
170 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
171 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
172
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
173 size_t cx_array_binary_search(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
174 const void *arr, size_t size, size_t elem_size,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
175 const void *elem, cx_compare_func cmp_func);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
176
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
177 size_t cx_array_binary_search_inf(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
178 const void *arr, size_t size, size_t elem_size,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
179 const void *elem, cx_compare_func cmp_func);
1142
9437530176bc add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
180
1245
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
181 size_t cx_array_binary_search_sup(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
182 const void *arr, size_t size, size_t elem_size,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
183 const void *elem, cx_compare_func cmp_func);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
184 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
185
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
186 <warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
187 TODO: document
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
188 </warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
189
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
190 ## Iterators
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
191
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
192 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
193 #include <cx/iterator.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
194
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
195 CxIterator cxIterator(const void *array,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
196 size_t elem_size, size_t elem_count);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
197
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
198 CxIterator cxMutIterator(void *array,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
199 size_t elem_size, size_t elem_count, bool remove_keeps_order);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
200
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
201 CxIterator cxIteratorPtr(const void *array, size_t elem_count);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
202
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
203 CxIterator cxMutIteratorPtr(void *array, size_t elem_count,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
204 bool remove_keeps_order);
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
205 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
206
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
207 Iterators over plain C arrays are defined in [iterator.h](iterator.h.md#creating-an-iterator).
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
208
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
209 ## Other
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
210
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
211 ```C
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
212 #include <cx/array_list.h>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
213
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
214 void cx_array_swap(
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
215 void *arr,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
216 size_t elem_size,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
217 size_t idx1,
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
218 size_t idx2
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
219 );
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
220 ```
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
221
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
222 <warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
223 TODO: document
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
224 </warning>
721e2032fa25 define structure for array_list.h documentation
Mike Becker <universe@uap-core.de>
parents: 1190
diff changeset
225
1190
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
226 <seealso>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
227 <category ref="apidoc">
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
228 <a href="https://ucx.sourceforge.io/api/array__list_8h.html">array_list.h</a>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
229 </category>
a7b913d5d589 bring incomplete docs into a shape that can be released
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
230 </seealso>

mercurial