*/
#include "zone.h"
-struct pa_zoneset {
+struct agl_zoneset {
struct {
pa_hashmap *hash;
agl_zone *index[AGL_ZONE_MAX];
} zones;
};
-pa_zoneset *pa_zoneset_init (struct userdata *u)
+agl_zoneset *agl_zoneset_init (struct userdata *u)
{
- pa_zoneset *zs;
+ agl_zoneset *zs;
pa_assert (u);
- zs = pa_xnew0 (pa_zoneset, 1);
+ zs = pa_xnew0 (agl_zoneset, 1);
zs->zones.hash = pa_hashmap_new (pa_idxset_string_hash_func,
pa_idxset_string_compare_func);
return zs;
}
-void pa_zoneset_done (struct userdata *u)
+void agl_zoneset_done (struct userdata *u)
{
- pa_zoneset *zs;
+ agl_zoneset *zs;
void *state;
agl_zone *zone;
free (zs);
}
}
+
+int agl_zoneset_add_zone (struct userdata *u, const char *name, uint32_t index)
+{
+ agl_zoneset *zs;
+ agl_zone *zone;
+
+ pa_assert (u);
+ pa_assert (name);
+ pa_assert (index < AGL_ZONE_MAX);
+ pa_assert_se (zs = u->zoneset);
+
+ zone = pa_xnew (agl_zone, 1);
+ zone->name = pa_xstrdup (name);
+ zone->index = index;
+
+ pa_hashmap_put (zs->zones.hash, (void *)zone->name, zone);
+
+ zs->zones.index[index] = zone;
+
+ return 0;
+}
+
+agl_zone *agl_zoneset_get_zone_by_name (struct userdata *u, const char *name)
+{
+ agl_zoneset *zs;
+ agl_zone *zone;
+
+ pa_assert (u);
+ pa_assert_se (zs = u->zoneset);
+
+ if (name && zs->zones.hash)
+ zone = pa_hashmap_get (zs->zones.hash, name);
+ else
+ zone = NULL;
+
+ return zone;
+}
+
+agl_zone *agl_zoneset_get_zone_by_index (struct userdata *u, uint32_t index)
+{
+ agl_zoneset *zs;
+ agl_zone *zone;
+
+ pa_assert (u);
+ pa_assert_se (zs = u->zoneset);
+
+ if (index < AGL_ZONE_MAX)
+ zone = zs->zones.index[index];
+ else
+ zone = NULL;
+
+ return zone;
+}