X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=perl%2FIDZebra.i;h=88e6a7bbcdaf0c348837fbb6c0a6eb7d1386b6fd;hb=94731f54d976f745cc604bd7e00e7de3fd8151fa;hp=a2528f83b30e1ddde2ed0f9394368371001683e5;hpb=06baa91f7a7f47d46ae76f86c95d7860ffe6a2d4;p=idzebra-moved-to-github.git diff --git a/perl/IDZebra.i b/perl/IDZebra.i index a2528f8..88e6a7b 100644 --- a/perl/IDZebra.i +++ b/perl/IDZebra.i @@ -1,8 +1,10 @@ %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" %} @@ -45,29 +47,27 @@ /* 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" /* == Module initialization and cleanup (zebra_perl.c) ===================== */ @@ -270,15 +270,28 @@ int sort (ZebraHandle zh, const char *output_setname, const char **input_setnames ); + +/* == Scan ================================================================= */ /* +%apply int *INOUT {int *position}; +%apply int *INOUT {int *num_entries}; +%apply int *INOUT {int *is_partial}; -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); +%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); /* Admin functionality */ /* @@ -286,14 +299,6 @@ void zebra_sort (ZebraHandle zh, ODR stream, %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) */ /* @@ -557,7 +562,7 @@ 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); -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);