+YAZ_EXPORT ZEBRA_RES zebra_search_RPN(ZebraHandle zh, ODR o, Z_RPNQuery *query,
+ const char *setname, zint *hits);
+
+/**
+ \fn ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream,
+ const char *setname, Z_RecordComposition *comp, oid_value input_format,
+ int num_recs, ZebraRetrievalRecord *recs)
+ \brief retrieve records from result set (after search)
+ \param zh session handle
+ \param stream allocate records returned using this ODR
+ \param setname name of result set to retrieve records from
+ \param comp Z39.50 record composition
+ \param input_format transfer syntax (OID)
+ \param num_recs number of records to retrieve
+ \param recs store records in this structure (size is num_recs)
+*/
+YAZ_EXPORT
+ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream,
+ const char *setname,
+ Z_RecordComposition *comp,
+ oid_value input_format,
+ int num_recs,
+ ZebraRetrievalRecord *recs);
+/**
+ \fn int zebra_deleteResultSet(ZebraHandle zh, int function,
+ int num_setnames, char **setnames, int *statuses)
+ \brief delete one or more resultsets
+ \param zh session handle
+ \param function Z_DeleteResultSetRequest_{list,all}
+ \param num_setnames number of result sets
+ \param setnames result set names
+ \param statuses status result
+*/
+YAZ_EXPORT
+int zebra_deleteResultSet(ZebraHandle zh, int function,
+ int num_setnames, char **setnames,
+ int *statuses);
+
+/**
+ \fn ZEBRA_RES zebra_scan(ZebraHandle zh, ODR stream,
+ Z_AttributesPlusTerm *zapt, oid_value attributeset,
+ int *position, int *num_entries, ZebraScanEntry **list, int *is_partial)
+ \brief performs Scan (Z39.50 style)
+ \param zh session handle
+ \param stream ODR handle for result
+ \param zapt Attribute plus Term (start term)
+ \param attributeset Attributeset for Attribute plus Term
+ \param position input/output position
+ \param num_entries number of terms requested / returned
+ \param list list of resulting terms (ODR allocated)
+ \param is_partial upon return 1=partial, 0=complete
+*/
+YAZ_EXPORT ZEBRA_RES zebra_scan(ZebraHandle zh, ODR stream,
+ Z_AttributesPlusTerm *zapt,
+ oid_value attributeset,
+ int *position, int *num_entries,
+ ZebraScanEntry **list,
+ int *is_partial);
+
+/**
+ \fn ZEBRA_RES zebra_scan_PQF(ZebraHandle zh, ODR stream,
+ const char *query, int *position, int *num_entries, ZebraScanEntry **list, int *is_partial)
+ \brief performs Scan (taking PQF string)
+ \param zh session handle
+ \param stream ODR handle for result
+ \param query PQF scan query
+ \param position input/output position
+ \param num_entries number of terms requested / returned
+ \param list list of resulting terms (ODR allocated)
+ \param is_partial upon return 1=partial, 0=complete
+*/
+YAZ_EXPORT ZEBRA_RES zebra_scan_PQF(ZebraHandle zh, ODR stream,
+ const char *query,
+ int *position, int *num_entries,
+ ZebraScanEntry **entries,
+ int *is_partial);
+/**
+ \fn ZEBRA_RES zebra_auth(ZebraHandle zh, const char *user, const char *pass)
+ \brief authenticate user. Returns 0 if OK, != 0 on failure
+ \param zh session handle
+ \param user user name
+ \param pass password
+ */
+YAZ_EXPORT ZEBRA_RES zebra_auth(ZebraHandle zh,
+ const char *user, const char *pass);
+
+/**
+ \fn int zebra_string_norm(ZebraHandle zh, unsigned reg_id,
+ const char *input_str, int input_len,
+ char *output_str, int output_len)
+ \brief normalize zebra term for register (subject to change!)
+ \param zh session handle
+ \param reg_id register ID, 'w', 'p',..
+ \param input_str input string buffer
+ \param input_len input string length
+ \param output_str output string buffer
+ \param output_len output string length
+ */
+YAZ_EXPORT int zebra_string_norm(ZebraHandle zh, unsigned reg_id,