Devel-PPPort
view release on metacpan or search on metacpan
parts/inc/misc view on Meta::CPAN
CODE:
RETVAL = 0;
RETVAL += PTR2nat(p) != 0 ? 1 : 0;
RETVAL += PTR2ul(p) != 0UL ? 2 : 0;
RETVAL += PTR2UV(p) != (UV) 0 ? 4 : 0;
RETVAL += PTR2IV(p) != (IV) 0 ? 8 : 0;
RETVAL += PTR2NV(p) != (NV) 0 ? 16 : 0;
RETVAL += p > NUM2PTR(int *, 0) ? 32 : 0;
OUTPUT:
RETVAL
int
gv_stashpvn(name, create)
char *name
I32 create
CODE:
RETVAL = gv_stashpvn(name, strlen(name), create) != NULL;
OUTPUT:
RETVAL
int
get_sv(name, create)
char *name
I32 create
CODE:
RETVAL = get_sv(name, create) != NULL;
OUTPUT:
RETVAL
int
get_av(name, create)
char *name
I32 create
CODE:
RETVAL = get_av(name, create) != NULL;
OUTPUT:
RETVAL
int
get_hv(name, create)
char *name
I32 create
CODE:
RETVAL = get_hv(name, create) != NULL;
OUTPUT:
RETVAL
int
get_cv(name, create)
char *name
I32 create
CODE:
RETVAL = get_cv(name, create) != NULL;
OUTPUT:
RETVAL
void
xsreturn(two)
int two
PPCODE:
mXPUSHp("test1", 5);
if (two)
mXPUSHp("test2", 5);
if (two)
XSRETURN(2);
else
XSRETURN(1);
SV*
boolSV(value)
int value
CODE:
RETVAL = newSVsv(boolSV(value));
OUTPUT:
RETVAL
SV*
DEFSV()
CODE:
RETVAL = newSVsv(DEFSV);
OUTPUT:
RETVAL
void
DEFSV_modify()
PPCODE:
XPUSHs(sv_mortalcopy(DEFSV));
ENTER;
SAVE_DEFSV;
DEFSV_set(newSVpvs("DEFSV"));
XPUSHs(sv_mortalcopy(DEFSV));
/* Yes, this leaks the above scalar; 5.005 with threads for some reason */
/* frees it upon LEAVE, thus mortalizing it causes "attempt to free..." */
/* sv_2mortal(DEFSV); */
LEAVE;
XPUSHs(sv_mortalcopy(DEFSV));
XSRETURN(3);
int
ERRSV()
CODE:
RETVAL = SvTRUEx(ERRSV);
OUTPUT:
RETVAL
SV*
UNDERBAR()
CODE:
{
dUNDERBAR;
RETVAL = newSVsv(UNDERBAR);
}
OUTPUT:
RETVAL
void
prepush()
CODE:
{
dXSTARG;
XSprePUSH;
PUSHi(42);
XSRETURN(1);
}
int
PERL_ABS(a)
int a
void
SVf(x)
SV *x
PPCODE:
#if { VERSION >= 5.004 }
x = sv_2mortal(newSVpvf("[%" SVf "]", SVfARG(x)));
#endif
XPUSHs(x);
XSRETURN(1);
void
Perl_ppaddr_t(string)
char *string
PREINIT:
Perl_ppaddr_t lower;
PPCODE:
lower = PL_ppaddr[OP_LC];
mXPUSHs(newSVpv(string, 0));
PUTBACK;
ENTER;
(void)*(lower)(aTHXR);
SPAGAIN;
LEAVE;
XSRETURN(1);
#if { VERSION >= 5.8.0 }
void
check_HeUTF8(utf8_key)
SV *utf8_key;
PREINIT:
HV *hash;
HE *ent;
STRLEN klen;
char *key;
PPCODE:
hash = newHV();
key = SvPV(utf8_key, klen);
if (SvUTF8(utf8_key)) klen *= -1;
hv_store(hash, key, klen, newSVpvs("string"), 0);
hv_iterinit(hash);
ent = hv_iternext(hash);
assert(ent);
mXPUSHp((HeUTF8(ent) == 0 ? "norm" : "utf8"), 4);
hv_undef(hash);
#endif
void
check_c_array()
PREINIT:
int x[] = { 10, 11, 12, 13 };
PPCODE:
mXPUSHi(C_ARRAY_LENGTH(x)); /* 4 */
mXPUSHi(*(C_ARRAY_END(x)-1)); /* 13 */
bool
isBLANK(ord)
UV ord
CODE:
RETVAL = isBLANK(ord);
OUTPUT:
RETVAL
bool
isBLANK_A(ord)
UV ord
CODE:
RETVAL = isBLANK_A(ord);
OUTPUT:
RETVAL
bool
isBLANK_L1(ord)
UV ord
CODE:
RETVAL = isBLANK_L1(ord);
OUTPUT:
RETVAL
bool
isUPPER(ord)
UV ord
CODE:
RETVAL = isUPPER(ord);
OUTPUT:
RETVAL
bool
isUPPER_A(ord)
UV ord
CODE:
RETVAL = isUPPER_A(ord);
OUTPUT:
RETVAL
bool
isUPPER_L1(ord)
UV ord
CODE:
RETVAL = isUPPER_L1(ord);
OUTPUT:
RETVAL
bool
isLOWER(ord)
UV ord
CODE:
RETVAL = isLOWER(ord);
OUTPUT:
RETVAL
bool
( run in 0.423 second using v1.01-cache-2.11-cpan-5511b514fd6 )