1 #include "callback.h" // for Transformer, Callback
3 #define WRAP_NODE_FUNCTIONS(Type, prefix) \
4 bool prefix ## add(Type *self, void *key, void *dat, void *cmp, void *trans) \
6 Type ## Node **node = prefix ## nfd(self, key, cmp); \
11 prefix ## nmk(self, node, trans ? ((Transformer) trans)(dat) : dat); \
15 void *prefix ## get(Type *self, void *key, void *cmp, void *trans) \
17 Type ## Node **node = prefix ## nfd(self, key, cmp); \
22 return trans ? ((Transformer) trans)((*node)->dat) : (*node)->dat; \
25 bool prefix ## del(Type *self, void *key, void *cmp, void *call, void *arg, void *trans) \
27 Type ## Node **node = prefix ## nfd(self, key, cmp); \
33 ((Callback) call)(trans ? ((Transformer) trans)((*node)->dat) : (*node)->dat, arg); \
35 prefix ## nrm(self, node); \