iterator: add version field in the methods struct

Similar to how pipewire interfaces are versioned.
Keeps the struct extensible without breaking ABI.
This commit is contained in:
George Kiagiadakis 2020-11-16 11:16:35 +02:00
parent 3935308250
commit 7f40a8152d
7 changed files with 10 additions and 0 deletions

View file

@ -270,6 +270,7 @@ ptr_array_iterator_finalize (WpIterator *it)
}
static const WpIteratorMethods ptr_array_iterator_methods = {
.version = WP_ITERATOR_METHODS_VERSION,
.reset = ptr_array_iterator_reset,
.next = ptr_array_iterator_next,
.fold = ptr_array_iterator_fold,

View file

@ -48,8 +48,12 @@ GType wp_iterator_get_type (void);
typedef struct _WpIterator WpIterator;
typedef struct _WpIteratorMethods WpIteratorMethods;
static const guint32 WP_ITERATOR_METHODS_VERSION = 0;
struct _WpIteratorMethods
{
guint32 version;
void (*reset) (WpIterator *self);
gboolean (*next) (WpIterator *self, GValue *item);
gboolean (*fold) (WpIterator *self, WpIteratorFoldFunc func,

View file

@ -363,6 +363,7 @@ metadata_iterator_finalize (WpIterator *it)
}
static const WpIteratorMethods metadata_iterator_methods = {
.version = WP_ITERATOR_METHODS_VERSION,
.reset = metadata_iterator_reset,
.next = metadata_iterator_next,
.fold = metadata_iterator_fold,

View file

@ -399,6 +399,7 @@ om_iterator_finalize (WpIterator *it)
}
static const WpIteratorMethods om_iterator_methods = {
.version = WP_ITERATOR_METHODS_VERSION,
.reset = om_iterator_reset,
.next = om_iterator_next,
.fold = om_iterator_fold,

View file

@ -785,6 +785,7 @@ dict_iterator_finalize (WpIterator *it)
}
static const WpIteratorMethods dict_iterator_methods = {
.version = WP_ITERATOR_METHODS_VERSION,
.reset = dict_iterator_reset,
.next = dict_iterator_next,
.fold = dict_iterator_fold,

View file

@ -182,6 +182,7 @@ WpIterator *
wp_session_bin_iterate (WpSessionBin *self)
{
static const WpIteratorMethods methods = {
.version = WP_ITERATOR_METHODS_VERSION,
.reset = wp_session_bin_iterator_reset,
.next = wp_session_bin_iterator_next,
.fold = NULL,

View file

@ -3098,6 +3098,7 @@ WpIterator *
wp_spa_pod_iterate (WpSpaPod *pod)
{
static const WpIteratorMethods methods = {
.version = WP_ITERATOR_METHODS_VERSION,
.reset = wp_spa_pod_iterator_reset,
.next = wp_spa_pod_iterator_next,
.fold = wp_spa_pod_iterator_fold,