-static int find_in_array(GVariant *data, const GVariantType *type,
- const void *arr, int n)
-{
- const char * const *sarr;
- const char *s;
- const uint64_t *u64arr;
- const uint8_t *u8arr;
- uint64_t u64;
- uint8_t u8;
- int i;
-
- if (!g_variant_is_of_type(data, type))
- return -1;
-
- switch (g_variant_classify(data)) {
- case G_VARIANT_CLASS_STRING:
- s = g_variant_get_string(data, NULL);
- sarr = arr;
-
- for (i = 0; i < n; i++)
- if (!strcmp(s, sarr[i]))
- return i;
- break;
- case G_VARIANT_CLASS_UINT64:
- u64 = g_variant_get_uint64(data);
- u64arr = arr;
-
- for (i = 0; i < n; i++)
- if (u64 == u64arr[i])
- return i;
- break;
- case G_VARIANT_CLASS_BYTE:
- u8 = g_variant_get_byte(data);
- u8arr = arr;
-
- for (i = 0; i < n; i++)
- if (u8 == u8arr[i])
- return i;
- default:
- break;
- }
-
- return -1;
-}
-
-static int reverse_map(uint8_t u, const uint8_t *arr, int n)
-{
- GVariant *v = g_variant_new_byte(u);
- int i = find_in_array(v, G_VARIANT_TYPE_BYTE, arr, n);
- g_variant_unref(v);
- return i;
-}
-