CDB-TinyCDB
view release on metacpan or search on metacpan
OUTPUT:
RETVAL
void
get(self, key)
CDB_TinyCDB *self
char *key
INIT:
assert_status( self, METHOD_GET );
PPCODE:
{
unsigned int vlen = 0;
STRLEN klen = strlen(key);
if (self->alias & DOLOAD) { /* tinyfile whole in memory */
if (cdb_find(&self->cdb, key, klen) > 0) {
vlen = cdb_datalen( &self->cdb ); /* length of data */
MAKESV( val, vlen );
if ( cdb_read( &self->cdb, SvPVX(val), vlen, cdb_datapos( &self->cdb )) < 0 ) {
void
getall(self, key)
CDB_TinyCDB *self
char *key
ALIAS:
getlast = DOGETLAST
INIT:
assert_status( self, METHOD_GETALL );
PPCODE:
{
unsigned int kbufsize = 2048;
unsigned int klen = 0, vlen = 0;
unsigned int lastpos = 0, lastvlen = 0;
STRLEN searchklen = strlen(key);
int mode = ix ? ix : DOGETALL;
if (self->alias & DOLOAD) { /* tinyfile whole in memory */
struct cdb_find cdbf;
fileerror(self, "set position", self->fn);
}
memfree( self );
}
void
each(self)
CDB_TinyCDB *self
INIT:
assert_status( self, METHOD_EACH );
PPCODE:
{
unsigned int klen = 0, vlen = 0;
unsigned int kbufsize = 2048;
int keep_looping = 1;
if ( self->alias & DOLOAD ) { /* load */
if ( !( self->opts & EACH_INITIALIZED ) ) {
self->curpos = 0;
cdb_seqinit( &self->curpos, &self->cdb );
self->opts |= EACH_INITIALIZED;
memfree( self );
}
void
keys(self)
CDB_TinyCDB *self
INIT:
assert_status( self, METHOD_KEYS );
PPCODE:
{
unsigned int curpos = 0;
unsigned int klen = 0, kbufsize = 2048;
if ( self->alias & DOLOAD ) { /* load */
cdb_seqinit( &curpos, &self->cdb );
while ( cdb_seqnext(&curpos, &self->cdb) > 0 ) {
klen = cdb_keylen( &self->cdb );
OUTPUT:
RETVAL
void
finish( self, ... )
CDB_TinyCDB *self
INIT:
assert_status( self, METHOD_FINISH );
PPCODE:
{
int save_changes = 1;
int reopen = 1;
char *key;
STRLEN klen;
int i;
for ( i = 1; i < items; i += 2 ) {
key = SvPVx( ST(i), klen);
if ( strEQ(key, "save_changes") ) {
} else {
croak("Invalid option %s", key);
}
}
commit( self, save_changes, reopen );
}
void
DESTROY(self)
CDB_TinyCDB *self
PPCODE:
{
commit( self, /* save_changes */ 0, /* reopen */ 0 );
memfree( self );
Safefree( self->fn );
if ( self->fntemp ) {
Safefree( self->fntemp );
}
Safefree( self );
}
( run in 0.623 second using v1.01-cache-2.11-cpan-71847e10f99 )