From 2cfe6addaef6a0afa72699ec07a45e7f2fa445ba Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 26 Feb 2021 20:30:58 +0100 Subject: [PATCH] control: add snd_ctl_elem_id_compare() function Compare two control element identifiers like strcmp(). Signed-off-by: Jaroslav Kysela --- include/control.h | 1 + src/control/control.c | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/include/control.h b/include/control.h index 390a83e1..40ac2e97 100644 --- a/include/control.h +++ b/include/control.h @@ -424,6 +424,7 @@ int snd_ctl_elem_id_malloc(snd_ctl_elem_id_t **ptr); void snd_ctl_elem_id_free(snd_ctl_elem_id_t *obj); void snd_ctl_elem_id_clear(snd_ctl_elem_id_t *obj); void snd_ctl_elem_id_copy(snd_ctl_elem_id_t *dst, const snd_ctl_elem_id_t *src); +int snd_ctl_elem_id_compare(snd_ctl_elem_id_t *id1, const snd_ctl_elem_id_t *id2); unsigned int snd_ctl_elem_id_get_numid(const snd_ctl_elem_id_t *obj); snd_ctl_elem_iface_t snd_ctl_elem_id_get_interface(const snd_ctl_elem_id_t *obj); unsigned int snd_ctl_elem_id_get_device(const snd_ctl_elem_id_t *obj); diff --git a/src/control/control.c b/src/control/control.c index 359fe076..4c7d80fd 100644 --- a/src/control/control.c +++ b/src/control/control.c @@ -1818,6 +1818,32 @@ void snd_ctl_elem_id_copy(snd_ctl_elem_id_t *dst, const snd_ctl_elem_id_t *src) *dst = *src; } +/** + * \brief compare one #snd_ctl_elem_id_t to another + * \param id1 pointer to first id + * \param id2 pointer to second id + * \retval zero when values are identical, -1 first id + */ +int snd_ctl_elem_id_compare(snd_ctl_elem_id_t *id1, const snd_ctl_elem_id_t *id2) +{ + int d; + + assert(id1 && id2); + d = id1->iface - id2->iface; + if (d != 0) + return d; + d = id1->device - id2->device; + if (d != 0) + return d; + d = id2->subdevice - id2->subdevice; + if (d != 0) + return d; + d = strcmp((const char *)id1->name, (const char *)id2->name); + if (d != 0) + return d; + return id1->index - id2->index; +} + /** * \brief Get numeric identifier from a CTL element identifier * \param obj CTL element identifier -- 2.47.1