Changed the way sequence numbers are generated.
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 11 Mar 1998 11:19:04 +0000 (11:19 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 11 Mar 1998 11:19:04 +0000 (11:19 +0000)
include/recctrl.h
index/extract.c
recctrl/recgrs.c
recctrl/rectext.c

index 9fe90e7..30b85e8 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: recctrl.h,v $
- * Revision 1.24  1998-03-05 08:38:46  adam
+ * Revision 1.25  1998-03-11 11:19:04  adam
+ * Changed the way sequence numbers are generated.
+ *
+ * Revision 1.24  1998/03/05 08:38:46  adam
  * New member recordSize in recRetrieveCtrl.
  *
  * Revision 1.23  1998/02/10 12:03:05  adam
@@ -110,7 +113,7 @@ typedef struct {
     unsigned reg_type;
     char *string;
     int  length;
-    int  seqno;
+    int  *seqnos;
     ZebraMaps zebra_maps;
 } RecWord;
 
@@ -127,6 +130,7 @@ struct recExtractCtrl {
     void      (*add)(RecWord *p);
     ZebraMaps zebra_maps;
     int       flagShowRecords;
+    int       seqno[256];
     data1_handle dh;
 };
 
index 32aed36..013784c 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: extract.c,v $
- * Revision 1.80  1998-03-05 08:45:11  adam
+ * Revision 1.81  1998-03-11 11:19:04  adam
+ * Changed the way sequence numbers are generated.
+ *
+ * Revision 1.80  1998/03/05 08:45:11  adam
  * New result set model and modular ranking system. Moved towards
  * descent server API. System information stored as "SGML" records.
  *
@@ -558,6 +561,7 @@ int key_close (int rw)
 static void wordInit (struct recExtractCtrl *p, RecWord *w)
 {
     w->zebra_maps = p->zebra_maps;
+    w->seqnos = p->seqno;
     w->attrSet = 1;
     w->attrUse = 1016;
     w->reg_type = 'w';
@@ -587,6 +591,7 @@ static void addIndexString (RecWord *p, const char *string, int length)
     short attrUse;
     int lead = 0;
     int diff = 0;
+    int *pseqno = &p->seqnos[p->reg_type];
 
     if (reckeys.buf_used+1024 > reckeys.buf_max)
     {
@@ -611,14 +616,14 @@ static void addIndexString (RecWord *p, const char *string, int length)
     else
         reckeys.prevAttrUse = attrUse;
 #if 1
-    diff = 1 + p->seqno - reckeys.prevSeqNo;
+    diff = 1 + *pseqno - reckeys.prevSeqNo;
     if (diff >= 1 && diff <= 15)
         lead |= (diff << 2);
     else
         diff = 0;
 #endif
-    reckeys.prevSeqNo = p->seqno;
-
+    reckeys.prevSeqNo = *pseqno;
+    
     *dst++ = lead;
 
     if (!(lead & 1))
@@ -638,11 +643,11 @@ static void addIndexString (RecWord *p, const char *string, int length)
 
     if (!diff)
     {
-        memcpy (dst, &p->seqno, sizeof(p->seqno));
-        dst += sizeof(p->seqno);
+        memcpy (dst, pseqno, sizeof(*pseqno));
+        dst += sizeof(*pseqno);
     }
     reckeys.buf_used = dst - reckeys.buf;
-    (p->seqno)++;
+    (*pseqno)++;
 }
 
 static void addSortString (RecWord *p, const char *string, int length)
@@ -1162,6 +1167,7 @@ static int recordExtract (SYSNO *sysno, const char *fname,
 
     if (fi->fd != -1)
     {
+       int i;
         /* we are going to read from a file, so prepare the extraction */
         extractCtrl.fh = fi;
         extractCtrl.subType = subType;
@@ -1174,6 +1180,8 @@ static int recordExtract (SYSNO *sysno, const char *fname,
         reckeys.prevAttrSet = -1;
         reckeys.prevSeqNo = 0;
 
+       for (i = 0; i<256; i++)
+           extractCtrl.seqno[i] = 0;
         recordOffset = fi->file_moffset;
         extractCtrl.offset = recordOffset;
         extractCtrl.readf = file_read;
index 9b07e13..b831663 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: recgrs.c,v $
- * Revision 1.18  1998-03-05 08:41:31  adam
+ * Revision 1.19  1998-03-11 11:19:05  adam
+ * Changed the way sequence numbers are generated.
+ *
+ * Revision 1.18  1998/03/05 08:41:31  adam
  * Minor changes.
  *
  * Revision 1.17  1998/02/10 12:03:06  adam
 
 #define GRS_MAX_WORD 512
 
-static int seqno = 0;
-
 static data1_node *read_grs_type (struct grs_read_info *p, const char *type)
 {
     static struct {
@@ -291,13 +292,11 @@ static int dumpkeys(data1_node *n, struct recExtractCtrl *p, int level)
                else
                {
                    wrd.reg_type = *tlist->structure;
-                   wrd.seqno = seqno;
                    wrd.string = n->u.data.data;
                    wrd.length = n->u.data.len;
                    wrd.attrSet = tlist->att->parent->ordinal;
                    wrd.attrUse = tlist->att->locals->local;
                    (*p->add)(&wrd);
-                   seqno = wrd.seqno;
                }
            }
        }
@@ -314,7 +313,6 @@ static int grs_extract(struct recExtractCtrl *p)
     data1_node *n;
     NMEM mem;
     struct grs_read_info gri;
-    seqno = 0;
 
     mem = nmem_create (); 
     gri.readf = p->readf;
index 9993d70..1b5ab74 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: rectext.c,v $
- * Revision 1.6  1998-02-10 12:03:06  adam
+ * Revision 1.7  1998-03-11 11:19:05  adam
+ * Changed the way sequence numbers are generated.
+ *
+ * Revision 1.6  1998/02/10 12:03:06  adam
  * Implemented Sort.
  *
  * Revision 1.5  1997/10/27 14:33:06  adam
@@ -104,7 +107,7 @@ static int text_extract (struct recExtractCtrl *p)
 {
     char w[512];
     RecWord recWord;
-    int r, seqno = 1;
+    int r;
     struct buf_info *fi = buf_open (p);
 
     (*p->init)(p, &recWord);
@@ -121,7 +124,6 @@ static int text_extract (struct recExtractCtrl *p)
         }
         if (i)
         {
-            recWord.seqno = seqno++;
             recWord.string = w;
            recWord.length = i;
             (*p->add)(&recWord);