Solaris-NDDI
view release on metacpan or search on metacpan
STRLEN klen;
STRLEN vlen;
MAGIC *mg;
ndd_dev_t *np;
var_t var;
CODE:
hash = (HV*)SvRV(self);
k = SvPV(key, klen);
mg = mg_find(SvRV(self),'~');
if(!mg) { croak("lost ~ magic"); }
np = (ndd_dev_t*)SvIVX(mg->mg_obj);
v = SvPV(value, vlen);
var.var_name = k;
var.var_type = VAR_STRING_T;
var.var_un.var_string = v;
if (ndd_name_io(np, ND_SET, &var) < 0)
fatal("ND_SET failed");
SvREFCNT_inc(value);
RETVAL = *(hv_store(hash, k, klen, value, 0));
SvREFCNT_inc(RETVAL);
OUTPUT:
RETVAL
void
DESTROY(self)
SV *self;
PREINIT:
MAGIC *mg;
ndd_dev_t *np;
CODE:
mg = mg_find(SvRV(self),'~');
if(!mg) { croak("lost ~ magic"); }
np = (ndd_dev_t*)SvIVX(mg->mg_obj);
close(np->ndd_sd);
free(np->ndd_dev_name);
Safefree(np);
bool
EXISTS(self, key)
SV *self;
SV *key;
PREINIT:
HV *hash;
char *k;
CODE:
hash = (HV*)SvRV(self);
k = SvPV(key, PL_na);
RETVAL = hv_exists_ent(hash, key, 0);
OUTPUT:
RETVAL
SV*
FIRSTKEY(self)
SV *self;
PREINIT:
HV *hash;
HE *he;
PPCODE:
hash = (HV*)SvRV(self);
hv_iterinit(hash);
if (he = hv_iternext(hash)) {
EXTEND(sp, 1);
PUSHs(hv_iterkeysv(he));
}
SV*
NEXTKEY(self, lastkey)
SV *self;
SV *lastkey;
PREINIT:
HV *hash;
HE *he;
PPCODE:
hash = (HV*)SvRV(self);
if (he = hv_iternext(hash)) {
EXTEND(sp, 1);
PUSHs(hv_iterkeysv(he));
}
SV*
DELETE(self, key)
SV *self;
SV *key;
PREINIT:
HV *hash;
HE *he;
CODE:
hash = (HV*)SvRV(self);
RETVAL = hv_delete_ent(hash, key, 0, 0);
if (RETVAL) {
SvREFCNT_inc(RETVAL);
}
else {
RETVAL = &PL_sv_undef;
}
OUTPUT:
RETVAL
void
CLEAR(self)
SV *self;
PREINIT:
HV *hash;
CODE:
hash = (HV*)SvRV(self);
hv_clear(hash);
( run in 1.946 second using v1.01-cache-2.11-cpan-5511b514fd6 )