src/cx/iterator.h

changeset 985
68754c7de906
parent 933
40bf2f212d2a
equal deleted inserted replaced
984:e8f354a25ac8 985:68754c7de906
44 44
45 struct cx_iterator_base_s { 45 struct cx_iterator_base_s {
46 /** 46 /**
47 * True iff the iterator points to valid data. 47 * True iff the iterator points to valid data.
48 */ 48 */
49 __attribute__ ((__nonnull__)) 49 cx_attr_nonnull
50 bool (*valid)(const void *); 50 bool (*valid)(const void *);
51 51
52 /** 52 /**
53 * Returns a pointer to the current element. 53 * Returns a pointer to the current element.
54 * 54 *
55 * When valid returns false, the behavior of this function is undefined. 55 * When valid returns false, the behavior of this function is undefined.
56 */ 56 */
57 __attribute__ ((__nonnull__)) 57 cx_attr_nonnull
58 cx_attr_nodiscard
58 void *(*current)(const void *); 59 void *(*current)(const void *);
59 60
60 /** 61 /**
61 * Original implementation in case the function needs to be wrapped. 62 * Original implementation in case the function needs to be wrapped.
62 */ 63 */
63 __attribute__ ((__nonnull__)) 64 cx_attr_nonnull
65 cx_attr_nodiscard
64 void *(*current_impl)(const void *); 66 void *(*current_impl)(const void *);
65 67
66 /** 68 /**
67 * Advances the iterator. 69 * Advances the iterator.
68 * 70 *
69 * When valid returns false, the behavior of this function is undefined. 71 * When valid returns false, the behavior of this function is undefined.
70 */ 72 */
71 __attribute__ ((__nonnull__)) 73 cx_attr_nonnull
72 void (*next)(void *); 74 void (*next)(void *);
73 /** 75 /**
74 * Indicates whether this iterator may remove elements. 76 * Indicates whether this iterator may remove elements.
75 */ 77 */
76 bool mutating; 78 bool mutating;
226 * @param array a pointer to the array (can be \c NULL) 228 * @param array a pointer to the array (can be \c NULL)
227 * @param elem_size the size of one array element 229 * @param elem_size the size of one array element
228 * @param elem_count the number of elements in the array 230 * @param elem_count the number of elements in the array
229 * @return an iterator for the specified array 231 * @return an iterator for the specified array
230 */ 232 */
231 __attribute__((__warn_unused_result__)) 233 cx_attr_nodiscard
232 CxIterator cxIterator( 234 CxIterator cxIterator(
233 const void *array, 235 const void *array,
234 size_t elem_size, 236 size_t elem_size,
235 size_t elem_count 237 size_t elem_count
236 ); 238 );
256 * @param elem_count the number of elements in the array 258 * @param elem_count the number of elements in the array
257 * @param remove_keeps_order \c true if the order of elements must be preserved 259 * @param remove_keeps_order \c true if the order of elements must be preserved
258 * when removing an element 260 * when removing an element
259 * @return an iterator for the specified array 261 * @return an iterator for the specified array
260 */ 262 */
261 __attribute__((__warn_unused_result__)) 263 cx_attr_nodiscard
262 CxIterator cxMutIterator( 264 CxIterator cxMutIterator(
263 void *array, 265 void *array,
264 size_t elem_size, 266 size_t elem_size,
265 size_t elem_count, 267 size_t elem_count,
266 bool remove_keeps_order 268 bool remove_keeps_order

mercurial