+
+/* == Transactions, locking, shadow register =============================== */
+
+/* begin transaction (add write lock) (zebraapi.c) */
+%name(begin_trans)
+void zebra_begin_trans (ZebraHandle zh);
+
+/* end transaction (remove write lock) (zebraapi.c) */
+%name(end_trans)
+void zebra_end_trans (ZebraHandle zh);
+
+/* begin retrieval (add read lock) (zebraapi.c) */
+%name(begin_read)
+int zebra_begin_read (ZebraHandle zh);
+
+/* end retrieval (remove read lock) (zebraapi.c) */
+%name(end_read)
+void zebra_end_read (ZebraHandle zh);
+
+/* commit changes from shadow (zebraapi.c) */
+%name(commit)
+int zebra_commit (ZebraHandle zh);
+
+/* get shadow status (zebra_api_ext.c) */
+%name(get_shadow_enable)
+int zebra_get_shadow_enable (ZebraHandle zh);
+
+/* set shadow status (zebra_api_ext.c) */
+%name(set_shadow_enable)
+void zebra_set_shadow_enable (ZebraHandle zh, int value);
+
+
+/* == Repository actions (zebraapi.c) ====================================== */
+
+%name(init)
+int zebra_init (ZebraHandle zh);
+
+%name(compact)
+int zebra_compact (ZebraHandle zh);
+
+%name(repository_update)
+void zebra_repository_update (ZebraHandle zh);
+
+%name(repository_delete)
+void zebra_repository_delete (ZebraHandle zh);
+
+%name(repository_show)
+void zebra_repository_show (ZebraHandle zh);
+
+
+/* == Record update/delete (zebra_api_ext.c) =============================== */
+
+/* If sysno is provided, then it's used to identify the reocord.
+ If not, and match_criteria is provided, then sysno is guessed
+ If not, and a record is provided, then sysno is got from there */
+
+%name(update_record)
+int zebra_update_record (ZebraHandle zh,
+ recordGroup *rGroup,
+ int sysno,
+ const char *match,
+ const char *fname,
+ const char *buf,
+ int buf_size);
+
+%name(delete_record)
+int zebra_delete_record (ZebraHandle zh,
+ recordGroup *rGroup,
+ int sysno,
+ const char *match,
+ const char *fname,
+ const char *buf,
+ int buf_size);
+
+/* == Search (zebra_api_ext.c) ============================================= */
+
+%name(search_PQF)
+int zebra_search_PQF (ZebraHandle zh,
+ ODR odr_input, ODR odr_output,
+ const char *pqf_query,
+ const char *setname);
+
+
+/* TODO: search_CCL */
+
+
+/* == Retrieval (zebra_api_ext.c) ========================================== */
+
+/* will get a 'retrieval obj' (simple enough to pass to perl), which can be
+ used to get the individual records. Elementset, schema and format strings
+ are threated the same way yaz-client does. */
+void records_retrieve(ZebraHandle zh,
+ ODR stream,
+ const char *setname, // resultset name
+ const char *a_eset, // optional elementset
+ const char *a_schema, // optional schema
+ const char *a_format, // optional record syntax
+ int from, // range, 1 based
+ int to,
+ RetrievalObj *res
+ );
+
+/* fetch a record from the retrieval object. pos is 1 based */
+void record_retrieve(RetrievalObj *ro,
+ ODR stream,
+ RetrievalRecord *res,
+ int pos);
+
+/* == Sort ================================================================= */
+int sort (ZebraHandle zh,
+ ODR stream,
+ const char *sort_spec,
+ const char *output_setname,
+ const char **input_setnames
+ );
+/*
+
+void zebra_sort (ZebraHandle zh, ODR stream,
+ int num_input_setnames,
+ const char **input_setnames,
+ const char *output_setname,
+ Z_SortKeySpecList *sort_sequence,
+ int *sort_status);