X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fkcompare.c;h=44d9c056a18ef7041e76c1f77a969f679b61212f;hb=c63292356fbdef7b575efbf027ba8574482b0320;hp=39ee8536a4b754ea05a0687ca3f3499eea517537;hpb=e8f4cf34c75ffdc7bbfaf3fa232f29cc1384b60c;p=idzebra-moved-to-github.git diff --git a/index/kcompare.c b/index/kcompare.c index 39ee853..44d9c05 100644 --- a/index/kcompare.c +++ b/index/kcompare.c @@ -1,11 +1,26 @@ -/* - * Copyright (C) 1994-1999, Index Data - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss, Heikki Levanto - * log at the end - * - * $Id - */ +/* $Id: kcompare.c,v 1.40 2002-08-02 19:26:55 adam Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 + Index Data Aps + +This file is part of the Zebra server. + +Zebra is free software; you can redistribute it and/or modify it under +the terms of the GNU General Public License as published by the Free +Software Foundation; either version 2, or (at your option) any later +version. + +Zebra is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with Zebra; see the file LICENSE.zebra. If not, write to the +Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +*/ + + #include @@ -42,6 +57,13 @@ int key_compare_it (const void *p1, const void *p2) return 0; } +char *key_print_it (const void *p, char *buf) +{ + const struct it_key *i = p; + sprintf (buf, "%d:%d", i->sysno, i->seqno); + return buf; +} + int key_compare (const void *p1, const void *p2) { struct it_key i1, i2; @@ -201,22 +223,6 @@ static void iscz1_code_item (int mode, void *vp, char **dst, char **src) } } -ISAMC_M key_isamc_m (Res res, ISAMC_M me) -{ - isc_getmethod (me); - - me->compare_item = key_compare; - - me->code_start = iscz1_code_start; - me->code_item = iscz1_code_item; - me->code_stop = iscz1_code_stop; - me->code_reset = iscz1_code_reset; - - me->debug = atoi(res_get_def (res, "isamcDebug", "0")); - - return me; -} - ISAMS_M key_isams_m (Res res, ISAMS_M me) { isams_getmethod (me); @@ -232,14 +238,9 @@ ISAMS_M key_isams_m (Res res, ISAMS_M me) return me; } -ISAMH_M key_isamh_m (Res res) +ISAMC_M key_isamc_m (Res res, ISAMC_M me) { - static ISAMH_M me = NULL; - - if (me) - return me; - - me = isamh_getmethod (); + isc_getmethod (me); me->compare_item = key_compare; @@ -248,7 +249,7 @@ ISAMH_M key_isamh_m (Res res) me->code_stop = iscz1_code_stop; me->code_reset = iscz1_code_reset; - me->debug = atoi(res_get_def (res, "isamhDebug", "9")); + me->debug = atoi(res_get_def (res, "isamcDebug", "0")); return me; } @@ -270,25 +271,66 @@ ISAMD_M key_isamd_m (Res res,ISAMD_M me) return me; } - -int key_SU_code (int ch, char *out) +int key_SU_encode (int ch, char *out) { int i; for (i = 0; ch; i++) { - if (ch > 63) - out[i] = 128 + (ch & 63); + if (ch >= 64) + out[i] = 65 + (ch & 63); else out[i] = 1 + ch; ch = ch >> 6; } return i; + /* in out + 0 1 + 1 2 + 63 64 + 64 65, 2 + 65 66, 2 + 127 128, 2 + 128 65, 3 + 191 128, 3 + 192 65, 4 + */ } +int key_SU_decode (int *ch, const unsigned char *out) +{ + int len = 1; + int fact = 1; + *ch = 0; + for (len = 1; *out >= 65; len++, out++) + { + *ch += (*out - 65) * fact; + fact <<= 6; + } + *ch += (*out - 1) * fact; + return len; +} /* * $Log: kcompare.c,v $ - * Revision 1.34 1999-07-14 13:21:34 heikki + * Revision 1.40 2002-08-02 19:26:55 adam + * Towards GPL + * + * Revision 1.39 2002/04/12 14:55:22 adam + * key_print_it + * + * Revision 1.38 2002/04/05 08:46:26 adam + * Zebra with full functionality + * + * Revision 1.37 2001/11/19 23:08:30 adam + * Added const qualifier for name parameter of key_SU_decode. + * + * Revision 1.36 2001/10/15 19:53:43 adam + * POSIX thread updates. First work on term sets. + * + * Revision 1.35 1999/11/30 13:48:03 adam + * Improved installation. Updated for inclusion of YAZ header files. + * + * Revision 1.34 1999/07/14 13:21:34 heikki * Added isam-d files. Compiles (almost) clean. Doesn't work at all * * Revision 1.33 1999/07/14 10:59:26 adam