| 228 * Creates an iterator for the specified plain array. |
228 * Creates an iterator for the specified plain array. |
| 229 * |
229 * |
| 230 * The \p array can be \c NULL in which case the iterator will be immediately |
230 * The \p array can be \c NULL in which case the iterator will be immediately |
| 231 * initialized such that #cxIteratorValid() returns \c false. |
231 * initialized such that #cxIteratorValid() returns \c false. |
| 232 * |
232 * |
| |
233 * This iterator yields the addresses of the array elements. |
| |
234 * If you want to iterator over an array of pointers, you can |
| |
235 * use cxIteratorPtr() to create an iterator which directly |
| |
236 * yields the stored pointers. |
| 233 * |
237 * |
| 234 * @param array a pointer to the array (can be \c NULL) |
238 * @param array a pointer to the array (can be \c NULL) |
| 235 * @param elem_size the size of one array element |
239 * @param elem_size the size of one array element |
| 236 * @param elem_count the number of elements in the array |
240 * @param elem_count the number of elements in the array |
| 237 * @return an iterator for the specified array |
241 * @return an iterator for the specified array |
| |
242 * @see cxIteratorPtr() |
| 238 */ |
243 */ |
| 239 cx_attr_nodiscard |
244 cx_attr_nodiscard |
| 240 CxIterator cxIterator( |
245 CxIterator cxIterator( |
| 241 const void *array, |
246 const void *array, |
| 242 size_t elem_size, |
247 size_t elem_size, |
| 272 size_t elem_size, |
277 size_t elem_size, |
| 273 size_t elem_count, |
278 size_t elem_count, |
| 274 bool remove_keeps_order |
279 bool remove_keeps_order |
| 275 ); |
280 ); |
| 276 |
281 |
| |
282 /** |
| |
283 * Creates an iterator for the specified plain pointer array. |
| |
284 * |
| |
285 * This iterator assumes that every element in the array is a pointer |
| |
286 * and yields exactly those pointers during iteration (while in contrast |
| |
287 * an iterator created with cxIterator() would return the addresses |
| |
288 * of those pointers within the array). |
| |
289 * |
| |
290 * @param array a pointer to the array (can be \c NULL) |
| |
291 * @param elem_count the number of elements in the array |
| |
292 * @return an iterator for the specified array |
| |
293 * @see cxIterator() |
| |
294 */ |
| |
295 cx_attr_nodiscard |
| |
296 CxIterator cxIteratorPtr( |
| |
297 const void *array, |
| |
298 size_t elem_count |
| |
299 ); |
| |
300 |
| |
301 /** |
| |
302 * Creates a mutating iterator for the specified plain pointer array. |
| |
303 * |
| |
304 * This is the mutating variant of cxIteratorPtr(). See also |
| |
305 * cxMutIterator(). |
| |
306 * |
| |
307 * @param array a pointer to the array (can be \c NULL) |
| |
308 * @param elem_count the number of elements in the array |
| |
309 * @param remove_keeps_order \c true if the order of elements must be preserved |
| |
310 * when removing an element |
| |
311 * @return an iterator for the specified array |
| |
312 * @see cxMutIterator() |
| |
313 * @see cxIteratorPtr() |
| |
314 */ |
| |
315 cx_attr_nodiscard |
| |
316 CxIterator cxMutIteratorPtr( |
| |
317 void *array, |
| |
318 size_t elem_count, |
| |
319 bool remove_keeps_order |
| |
320 ); |
| |
321 |
| 277 #ifdef __cplusplus |
322 #ifdef __cplusplus |
| 278 } // extern "C" |
323 } // extern "C" |
| 279 #endif |
324 #endif |
| 280 |
325 |
| 281 #endif // UCX_ITERATOR_H |
326 #endif // UCX_ITERATOR_H |