wireplumber/lib/wp/collection.h
Julian Bouzas 59f98e38e4 lib: Add collection proxy API
This proxy uses the metadata interface to represent collections.
2026-05-05 16:00:15 -04:00

102 lines
2.3 KiB
C

/* WirePlumber
*
* Copyright © 2026 Collabora Ltd.
* @author Julian Bouzas <julian.bouzas@collabora.com>
*
* SPDX-License-Identifier: MIT
*/
#ifndef __WIREPLUMBER_COLLECTION_H__
#define __WIREPLUMBER_COLLECTION_H__
#include "global-proxy.h"
G_BEGIN_DECLS
/*!
* \brief An extension of WpProxyFeatures for WpCollection objects
* \ingroup wpcollection
*/
typedef enum { /*< flags >*/
/*! caches collection data locally */
WP_COLLECTION_FEATURE_DATA = (WP_PROXY_FEATURE_CUSTOM_START << 0),
} WpCollectionFeatures;
/*!
* \brief The WpCollection GType
* \ingroup wpcollection
*/
#define WP_TYPE_COLLECTION (wp_collection_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpCollection, wp_collection, WP, COLLECTION,
WpGlobalProxy)
WP_API
const gchar *wp_collection_get_name (WpCollection * self);
WP_API
gsize wp_collection_get_size (WpCollection * self);
WP_API
gboolean wp_collection_contains_global (WpCollection * self, guint32 global_id);
WP_API
void wp_collection_collect_global (WpCollection * self, guint32 global_id);
WP_API
void wp_collection_drop_global (WpCollection * self, guint32 global_id);
WP_API
void wp_collection_clear (WpCollection * self);
WP_API
WpIterator * wp_collection_new_iterator (WpCollection * self);
/* WpImplCollection */
/*!
* \brief The WpImplCollection GType
* \ingroup wpcollection
*/
#define WP_TYPE_IMPL_COLLECTION (wp_impl_collection_get_type ())
WP_API
G_DECLARE_FINAL_TYPE (WpImplCollection, wp_impl_collection, WP, IMPL_COLLECTION,
WpProxy)
WP_API
WpImplCollection * wp_impl_collection_new (WpCore * core, const gchar *name,
WpProperties *properties);
WP_API
WpProperties * wp_impl_collection_get_properties (WpImplCollection *self);
WP_API
const gchar * wp_impl_collection_get_name (WpImplCollection *self);
WP_API
gsize wp_impl_collection_get_size (WpImplCollection * self);
WP_API
gboolean wp_impl_collection_contains_global (WpImplCollection * self,
guint32 global_id);
WP_API
void wp_impl_collection_collect_global (WpImplCollection * self,
guint32 global_id);
WP_API
void wp_impl_collection_drop_global (WpImplCollection * self,
guint32 global_id);
WP_API
void wp_impl_collection_clear (WpImplCollection * self);
WP_API
WpIterator * wp_impl_collection_new_iterator (WpImplCollection * self);
G_END_DECLS
#endif