--- TokyoDystopia.xs 2008/09/21 14:24:22 36 +++ TokyoDystopia.xs 2008/09/21 20:16:39 37 @@ -505,3 +505,242 @@ OUTPUT: RETVAL + +#include + +const char * +tcjdberrmsg(ecode) + int ecode +CODE: + RETVAL = tcjdberrmsg(ecode); +OUTPUT: + RETVAL + + +void * +tcjdbnew() +PREINIT: + TCJDB *jdb; +CODE: + jdb = tcjdbnew(); + RETVAL = jdb; +OUTPUT: + RETVAL + + +void +tcjdbdel(jdb) + void * jdb +CODE: + tcjdbdel(jdb); + + +int +tcjdbecode(jdb) + void * jdb +CODE: + RETVAL = tcjdbecode(jdb); +OUTPUT: + RETVAL + + +int +tcjdbtune(jdb, ernum, etnum, iusiz, opts) + void * jdb + int ernum + int etnum + int iusiz + int opts +CODE: + RETVAL = tcjdbtune(jdb, ernum, etnum, iusiz, opts); +OUTPUT: + RETVAL + + +int +tcjdbsetcache(jdb, icsiz, lcnum) + void * jdb + int icsiz + int lcnum +CODE: + RETVAL = tcjdbsetcache(jdb, icsiz, lcnum); +OUTPUT: + RETVAL + + +int +tcjdbsetfwmmax(jdb, fwmax) + void * jdb + int fwmax +CODE: + RETVAL = tcjdbsetfwmmax(jdb, fwmax); +OUTPUT: + RETVAL + + +int +tcjdbopen(jdb, path, omode) + void * jdb + char * path + int omode +CODE: + RETVAL = tcjdbopen(jdb, path, omode); +OUTPUT: + RETVAL + + +int +tcjdbclose(jdb) + void * jdb +CODE: + RETVAL = tcjdbclose(jdb); +OUTPUT: + RETVAL + + +int +tcjdbput(jdb, id, vals) + void * jdb + int id + AV * vals +PREINIT: + TCLIST *tvals; + SV *val; + STRLEN vsiz; + const char *vbuf; + int i, num; +CODE: + tvals = tclistnew(); + num = av_len(vals) + 1; + for(i = 0; i < num; i++) { + val = *av_fetch(vals, i, 0); + vbuf = SvPV(val, vsiz); + tclistpush(tvals, vbuf, (int)vsiz); + } + RETVAL = tcjdbput(jdb, id, tvals); + tclistdel(tvals); +OUTPUT: + RETVAL + + +int +tcjdbput2(jdb, id, text, delims) + void * jdb + int id + SV * text + SV * delims +PREINIT: + STRLEN tsiz, dsiz; + const char *tbuf, *dbuf; +CODE: + tbuf = SvPV(text, tsiz); + dbuf = SvPV(delims, dsiz); + RETVAL = tcjdbput2(jdb, id, tbuf, dbuf); +OUTPUT: + RETVAL + +int +tcjdbout(jdb, id) + void * jdb + int id +CODE: + RETVAL = tcjdbout(jdb, id); +OUTPUT: + RETVAL + + +void +tcjdbsearch(jdb, word, smode) + void * jdb + SV * word + int smode +PREINIT: + AV *av; + STRLEN wsize; + uint64_t *results; + const char *wbuf; + int i, rnum; +PPCODE: + wbuf = SvPV(word, wsize); + results = tcjdbsearch(jdb, 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); + + +int +tcjdbsync(jdb) + void * jdb +CODE: + RETVAL = tcjdbsync(jdb); +OUTPUT: + RETVAL + + +int +tcjdboptimize(jdb) + void * jdb +CODE: + RETVAL = tcjdboptimize(jdb); +OUTPUT: + RETVAL + + +int +tcjdbvanish(jdb) + void * jdb +CODE: + RETVAL = tcjdbvanish(jdb); +OUTPUT: + RETVAL + + +int +tcjdbcopy(jdb, path) + void * jdb + char * path +CODE: + RETVAL = tcjdbcopy(jdb, path); +OUTPUT: + RETVAL + + +void +tcjdbpath(jdb) + void * jdb +PREINIT: + const char *path; +PPCODE: + path = tcjdbpath(jdb); + if(path){ + XPUSHs(sv_2mortal(newSVpv(path, 0))); + } else { + XPUSHs((SV *)&PL_sv_undef); + } + XSRETURN(1); + + +double +tcjdbrnum(jdb) + void * jdb +CODE: + RETVAL = tcjdbrnum(jdb); +OUTPUT: + RETVAL + + +double +tcjdbfsiz(jdb) + void * jdb +CODE: + RETVAL = tcjdbfsiz(jdb); +OUTPUT: + RETVAL +