X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=perl%2FIDZebra.i;h=27af217d592a3793e20f87a3934c8cff27380970;hb=6aa184fabb86b0535bc1d4d50cb6967e7425a068;hp=88e6a7bbcdaf0c348837fbb6c0a6eb7d1386b6fd;hpb=bb45d1f271522de94ba190f4024a27e2398f55fb;p=idzebra-moved-to-github.git diff --git a/perl/IDZebra.i b/perl/IDZebra.i index 88e6a7b..27af217 100644 --- a/perl/IDZebra.i +++ b/perl/IDZebra.i @@ -1,20 +1,39 @@ %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 ============================================================= */ +%typemap(in) int * { + int i; + if (!SvIOK($input)) + croak("Argument $argnum is not an integer."); + i = SvIV($input); + $1 = &i; +} + +%typemap(out) int * { + $result=newSViv($1) + sv_2mortal($result); + argvi++; +} + /* RetrievalRecordBuff is a special construct, to allow to map a char * buf to non-null terminated perl string scalar value (SVpv). */ %typemap(out) RetrievalRecordBuf * { - $result = newSVpv($1->buf,$1->len); + if ($1->len) { + $result = newSVpv($1->buf,$1->len); + } else { + $result = newSVpv("",0); + } sv_2mortal($result); argvi++; } @@ -67,14 +86,67 @@ /* == Structures for shadow classes ======================================= */ -%include "zebra_perl.h" + +/*%include "zebra_perl.h" */ +typedef struct { + char *groupName; + char *databaseName; + char *path; + char *recordId; + char *recordType; + int flagStoreData; + int flagStoreKeys; + int flagRw; + int fileVerboseLimit; + int databaseNamePath; + int explainDatabase; + int followLinks; +} recordGroup; + +typedef struct { + int noOfRecords; + ZebraRetrievalRecord *records; +} RetrievalObj; + +typedef struct { + int errCode; /* non-zero if error when fetching this */ + char *errString; /* error string */ + int position; /* position of record in result set (1,2,..) */ + char *base; + int sysno; + int score; + char *format; /* record syntax */ + RetrievalRecordBuf *buf; +} RetrievalRecord; + +/* Scan Term Descriptor */ +typedef struct { + int occurrences; /* scan term occurrences */ + char *term; /* scan term string */ +} scanEntry; + +typedef struct { + int num_entries; + int position; + int is_partial; + scanEntry *entries; +} ScanObj; + + +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); @@ -160,19 +232,14 @@ int zebra_select_databases (ZebraHandle zh, int num_bases, /* begin transaction (add write lock) (zebraapi.c) */ %name(begin_trans) -void zebra_begin_trans (ZebraHandle zh); +int zebra_begin_trans (ZebraHandle zh, int rw); /* 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); +void zebra_end_transaction (ZebraHandle zh, ZebraTransactionStatus *stat); -/* end retrieval (remove read lock) (zebraapi.c) */ -%name(end_read) -void zebra_end_read (ZebraHandle zh); +%name(trans_no) +int zebra_trans_no (ZebraHandle zh); /* commit changes from shadow (zebraapi.c) */ %name(commit) @@ -214,20 +281,25 @@ void zebra_repository_show (ZebraHandle zh); %name(update_record) int zebra_update_record (ZebraHandle zh, recordGroup *rGroup, + const char *recordType, int sysno, const char *match, const char *fname, const char *buf, - int buf_size); + int buf_size, + int force_update); %name(delete_record) int zebra_delete_record (ZebraHandle zh, recordGroup *rGroup, + const char *recordType, int sysno, const char *match, const char *fname, const char *buf, - int buf_size); + int buf_size, + int force_update); + /* == Search (zebra_api_ext.c) ============================================= */ @@ -238,8 +310,16 @@ int zebra_search_PQF (ZebraHandle zh, 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) ========================================== */ @@ -263,6 +343,13 @@ void record_retrieve(RetrievalObj *ro, RetrievalRecord *res, int pos); +/* Delete Result Set(s) (zebraapi.c) */ +%name(deleteResultSet) +int zebra_deleleResultSet(ZebraHandle zh, int function, + int num_setnames, char **setnames, + int *statuses); + + /* == Sort ================================================================= */ int sort (ZebraHandle zh, ODR stream, @@ -272,26 +359,13 @@ int sort (ZebraHandle zh, ); /* == Scan ================================================================= */ -/* -%apply int *INOUT {int *position}; -%apply int *INOUT {int *num_entries}; -%apply int *INOUT {int *is_partial}; - -%name(scan_PQF) -void zebra_scan_PQF (ZebraHandle zh, - ODR stream, - const char *pqf_query, - int *position, - int *num_entries, - int *is_partial); -*/ %name(scan_PQF) void zebra_scan_PQF (ZebraHandle zh, ScanObj *so, ODR stream, const char *pqf_query); -ScanEntry *getScanEntry(ScanObj *so, int pos); +scanEntry *getScanEntry(ScanObj *so, int pos); /* Admin functionality */ /* @@ -300,12 +374,6 @@ ScanEntry *getScanEntry(ScanObj *so, int pos); */ -/* Delete Result Set(s) */ -/* -int zebra_deleleResultSet(ZebraHandle zh, int function, - int num_setnames, char **setnames, - int *statuses); -*/ /* do authentication */ /* @@ -558,6 +626,8 @@ const char *data1_get_tabroot(data1_handle dh); * ========================================================================= */ int grs_perl_readf(struct perl_context *context, size_t len); +int grs_perl_readline(struct perl_context *context); +char grs_perl_getc(struct perl_context *context); off_t grs_perl_seekf(struct perl_context *context, off_t offset); off_t grs_perl_tellf(struct perl_context *context); void grs_perl_endf(struct perl_context *context, off_t offset);