#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
MODULE = Sub::Boolean PACKAGE = Sub::Boolean
void
falsey (...)
CODE:
XSRETURN_NO;
void
truthy (...)
CODE:
XSRETURN_YES;
void
undef (...)
CODE:
XSRETURN_UNDEF;
void
empty (...)
CODE:
XSRETURN_EMPTY;
SV*
make_false (...)
ALIAS:
make_true = 1
make_undef = 2
make_empty = 3
CODE:
CV* cv;
if ( items == 0 ) {
switch (ix) {
case 0:
cv = newXS(NULL, XS_Sub__Boolean_falsey, __FILE__);
break;
case 1:
cv = newXS(NULL, XS_Sub__Boolean_truthy, __FILE__);
break;
case 2:
cv = newXS(NULL, XS_Sub__Boolean_undef, __FILE__);
break;
case 3:
cv = newXS(NULL, XS_Sub__Boolean_empty, __FILE__);
break;
}
}
else {
char* name = (char *)SvPVbyte_nolen(ST(0));
switch (ix) {
case 0:
cv = newXS(name, XS_Sub__Boolean_falsey, __FILE__);
break;
case 1:
cv = newXS(name, XS_Sub__Boolean_truthy, __FILE__);
break;
case 2:
cv = newXS(name, XS_Sub__Boolean_undef, __FILE__);
break;
case 3:
cv = newXS(name, XS_Sub__Boolean_empty, __FILE__);
break;
}
XSRETURN_EMPTY;
}
RETVAL = newRV((SV*)cv);
OUTPUT:
RETVAL