Remove CQL to Solr conversion and base on cql_transform_t
[yaz-moved-to-github.git] / include / yaz / solr.h
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) Index Data.
3  * All rights reserved.
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  *     * Redistributions of source code must retain the above copyright
8  *       notice, this list of conditions and the following disclaimer.
9  *     * Redistributions in binary form must reproduce the above copyright
10  *       notice, this list of conditions and the following disclaimer in the
11  *       documentation and/or other materials provided with the distribution.
12  *     * Neither the name of Index Data nor the names of its contributors
13  *       may be used to endorse or promote products derived from this
14  *       software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 /** \file solr.h
29     \brief Header with public definitions about Solr.
30 */
31
32 #ifndef SOLR_H_INCLUDED
33 #define SOLR_H_INCLUDED
34 #include <stdio.h>
35 #include <yaz/nmem.h>
36
37 YAZ_BEGIN_CDECL
38
39 /** \brief SOLR transform handle.
40     The transform describes how to convert from SOLR to PQF (Type-1 AKA RPN).
41 */
42 typedef struct cql_transform_t_ *solr_transform_t;
43
44 /** \brief creates a SOLR transform handle
45     \returns transform handle or NULL for failure
46 */
47 YAZ_EXPORT
48 solr_transform_t solr_transform_create(void);
49
50 /** \brief creates a SOLR transform handle from am opened file handle
51     \param f file where transformation spec is read
52     \returns transform handle or NULL for failure
53
54     The transformation spec is read from a FILE handle which is assumed
55     opened for reading.
56 */
57 YAZ_EXPORT
58 solr_transform_t solr_transform_open_FILE(FILE *f);
59
60 /** \brief creates a SOLR transform handle from a file
61     \param fname name of where transformation spec is read
62     \returns transform handle or NULL for failure
63 */
64 YAZ_EXPORT
65 solr_transform_t solr_transform_open_fname(const char *fname);
66
67
68 /** \brief defines SOLR transform pattern
69     \param ct SOLR transform handle
70     \param pattern pattern string
71     \param value pattern value
72     \returns 0 for succes; -1 for failure
73 */
74 YAZ_EXPORT
75 int solr_transform_define_pattern(solr_transform_t ct, const char *pattern,
76                                  const char *value);
77
78 /** \brief destroys a SOLR transform handle
79     \param ct SOLR transform handle
80  */
81 YAZ_EXPORT
82 void solr_transform_close(solr_transform_t ct);
83
84 /** \brief returns additional information for last transform
85     \param ct SOLR transform handle
86     \param addinfo additional info (result)
87     \returns error code
88  */
89 YAZ_EXPORT
90 int solr_transform_error(solr_transform_t ct, const char **addinfo);
91
92 /** \brief sets error and addinfo for transform
93     \param ct SOLR transform handle
94     \param error error code
95     \param addinfo additional info
96  */
97 YAZ_EXPORT
98 void solr_transform_set_error(solr_transform_t ct, int error, const char *addinfo);
99
100 YAZ_END_CDECL
101
102 #endif
103 /* SOLR_H_INCLUDED */
104 /*
105  * Local variables:
106  * c-basic-offset: 4
107  * c-file-style: "Stroustrup"
108  * indent-tabs-mode: nil
109  * End:
110  * vim: shiftwidth=4 tabstop=8 expandtab
111  */
112