Iterator¶
-
struct
WpIterator
¶ A generic iterator API
-
struct
_WpIteratorMethods
¶ Public Members
-
guint32
version
¶
-
void
reset)
(WpIterator *self)¶
-
gboolean
next)
(WpIterator *self, GValue *item)¶
-
gboolean
fold)
(WpIterator *self, WpIteratorFoldFunc func, GValue *ret, gpointer data)¶
-
gboolean
foreach)
(WpIterator *self, WpIteratorForeachFunc func, gpointer data)¶
-
void
finalize)
(WpIterator *self)¶
-
guint32
-
typedef gboolean
(* WpIteratorFoldFunc)
(const GValue *item, GValue *ret, gpointer data)¶ A function to be passed to wp_iterator_fold()
- Return
TRUE if the fold should continue, FALSE if it should stop.
- Parameters
item
: the item to foldret
: the value collecting the resultdata
: data passed to wp_iterator_fold()
-
typedef void
(* WpIteratorForeachFunc)
(const GValue *item, gpointer data)¶ A function that is called by wp_iterator_foreach().
- Parameters
item
: the itemdata
: the data passed to wp_iterator_foreach()
-
WpIterator*
wp_iterator_new
(const WpIteratorMethods * methods, size_t user_size)¶ Constructs an iterator that uses the provided methods to implement its API.
The WpIterator structure is internally allocated with user_size additional space at the end. A pointer to this space can be retrieved with wp_iterator_get_user_data() and is available for implementation-specific storage.
- Return
(transfer full): a new custom iterator
- Parameters
methods
: method implementations for the new iteratoruser_size
: size of the user_data structure to be allocated
-
gpointer
wp_iterator_get_user_data
(WpIterator * self)¶ Gets the implementation-specific storage of an iterator.
- Note
this only for use by implementations of WpIterator
- Return
a pointer to the implementation-specific storage area
- Parameters
self
: an iterator object
-
WpIterator*
wp_iterator_ref
(WpIterator * self)¶ Increases the reference count of an iterator.
- Return
(transfer full): self with an additional reference count on it
- Parameters
self
: an iterator object
-
void
wp_iterator_unref
(WpIterator * self)¶ Decreases the reference count on self and frees it when the ref count reaches zero.
- Parameters
self
: (transfer full): an iterator object
-
void
wp_iterator_reset
(WpIterator * self)¶ Resets the iterator so we can iterate again from the beginning.
- Parameters
self
: the iterator
-
gboolean
wp_iterator_next
(WpIterator * self, GValue * item)¶ Gets the next item of the iterator.
- Return
TRUE if next iterator was obtained, FALSE when the iterator has no more items to iterate through.
- Parameters
self
: the iteratoritem
: (out): the next item of the iterator
-
gboolean
wp_iterator_fold
(WpIterator * self, WpIteratorFoldFunc func, GValue * ret, gpointer data)¶ Fold a function over the items of the iterator.
- Return
TRUE if all the items were processed, FALSE otherwise.
- Parameters
self
: the iteratorfunc
: (scope call): the fold functionret
: (inout): the accumulator datadata
: (closure): the user data
-
gboolean
wp_iterator_foreach
(WpIterator * self, WpIteratorForeachFunc func, gpointer data)¶ Iterates over all items of the iterator calling a function.
- Return
TRUE if all the items were processed, FALSE otherwise.
- Parameters
self
: the iteratorfunc
: (scope call): the foreach functiondata
: (closure): the user data
-
WpIterator*
wp_iterator_new_ptr_array
(GPtrArray * items, GType item_type)¶ Creates an iterator from a pointer array.
- Return
(transfer full): a new iterator that iterates over items
- Parameters
items
: (element-type gpointer) (transfer full): the items to iterate overitem_type
: the type of each item
-
WP_TYPE_ITERATOR
(wp_iterator_get_type ())¶ The WpIterator GType.
-
WP_ITERATOR_METHODS_VERSION
0U¶ The version to set to _WpIteratorMethods::version. This allows future expansion of the struct.