* Sebastian Hammer, Adam Dickmeiss
*
* $Log: kcompare.c,v $
- * Revision 1.27 1999-05-12 13:08:06 adam
+ * Revision 1.33 1999-07-14 10:59:26 adam
+ * Changed functions isc_getmethod, isams_getmethod.
+ * Improved fatal error handling (such as missing EXPLAIN schema).
+ *
+ * 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
+ * Added coder to reset.
+ *
+ * Revision 1.28 1999/05/26 07:49:13 adam
+ * C++ compilation.
+ *
+ * Revision 1.27 1999/05/12 13:08:06 adam
* First version of ISAMS.
*
* Revision 1.26 1999/02/02 14:50:54 adam
static void *iscz1_code_start (int mode)
{
- struct iscz1_code_info *p = xmalloc (sizeof(*p));
+ struct iscz1_code_info *p = (struct iscz1_code_info *)
+ xmalloc (sizeof(*p));
p->key.sysno = 0;
p->key.seqno = 0;
return p;
}
+static void iscz1_code_reset (void *vp)
+{
+ struct iscz1_code_info *p = (struct iscz1_code_info *) vp;
+ p->key.sysno = 0;
+ p->key.seqno = 0;
+}
+
static void iscz1_code_stop (int mode, void *p)
{
xfree (p);
*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;
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;
}
static void iscz1_code_item (int mode, void *vp, char **dst, char **src)
{
- struct iscz1_code_info *p = vp;
+ struct iscz1_code_info *p = (struct iscz1_code_info *) vp;
struct it_key tkey;
int d;
}
}
-ISAMC_M key_isamc_m (Res res)
+ISAMC_M key_isamc_m (Res res, ISAMC_M me)
{
- static ISAMC_M me = NULL;
+ isc_getmethod (me);
- if (me)
- return 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"));
- me = isc_getmethod ();
+ return me;
+}
+
+ISAMS_M key_isams_m (Res res, ISAMS_M me)
+{
+ isams_getmethod (me);
me->compare_item = key_compare;
me->code_item = iscz1_code_item;
me->code_stop = iscz1_code_stop;
- me->debug = atoi(res_get_def (res, "isamcDebug", "0"));
+ me->debug = atoi(res_get_def (res, "isamsDebug", "0"));
return me;
}
-ISAMS_M key_isams_m (Res res)
+ISAMH_M key_isamh_m (Res res)
{
- static ISAMS_M me = NULL;
+ static ISAMH_M me = NULL;
if (me)
return me;
- me = isams_getmethod ();
+ me = isamh_getmethod ();
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, "isamsDebug", "0"));
+ me->debug = atoi(res_get_def (res, "isamhDebug", "9"));
return me;
}