SRW/SRU explain
[yaz-moved-to-github.git] / include / yaz / srw.h
1 /*
2  * Copyright (c) 2002-2003, Index Data.
3  * See the file LICENSE for details.
4  *
5  * $Id: srw.h,v 1.7 2003-03-23 20:27:16 adam Exp $
6  */
7
8 #ifndef YAZ_SRW_H
9 #define YAZ_SRW_H
10
11 #include <yaz/soap.h>
12
13 typedef struct {
14     char *recordSchema;
15     int recordPacking;
16 #define Z_SRW_recordPacking_string 0
17 #define Z_SRW_recordPacking_XML 1
18     char *recordData_buf;
19     int recordData_len;
20     int *recordPosition;
21 } Z_SRW_record;
22
23 typedef struct {
24     int  *code;
25     char *details;
26 } Z_SRW_diagnostic;
27     
28 typedef struct {
29
30 #define Z_SRW_query_type_cql  1
31 #define Z_SRW_query_type_xcql 2
32 #define Z_SRW_query_type_pqf  3
33     int query_type;
34     union {
35         char *cql;
36         char *xcql;
37         char *pqf;
38     } query;
39
40 #define Z_SRW_sort_type_none 1
41 #define Z_SRW_sort_type_sort 2
42 #define Z_SRW_sort_type_xSort 3
43     int sort_type;
44     union {
45         char *none;
46         char *sortKeys;
47         char *xSortKeys;
48     } sort;
49     int *startRecord;
50     int  *maximumRecords;
51     char *recordSchema;
52     char *recordPacking;
53     char *database;
54 } Z_SRW_searchRetrieveRequest;
55
56 typedef struct {
57     int * numberOfRecords;
58     char * resultSetId;
59     int * resultSetIdleTime;
60     
61     Z_SRW_record *records;
62     int num_records;
63
64     Z_SRW_diagnostic *diagnostics;
65     int num_diagnostics;
66     int *nextRecordPosition;
67 } Z_SRW_searchRetrieveResponse;
68
69 typedef struct {
70     int dummy;
71 } Z_SRW_explainRequest;
72
73 typedef struct {
74     int explainPacking;
75     char *explainData_buf;
76     int explainData_len;
77 } Z_SRW_explainResponse;
78     
79 #define Z_SRW_searchRetrieve_request  1
80 #define Z_SRW_searchRetrieve_response 2
81 #define Z_SRW_explain_request 3
82 #define Z_SRW_explain_response 4
83
84 typedef struct {
85     int which;
86     union {
87         Z_SRW_searchRetrieveRequest *request;
88         Z_SRW_searchRetrieveResponse *response;
89         Z_SRW_explainRequest *explain_request;
90         Z_SRW_explainResponse *explain_response;
91     } u;
92 } Z_SRW_PDU;
93
94 YAZ_EXPORT int yaz_srw_codec(ODR o, void * pptr,
95                              Z_SRW_PDU **handler_data,
96                              void *client_data, const char *ns);
97 YAZ_EXPORT Z_SRW_PDU *yaz_srw_get(ODR o, int which);
98
99 YAZ_EXPORT const char *yaz_diag_srw_str (int code);
100
101 YAZ_EXPORT int yaz_diag_bib1_to_srw (int bib1_code);
102
103 YAZ_EXPORT int yaz_diag_srw_to_bib1(int srw_code);
104
105
106 #endif