diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-31 08:17:59 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2014-05-31 08:17:59 -0300 |
commit | d88494553946f6f570b5004df8eae5cf9d6ee86f (patch) | |
tree | 51d95a2128560429ef291d485abef5e6d66dabe4 /src/nvim/map.h | |
parent | a581173e715af4f7ef4e6be232ed828bd7dea9b8 (diff) | |
parent | 82e3e7047f500b7523a2f36e76171a0e9fdee328 (diff) | |
download | rneovim-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.h | 49 |
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) |