Update copyright year + FSF address
[idzebra-moved-to-github.git] / include / idzebra / recctrl.h
index b468b92..4d18730 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: recctrl.h,v 1.6 2005-01-15 19:38:24 adam Exp $
-   Copyright (C) 1995-2005
+/* $Id: recctrl.h,v 1.26 2006-08-14 10:40:14 adam Exp $
+   Copyright (C) 1995-2006
    Index Data ApS
 
 This file is part of the Zebra server.
@@ -15,30 +15,46 @@ 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.
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
 */
 
-#ifndef RECCTRL_H
-#define RECCTRL_H
+#ifndef IDZEBRA_RECCTRL_H
+#define IDZEBRA_RECCTRL_H
 
+#include <sys/types.h>
 #include <yaz/proto.h>
 #include <yaz/oid.h>
 #include <yaz/odr.h>
 #include <idzebra/res.h>
 #include <idzebra/data1.h>
+#include <idzebra/snippet.h>
 #include <idzebra/zebramap.h>
 
 YAZ_BEGIN_CDECL
 
+/* 1 */
+#define ZEBRA_XPATH_ELM_BEGIN "_XPATH_BEGIN"
+
+/* 2 */
+#define ZEBRA_XPATH_ELM_END   "_XPATH_END"
+
+/* 1016 */
+#define ZEBRA_XPATH_CDATA     "_XPATH_CDATA"
+
+/* 3 */
+#define ZEBRA_XPATH_ATTR_NAME       "_XPATH_ATTR_NAME"
+
+/* 1015 */
+#define ZEBRA_XPATH_ATTR_CDATA      "_XPATH_ATTR_CDATA"
+
 /* single word entity */
 typedef struct {
-    int  attrSet;
-    int  attrUse;
-    unsigned reg_type;
-    char *string;
-    int  length;
+    unsigned index_type;
+    const char *index_name;
+    const char *term_buf;
+    int  term_len;
     zint seqno;
     zint record_id;
     zint section_id;
@@ -57,10 +73,13 @@ struct recExtractCtrl {
     void      (*init)(struct recExtractCtrl *p, RecWord *w);
     void      *clientData;
     void      (*tokenAdd)(RecWord *w);
+    void      (*setStoreData)(struct recExtractCtrl *p, void *buf, size_t size);
     ZebraMaps zebra_maps;
+    int       first_record;
     int       flagShowRecords;
     int       seqno[256];
     char      match_criteria[256];
+    zint      staticrank;
     void      (*schemaAdd)(struct recExtractCtrl *p, Odr_oid *oid);
     data1_handle dh;
     void      *handle;
@@ -80,9 +99,12 @@ struct recRetrieveCtrl {
     char      *encoding;              /* preferred character encoding      */
     zint      localno;                /* local id of record                */
     int       score;                  /* score 0-1000 or -1 if none        */
+    zint      staticrank;             /* static rank >= 0,  0 if none */
     int       recordSize;             /* size of record in bytes */
     char      *fname;                 /* name of file (or NULL if internal) */
     data1_handle dh;
+    zebra_snippets *hit_snippet;
+    zebra_snippets *doc_snippet;
     
     /* response */
     oid_value  output_format;
@@ -96,9 +118,10 @@ typedef struct recType *RecType;
 
 struct recType
 {
+    int version;
     char *name;                           /* Name of record type */
     void *(*init)(Res res, RecType recType);  /* Init function - called once */
-    void (*config)(void *clientData, Res res, const char *args); /* Config */
+    ZEBRA_RES (*config)(void *clientData, Res res, const char *args); /* Config */
     void (*destroy)(void *clientData);    /* Destroy function */
     int  (*extract)(void *clientData,
                    struct recExtractCtrl *ctrl);   /* Extract proc */
@@ -118,6 +141,14 @@ YAZ_EXPORT
 RecTypeClass recTypeClass_create (Res res, NMEM nmem);
 
 YAZ_EXPORT
+void recTypeClass_load_modules(RecTypeClass *rts, NMEM nmem,
+                              const char *module_path);
+
+YAZ_EXPORT
+RecTypeClass recTypeClass_add_modules(Res res, NMEM nmem,
+                                     const char *module_path);
+
+YAZ_EXPORT
 void recTypeClass_destroy(RecTypeClass rtc);
 
 YAZ_EXPORT
@@ -138,6 +169,16 @@ RecType recType_byName(RecTypes rts, Res res, const char *name,
                       void **clientDataP);
 
 
+#define KEY_SEGMENT_SIZE 1024
+
 YAZ_END_CDECL
 
 #endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+