Without this, one had to either use a function or a macro with casts to
get the expected behavior.
Signed-off-by: Cody P Schafer <dev@codyps.com>
return htable_del(&ht->raw, hashfn(keyof(elem)), elem); \
} \
static inline UNNEEDED type *name##_get(const struct name *ht, \
return htable_del(&ht->raw, hashfn(keyof(elem)), elem); \
} \
static inline UNNEEDED type *name##_get(const struct name *ht, \
- const HTABLE_KTYPE(keyof) k) \
+ const HTABLE_KTYPE(keyof, type) k) \
{ \
/* Typecheck for eqfn */ \
(void)sizeof(eqfn((const type *)NULL, \
{ \
/* Typecheck for eqfn */ \
(void)sizeof(eqfn((const type *)NULL, \
k); \
} \
static inline UNNEEDED type *name##_getmatch_(const struct name *ht, \
k); \
} \
static inline UNNEEDED type *name##_getmatch_(const struct name *ht, \
- const HTABLE_KTYPE(keyof) k, \
+ const HTABLE_KTYPE(keyof, type) k, \
size_t h, \
type *v, \
struct name##_iter *iter) \
size_t h, \
type *v, \
struct name##_iter *iter) \
return v; \
} \
static inline UNNEEDED type *name##_getfirst(const struct name *ht, \
return v; \
} \
static inline UNNEEDED type *name##_getfirst(const struct name *ht, \
- const HTABLE_KTYPE(keyof) k, \
+ const HTABLE_KTYPE(keyof, type) k, \
struct name##_iter *iter) \
{ \
size_t h = hashfn(k); \
struct name##_iter *iter) \
{ \
size_t h = hashfn(k); \
return name##_getmatch_(ht, k, h, v, iter); \
} \
static inline UNNEEDED type *name##_getnext(const struct name *ht, \
return name##_getmatch_(ht, k, h, v, iter); \
} \
static inline UNNEEDED type *name##_getnext(const struct name *ht, \
- const HTABLE_KTYPE(keyof) k, \
+ const HTABLE_KTYPE(keyof, type) k, \
struct name##_iter *iter) \
{ \
size_t h = hashfn(k); \
struct name##_iter *iter) \
{ \
size_t h = hashfn(k); \
return name##_getmatch_(ht, k, h, v, iter); \
} \
static inline UNNEEDED bool name##_delkey(struct name *ht, \
return name##_getmatch_(ht, k, h, v, iter); \
} \
static inline UNNEEDED bool name##_delkey(struct name *ht, \
- const HTABLE_KTYPE(keyof) k) \
+ const HTABLE_KTYPE(keyof, type) k) \
{ \
type *elem = name##_get(ht, k); \
if (elem) \
{ \
type *elem = name##_get(ht, k); \
if (elem) \
-#define HTABLE_KTYPE(keyof) typeof(keyof(NULL))
+#define HTABLE_KTYPE(keyof, type) typeof(keyof((const type *)NULL))
-#define HTABLE_KTYPE(keyof) void *
+#define HTABLE_KTYPE(keyof, type) void *
#endif
#endif /* CCAN_HTABLE_TYPE_H */
#endif
#endif /* CCAN_HTABLE_TYPE_H */