Properties Dictionary
-
struct WpProperties
WpProperties is a data structure that contains string key-value pairs, which are used to send/receive/attach arbitrary properties to PipeWire objects.
This could be thought of as a hash table with strings as both keys and values. However, the reason that this class exists instead of using GHashTable directly is that in reality it wraps the PipeWire native
struct spa_dict
andstruct pw_properties
and therefore it can be easily passed to PipeWire function calls that require astruct spa_dict *
or astruct pw_properties *
as arguments. Or alternatively, it can easily wrap astruct spa_dict *
or astruct pw_properties *
that was given from the PipeWire API without necessarily doing an expensive copy operation.WpProperties normally wraps a
struct pw_properties
, unless it was created with wp_properties_new_wrap_dict(), in which case it wraps astruct spa_dict
and it is immutable (you cannot add/remove/modify any key-value pair).In most cases, it actually owns the
struct pw_properties
internally and manages its lifetime. The exception to that rule is when WpProperties is constructed with wp_properties_new_wrap(), in which case the ownership of thestruct pw_properties
remains outside. This must be used with care, as thestruct pw_properties
may be free’ed externally.WpProperties is reference-counted with wp_properties_ref() and wp_properties_unref().
-
WpProperties *wp_properties_new_empty(void)
Creates a new empty properties set.
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new(const gchar *key, ...)
Constructs a new properties set that contains the given properties.
- Parameters:
key – a property name
... – a property value, followed by any number of further property key-value pairs, followed by NULL
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new_valist(const gchar *key, va_list args)
This is the
va_list
version of wp_properties_new()- Parameters:
key – a property name
args – the variable arguments passed to wp_properties_new()
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new_string(const gchar *str)
Constructs a new properties set that contains the properties that can be parsed from the given string.
- Parameters:
str – a string containing a whitespace separated list of key=value pairs (ex. “key1=value1 key2=value2”)
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new_wrap(const struct pw_properties *props)
Constructs a new WpProperties that wraps the given props structure, allowing reading properties on that props structure through the WpProperties API.
Care must be taken when using this function, since the returned WpProperties object does not own the props structure. Therefore, if the owner decides to free props, the returned WpProperties will crash when used. In addition, the returned WpProperties object will not try to free props when destroyed.
Furthermore, note that the returned WpProperties object is immutable. That means that you cannot add or modify any properties on it, unless you make a copy first.
- Parameters:
props – a native
pw_properties
structure to wrap
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new_take(struct pw_properties *props)
Constructs a new WpProperties that wraps the given props structure, allowing reading & writing properties on that props structure through the WpProperties API.
In constrast with wp_properties_new_wrap(), this function assumes ownership of the props structure, so it will try to free props when it is destroyed.
- Parameters:
props – a native
pw_properties
structure to wrap
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new_copy(const struct pw_properties *props)
Constructs a new WpProperties that contains a copy of all the properties contained in the given props structure.
- Parameters:
props – a native
pw_properties
structure to copy
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new_wrap_dict(const struct spa_dict *dict)
Constructs a new WpProperties that wraps the given dict structure, allowing reading properties from that dict through the WpProperties API.
Note that the returned object does not own the dict, so care must be taken not to free it externally while this WpProperties object is alive.
In addition, note that the returned WpProperties object is immutable. That means that you cannot add or modify any properties on it, since there is no defined method for modifying a
struct spa_dict
. If you need to change this properties set later, you should make a copy with wp_properties_copy().- Parameters:
dict – a native
spa_dict
structure to wrap
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_new_copy_dict(const struct spa_dict *dict)
Constructs a new WpProperties that contains a copy of all the properties contained in the given dict structure.
- Parameters:
dict – a native
spa_dict
structure to copy
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_copy(WpProperties *other)
Constructs and returns a new WpProperties object that contains a copy of all the properties contained in other.
- Parameters:
other – a properties object
- Returns:
(transfer full): the newly constructed properties set
-
WpProperties *wp_properties_ref(WpProperties *self)
- Parameters:
self – a properties object
- Returns:
(transfer full): self with an additional reference count on it
-
void wp_properties_unref(WpProperties *self)
Decreases the reference count on self and frees it when the ref count reaches zero.
- Parameters:
self – (transfer full): a properties object
-
WpProperties *wp_properties_ensure_unique_owner(WpProperties *self)
Ensures that the given properties set is uniquely owned.
“Uniquely owned” means that:
its reference count is 1
it is not wrapping a native
spa_dict
orpw_properties
object
If self is not uniquely owned already, then it is unrefed and a copy of it is returned instead. You should always consider self as unsafe to use after this call and you should use the returned object instead.
- Parameters:
self – (transfer full): a properties object
- Returns:
(transfer full): the uniquely owned properties object
-
gint wp_properties_update(WpProperties *self, WpProperties *props)
Updates (adds new or modifies existing) properties in self, using the given props as a source.
Any properties that are not contained in props are left untouched.
- Parameters:
self – a properties object
props – a properties set that contains properties to update
- Returns:
the number of properties that were changed
-
gint wp_properties_update_from_dict(WpProperties *self, const struct spa_dict *dict)
Updates (adds new or modifies existing) properties in self, using the given dict as a source.
Any properties that are not contained in dict are left untouched.
- Parameters:
self – a properties object
dict – a
spa_dict
that contains properties to update
- Returns:
the number of properties that were changed
-
gint wp_properties_add(WpProperties *self, WpProperties *props)
Adds new properties in self, using the given props as a source.
Properties (keys) from props that are already contained in self are not modified, unlike what happens with wp_properties_update(). Properties in self that are not contained in props are left untouched.
- Parameters:
self – a properties object
props – a properties set that contains properties to add
- Returns:
the number of properties that were changed
-
gint wp_properties_add_from_dict(WpProperties *self, const struct spa_dict *dict)
Adds new properties in self, using the given dict as a source.
Properties (keys) from dict that are already contained in self are not modified, unlike what happens with wp_properties_update_from_dict(). Properties in self that are not contained in dict are left untouched.
- Parameters:
self – a properties object
dict – a
spa_dict
that contains properties to add
- Returns:
the number of properties that were changed
-
gint wp_properties_update_keys(WpProperties *self, WpProperties *props, const gchar *key1, ...)
Updates (adds new or modifies existing) properties in self, using the given props as a source.
Unlike wp_properties_update(), this function only updates properties that have one of the specified keys; the rest is left untouched.
- Parameters:
self – a properties set
props – a properties set that contains properties to update
key1 – a property to update
... – a list of additional properties to update, followed by NULL
- Returns:
the number of properties that were changed
-
gint wp_properties_update_keys_from_dict(WpProperties *self, const struct spa_dict *dict, const gchar *key1, ...)
Updates (adds new or modifies existing) properties in self, using the given dict as a source.
Unlike wp_properties_update_from_dict(), this function only updates properties that have one of the specified keys; the rest is left untouched.
- Parameters:
self – a properties set
dict – a
spa_dict
that contains properties to updatekey1 – a property to update
... – a list of additional properties to update, followed by NULL
- Returns:
the number of properties that were changed
-
gint wp_properties_update_keys_array(WpProperties *self, WpProperties *props, const gchar *keys[])
The same as wp_properties_update_keys(), using a NULL-terminated array for specifying the keys to update.
- Parameters:
self – a properties set
props – a properties set that contains properties to update
keys – (array zero-terminated=1): the properties to update
- Returns:
the number of properties that were changed
-
gint wp_properties_add_keys(WpProperties *self, WpProperties *props, const gchar *key1, ...)
Adds new properties in self, using the given props as a source.
Unlike wp_properties_add(), this function only adds properties that have one of the specified keys; the rest is left untouched.
- Parameters:
self – a properties set
props – a properties set that contains properties to add
key1 – a property to add
... – a list of additional properties to add, followed by NULL
- Returns:
the number of properties that were changed
-
gint wp_properties_add_keys_from_dict(WpProperties *self, const struct spa_dict *dict, const gchar *key1, ...)
Adds new properties in self, using the given dict as a source.
Unlike wp_properties_add_from_dict(), this function only adds properties that have one of the specified keys; the rest is left untouched.
- Parameters:
self – a properties set
dict – a
spa_dict
that contains properties to addkey1 – a property to add
... – a list of additional properties to add, followed by NULL
- Returns:
the number of properties that were changed
-
gint wp_properties_add_keys_array(WpProperties *self, WpProperties *props, const gchar *keys[])
The same as wp_properties_add_keys(), using a NULL-terminated array for specifying the keys to add.
- Parameters:
self – a properties set
props – a properties set that contains properties to add
keys – (array zero-terminated=1): the properties to add
- Returns:
the number of properties that were changed
-
const gchar *wp_properties_get(WpProperties *self, const gchar *key)
Looks up a given property value from a key.
- Parameters:
self – a properties object
key – a property key
- Returns:
(transfer none) (nullable): the value of the property identified with key, or NULL if this property is not contained in self
-
gint wp_properties_set(WpProperties *self, const gchar *key, const gchar *value)
Sets the given property key - value pair on self.
If the property already existed, the value is overwritten with the new one.
If the value is NULL, then the specified property is removed from self
- Parameters:
self – a properties object
key – a property key
value – (nullable): a property value
- Returns:
1 if the property was changed. 0 if nothing was changed because the property already existed with the same value or because the key to remove did not exist.
-
gint wp_properties_setf(WpProperties *self, const gchar *key, const gchar *format, ...)
Formats the given format string with the specified arguments and sets the result as a value of the property specified with key.
- Parameters:
self – a properties object
key – a property key
format – a printf-style format to be formatted and set as a value for this property key
... – arguments for format
- Returns:
1 if the property was changed. 0 if nothing was changed because the property already existed with the same value
-
gint wp_properties_setf_valist(WpProperties *self, const gchar *key, const gchar *format, va_list args)
This is the
va_list
version of wp_properties_setf()- Parameters:
self – a properties object
key – a property key
format – a printf-style format to be formatted and set as a value for this property key
args – the variable arguments passed to wp_properties_setf()
- Returns:
1 if the property was changed. 0 if nothing was changed because the property already existed with the same value
-
WpPropertiesItem *wp_properties_item_ref(WpPropertiesItem *self)
Increases the reference count of a properties item object.
- Since
0.4.2
- Parameters:
self – a properties item object
- Returns:
(transfer full): self with an additional reference count on it
-
void wp_properties_item_unref(WpPropertiesItem *self)
Decreases the reference count on self and frees it when the ref count reaches zero.
- Since
0.4.2
- Parameters:
self – (transfer full): a properties item object
-
const gchar *wp_properties_item_get_key(WpPropertiesItem *self)
Gets the key from a properties item.
- Since
0.4.2
- Parameters:
self – the item held by the GValue that was returned from the WpIterator of wp_properties_new_iterator()
- Returns:
(transfer none): the property key of the item
-
const gchar *wp_properties_item_get_value(WpPropertiesItem *self)
Gets the value from a properties item.
- Since
0.4.2
- Parameters:
self – the item held by the GValue that was returned from the WpIterator of wp_properties_new_iterator()
- Returns:
(transfer none): the property value of the item
-
WpIterator *wp_properties_new_iterator(WpProperties *self)
Iterates through all the properties in the properties object.
- Parameters:
self – a properties object
- Returns:
(transfer full): an iterator that iterates over the properties. The items in the iterator are of type WpPropertiesItem. Use wp_properties_item_get_key() and wp_properties_item_get_value() to retrieve their contents.
-
const gchar *wp_properties_iterator_item_get_key(const GValue *item)
Gets the key from a properties iterator item.
- Deprecated:
Use wp_properties_item_get_key() instead
- Parameters:
item – a GValue that was returned from the WpIterator of wp_properties_new_iterator()
- Returns:
(transfer none): the property key of the item
-
const gchar *wp_properties_iterator_item_get_value(const GValue *item)
Gets the value from a properties iterator item.
- Deprecated:
Use wp_properties_item_get_value() instead
- Parameters:
item – a GValue that was returned from the WpIterator of wp_properties_new_iterator()
- Returns:
(transfer none): the property value of the item
-
guint wp_properties_get_count(WpProperties *self)
Gets the number of properties contained in this object.
- Since
0.4.10
- Parameters:
self – a properties object
- Returns:
the number of properties contained in this object
-
void wp_properties_sort(WpProperties *self)
Sorts the keys in alphabetical order.
- Parameters:
self – a properties object
-
const struct spa_dict *wp_properties_peek_dict(WpProperties *self)
Gets the dictionary wrapped by a properties object.
- Parameters:
self – a properties object
- Returns:
(transfer none): the internal properties set as a
struct spa_dict *
-
struct pw_properties *wp_properties_to_pw_properties(WpProperties *self)
Gets a copy of the properties object as a
struct pw_properties
- Parameters:
self – a properties object
- Returns:
(transfer full): a copy of the properties in self as a
struct pw_properties
-
struct pw_properties *wp_properties_unref_and_take_pw_properties(WpProperties *self)
Similar to wp_properties_to_pw_properties(), but this method avoids making a copy of the properties by returning the
struct pw_properties
that is stored internally and then freeing the WpProperties wrapper.If self is not uniquely owned (see wp_properties_ensure_unique_owner()), then this method does make a copy and is the same as wp_properties_to_pw_properties(), performance-wise.
- Parameters:
self – (transfer full): a properties object
- Returns:
(transfer full): the properties in self as a
struct pw_properties
-
gboolean wp_properties_matches(WpProperties *self, WpProperties *other)
Checks if all property values contained in other are matching with the values in self.
If a property is contained in other and not in self, the result is not matched. If a property is contained in both sets, then the value of the property in other is interpreted as a glob-style pattern (using g_pattern_match_simple()) and the value in self is checked to see if it matches with this pattern.
- Parameters:
self – a properties object
other – a set of properties to match
- Returns:
TRUE if all matches were successfull, FALSE if at least one property value did not match
-
WP_TYPE_PROPERTIES (wp_properties_get_type ())
The WpProperties GType.