Zebra uses own XML reader (was part of YAZ before)
[idzebra-moved-to-github.git] / index / kcompare.c
index 39ee853..44d9c05 100644 (file)
@@ -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 <stdlib.h>
@@ -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