mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-06-07 03:01:36 -04:00
pipewire: properties: introduce pw_properties_{steal,gift}
Add functions pw_properties_steal(properties, key); pw_properties_gift(properties, key, value); which can be used to retrieve/insert key-value pairs from/into a property list without creating unnecessary copies of the value. Add tests as well.
This commit is contained in:
parent
be18d052ad
commit
a6151e96cd
3 changed files with 100 additions and 0 deletions
|
|
@ -683,6 +683,41 @@ PWTEST(properties_move)
|
|||
return PWTEST_PASS;
|
||||
}
|
||||
|
||||
PWTEST(properties_steal_gift)
|
||||
{
|
||||
struct pw_properties *a = pw_properties_new(NULL, NULL),
|
||||
*b = pw_properties_new(NULL, NULL);
|
||||
char *v1, *v2;
|
||||
|
||||
pwtest_ptr_notnull(a);
|
||||
pwtest_ptr_notnull(b);
|
||||
|
||||
pwtest_int_eq(pw_properties_set(a, "a1", "value1"), 1);
|
||||
pwtest_int_eq(pw_properties_set(a, "a2", "value2"), 1);
|
||||
pwtest_int_eq(pw_properties_set(a, "a3", "value3"), 1);
|
||||
pwtest_int_eq(pw_properties_set(a, "a4", "value4"), 1);
|
||||
|
||||
pwtest_str_eq(pw_properties_steal(a, "a5"), NULL);
|
||||
|
||||
v1 = pw_properties_steal(a, "a2");
|
||||
pwtest_str_eq(v1, "value2");
|
||||
pwtest_ptr_null(pw_properties_get(a, "a2"));
|
||||
|
||||
v2 = strdup(v1);
|
||||
pwtest_ptr_notnull(v2);
|
||||
|
||||
pwtest_int_eq(pw_properties_gift(b, "b3", v1), 1);
|
||||
pwtest_str_eq(pw_properties_get(b, "b3"), "value2");
|
||||
|
||||
pwtest_int_eq(pw_properties_gift(b, "b3", v2), 0);
|
||||
pwtest_str_eq(pw_properties_get(b, "b3"), "value2");
|
||||
|
||||
pw_properties_free(a);
|
||||
pw_properties_free(b);
|
||||
|
||||
return PWTEST_PASS;
|
||||
}
|
||||
|
||||
PWTEST_SUITE(properties)
|
||||
{
|
||||
pwtest_add(properties_abi, PWTEST_NOARG);
|
||||
|
|
@ -703,6 +738,7 @@ PWTEST_SUITE(properties)
|
|||
pwtest_add(properties_new_json, PWTEST_NOARG);
|
||||
pwtest_add(properties_update, PWTEST_NOARG);
|
||||
pwtest_add(properties_move, PWTEST_NOARG);
|
||||
pwtest_add(properties_steal_gift, PWTEST_NOARG);
|
||||
|
||||
return PWTEST_PASS;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue