DB-SPEEDYB
view release on metacpan or search on metacpan
// XXX - eek. no error-check on the calloc
RETVAL->iter = FALSE;
RETVAL->open = FALSE;
// printf( "%s() - RETVAL => [%p]\n", __func__, RETVAL );
LOG( "RETVAL => [%p]", RETVAL );
OUTPUT:
RETVAL
void
DESTROY( SPEEDYB* THIS )
PPCODE:
// printf( "%s() - THIS => [%p]\n", __func__, THIS );
LOG( "THIS => [%p]", THIS );
if (items != 1)
croak("THIS");
// XXX - eek. no error-check on THIS (nullptr?)
free( THIS );
XSRETURN_UNDEF;
bool
open( SPEEDYB* THIS, char* db_filename )
RETVAL = (SPEEDYB_OK == rv) ? 1 : 0;
OUTPUT:
RETVAL
void
get( SPEEDYB* THIS, char* key )
PREINIT:
speedyb_rc_t rv;
char* val;
uint len;
PPCODE:
// printf( "%s() - THIS => [%p]; key => [%s]\n", __func__, THIS, key );
LOG( "THIS => [%p]; key => [%s]", THIS, key );
if ( ! THIS->open )
croak("DB::SPEEDYB::get() - not open; aborting" );
rv = speedyb_get( &(THIS->reader), key, strlen(key), &val, &len );
if ( SPEEDYB_OK != rv )
XSRETURN_UNDEF;
// printf( "%s() - THIS => [%p]; val => [%d] [%s]\n", __func__, THIS, len, val );
LOG( "THIS => [%p]; val => [%d] [%s]", THIS, len, val );
ST(0) = sv_newmortal();
XSRETURN(1);
void
each( SPEEDYB* THIS )
PREINIT:
speedyb_rc_t rv;
char* key;
uint klen;
char* val;
uint vlen;
PPCODE:
// printf( "%s() - THIS => [%p]\n", __func__, THIS );
LOG( "THIS => [%p]", THIS );
if ( ! THIS->open )
croak("DB::SPEEDYB::each() - not open; aborting" );
if ( ! THIS->iter )
{
rv = speedyb_iterate_init( &(THIS->reader));
if ( SPEEDYB_OK != rv )
{
THIS->iter = FALSE;
XPUSHs( sv_2mortal( newSVpv( val, vlen )));
XSRETURN(2);
}
XSRETURN_YES;
void
count( SPEEDYB* THIS )
PREINIT:
speedyb_rc_t rv;
uint nkeys;
PPCODE:
// printf( "%s() - THIS => [%p]\n", __func__, THIS );
LOG( "THIS => [%p]\n", THIS );
if ( ! THIS->open )
croak("DB::SPEEDYB::count() - not open; aborting" );
rv = speedyb_get_num_keys( &(THIS->reader), &nkeys );
if ( SPEEDYB_OK != rv )
XSRETURN_UNDEF;
ST(0) = sv_newmortal();
sv_setiv( ST(0), nkeys );
XSRETURN(1);
( run in 0.489 second using v1.01-cache-2.11-cpan-71847e10f99 )