aboutsummaryrefslogtreecommitdiff
path: root/src/tag_table.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/tag_table.h')
-rw-r--r--src/tag_table.h16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/tag_table.h b/src/tag_table.h
index 367a3de5..ecb3805d 100644
--- a/src/tag_table.h
+++ b/src/tag_table.h
@@ -24,18 +24,24 @@
#include <glib.h>
+struct tag_table {
+ const char *name;
+
+ enum tag_type type;
+};
+
/**
* Looks up a string in a tag translation table (case insensitive).
* Returns TAG_NUM_OF_ITEM_TYPES if the specified name was not found
* in the table.
*/
+G_GNUC_PURE
static inline enum tag_type
-tag_table_lookup(const char *const* table, const char *name)
+tag_table_lookup_i(const struct tag_table *table, const char *name)
{
- for (unsigned i = 0; i < TAG_NUM_OF_ITEM_TYPES; i++)
- if (table[i] != NULL &&
- g_ascii_strcasecmp(name, table[i]) == 0)
- return (enum tag_type)i;
+ for (; table->name != NULL; ++table)
+ if (g_ascii_strcasecmp(name, table->name) == 0)
+ return table->type;
return TAG_NUM_OF_ITEM_TYPES;
}