]> git.alsa-project.org Git - alsa-utils.git/commitdiff
topology: pre-process-class: Add function to look up attribute definition in class
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Fri, 23 Apr 2021 19:35:56 +0000 (12:35 -0700)
committerJaroslav Kysela <perex@perex.cz>
Tue, 25 May 2021 16:26:51 +0000 (18:26 +0200)
Add a helper function look up attribute definition in the
"DefineAttribute" config in the class definition.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
topology/pre-process-class.c
topology/pre-processor.h

index 9e7f4fced861703e00f20a53b243004a24df3071..cd4c7c352ad66a439784e1572e873405b8aae6b5 100644 (file)
@@ -66,3 +66,28 @@ snd_config_t *tplg_class_lookup(struct tplg_pre_processor *tplg_pp, snd_config_t
        free(class_config_id);
        return class_cfg;
 }
+
+/* find the attribute config by name in the class definition */
+snd_config_t *tplg_class_find_attribute_by_name(struct tplg_pre_processor *tplg_pp,
+                                               snd_config_t *class, const char *name)
+{
+       snd_config_t *attr = NULL;
+       const char *class_id;
+       char *attr_str;
+       int ret;
+
+       if (snd_config_get_id(class, &class_id) < 0)
+               return NULL;
+
+       attr_str = tplg_snprintf("DefineAttribute.%s", name);
+       if (!attr_str)
+               return NULL;
+
+       ret = snd_config_search(class, attr_str, &attr);
+       if (ret < 0)
+               SNDERR("No definition for attribute '%s' in class '%s'\n",
+                       name, class_id);
+
+       free(attr_str);
+       return attr;
+}
index 8c32ce3b030da4dfcfa991c11a41b2f1aeb1b42b..d7d1b1190f7744859d4a88266b09c4e5c2e9dd63 100644 (file)
@@ -28,6 +28,8 @@ void tplg_pp_config_debug(struct tplg_pre_processor *tplg_pp, snd_config_t *cfg)
 
 /* class helpers */
 snd_config_t *tplg_class_lookup(struct tplg_pre_processor *tplg_pp, snd_config_t *cfg);
+snd_config_t *tplg_class_find_attribute_by_name(struct tplg_pre_processor *tplg_pp,
+                                               snd_config_t *class, const char *name);
 
 /* config helpers */
 snd_config_t *tplg_find_config(snd_config_t *config, const char *name);