X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=ZOOM.xs;h=7f02c013df6619340b0c5a4b58fee2c576768e9e;hb=692fb30bc0ab6d6e1536405ed7040ecd2b7c94ce;hp=ad6f4bad2c952e64c4ca2aa751e9df4c818b45fa;hpb=8dec60b264f2adf3bcd79b2ed3a0d9971541684d;p=ZOOM-Perl-moved-to-github.git diff --git a/ZOOM.xs b/ZOOM.xs index ad6f4ba..7f02c01 100644 --- a/ZOOM.xs +++ b/ZOOM.xs @@ -1,4 +1,4 @@ -/* $Id: ZOOM.xs,v 1.38 2006-04-06 12:41:25 mike Exp $ */ +/* $Id: ZOOM.xs,v 1.42 2006-06-15 15:43:13 mike Exp $ */ #include "EXTERN.h" #include "perl.h" @@ -327,6 +327,20 @@ ZOOM_query_cql2rpn(s, str, conn) ZOOM_connection conn int +ZOOM_query_ccl2rpn(s, query_str, config, errcode, errstr, errpos) + ZOOM_query s + const char* query_str + const char* config + int &errcode + const char* &errstr + int &errpos + OUTPUT: + RETVAL + errcode + errstr + errpos + +int ZOOM_query_prefix(s, str) ZOOM_query s const char* str @@ -526,34 +540,31 @@ ZOOM_event(conns) /*printf("* in ZOOM_event(%p)\n", conns);*/ if (!SvROK(conns)) { /*printf("* argument is not a reference\n");*/ - RETVAL = -1; - XSRETURN(1); + XSRETURN_IV(-1); } realconns = SvRV(conns); /*printf("* realconns = %p\n", realconns);*/ if (SvTYPE(realconns) != SVt_PVAV) { /*printf("* reference is not to an array\n");*/ - RETVAL = -2; - XSRETURN(1); + XSRETURN_IV(-2); } n = av_len((AV*) realconns); n++; /* The av_len() return-value is zero-based */ if (n == 0) { /*printf("* No connections in referenced array\n");*/ - RETVAL = -3; - XSRETURN(1); + XSRETURN_IV(-3); } else if (n >= sizeof(cs)/sizeof(cs[0])) { /*printf("* Too many connections (%d)\n", (int) n);*/ - RETVAL = -4; - XSRETURN(1); + XSRETURN_IV(-4); } /*printf("* n = %d\n", n);*/ for (i = 0; i < n; i++) { SV **connp = av_fetch((AV*) realconns, i, (I32) 0); + SV *conn, *sv; /*printf("* %d of %d: connp = %p\n", (int) i, (int) n,connp);*/ assert(connp != 0); - SV *conn = *connp; + conn = *connp; /*printf("* conn = %p\n", conn);*/ /* * From here on, the tests and assertions seem to @@ -567,11 +578,9 @@ ZOOM_event(conns) /*printf("* passed assert(isa(ZOOM_connection))\n");*/ assert(SvROK(conn)); /*printf("* passed assert SvROK()\n");*/ - SV *sv = (SV*) SvRV(conn); + sv = (SV*) SvRV(conn); /*printf("* sv = %p\n", sv);*/ - IV tmp = SvIV(sv); - /*printf("* tmp = %d\n", tmp); */ - cs[i] = INT2PTR(ZOOM_connection, tmp); + cs[i] = INT2PTR(ZOOM_connection, SvIV(sv)); /*printf("got cs[%d] of %d = %p\n", (int) i, (int) n, cs[i]);*/ } RETVAL = ZOOM_event((int) n, cs);