diff --git a/lib/wp/configuration.c b/lib/wp/configuration.c index 4b046349069010a2835be96e633f7d2c64ab4dcd..5303d353e90a8cf039dd65d7bec654155a6de543 100644 --- a/lib/wp/configuration.c +++ b/lib/wp/configuration.c @@ -16,7 +16,7 @@ #include "configuration.h" #include "debug.h" -#include "private.h" +#include "private/registry.h" struct _WpConfiguration { diff --git a/lib/wp/core.c b/lib/wp/core.c index e5517fe516c13f0f0b3c3d562049851688924ad5..7f9ccd39aea1da47ea0bab1bcd3416ad2b73addd 100644 --- a/lib/wp/core.c +++ b/lib/wp/core.c @@ -28,7 +28,7 @@ #include "core.h" #include "wp.h" -#include "private.h" +#include "private/registry.h" #include <pipewire/pipewire.h> diff --git a/lib/wp/debug.c b/lib/wp/debug.c index edc568b7381be2075825c688f018c00847053c9f..78ac2cbdaf9c5cc97a39e4a414d6e731c30e36f0 100644 --- a/lib/wp/debug.c +++ b/lib/wp/debug.c @@ -13,6 +13,7 @@ #include "debug.h" #include "spa-pod.h" +#include "proxy.h" #include "private.h" #include <pipewire/pipewire.h> #include <spa/support/log.h> diff --git a/lib/wp/iterator.c b/lib/wp/iterator.c index 21d73ca31a23116a08658a9b6c46a9403f7597f4..cdd54dd0d6d34358e973627d0ad242e84276e59f 100644 --- a/lib/wp/iterator.c +++ b/lib/wp/iterator.c @@ -8,8 +8,8 @@ #define G_LOG_DOMAIN "wp-iterator" -#include "private.h" #include "iterator.h" +#include <spa/utils/defs.h> struct _WpIterator { @@ -58,6 +58,19 @@ wp_iterator_default_foreach (WpIterator *self, WpIteratorForeachFunc func, return wp_iterator_fold (self, foreach_fold_func, NULL, &d); } +/** + * wp_iterator_new: + * @methods: method implementations for the new iterator + * @user_size: size of the user_data structure to be allocated + * + * 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. + * + * Returns: (transfer full): a new custom iterator + */ WpIterator * wp_iterator_new (const WpIteratorMethods *methods, size_t user_size) { @@ -73,6 +86,14 @@ wp_iterator_new (const WpIteratorMethods *methods, size_t user_size) return self; } +/** + * wp_iterator_get_user_data: + * @self: an iterator object + * + * Note: this only for use by implementations of WpIterator + * + * Returns: a pointer to the implementation-specific storage area + */ gpointer wp_iterator_get_user_data (WpIterator *self) { diff --git a/lib/wp/iterator.h b/lib/wp/iterator.h index 613ae2f72353611895c2b6c40950db7cb263bbf1..ffa3479925110a9c6dde4ce386209f259896fcb0 100644 --- a/lib/wp/iterator.h +++ b/lib/wp/iterator.h @@ -46,6 +46,18 @@ WP_API GType wp_iterator_get_type (void); typedef struct _WpIterator WpIterator; +typedef struct _WpIteratorMethods WpIteratorMethods; + +struct _WpIteratorMethods +{ + 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); +}; /* ref count */ @@ -76,6 +88,15 @@ gboolean wp_iterator_foreach (WpIterator *self, WpIteratorForeachFunc func, WP_API WpIterator * wp_iterator_new_ptr_array (GPtrArray * items, GType item_type); +WP_API +WpIterator * wp_iterator_new (const WpIteratorMethods * methods, + size_t user_size); + +/* private */ + +WP_API +gpointer wp_iterator_get_user_data (WpIterator * self); + G_DEFINE_AUTOPTR_CLEANUP_FUNC (WpIterator, wp_iterator_unref) G_END_DECLS diff --git a/lib/wp/metadata.c b/lib/wp/metadata.c index c578c8c3489c9c397095097ed97739f16290dc04..7ff81b3eb2ce04d4f0c733d6bf35e2a6202299a0 100644 --- a/lib/wp/metadata.c +++ b/lib/wp/metadata.c @@ -18,7 +18,6 @@ #include "debug.h" #include "error.h" #include "wpenums.h" -#include "private.h" #include <pipewire/pipewire.h> #include <pipewire/extensions/metadata.h> diff --git a/lib/wp/module.c b/lib/wp/module.c index 05f4746a0ad3784ecf628ebaee3ac3a71f1a939c..6c84b1522db9bdebf8749eb99defa40e2d18ee0d 100644 --- a/lib/wp/module.c +++ b/lib/wp/module.c @@ -44,7 +44,7 @@ #include "module.h" #include "debug.h" #include "error.h" -#include "private.h" +#include "private/registry.h" #include <gmodule.h> #define WP_MODULE_INIT_SYMBOL "wireplumber__module_init" diff --git a/lib/wp/object-interest.c b/lib/wp/object-interest.c index b9f7a70ac8792b34d3fb8afa4586deeb4893e96c..2c26841351f901790c9045653977d6385299d26d 100644 --- a/lib/wp/object-interest.c +++ b/lib/wp/object-interest.c @@ -18,7 +18,8 @@ #include "proxy-interfaces.h" #include "debug.h" #include "error.h" -#include "private.h" + +#include <pipewire/pipewire.h> struct constraint { diff --git a/lib/wp/object-manager.c b/lib/wp/object-manager.c index 51b3232d6160fc462b32e96614d2f37ca8c6aed7..85c07c86c22a309a64d9f8245c27b01a577e5b14 100644 --- a/lib/wp/object-manager.c +++ b/lib/wp/object-manager.c @@ -41,7 +41,8 @@ #include "object-manager.h" #include "debug.h" -#include "private.h" +#include "private/registry.h" + #include <pipewire/pipewire.h> /* WpObjectManager */ diff --git a/lib/wp/plugin.c b/lib/wp/plugin.c index e5d0edb95b514bcb5e0e203cc4aafb794bd7eada..62dc4e41130d31fc95d460c451621bfaed9c9ab0 100644 --- a/lib/wp/plugin.c +++ b/lib/wp/plugin.c @@ -14,7 +14,7 @@ #define G_LOG_DOMAIN "wp-plugin" #include "plugin.h" -#include "private.h" +#include "private/registry.h" enum { PROP_0, diff --git a/lib/wp/private.h b/lib/wp/private.h index 33447682c8d83bcb68aca874ce7b12efbbafa700..792bb977e080a2817c8a43b47126ca71a47bb8d3 100644 --- a/lib/wp/private.h +++ b/lib/wp/private.h @@ -14,9 +14,7 @@ #include "props.h" #include "proxy.h" #include "session-item.h" -#include "iterator.h" #include "spa-type.h" -#include "private/registry.h" #include <stdint.h> #include <pipewire/pipewire.h> @@ -31,23 +29,6 @@ struct spa_pod_builder; void wp_props_handle_proxy_param_event (WpProps * self, guint32 id, WpSpaPod * pod); -/* iterator */ - -struct _WpIteratorMethods { - 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); -}; -typedef struct _WpIteratorMethods WpIteratorMethods; - -WpIterator * wp_iterator_new (const WpIteratorMethods *methods, - size_t user_size); -gpointer wp_iterator_get_user_data (WpIterator *self); - /* spa pod */ typedef struct _WpSpaPod WpSpaPod; diff --git a/lib/wp/properties.c b/lib/wp/properties.c index 0b137866e4247761a4e19fab920d81e4dfcd4353..a8ea67265982dcdc31c4a18877da46afeed44c93 100644 --- a/lib/wp/properties.c +++ b/lib/wp/properties.c @@ -40,7 +40,6 @@ #define G_LOG_DOMAIN "wp-properties" #include "properties.h" -#include "private.h" #include <errno.h> #include <pipewire/properties.h> diff --git a/lib/wp/si-factory.c b/lib/wp/si-factory.c index 74c0cec8977bd9e087dfd992ca39d70871ab50e3..85ec51a8edc2df6a5bc447af92c51466d4f9bc35 100644 --- a/lib/wp/si-factory.c +++ b/lib/wp/si-factory.c @@ -14,7 +14,7 @@ #define G_LOG_DOMAIN "wp-si-factory" #include "si-factory.h" -#include "private.h" +#include "private/registry.h" enum { PROP_0,