More type casts due to zint.
[idzebra-moved-to-github.git] / index / index.h
index 35abd54..8a67b85 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: index.h,v 1.105 2004-03-29 15:48:14 adam Exp $
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
+/* $Id: index.h,v 1.112 2004-08-06 13:36:23 adam Exp $
+   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004
    Index Data Aps
 
 This file is part of the Zebra server.
@@ -20,8 +20,6 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 02111-1307, USA.
 */
 
-
-
 #ifndef INDEX_H
 #define INDEX_H
 
@@ -38,11 +36,8 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 #include <dict.h>
 #include <isams.h>
-#include <isam.h>
 #include <isamc.h>
-#include <isamd.h>
 #include <isamb.h>
-#define ISAM_DEFAULT "c"
 #include <data1.h>
 #include <recctrl.h>
 #include "recindex.h"
@@ -53,18 +48,30 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 
 YAZ_BEGIN_CDECL
 
+#define ISAM_DEFAULT "b"
+
 #define SU_SCHEME 1
 
 #define IT_MAX_WORD 256
-#define IT_KEY_HAVE_SEQNO 1
-#define IT_KEY_HAVE_FIELD 0
 
-typedef int SYSNO;
+#define IT_KEY_NEW 1
+
+#if IT_KEY_NEW
+
+#endif
 
+#if IT_KEY_NEW
+#define IT_KEY_LEVEL_MAX 4
+struct it_key {
+    int  len;
+    zint mem[IT_KEY_LEVEL_MAX];
+};
+#else
 struct it_key {
     int  sysno;
     int  seqno;
 };
+#endif
 
 enum dirsKind { dirs_dir, dirs_file };
 
@@ -89,7 +96,7 @@ struct dirs_entry *dirs_read (struct dirs_info *p);
 struct dirs_entry *dirs_last (struct dirs_info *p);
 void dirs_mkdir (struct dirs_info *p, const char *src, time_t mtime);
 void dirs_rmdir (struct dirs_info *p, const char *src);
-void dirs_add (struct dirs_info *p, const char *src, int sysno, time_t mtime);
+void dirs_add (struct dirs_info *p, const char *src, SYSNO sysno, time_t mtime);
 void dirs_del (struct dirs_info *p, const char *src);
 void dirs_free (struct dirs_info **pp);
 
@@ -106,17 +113,18 @@ void repositoryShow (ZebraHandle zh, const char *path);
 int key_open (ZebraHandle zh, int mem);
 int key_close (ZebraHandle zh);
 int key_compare (const void *p1, const void *p2);
+void key_init(struct it_key *k);
 char *key_print_it (const void *p, char *buf);
-int key_get_pos (const void *p);
+int key_get_seq (const void *p);
 int key_compare_it (const void *p1, const void *p2);
 int key_qsort_compare (const void *p1, const void *p2);
 void key_logdump (int mask, const void *p);
+void key_logdump_txt (int logmask, const void *p, const char *txt);
 void inv_prstat (ZebraHandle zh);
 void inv_compact (BFiles bfs);
 void key_input (ZebraHandle zh, int nkeys, int cache, Res res);
 ISAMS_M *key_isams_m (Res res, ISAMS_M *me);
 ISAMC_M *key_isamc_m (Res res, ISAMC_M *me);
-ISAMD_M *key_isamd_m (Res res, ISAMD_M *me);
 int merge_sort (char **buf, int from, int to);
 int key_SU_code (int ch, char *out);
 
@@ -179,6 +187,9 @@ struct encode_info {
     int prevseq;
     int prevcmd;
     int keylen; /* tells if we have an unwritten key in buf, and how long*/
+#if IT_KEY_NEW
+    void *encode_handle;
+#endif
     char buf[ENCODE_BUFLEN];
 };
 
@@ -190,7 +201,7 @@ void encode_key_flush (struct encode_info *i, FILE *outf);
 typedef struct {
     char *term;
     char *db;
-    int sysno;
+    zint sysno;
     int score;
 } *ZebraPosSet;
 
@@ -207,34 +218,26 @@ struct recKeys {
     int buf_used;
     int buf_max;
     char *buf;
+#if IT_KEY_NEW
+    void *codec_handle;
+#else
+    int prevSeqNo;
     char prevAttrSet;
     short prevAttrUse;
-    int prevSeqNo;
+#endif
 };
 
-#if 1
 struct sortKeys {
     int buf_used;
     int buf_max;
     char *buf;
 };
-#else
-struct sortKey {
-    char *string;
-    int length;
-    int attrSet;
-    int attrUse;
-    struct sortKey *next;
-};
-#endif
 
 struct zebra_register {
     char *name;
     
     ISAMS isams;
-    ISAM isam;
     ISAMC isamc;
-    ISAMD isamd;
     ISAMB isamb;
     Dict dict;
     Dict matchDict;
@@ -336,8 +339,13 @@ struct rank_control {
     void *(*create)(ZebraHandle zh);
     void (*destroy)(struct zebra_register *reg, void *class_handle);
     void *(*begin)(struct zebra_register *reg, void *class_handle, RSET rset);
+    /* ### Could add parameters to begin:
+     * char *index;    // author, title, etc.
+     * int dbsize;     // number of records in database
+     * int rssize;     // number of records in result set (estimate?)
+     */
     void (*end)(struct zebra_register *reg, void *set_handle);
-    int (*calc)(void *set_handle, int sysno);
+    int (*calc)(void *set_handle, zint sysno);
     void (*add)(void *set_handle, int seqno, int term_index);
 };
 
@@ -409,13 +417,14 @@ void zebraRankInstall (struct zebra_register *reg, struct rank_control *ctrl);
 ZebraRankClass zebraRankLookup (ZebraHandle zh, const char *name);
 void zebraRankDestroy (struct zebra_register *reg);
 
-int att_getentbyatt(ZebraHandle zh, attent *res, oid_value set, int att);
+int att_getentbyatt(ZebraHandle zh, attent *res, oid_value set, int att,
+               const char *sattr);
 
 extern struct rank_control *rank1_class;
 extern struct rank_control *rankzv_class;
 extern struct rank_control *rankliv_class;
 
-int zebra_record_fetch (ZebraHandle zh, int sysno, int score, ODR stream,
+int zebra_record_fetch (ZebraHandle zh, SYSNO sysno, int score, ODR stream,
                        oid_value input_format, Z_RecordComposition *comp,
                        oid_value *output_format, char **rec_bufp,
                        int *rec_lenp, char **basenamep);
@@ -429,7 +438,7 @@ int buffer_extract_record (ZebraHandle zh,
                           int delete_flag,
                           int test_mode, 
                           const char *recordType,
-                          int *sysno,
+                          SYSNO *sysno,
                           const char *match_criteria,
                           const char *fname,
                           int force_update,
@@ -481,6 +490,12 @@ int zebra_file_stat (const char *file_name, struct stat *buf,
 
 void zebra_livcode_transform(ZebraHandle zh, Z_RPNQuery *query);
 
+void *iscz1_start ();
+void iscz1_reset (void *vp);
+void iscz1_stop (void *p);
+void iscz1_decode (void *vp, char **dst, const char **src);
+void iscz1_encode (void *vp, char **dst, const char **src);
+
 YAZ_END_CDECL
 
 #endif