109 ptrdiff_t loc_advance, |
109 ptrdiff_t loc_advance, |
110 size_t index |
110 size_t index |
111 ); |
111 ); |
112 |
112 |
113 /** |
113 /** |
114 * Finds the index of an element within a linked list. |
114 * Finds the node containing an element within a linked list. |
115 * |
115 * |
116 * @param start a pointer to the start node |
116 * @param start a pointer to the start node |
117 * @param loc_advance the location of the pointer to advance |
117 * @param loc_advance the location of the pointer to advance |
118 * @param loc_data the location of the @c data pointer within your node struct |
118 * @param loc_data the location of the @c data pointer within your node struct |
119 * @param cmp_func a compare function to compare @p elem against the node data |
119 * @param cmp_func a compare function to compare @p elem against the node data |
120 * @param elem a pointer to the element to find |
120 * @param elem a pointer to the element to find |
121 * @return the index of the element or a negative value if it could not be found |
121 * @param found_index an optional pointer where the index of the found node |
122 */ |
122 * (given that @p start has index 0) is stored |
123 cx_attr_nonnull |
123 * @return the index of the element, if found - unspecified if not found |
124 ssize_t cx_linked_list_find( |
124 */ |
|
125 cx_attr_nonnull_arg(1, 4, 5) |
|
126 void *cx_linked_list_find( |
125 const void *start, |
127 const void *start, |
126 ptrdiff_t loc_advance, |
128 ptrdiff_t loc_advance, |
127 ptrdiff_t loc_data, |
129 ptrdiff_t loc_data, |
128 cx_compare_func cmp_func, |
130 cx_compare_func cmp_func, |
129 const void *elem |
131 const void *elem, |
130 ); |
132 size_t *found_index |
131 |
|
132 /** |
|
133 * Finds the node containing an element within a linked list. |
|
134 * |
|
135 * @param result a pointer to the memory where the node pointer (or @c NULL if the element |
|
136 * could not be found) shall be stored to |
|
137 * @param start a pointer to the start node |
|
138 * @param loc_advance the location of the pointer to advance |
|
139 * @param loc_data the location of the @c data pointer within your node struct |
|
140 * @param cmp_func a compare function to compare @p elem against the node data |
|
141 * @param elem a pointer to the element to find |
|
142 * @return the index of the element or a negative value if it could not be found |
|
143 */ |
|
144 cx_attr_nonnull |
|
145 ssize_t cx_linked_list_find_node( |
|
146 void **result, |
|
147 const void *start, |
|
148 ptrdiff_t loc_advance, |
|
149 ptrdiff_t loc_data, |
|
150 cx_compare_func cmp_func, |
|
151 const void *elem |
|
152 ); |
133 ); |
153 |
134 |
154 /** |
135 /** |
155 * Finds the first node in a linked list. |
136 * Finds the first node in a linked list. |
156 * |
137 * |