Add z_soap_codec_enc_xsl
[yaz-moved-to-github.git] / include / yaz / srw.h
index 4fad9fd..26f9819 100644 (file)
@@ -1,17 +1,23 @@
 /*
- * Copyright (c) 2002-2003, Index Data.
+ * Copyright (c) 2002-2004, Index Data.
  * See the file LICENSE for details.
  *
- * $Id: srw.h,v 1.3 2003-02-17 14:35:42 adam Exp $
+ * $Id: srw.h,v 1.13 2004-01-07 21:02:42 adam Exp $
  */
 
 #ifndef YAZ_SRW_H
 #define YAZ_SRW_H
 
 #include <yaz/soap.h>
+#include <yaz/zgdu.h>
+
+YAZ_BEGIN_CDECL
 
 typedef struct {
     char *recordSchema;
+    int recordPacking;
+#define Z_SRW_recordPacking_string 0
+#define Z_SRW_recordPacking_XML 1
     char *recordData_buf;
     int recordData_len;
     int *recordPosition;
@@ -23,16 +29,34 @@ typedef struct {
 } Z_SRW_diagnostic;
     
 typedef struct {
-    char *query;
-    char *pQuery;
-    void *xQuery;
-    char *sortKeys;
-    void *xSortKeys;
+
+#define Z_SRW_query_type_cql  1
+#define Z_SRW_query_type_xcql 2
+#define Z_SRW_query_type_pqf  3
+    int query_type;
+    union {
+        char *cql;
+        char *xcql;
+        char *pqf;
+    } query;
+
+#define Z_SRW_sort_type_none 1
+#define Z_SRW_sort_type_sort 2
+#define Z_SRW_sort_type_xSort 3
+    int sort_type;
+    union {
+        char *none;
+        char *sortKeys;
+        char *xSortKeys;
+    } sort;
     int *startRecord;
-    int  *maximumRecords;
+    int *maximumRecords;
     char *recordSchema;
     char *recordPacking;
+    char *recordXPath;
     char *database;
+    char *stylesheet;
+    int *resultSetTTL;
 } Z_SRW_searchRetrieveRequest;
 
 typedef struct {
@@ -48,23 +72,77 @@ typedef struct {
     int *nextRecordPosition;
 } Z_SRW_searchRetrieveResponse;
 
+typedef struct {
+    char *recordPacking;
+    char *database;
+    char *stylesheet;
+} Z_SRW_explainRequest;
+
+typedef struct {
+    Z_SRW_record record;
+    Z_SRW_diagnostic *diagnostics;
+    int num_diagnostics;
+} Z_SRW_explainResponse;
+    
+typedef struct {
+    char *scanClause;
+    int *responsePosition;
+    int *maximumTerms;
+    char *stylesheet;
+    char *database;
+} Z_SRW_scanRequest;
+
+typedef struct {
+    char *value;
+    int *numberOfRecords;
+    char *displayTerm;
+} Z_SRW_scanTerm;
+
+typedef struct {
+    Z_SRW_scanTerm *terms;
+    int num_terms;
+    Z_SRW_diagnostic *diagnostics;
+    int num_diagnostics;
+} Z_SRW_scanResponse;
+
 #define Z_SRW_searchRetrieve_request  1
 #define Z_SRW_searchRetrieve_response 2
+#define Z_SRW_explain_request 3
+#define Z_SRW_explain_response 4
+#define Z_SRW_scan_request 5
+#define Z_SRW_scan_response 6
 
 typedef struct {
     int which;
     union {
         Z_SRW_searchRetrieveRequest *request;
         Z_SRW_searchRetrieveResponse *response;
+        Z_SRW_explainRequest *explain_request;
+        Z_SRW_explainResponse *explain_response;
+        Z_SRW_scanRequest *scan_request;
+        Z_SRW_scanResponse *scan_response;
     } u;
-} Z_SRW_searchRetrieve;
+    char *srw_version;
+} Z_SRW_PDU;
 
 YAZ_EXPORT int yaz_srw_codec(ODR o, void * pptr,
-                             Z_SRW_searchRetrieve **handler_data,
+                             Z_SRW_PDU **handler_data,
                              void *client_data, const char *ns);
-YAZ_EXPORT Z_SRW_searchRetrieve *yaz_srw_get(ODR o, int which);
+YAZ_EXPORT Z_SRW_PDU *yaz_srw_get(ODR o, int which);
+
+YAZ_EXPORT const char *yaz_diag_srw_str (int code);
+
+YAZ_EXPORT int yaz_diag_bib1_to_srw (int bib1_code);
 
-YAZ_EXPORT const char *yaz_srw_error_str (int code);
+YAZ_EXPORT int yaz_diag_srw_to_bib1(int srw_code);
 
+YAZ_EXPORT char *yaz_uri_val(const char *path, const char *name, ODR o);
+YAZ_EXPORT void yaz_uri_val_int(const char *path, const char *name,
+                               ODR o, int **intp);
+YAZ_EXPORT int yaz_srw_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
+                             Z_SOAP **soap_package, ODR decode, char **charset);
+YAZ_EXPORT int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
+                             Z_SOAP **soap_package, ODR decode, char **charset);
+YAZ_END_CDECL
 
 #endif