}
pa_proplist* pa_proplist_new(void) {
- return MAKE_PROPLIST(pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func));
+ return MAKE_PROPLIST(pa_hashmap_new_full(pa_idxset_string_hash_func, pa_idxset_string_compare_func, NULL, (pa_free_cb_t) property_free));
}
void pa_proplist_free(pa_proplist* p) {
pa_assert(p);
- pa_hashmap_free(MAKE_HASHMAP(p), (pa_free_cb_t) property_free);
+ pa_hashmap_free(MAKE_HASHMAP(p));
}
/** Will accept only valid UTF-8 */
int pa_proplist_sets(pa_proplist *p, const char *key, const char *value) {
struct property *prop;
- pa_bool_t add = FALSE;
+ bool add = false;
pa_assert(p);
pa_assert(key);
if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), key))) {
prop = pa_xnew(struct property, 1);
prop->key = pa_xstrdup(key);
- add = TRUE;
+ add = true;
} else
pa_xfree(prop->value);
/** Will accept only valid UTF-8 */
static int proplist_setn(pa_proplist *p, const char *key, size_t key_length, const char *value, size_t value_length) {
struct property *prop;
- pa_bool_t add = FALSE;
+ bool add = false;
char *k, *v;
pa_assert(p);
if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), k))) {
prop = pa_xnew(struct property, 1);
prop->key = k;
- add = TRUE;
+ add = true;
} else {
pa_xfree(prop->value);
pa_xfree(k);
static int proplist_sethex(pa_proplist *p, const char *key, size_t key_length, const char *value, size_t value_length) {
struct property *prop;
- pa_bool_t add = FALSE;
+ bool add = false;
char *k, *v;
uint8_t *d;
size_t dn;
if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), k))) {
prop = pa_xnew(struct property, 1);
prop->key = k;
- add = TRUE;
+ add = true;
} else {
pa_xfree(prop->value);
pa_xfree(k);
/** Will accept only valid UTF-8 */
int pa_proplist_setf(pa_proplist *p, const char *key, const char *format, ...) {
struct property *prop;
- pa_bool_t add = FALSE;
+ bool add = false;
va_list ap;
char *v;
if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), key))) {
prop = pa_xnew(struct property, 1);
prop->key = pa_xstrdup(key);
- add = TRUE;
+ add = true;
} else
pa_xfree(prop->value);
int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nbytes) {
struct property *prop;
- pa_bool_t add = FALSE;
+ bool add = false;
pa_assert(p);
pa_assert(key);
if (!(prop = pa_hashmap_get(MAKE_HASHMAP(p), key))) {
prop = pa_xnew(struct property, 1);
prop->key = pa_xstrdup(key);
- add = TRUE;
+ add = true;
} else
pa_xfree(prop->value);
}
int pa_proplist_unset(pa_proplist *p, const char *key) {
- struct property *prop;
-
pa_assert(p);
pa_assert(key);
if (!pa_proplist_key_valid(key))
return -1;
- if (!(prop = pa_hashmap_remove(MAKE_HASHMAP(p), key)))
+ if (pa_hashmap_remove_and_free(MAKE_HASHMAP(p), key) < 0)
return -2;
- property_free(prop);
return 0;
}
}
void pa_proplist_clear(pa_proplist *p) {
- struct property *prop;
pa_assert(p);
- while ((prop = pa_hashmap_steal_first(MAKE_HASHMAP(p))))
- property_free(prop);
+ pa_hashmap_remove_all(MAKE_HASHMAP(p));
}
pa_proplist* pa_proplist_copy(const pa_proplist *p) {