+/** \brief CCL parser */
+typedef struct ccl_parser *CCL_parser;
+
+/**
+ \brief parse CCL find string using CCL profile return RPN tree
+
+ Parses a CCL Find command in a simple C string. Returns CCL parse
+ tree node describing RPN if parsing is successful. If parsing is
+ unsuccesful, NULL is returned and error and pos is set accordingly.
+*/
+YAZ_EXPORT
+struct ccl_rpn_node *ccl_find_str(CCL_bibset bibset,
+ const char *str, int *error, int *pos);
+
+
+/**
+ \brief parse CCL find string with parser and return RPN tree
+
+ Parses a CCL Find command in a simple C string. Returns CCL parse
+ tree node describing RPN if parsing is successful. If parsing is
+ unsuccesful, NULL is returned and error and pos is set accordingly.
+*/
+YAZ_EXPORT
+struct ccl_rpn_node *ccl_parser_find_str(CCL_parser cclp, const char *str);
+
+/** Set case sensitivity for parser */
+YAZ_EXPORT
+void ccl_parser_set_case(CCL_parser p, int case_sensitivity_flag);
+
+/** Return english-readable error message for CCL parser error number */
+YAZ_EXPORT
+const char *ccl_err_msg(int ccl_errno);
+
+/** Delete RPN tree returned by ccl_find */
+YAZ_EXPORT
+void ccl_rpn_delete(struct ccl_rpn_node *rpn);
+
+/** Dump RPN tree in readable format to fd_out */
+YAZ_EXPORT
+void ccl_pr_tree(struct ccl_rpn_node *rpn, FILE *fd_out);
+
+/** Add qualifier and supply attribute pairs for it */
+YAZ_EXPORT
+void ccl_qual_add(CCL_bibset b, const char *name, int no, int *attr);
+
+/** Add qualifier and supply attributes pairs+attribute set for it */
+YAZ_EXPORT
+void ccl_qual_add_set(CCL_bibset b, const char *name, int no,
+ int *type, int *value, char **svalue, char **attsets);
+
+/** Add special qualifier */
+YAZ_EXPORT
+void ccl_qual_add_special(CCL_bibset bibset, const char *n, const char *cp);
+
+/** Add combo qualifier */
+YAZ_EXPORT
+void ccl_qual_add_combi(CCL_bibset b, const char *n, const char **names);
+
+/** Read CCL qualifier list spec from file inf */
+YAZ_EXPORT
+void ccl_qual_file(CCL_bibset bibset, FILE *inf);
+
+/** Read CCL qualifier list spec from file inf */
+YAZ_EXPORT
+int ccl_qual_fname(CCL_bibset bibset, const char *fname);
+
+/** Add CCL qualifier as buf spec(multiple lines). */
+YAZ_EXPORT
+void ccl_qual_buf(CCL_bibset bibset, const char *buf);
+
+/** Add CCL qualifier as line spec. Note: line is _modified_ */
+YAZ_EXPORT
+void ccl_qual_line(CCL_bibset bibset, char *line);
+
+/* Add CCL qualifier by using qual_name + value pair */
+YAZ_EXPORT
+void ccl_qual_fitem(CCL_bibset bibset, const char *value,
+ const char *qual_name);
+
+/** Make CCL qualifier set */
+YAZ_EXPORT
+CCL_bibset ccl_qual_mk(void);
+
+/** Delete CCL qualifier set */
+YAZ_EXPORT
+void ccl_qual_rm(CCL_bibset *b);
+
+/** Char-to-upper function */
+extern int(*ccl_toupper)(int c);
+
+/** CCL version of ccl_stricmp */
+YAZ_EXPORT
+int ccl_stricmp(const char *s1, const char *s2);
+
+/** CCL version of ccl_memicmp */
+YAZ_EXPORT
+int ccl_memicmp(const char *s1, const char *s2, size_t n);
+
+/** Create CCL parser */
+YAZ_EXPORT
+CCL_parser ccl_parser_create(CCL_bibset bibset);
+
+/** Destroy CCL parser */
+YAZ_EXPORT
+void ccl_parser_destroy(CCL_parser p);
+
+/** Search for special qualifier */
+YAZ_EXPORT
+const char **ccl_qual_search_special(CCL_bibset b, const char *name);
+/** Pretty-print CCL RPN node tree to WRBUF */
+YAZ_EXPORT
+void ccl_pquery(WRBUF w, struct ccl_rpn_node *p);
+
+YAZ_EXPORT
+int ccl_parser_get_error(CCL_parser cclp, int *pos);
+
+YAZ_EXPORT
+struct ccl_rpn_node *ccl_rpn_node_create(enum ccl_rpn_kind kind);
+
+YAZ_EXPORT
+void ccl_add_attr_numeric(struct ccl_rpn_node *p, const char *set,
+ int type, int value);
+
+YAZ_EXPORT
+void ccl_add_attr_string(struct ccl_rpn_node *p, const char *set,
+ int type, char *value);
+
+YAZ_EXPORT
+int ccl_search_stop(CCL_bibset bibset, const char *qname,
+ const char *src_str, size_t src_len);
+
+
+/** \brief stop words handle (pimpl) */
+typedef struct ccl_stop_words *ccl_stop_words_t;
+
+/** \brief creates stop words handle */
+YAZ_EXPORT
+ccl_stop_words_t ccl_stop_words_create(void);
+
+/** \brief destroys stop words handle */
+YAZ_EXPORT
+void ccl_stop_words_destroy(ccl_stop_words_t csw);
+
+/** \brief removes stop words from RPN tree */
+YAZ_EXPORT
+int ccl_stop_words_tree(ccl_stop_words_t csw,
+ CCL_bibset bibset, struct ccl_rpn_node **t);
+
+/** \brief returns information about removed "stop" words */
+YAZ_EXPORT
+int ccl_stop_words_info(ccl_stop_words_t csw, int idx,
+ const char **qualname, const char **term);
+
+#ifndef ccl_assert
+#define ccl_assert(x) ;
+#endif
+
+
+/** \brief common attributes
+
+ use (1)