-/** \brief SOLR parser handle (opaque pointer) */
-typedef struct solr_parser *SOLR_parser;
-
-/** \brief creates a SOLR parser.
- \returns CCL parser
-
- Returns SOLR parser or NULL if parser could not be created.
- */
-YAZ_EXPORT
-SOLR_parser solr_parser_create(void);
-
-/** \brief destroys a SOLR parser.
- \param cp SOLR parser
-
- This function does nothing if NULL if received.
- */
-YAZ_EXPORT
-void solr_parser_destroy(SOLR_parser cp);
-
-/** \brief parses a SOLR query (string)
- \param cp SOLR parser
- \param str SOLR string
- \retval 0 success
- \retval !=0 failure
- */
-YAZ_EXPORT
-int solr_parser_string(SOLR_parser cp, const char *str);
-
-/** \brief parses SOLR query (query stream)
- \param cp SOLR parser
- \param getbyte function which reads one character from stream
- \param ungetbyte function which unreads one character from stream
- \param client_data data to be passed to stream functions
- \retval 0 success
- \retval !=0 failure
-
- This function is similar to solr_parser_string but takes a
- functions to read each query character from a stream.
-
- The functions pointers getbytes, ungetbyte are similar to
- that known from stdios getc, ungetc.
-*/
-YAZ_EXPORT
-int solr_parser_stream(SOLR_parser cp,
- int (*getbyte)(void *client_data),
- void (*ungetbyte)(int b, void *client_data),
- void *client_data);
-
-/** \brief parses SOLR query (from FILE)
- \param cp SOLR parser
- \param f file where query is read from
- \retval 0 success
- \retval !=0 failure
-
- This function is similar to solr_parser_string but reads from
- stdio FILE handle instead.
-*/
-YAZ_EXPORT
-int solr_parser_stdio(SOLR_parser cp, FILE *f);
-
-/** \brief Node type: search term */
-#define SOLR_NODE_ST 1
-/** \brief Node type: boolean */
-#define SOLR_NODE_BOOL 2
-/** \brief SOLR parse tree (node)
- */
-struct solr_node {
- /** node type */
- int which;
- union {
- /** which == SOLR_NODE_ST */
- struct {
- /** SOLR index */
- char *index;
- /** SOLR index URI or NULL if no URI */
- char *index_uri;
- /** Search term */
- char *term;
- /** relation */
- char *relation;
- /** relation URL or NULL if no relation URI) */
- char *relation_uri;
- /** relation modifiers */
- struct solr_node *modifiers;
- /** term list */
- struct solr_node *extra_terms;
- } st;
- /** which == SOLR_NODE_BOOL */
- struct {
- /** operator name "and", "or", ... */
- char *value;
- /** left operand */
- struct solr_node *left;
- /** right operand */
- struct solr_node *right;
- /** modifiers (NULL for no list) */
- struct solr_node *modifiers;
- } boolean;
- } u;
-};
-
-/** \brief Private structure that describes the SOLR properties (profile)
- */
-struct solr_properties;
-
-/** \brief Structure used by solr_buf_write_handler
- */
-struct solr_buf_write_info {
- int max;
- int off;
- char *buf;
-};
-
-/** \brief Handler for solr_buf_write_info
- */
-YAZ_EXPORT
-void solr_buf_write_handler(const char *b, void *client_data);
-
-/** \brief Prints a SOLR node and all sub nodes.
- Hence this function prints the parse tree which is as returned by
- solr_parser_result.
-*/
-YAZ_EXPORT
-void solr_node_print(struct solr_node *cn);
-
-/** \brief creates a search clause node (st). */
-YAZ_EXPORT
-struct solr_node *solr_node_mk_sc(NMEM nmem, const char *index,
- const char *relation, const char *term);
-
-/** \brief applies a prefix+uri to "unresolved" index and relation URIs.
- "unresolved" URIs are those nodes where member index_uri / relation_uri
- is NULL.
-*/
-YAZ_EXPORT
-struct solr_node *solr_apply_prefix(NMEM nmem, struct solr_node *cn,
- const char *prefix, const char *uri);
-
-/** \brief creates a boolean node. */
-YAZ_EXPORT
-struct solr_node *solr_node_mk_boolean(NMEM nmem, const char *op);
-
-/** \brief destroys a node and its children. */
-YAZ_EXPORT
-void solr_node_destroy(struct solr_node *cn);
-
-/** duplicates a node (returns a copy of supplied node) . */
-YAZ_EXPORT
-struct solr_node *solr_node_dup (NMEM nmem, struct solr_node *cp);
-
-/** \brief returns the parse tree of the most recently parsed SOLR query.
- \param cp SOLR parser
- \returns SOLR node or NULL for failure
-*/
-YAZ_EXPORT
-struct solr_node *solr_parser_result(SOLR_parser cp);
-
-/** \brief converts SOLR tree to XSOLR and writes to user-defined stream
- \param cn SOLR node (tree)
- \param pr print function
- \param client_data data to be passed to pr function
- */
-YAZ_EXPORT
-void solr_to_xml(struct solr_node *cn,
- void (*pr)(const char *buf, void *client_data),
- void *client_data);
-/** \brief converts SOLR tree to XSOLR and writes to file
- \param cn SOLR node (tree)
- \param f file handle
- */
-YAZ_EXPORT
-void solr_to_xml_stdio(struct solr_node *cn, FILE *f);
-
-/** \brief converts SOLR tree to XSOLR and writes result to buffer
- \param cn SOLR node (tree)
- \param out buffer
- \param max size of buffer (max chars to write)
- \returns length of resulting buffer
- */
-YAZ_EXPORT
-int solr_to_xml_buf(struct solr_node *cn, char *out, int max);
-
-/** \brief stream handle for file (used by solr_to_xml_stdio) */
-YAZ_EXPORT
-void solr_fputs(const char *buf, void *client_data);
-