aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/map.h
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2014-05-31 08:17:59 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2014-05-31 08:17:59 -0300
commitd88494553946f6f570b5004df8eae5cf9d6ee86f (patch)
tree51d95a2128560429ef291d485abef5e6d66dabe4 /src/nvim/map.h
parenta581173e715af4f7ef4e6be232ed828bd7dea9b8 (diff)
parent82e3e7047f500b7523a2f36e76171a0e9fdee328 (diff)
downloadrneovim-d88494553946f6f570b5004df8eae5cf9d6ee86f.tar.gz
rneovim-d88494553946f6f570b5004df8eae5cf9d6ee86f.tar.bz2
rneovim-d88494553946f6f570b5004df8eae5cf9d6ee86f.zip
Merge branch 'generic-key-value-map'
Diffstat (limited to 'src/nvim/map.h')
-rw-r--r--src/nvim/map.h49
1 files changed, 28 insertions, 21 deletions
diff --git a/src/nvim/map.h b/src/nvim/map.h
index dba56dc5aa..9fb23f8386 100644
--- a/src/nvim/map.h
+++ b/src/nvim/map.h
@@ -5,30 +5,37 @@
#include "nvim/map_defs.h"
-#define MAP_DECLS(T) \
- KHASH_DECLARE(T##_map, T, void *) \
+#define MAP_DECLS(T, U) \
+ KHASH_DECLARE(T##_##U##_map, T, U) \
\
typedef struct { \
- khash_t(T##_map) *table; \
- } Map(T); \
+ khash_t(T##_##U##_map) *table; \
+ } Map(T, U); \
\
- Map(T) *map_##T##_new(void); \
- void map_##T##_free(Map(T) *map); \
- void *map_##T##_get(Map(T) *map, T key); \
- bool map_##T##_has(Map(T) *map, T key); \
- void* map_##T##_put(Map(T) *map, T key, void *value); \
- void* map_##T##_del(Map(T) *map, T key);
-
-MAP_DECLS(cstr_t)
-MAP_DECLS(ptr_t)
-MAP_DECLS(uint64_t)
-
-#define map_new(T) map_##T##_new
-#define map_free(T) map_##T##_free
-#define map_get(T) map_##T##_get
-#define map_has(T) map_##T##_has
-#define map_put(T) map_##T##_put
-#define map_del(T) map_##T##_del
+ Map(T, U) *map_##T##_##U##_new(void); \
+ void map_##T##_##U##_free(Map(T, U) *map); \
+ U map_##T##_##U##_get(Map(T, U) *map, T key); \
+ bool map_##T##_##U##_has(Map(T, U) *map, T key); \
+ U map_##T##_##U##_put(Map(T, U) *map, T key, U value); \
+ U map_##T##_##U##_del(Map(T, U) *map, T key);
+
+MAP_DECLS(cstr_t, ptr_t)
+MAP_DECLS(ptr_t, ptr_t)
+MAP_DECLS(uint64_t, ptr_t)
+
+#define map_new(T, U) map_##T##_##U##_new
+#define map_free(T, U) map_##T##_##U##_free
+#define map_get(T, U) map_##T##_##U##_get
+#define map_has(T, U) map_##T##_##U##_has
+#define map_put(T, U) map_##T##_##U##_put
+#define map_del(T, U) map_##T##_##U##_del
+
+#define pmap_new(T) map_new(T, ptr_t)
+#define pmap_free(T) map_free(T, ptr_t)
+#define pmap_get(T) map_get(T, ptr_t)
+#define pmap_has(T) map_has(T, ptr_t)
+#define pmap_put(T) map_put(T, ptr_t)
+#define pmap_del(T) map_del(T, ptr_t)
#define map_foreach(map, key, value, block) \
kh_foreach(map->table, key, value, block)