--- TokyoDystopia.xs 2008/08/18 17:45:56 17 +++ TokyoDystopia.xs 2008/08/18 19:22:30 29 @@ -141,3 +141,142 @@ } XSRETURN(1); + +void +tcidbsearch(idb, word, smode) + void * idb + SV * word + int smode +PREINIT: + AV *av; + STRLEN wsize; + uint64_t *results; + const char *wbuf; + int i, rnum; +PPCODE: + wbuf = SvPV(word, wsize); + results = tcidbsearch(idb, wbuf, smode, &rnum); + if ( rnum > 0 ) { + av = newAV(); + for(i = 0; i < rnum; i++){ + av_push(av, newSViv( (int)results[i] )); + } + XPUSHs(sv_2mortal(newRV_noinc((SV *)av))); + } else { + XPUSHs((SV *)&PL_sv_undef); + } + XSRETURN(1); + + +void +tcidbsearch2(idb, expr) + void * idb + SV * expr +PREINIT: + AV *av; + STRLEN wsize; + uint64_t *results; + const char *wbuf; + int i, rnum; +PPCODE: + wbuf = SvPV(expr, wsize); + results = tcidbsearch2(idb, wbuf, &rnum); + if ( rnum > 0 ) { + av = newAV(); + for(i = 0; i < rnum; i++){ + av_push(av, newSViv( (int)results[i] )); // FIXME convert to double? + } + XPUSHs(sv_2mortal(newRV_noinc((SV *)av))); + } else { + XPUSHs((SV *)&PL_sv_undef); + } + XSRETURN(1); + + +int +tcidbiterinit(idb) + void * idb +CODE: + RETVAL = tcidbiterinit(idb); +OUTPUT: + RETVAL + + +double +tcidbiternext(idb) + void * idb +CODE: + RETVAL = tcidbiternext(idb); +OUTPUT: + RETVAL + + +int +tcidbsync(idb) + void * idb +CODE: + RETVAL = tcidbsync(idb); +OUTPUT: + RETVAL + + +int +tcidboptimize(idb) + void * idb +CODE: + RETVAL = tcidboptimize(idb); +OUTPUT: + RETVAL + + +int +tcidbvanish(idb) + void * idb +CODE: + RETVAL = tcidbvanish(idb); +OUTPUT: + RETVAL + + +int +tcidbcopy(idb, path) + void * idb + char * path +CODE: + RETVAL = tcidbcopy(idb, path); +OUTPUT: + RETVAL + + +void +tcidbpath(idb) + void * idb +PREINIT: + const char *path; +PPCODE: + path = tcidbpath(idb); + if(path){ + XPUSHs(sv_2mortal(newSVpv(path, 0))); + } else { + XPUSHs((SV *)&PL_sv_undef); + } + XSRETURN(1); + + +double +tcidbrnum(idb) + void * idb +CODE: + RETVAL = tcidbrnum(idb); +OUTPUT: + RETVAL + + +double +tcidbfsiz(idb) + void * idb +CODE: + RETVAL = tcidbfsiz(idb); +OUTPUT: + RETVAL +