X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=perl%2FIDZebra.i;h=020e8db0d9b0c1b257f98805fed5c149107b4122;hb=cd3f39bbae63668b8806ed205132da166e73102f;hp=7f5e063ba3c5058520b3ecb059985fc9c9aafe02;hpb=ac5747296ef5b85e2125da04fa1f7d33852ad971;p=idzebra-moved-to-github.git diff --git a/perl/IDZebra.i b/perl/IDZebra.i index 7f5e063..020e8db 100644 --- a/perl/IDZebra.i +++ b/perl/IDZebra.i @@ -1,6 +1,7 @@ %module "IDZebra" %include typemaps.i // Load the typemaps librayr + %{ #include "zebraapi.h" #include "zebra_perl.h" @@ -11,8 +12,6 @@ /* == Typemaps ============================================================= */ -/* RetrievalRecordBuff is a special construct, to allow to map a char * buf - to non-null terminated perl string scalar value (SVpv). */ %typemap(in) int * { int i; if (!SvIOK($input)) @@ -27,6 +26,8 @@ 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 * { if ($1->len) { $result = newSVpv($1->buf,$1->len); @@ -85,7 +86,52 @@ /* == 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; @@ -96,7 +142,6 @@ typedef struct { long stime; } ZebraTransactionStatus; - /* == Module initialization and cleanup (zebra_perl.c) ===================== */ void init (void); @@ -104,10 +149,21 @@ void DESTROY (void); /* == Logging facilities (yaz/log.h) ======================================= */ -void logLevel (int level); -void logFile (const char *fname); +%name(logLevel) +void yaz_log_init_level (int level); + +%name(logFile) +void yaz_log_init_file (const char *fname); + +%name(logMsg) void logMsg (int level, const char *message); +%name(logPrefix) +void yaz_log_init_prefix (const char *prefix); + +%name(logPrefix2) +void yaz_log_init_prefix2 (const char *prefix); + #define LOG_FATAL 0x0001 #define LOG_DEBUG 0x0002 #define LOG_WARN 0x0004 @@ -187,7 +243,7 @@ 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) @@ -196,13 +252,6 @@ void zebra_end_transaction (ZebraHandle zh, ZebraTransactionStatus *stat); %name(trans_no) int zebra_trans_no (ZebraHandle zh); -%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); @@ -225,13 +274,13 @@ int zebra_init (ZebraHandle zh); int zebra_compact (ZebraHandle zh); %name(repository_update) -void zebra_repository_update (ZebraHandle zh); +void zebra_repository_update (ZebraHandle zh, const char *path); %name(repository_delete) -void zebra_repository_delete (ZebraHandle zh); +void zebra_repository_delete (ZebraHandle zh, const char *path); %name(repository_show) -void zebra_repository_show (ZebraHandle zh); +void zebra_repository_show (ZebraHandle zh, const char *path); /* == Record update/delete (zebra_api_ext.c) =============================== */ @@ -240,34 +289,44 @@ void zebra_repository_show (ZebraHandle zh); If not, and match_criteria is provided, then sysno is guessed If not, and a record is provided, then sysno is got from there */ +%apply int *REFERENCE { int *sysno }; +%name(insert_record) +int zebra_insert_record (ZebraHandle zh, + const char *recordType, + int *sysno, + const char *match, + const char *fname, + const char *buf, + int buf_size); + %name(update_record) int zebra_update_record (ZebraHandle zh, - recordGroup *rGroup, const char *recordType, - int sysno, + 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, + int *sysno, const char *match, const char *fname, const char *buf, - int buf_size); - -/* == Search (zebra_api_ext.c) ============================================= */ + int buf_size, + int force_update); +/* == Search (zebraapi.c) ================================================== */ +%include "typemaps.i" +%apply int *REFERENCE { int *hits }; %name(search_PQF) int zebra_search_PQF (ZebraHandle zh, - ODR odr_input, ODR odr_output, const char *pqf_query, - const char *setname); - + const char *setname, + int *hits); /* == YAZ - query tools ==================================================== */ @@ -309,8 +368,15 @@ int zebra_deleleResultSet(ZebraHandle zh, int function, int *statuses); +/* Resultset terms */ +%name(resultSetTerms) +int zebra_resultSetTerms (ZebraHandle zh, const char *setname, + int no, int *REFERENCE, + int *REFERENCE, char *out, int *REFERENCE); + /* == Sort ================================================================= */ -int sort (ZebraHandle zh, +%name(sort) +int zebra_sort_by_specstr (ZebraHandle zh, ODR stream, const char *sort_spec, const char *output_setname, @@ -326,6 +392,10 @@ void zebra_scan_PQF (ZebraHandle zh, scanEntry *getScanEntry(ScanObj *so, int pos); +%typemap(in) int * (int dvalue); +%typemap(argout) int *; + + /* Admin functionality */ /* %name(admin_start) void zebra_admin_start (ZebraHandle zh);