properties: add _clear function

This commit is contained in:
Wim Taymans 2018-12-04 11:34:59 +01:00
parent e6c023cd34
commit 3cdd52832e
2 changed files with 16 additions and 13 deletions

View file

@ -182,19 +182,24 @@ pw_properties_new_string(const char *str)
* \memberof pw_properties * \memberof pw_properties
*/ */
struct pw_properties *pw_properties_copy(const struct pw_properties *properties) struct pw_properties *pw_properties_copy(const struct pw_properties *properties)
{
return pw_properties_new_dict(&properties->dict);
}
/** Clear a properties object
*
* \param properties properties to clear
*
* \memberof pw_properties
*/
void pw_properties_clear(struct pw_properties *properties)
{ {
struct properties *impl = SPA_CONTAINER_OF(properties, struct properties, this); struct properties *impl = SPA_CONTAINER_OF(properties, struct properties, this);
struct pw_properties *copy;
struct spa_dict_item *item; struct spa_dict_item *item;
copy = pw_properties_new(NULL, NULL);
if (copy == NULL)
return NULL;
pw_array_for_each(item, &impl->items) pw_array_for_each(item, &impl->items)
add_func(copy, strdup(item->key), item->value ? strdup(item->value) : NULL); clear_item(item);
pw_array_reset(&impl->items);
return copy;
} }
/** Update properties /** Update properties
@ -228,11 +233,7 @@ int pw_properties_update(struct pw_properties *props,
void pw_properties_free(struct pw_properties *properties) void pw_properties_free(struct pw_properties *properties)
{ {
struct properties *impl = SPA_CONTAINER_OF(properties, struct properties, this); struct properties *impl = SPA_CONTAINER_OF(properties, struct properties, this);
struct spa_dict_item *item; pw_properties_clear(properties);
pw_array_for_each(item, &impl->items)
clear_item(item);
pw_array_clear(&impl->items); pw_array_clear(&impl->items);
free(impl); free(impl);
} }

View file

@ -60,6 +60,8 @@ int
pw_properties_update(struct pw_properties *oldprops, pw_properties_update(struct pw_properties *oldprops,
const struct spa_dict *dict); const struct spa_dict *dict);
void pw_properties_clear(struct pw_properties *properties);
void void
pw_properties_free(struct pw_properties *properties); pw_properties_free(struct pw_properties *properties);