IPC-MMA
view release on metacpan or search on metacpan
mm_lock(mm, mode)
MM *mm
mm_lock_mode mode
int
mm_unlock(mm)
MM *mm
void
mm_alloc_size ()
PPCODE:
if (GIMME_V == G_ARRAY) {
EXTEND(SP, 6);
XPUSHs(sv_2mortal(newSVuv((UV)mma_alloc_mask()+1)));
XPUSHs(sv_2mortal(newSVuv((UV)mma_alloc_base())));
XPUSHs(sv_2mortal(newSVuv((UV)sizeof(void *))));
XPUSHs(sv_2mortal(newSVuv((UV)IVSIZE)));
XPUSHs(sv_2mortal(newSVuv((UV)NVSIZE)));
XPUSHs(sv_2mortal(newSVuv((UV)DELTA_ENTRIES)));
} else {
XPUSHs(sv_2mortal(newSVuv((UV)mma_alloc_mask()+1)));
RETVAL
void
mm_array_status (array)
mm_array *array
ALIAS:
mma_array_status=1
PREINIT:
IV statArray[4];
int i=0;
PPCODE:
mm_array_status (array, statArray, ix);
if (GIMME_V == G_ARRAY) {
if (statArray[0] >= 0) {
EXTEND(SP, 4);
while (i < 4) XPUSHs (sv_2mortal (newSViv(statArray[i++])));
} } else {
if (statArray[0] >= 0) {
XPUSHs (sv_2mortal (newSViv(statArray[0])));
} else XPUSHs (&PL_sv_undef);
}
PREINIT:
IV index = SvOK(offset) ? SvIV(offset) < 0 && !(ix & 2) ? SvIV(offset)
+ array->entries
: SvIV(offset)
: 0;
UV del_count = SvOK(length) ? SvUV(length) : array->entries - index;
SV *delSVs[del_count];
UV add_count = items>3 ? items-3 : 0;
SV *addSVs[add_count];
int i;
PPCODE:
for (i=0; i<add_count; i++) addSVs[i] = ST(i+3);
if (!mm_array_splice (array,index,del_count,delSVs,add_count,addSVs,ix&1)) {
if (PL_dowarn && mm_error()) warn ("IPC::MMA: %s", mm_error());
del_count = 0;
}
/* "in scalar context, splice returns the last entry deleted"
means just return all of them in either scalar or array mode */
if (del_count || GIMME_V == G_ARRAY) {
EXTEND (SP, del_count);
for (i=0; i<del_count; i++) XPUSHs(sv_2mortal(delSVs[i]));
RETVAL
void
mm_hash_get_entry(hash, index)
mm_hash *hash
IV index
ALIAS:
mma_hash_get_entry=1
PREINIT:
SV* ret[2];
PPCODE:
mm_hash_get_entry(hash, index, ix, ret);
if (GIMME_V == G_ARRAY) {
if (SvOK(ret[0])) {
EXTEND(SP, 2);
XPUSHs (sv_2mortal (ret[0]));
XPUSHs (sv_2mortal (ret[1]));
} } else {
XPUSHs (sv_2mortal (ret[0]));
}
( run in 0.438 second using v1.01-cache-2.11-cpan-71847e10f99 )