28 #include <yaz/xmalloc.h>
29 #include <yaz/snprintf.h>
33 #define CODEC_INLINE inline
48 memcpy(&key, p,
sizeof(key));
51 for (i = 0; i<key.
len; i++)
55 yaz_snprintf(formstr + strlen(formstr), 23,
ZINT_FORMAT, key.
mem[i]);
57 yaz_log(logmask,
"%s %s", formstr, txt);
60 yaz_log(logmask,
" (no key) %s",txt);
78 memcpy (&i1, p1,
sizeof(i1));
79 memcpy (&i2, p2,
sizeof(i2));
83 assert (l <= IT_KEY_LEVEL_MAX && l > 0);
84 for (i = 0; i < l; i++)
86 if (i1.
mem[i] != i2.
mem[i])
100 memcpy (&k, p,
sizeof(k));
107 memcpy (&k, p,
sizeof(k));
115 char *cp1 = *(
char **) p1;
116 char *cp2 = *(
char **) p2;
118 if ((r = strcmp (cp1, cp2)))
123 return cp1[l] - cp2[l];
133 xmalloc (
sizeof(*p));
163 unsigned char *bp = (
unsigned char*) *dst;
167 *bp++ = (unsigned) (128 | (d & 127));
170 *bp++ = (unsigned) d;
181 while (((c = *(*src)++) & 128))
183 d += ((
zint) (c&127) << r);
186 d += ((
zint) c << r);
205 memcpy (&tkey, *src,
sizeof(
struct it_key));
210 for (i = 0; i < tkey.
len; i++)
213 if (d || i == tkey.
len-1)
230 for (; i < tkey.
len; i++)
235 (*src) +=
sizeof(
struct it_key);
249 p->
key.
len = (leader >> 3) & 7;
252 memcpy (*dst, &p->
key,
sizeof(
struct it_key));
253 (*dst) +=
sizeof(
struct it_key);
static CODEC_INLINE void iscz1_encode_int(zint d, char **dst)
char * key_print_it(const void *p, char *buf)
static CODEC_INLINE zint iscz1_decode_int(unsigned char **src)
zint key_get_segment(const void *p)
void iscz1_decode(void *vp, char **dst, const char **src)
void iscz1_encode(void *vp, char **dst, const char **src)
int key_qsort_compare(const void *p1, const void *p2)
int key_compare(const void *p1, const void *p2)
void key_logdump_txt(int logmask, const void *p, const char *txt)
void iscz1_reset(void *vp)
void key_logdump(int logmask, const void *p)
void key_init(struct it_key *key)
zint key_get_seq(const void *p)
zint mem[IT_KEY_LEVEL_MAX]