%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"
/* == 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))
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);
/* == 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;
long stime;
} ZebraTransactionStatus;
-
/* == Module initialization and cleanup (zebra_perl.c) ===================== */
void init (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
/* 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)
%name(trans_no)
int zebra_trans_no (ZebraHandle zh);
-%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);
-
/* commit changes from shadow (zebraapi.c) */
%name(commit)
int zebra_commit (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,
+ recordGroup *rGroup,
+ const char *recordType,
+ int *sysno,
+ const char *match,
+ const char *fname,
+ const char *buf,
+ int buf_size,
+ int force_update);
+
%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);
+ int buf_size,
+ int force_update);
-/* == Search (zebra_api_ext.c) ============================================= */
+/* == 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 ==================================================== */
/* == Sort ================================================================= */
-int sort (ZebraHandle zh,
+%name(sort)
+int zebra_sort_by_specstr (ZebraHandle zh,
ODR stream,
const char *sort_spec,
const char *output_setname,
ODR stream,
const char *pqf_query);
-ScanEntry *getScanEntry(ScanObj *so, int pos);
+scanEntry *getScanEntry(ScanObj *so, int pos);
+
+%typemap(in) int * (int dvalue);
+%typemap(argout) int *;
+
/* Admin functionality */
/*