blob: cbbb61da9636346dee9c463f031f87060b50635c [file] [log] [blame]
#ifndef PTRMAP_H
#define PTRMAP_H
struct ptrmap;
#define DECLARE_PTRMAP(name, ktype, vtype) \
struct name ## _pair { ktype key; vtype val; }; \
struct name { struct name ## _pair block[1]; }; \
static inline \
void name##_add(struct name **map, ktype k, vtype v) { \
__ptrmap_add((struct ptrmap**)map, k, v); \
} \
static inline \
void name##_update(struct name **map, ktype k, vtype v) { \
__ptrmap_update((struct ptrmap**)map, k, v); \
} \
static inline \
vtype name##_lookup(struct name *map, ktype k) { \
vtype val = __ptrmap_lookup((struct ptrmap*)map, k); \
return val; \
} \
/* ptrmap.c */
void __ptrmap_add(struct ptrmap **mapp, void *key, void *val);
void __ptrmap_update(struct ptrmap **mapp, void *key, void *val);
void *__ptrmap_lookup(struct ptrmap *map, void *key);
#endif