DB-SPEEDYB

 view release on metacpan or  search on metacpan

SPEEDYB.xs  view on Meta::CPAN

    // 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 )

SPEEDYB.xs  view on Meta::CPAN

    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();

SPEEDYB.xs  view on Meta::CPAN

    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;

SPEEDYB.xs  view on Meta::CPAN

	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 1.043 second using v1.01-cache-2.11-cpan-71847e10f99 )