%module "IDZebra"
+%include typemaps.i // Load the typemaps librayr
%{
#include "zebraapi.h"
#include "zebra_api_ext.h"
+#include "zebra_perl.h"
#include "data1.h"
#include "yaz/odr.h"
+#include "yaz/cql.h"
%}
/* == Typemaps ============================================================= */
/* Creates a new Perl array and places a NULL-terminated char ** into it */
%typemap(out) char ** {
- AV *myav;
- SV **svs;
- int i = 0,len = 0;
- /* Figure out how many elements we have */
- while ($1[len])
- len++;
- svs = (SV **) malloc(len*sizeof(SV *));
- for (i = 0; i < len ; i++) {
- svs[i] = sv_newmortal();
- sv_setpv((SV*)svs[i],$1[i]);
- };
- myav = av_make(len,svs);
- free(svs);
+ AV *myav;
+ SV **svs;
+ int i = 0,len = 0;
+ /* Figure out how many elements we have */
+ while ($1[len])
+ len++;
+ svs = (SV **) malloc(len*sizeof(SV *));
+ for (i = 0; i < len ; i++) {
+ svs[i] = sv_newmortal();
+ sv_setpv((SV*)svs[i],$1[i]);
+ };
+ myav = av_make(len,svs);
+ free(svs);
$result = newRV((SV*)myav);
sv_2mortal($result);
argvi++;
}
-
/* == Structures for shadow classes ======================================= */
-%include "zebra_api_ext.h"
+%include "zebra_perl.h"
+
+typedef struct {
+ int processed;
+ int inserted;
+ int updated;
+ int deleted;
+ long utime;
+ long stime;
+} ZebraTransactionStatus;
/* == Module initialization and cleanup (zebra_perl.c) ===================== */
void init (void);
void DESTROY (void);
-
/* == Logging facilities (yaz/log.h) ======================================= */
void logLevel (int level);
/* end transaction (remove write lock) (zebraapi.c) */
%name(end_trans)
-void zebra_end_trans (ZebraHandle zh);
+void zebra_end_transaction (ZebraHandle zh, ZebraTransactionStatus *stat);
+
+%name(trans_no)
+int zebra_trans_no (ZebraHandle zh);
-/* begin retrieval (add read lock) (zebraapi.c) */
%name(begin_read)
int zebra_begin_read (ZebraHandle zh);
+void zts_test (ZebraTransactionStatus *stat);
+
/* end retrieval (remove read lock) (zebraapi.c) */
%name(end_read)
void zebra_end_read (ZebraHandle zh);
%name(update_record)
int zebra_update_record (ZebraHandle zh,
recordGroup *rGroup,
+ const char *recordType,
int sysno,
const char *match,
const char *fname,
%name(delete_record)
int zebra_delete_record (ZebraHandle zh,
recordGroup *rGroup,
+ const char *recordType,
int sysno,
const char *match,
const char *fname,
const char *setname);
-/* TODO: search_CCL */
+/* == YAZ - query tools ==================================================== */
+
+cql_transform_t cql_transform_open_fname(const char *fname);
+void cql_transform_close(cql_transform_t ct);
+int cql_transform_error(cql_transform_t ct, const char **addinfo);
+
+%name(cql2pqf)
+int zebra_cql2pqf (cql_transform_t ct,
+ const char *query, char *res, int len);
/* == Retrieval (zebra_api_ext.c) ========================================== */
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);
-*/
+/* == Scan ================================================================= */
+%name(scan_PQF)
+void zebra_scan_PQF (ZebraHandle zh,
+ ScanObj *so,
+ ODR stream,
+ const char *pqf_query);
+
+ScanEntry *getScanEntry(ScanObj *so, int pos);
/* Admin functionality */
/*
%name(admin_shutdown) void zebra_admin_shutdown (ZebraHandle zh);
*/
-/* Browse
-void zebra_scan (ZebraHandle zh, ODR stream,
- Z_AttributesPlusTerm *zapt,
- oid_value attributeset,
- int *position, int *num_entries,
- ZebraScanEntry **list,
- int *is_partial);
-*/
/* Delete Result Set(s) */
/*
off_t grs_perl_tellf(struct perl_context *context);
void grs_perl_endf(struct perl_context *context, off_t offset);
-data1_handle grs_perl_get_dh(struct perl_context *context);
-NMEM grs_perl_get_mem(struct perl_context *context);
+data1_handle *grs_perl_get_dh(struct perl_context *context);
+NMEM *grs_perl_get_mem(struct perl_context *context);
void grs_perl_set_res(struct perl_context *context, data1_node *n);