*
********************************************************************************
*
-* $Revision: 8 $
+* $Revision: 9 $
* $Author: mhx $
-* $Date: 2005/01/31 08:10:55 +0100 $
+* $Date: 2006/01/14 18:07:55 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
#define NEED_sv_2pv_nolen
#define NEED_sv_2pvbyte
+/* ---- from parts/inc/variables ---- */
+#define NEED_PL_signals
+
/* =========== END XSINIT =================================================== */
#include "ppport.h"
XSRETURN(1);
}
+XS(XS_Devel__PPPort_dAXMARK); /* prototype */
+XS(XS_Devel__PPPort_dAXMARK)
+{
+ dSP;
+ dAXMARK;
+ dITEMS;
+ IV iv;
+ SP -= items;
+ iv = SvIV(ST(0)) - 1;
+ PUSHs(sv_2mortal(newSViv(iv)));
+ XSRETURN(1);
+}
+
/* ---- from parts/inc/MY_CXT ---- */
#define MY_CXT_KEY "Devel::PPPort::_guts" XS_VERSION
va_end(args);
}
+/* ---- from parts/inc/variables ---- */
+U32 get_PL_signals_1(void)
+{
+ return PL_signals;
+}
+
+extern U32 get_PL_signals_2(void);
+extern U32 get_PL_signals_3(void);
+
/* =========== END XSMISC =================================================== */
MODULE = Devel::PPPort PACKAGE = Devel::PPPort
BOOT:
/* ---- from parts/inc/misc ---- */
newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file);
+ newXS("Devel::PPPort::dAXMARK", XS_Devel__PPPort_dAXMARK, file);
/* ---- from parts/inc/MY_CXT ---- */
{
sv_usepvn_mg(sv, copy, len);
##----------------------------------------------------------------------
+## XSUBs from parts/inc/memory
+##----------------------------------------------------------------------
+
+int
+checkmem()
+ PREINIT:
+ char *p;
+
+ CODE:
+ RETVAL = 0;
+ Newx(p, 6, char);
+ CopyD("Hello", p, 6, char);
+ if (memEQ(p, "Hello", 6))
+ RETVAL++;
+ ZeroD(p, 6, char);
+ if (memEQ(p, "\0\0\0\0\0\0", 6))
+ RETVAL++;
+ Poison(p, 6, char);
+ if (memNE(p, "\0\0\0\0\0\0", 6))
+ RETVAL++;
+ Safefree(p);
+
+ Newxz(p, 6, char);
+ if (memEQ(p, "\0\0\0\0\0\0", 6))
+ RETVAL++;
+ Safefree(p);
+
+ Newxc(p, 3, short, char);
+ Safefree(p);
+
+ OUTPUT:
+ RETVAL
+
+##----------------------------------------------------------------------
## XSUBs from parts/inc/misc
##----------------------------------------------------------------------
XPUSHs(newSVpvn(NULL, 0));
XSRETURN(5);
+void
+xsreturn(two)
+ int two
+ PPCODE:
+ XPUSHs(newSVpvn("test1", 5));
+ if (two)
+ XPUSHs(newSVpvn("test2", 5));
+ if (two)
+ XSRETURN(2);
+ else
+ XSRETURN(1);
+
SV *
PL_sv_undef()
CODE:
OUTPUT:
RETVAL
+void
+prepush()
+ CODE:
+ {
+ dXSTARG;
+ XSprePUSH;
+ PUSHi(42);
+ XSRETURN(1);
+ }
+
##----------------------------------------------------------------------
## XSUBs from parts/inc/mPUSH
##----------------------------------------------------------------------
RETVAL
##----------------------------------------------------------------------
+## XSUBs from parts/inc/Sv_set
+##----------------------------------------------------------------------
+
+IV
+TestSvUV_set(sv, val)
+ SV *sv
+ UV val
+ CODE:
+ SvUV_set(sv, val);
+ RETVAL = SvUVX(sv) == val ? 42 : -1;
+ OUTPUT:
+ RETVAL
+
+IV
+TestSvPVX_const(sv)
+ SV *sv
+ CODE:
+ RETVAL = strEQ(SvPVX_const(sv), "mhx") ? 43 : -1;
+ OUTPUT:
+ RETVAL
+
+IV
+TestSvPVX_mutable(sv)
+ SV *sv
+ CODE:
+ RETVAL = strEQ(SvPVX_mutable(sv), "mhx") ? 44 : -1;
+ OUTPUT:
+ RETVAL
+
+##----------------------------------------------------------------------
## XSUBs from parts/inc/sv_xpvf
##----------------------------------------------------------------------
const char *str;
CODE:
str = SvPVbyte(sv, len);
- RETVAL = strEQ(str, "mhx") ? len : -1;
+ RETVAL = strEQ(str, "mhx") ? (IV) len : (IV) -1;
OUTPUT:
RETVAL
TARG = sv_newmortal();
XPUSHu(43);
XSRETURN(1);
+
+##----------------------------------------------------------------------
+## XSUBs from parts/inc/variables
+##----------------------------------------------------------------------
+
+int
+compare_PL_signals()
+ CODE:
+ {
+ U32 ref = get_PL_signals_1();
+ RETVAL = ref == get_PL_signals_2() && ref == get_PL_signals_3();
+ }
+ OUTPUT:
+ RETVAL