26 #include <yaz/xmalloc.h>
27 #include <yaz/diagbib1.h>
30 #define ZEBRA_LIMIT_DEBUG 0
52 for (i = 0;
ids[i]; i++)
54 zl = xmalloc(
sizeof(*zl));
55 zl->
ids = xmalloc((i+1) *
sizeof(*
ids));
56 memcpy(zl->
ids,
ids, (i+1) *
sizeof(*
ids));
65 const struct it_key *key = buf;
69 yaz_log(YLOG_LOG,
"zebra_limit_filter_cb zl=%p key->len=%d", zl, key->
len);
71 for (i = 0; zl->
ids[i]; i++)
75 i, zl->
ids[i], key->
mem[1]);
77 if (zl->
ids[i] == key->
mem[1])
97 int (**filter_func)(
const void *buf,
void *data),
101 #if ZEBRA_LIMIT_DEBUG
102 yaz_log(YLOG_LOG,
"zebra_limit_for_rset debug enabled zl=%p", zl);
108 #if ZEBRA_LIMIT_DEBUG
109 yaz_log(YLOG_LOG,
"enable limit");
static int zebra_limit_filter_cb(const void *buf, void *data)
void zebra_limit_for_rset(struct zebra_limit *zl, int(**filter_func)(const void *buf, void *data), void(**filter_destroy)(void *data), void **filter_data)
static void zebra_limit_destroy_cb(void *data)
struct zebra_limit * zebra_limit_create(int complement_flag, zint *ids)
void zebra_limit_destroy(struct zebra_limit *zl)
static void filter_destroy(void *clientData)
zint mem[IT_KEY_LEVEL_MAX]