Managing negative deltas
[idzebra-moved-to-github.git] / index / kcompare.c
index 05d17ba..cb4ffc7 100644 (file)
@@ -4,7 +4,13 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: kcompare.c,v $
- * Revision 1.30  1999-06-30 15:07:23  heikki
+ * Revision 1.32  1999-07-13 13:21:15  heikki
+ * Managing negative deltas
+ *
+ * Revision 1.31  1999/07/06 09:37:04  heikki
+ * Working on isamh - not ready yet.
+ *
+ * Revision 1.30  1999/06/30 15:07:23  heikki
  * Adding isamh stuff
  *
  * Revision 1.29  1999/06/30 09:08:23  adam
@@ -219,18 +225,18 @@ void iscz1_encode_int (unsigned d, char **dst)
         *bp++ = d;
     else if (d <= 16383)
     {
-        *bp++ = 64 + (d>>8);
+        *bp++ = 64 | (d>>8);
        *bp++ = d & 255;
     }
     else if (d <= 4194303)
     {
-        *bp++ = 128 + (d>>16);
+        *bp++ = 128 | (d>>16);
         *bp++ = (d>>8) & 255;
         *bp++ = d & 255;
     }
     else
     {
-        *bp++ = 192 + (d>>24);
+        *bp++ = 192 | (d>>24);
         *bp++ = (d>>16) & 255;
         *bp++ = (d>>8) & 255;
         *bp++ = d & 255;
@@ -252,9 +258,13 @@ int iscz1_decode_int (unsigned char **src)
         c = (c << 8) + *(*src)++;
         return c;
     }
-    c = ((c & 63) << 8) + *(*src)++;
+    if (c&32) /* expand sign bit to high bits */
+       c = ((c | 63) << 8) + *(*src)++;
+    else
+       c = ((c & 63) << 8) + *(*src)++;
     c = (c << 8) + *(*src)++;
     c = (c << 8) + *(*src)++;
+    
     return c;
 }
 
@@ -352,8 +362,9 @@ ISAMH_M key_isamh_m (Res res)
     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, "isamhDebug", "2"));
+    me->debug = atoi(res_get_def (res, "isamhDebug", "9"));
 
     return me;
 }