From 8eeb6f5836ee772e3cdc8967d20444d84261373e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Thu, 29 Dec 2016 01:34:58 +0100 Subject: map: implement map_first --- map.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'map.c') diff --git a/map.c b/map.c index 10d39de..f6e5c64 100644 --- a/map.c +++ b/map.c @@ -232,6 +232,28 @@ void map_iterate(const Map *map, bool (*handle)(const char *, void *, void *), c iterate(*map, handle, data); } +typedef struct { + const char *key; + void *value; +} KeyValue; + +static bool first(const char *key, void *value, void *data) +{ + KeyValue *kv = data; + kv->key = key; + kv->value = value; + return false; +} + +void *map_first(const Map *map, const char **key) +{ + KeyValue kv = { 0 }; + map_iterate(map, first, &kv); + if (key && kv.key) + *key = kv.key; + return kv.value; +} + const Map *map_prefix(const Map *map, const char *prefix) { const Map *n, *top; -- cgit v1.2.3