src/cx/map.h

changeset 630
ac5e7f789048
parent 564
5d8ad7a0ff71
child 658
56c62780582e
equal deleted inserted replaced
629:6c81ee4f11ad 630:ac5e7f789048
112 112
113 /** 113 /**
114 * Iterator over the key/value pairs. 114 * Iterator over the key/value pairs.
115 */ 115 */
116 __attribute__((__nonnull__, __warn_unused_result__)) 116 __attribute__((__nonnull__, __warn_unused_result__))
117 CxIterator (*iterator)(CxMap *map); 117 CxIterator (*iterator)(CxMap const *map);
118 118
119 /** 119 /**
120 * Iterator over the keys. 120 * Iterator over the keys.
121 */ 121 */
122 __attribute__((__nonnull__, __warn_unused_result__)) 122 __attribute__((__nonnull__, __warn_unused_result__))
123 CxIterator (*iterator_keys)(CxMap *map); 123 CxIterator (*iterator_keys)(CxMap const *map);
124 124
125 /** 125 /**
126 * Iterator over the values. 126 * Iterator over the values.
127 */ 127 */
128 __attribute__((__nonnull__, __warn_unused_result__)) 128 __attribute__((__nonnull__, __warn_unused_result__))
129 CxIterator (*iterator_values)(CxMap *map); 129 CxIterator (*iterator_values)(CxMap const *map);
130
131 /**
132 * Mutating iterator over the key/value pairs.
133 */
134 __attribute__((__nonnull__, __warn_unused_result__))
135 CxMutIterator (*mut_iterator)(CxMap *map);
136
137 /**
138 * Mutating iterator over the keys.
139 */
140 __attribute__((__nonnull__, __warn_unused_result__))
141 CxMutIterator (*mut_iterator_keys)(CxMap *map);
142
143 /**
144 * Mutating iterator over the values.
145 */
146 __attribute__((__nonnull__, __warn_unused_result__))
147 CxMutIterator (*mut_iterator_values)(CxMap *map);
130 }; 148 };
131 149
132 /** 150 /**
133 * A map entry. 151 * A map entry.
134 */ 152 */
261 __attribute__((__nonnull__, __warn_unused_result__)) 279 __attribute__((__nonnull__, __warn_unused_result__))
262 static inline CxIterator cxMapIterator(CxMap *map) { 280 static inline CxIterator cxMapIterator(CxMap *map) {
263 return map->cl->iterator(map); 281 return map->cl->iterator(map);
264 } 282 }
265 283
284
285 /**
286 * Creates a mutating iterator over the values of a map.
287 *
288 * \note An iterator iterates over all elements successively. Therefore the order
289 * highly depends on the map implementation and may change arbitrarily when the contents change.
290 *
291 * @param map the map to create the iterator for
292 * @return an iterator for the currently stored values
293 */
294 __attribute__((__nonnull__, __warn_unused_result__))
295 static inline CxMutIterator cxMapMutIteratorValues(CxMap *map) {
296 return map->cl->mut_iterator_values(map);
297 }
298
299 /**
300 * Creates a mutating iterator over the keys of a map.
301 *
302 * The elements of the iterator are keys of type CxHashKey.
303 *
304 * \note An iterator iterates over all elements successively. Therefore the order
305 * highly depends on the map implementation and may change arbitrarily when the contents change.
306 *
307 * @param map the map to create the iterator for
308 * @return an iterator for the currently stored keys
309 */
310 __attribute__((__nonnull__, __warn_unused_result__))
311 static inline CxMutIterator cxMapMutIteratorKeys(CxMap *map) {
312 return map->cl->mut_iterator_keys(map);
313 }
314
315 /**
316 * Creates a mutating iterator for a map.
317 *
318 * The elements of the iterator are key/value pairs of type CxMapEntry.
319 *
320 * \note An iterator iterates over all elements successively. Therefore the order
321 * highly depends on the map implementation and may change arbitrarily when the contents change.
322 *
323 * @param map the map to create the iterator for
324 * @return an iterator for the currently stored entries
325 * @see cxMapMutIteratorKeys()
326 * @see cxMapMutIteratorValues()
327 */
328 __attribute__((__nonnull__, __warn_unused_result__))
329 static inline CxMutIterator cxMapMutIterator(CxMap *map) {
330 return map->cl->mut_iterator(map);
331 }
332
266 #ifdef __cplusplus 333 #ifdef __cplusplus
267 } 334 }
268 #endif 335 #endif
269 336
270 #endif // UCX_MAP_H 337 #endif // UCX_MAP_H

mercurial