Added support of the complex indexing for MARC records (whithout documentation yet).
[idzebra-moved-to-github.git] / include / data1.h
index 33958f9..24cf9af 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: data1.h,v 1.3 2002-12-02 16:55:14 adam Exp $
+/* $Id: data1.h,v 1.6 2003-02-28 12:33:38 oleg Exp $
    Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
    Index Data Aps
 
@@ -23,6 +23,8 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #ifndef DATA1_H
 #define DATA1_H
 
+#define ENHANCED_XELM 1
+
 #include <stdio.h>
 
 #include <yaz/nmem.h>
@@ -33,6 +35,8 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include <d1_map.h>
 #include <yaz/yaz-util.h>
 #include <yaz/wrbuf.h>
+#include <dfa.h>         /* pop */
+#include <zebra_xpath.h> /* pop */
 
 #define d1_isspace(c) strchr(" \r\n\t\f", c)
 #define d1_isdigit(c) ((c) <= '9' && (c) >= '0')
@@ -85,6 +89,7 @@ typedef struct data1_marctab
 
     int  force_indicator_length;
     int  force_identifier_length;
+    char leader[24]; /* Fixme! Need linear access to LEADER of MARC record */  
     struct data1_marctab *next;
 } data1_marctab;
 
@@ -187,6 +192,19 @@ typedef struct data1_sub_elements {
     data1_element *elements;
 } data1_sub_elements;
 
+/* pop */
+typedef struct data1_xpelement
+{
+    char *xpath_expr;
+#ifdef ENHANCED_XELM 
+    struct xpath_location_step xpath[XPATH_STEP_COUNT];
+    int xpath_len;
+#endif
+    struct DFA *dfa;  
+    data1_termlist *termlists;
+    struct data1_xpelement *next;
+} data1_xpelement;
+
 typedef struct data1_xattr {
     char *name;
     char *value;
@@ -209,6 +227,7 @@ typedef struct data1_absyn
     data1_marctab *marc;
     data1_sub_elements *sub_elements;
     data1_element *main_elements;
+    data1_xpelement *xp_elements; /* pop */
     struct data1_systag *systags;
     char *encoding;
     int  enable_xpath_indexing;