################################################################################ ## ## $Revision: 5 $ ## $Author: mhx $ ## $Date: 2005/01/31 08:10:52 +0100 $ ## ################################################################################ ## ## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz. ## Version 2.x, Copyright (C) 2001, Paul Marquess. ## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. ## ## This program is free software; you can redistribute it and/or ## modify it under the same terms as Perl itself. ## ################################################################################ =provides __UNDEFINED__ =implementation __UNDEFINED__ PUSHmortal PUSHs(sv_newmortal()) __UNDEFINED__ mPUSHp(p,l) sv_setpvn_mg(PUSHmortal, (p), (l)) __UNDEFINED__ mPUSHn(n) sv_setnv_mg(PUSHmortal, (NV)(n)) __UNDEFINED__ mPUSHi(i) sv_setiv_mg(PUSHmortal, (IV)(i)) __UNDEFINED__ mPUSHu(u) sv_setuv_mg(PUSHmortal, (UV)(u)) __UNDEFINED__ XPUSHmortal XPUSHs(sv_newmortal()) __UNDEFINED__ mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn_mg(PUSHmortal, (p), (l)); } STMT_END __UNDEFINED__ mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv_mg(PUSHmortal, (NV)(n)); } STMT_END __UNDEFINED__ mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv_mg(PUSHmortal, (IV)(i)); } STMT_END __UNDEFINED__ mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv_mg(PUSHmortal, (UV)(u)); } STMT_END =xsubs void mPUSHp() PPCODE: EXTEND(SP, 3); mPUSHp("one", 3); mPUSHp("two", 3); mPUSHp("three", 5); XSRETURN(3); void mPUSHn() PPCODE: EXTEND(SP, 3); mPUSHn(0.5); mPUSHn(-0.25); mPUSHn(0.125); XSRETURN(3); void mPUSHi() PPCODE: EXTEND(SP, 3); mPUSHi(-1); mPUSHi(2); mPUSHi(-3); XSRETURN(3); void mPUSHu() PPCODE: EXTEND(SP, 3); mPUSHu(1); mPUSHu(2); mPUSHu(3); XSRETURN(3); void mXPUSHp() PPCODE: mXPUSHp("one", 3); mXPUSHp("two", 3); mXPUSHp("three", 5); XSRETURN(3); void mXPUSHn() PPCODE: mXPUSHn(0.5); mXPUSHn(-0.25); mXPUSHn(0.125); XSRETURN(3); void mXPUSHi() PPCODE: mXPUSHi(-1); mXPUSHi(2); mXPUSHi(-3); XSRETURN(3); void mXPUSHu() PPCODE: mXPUSHu(1); mXPUSHu(2); mXPUSHu(3); XSRETURN(3); =tests plan => 8 ok(join(':', &Devel::PPPort::mPUSHp()), "one:two:three"); ok(join(':', &Devel::PPPort::mPUSHn()), "0.5:-0.25:0.125"); ok(join(':', &Devel::PPPort::mPUSHi()), "-1:2:-3"); ok(join(':', &Devel::PPPort::mPUSHu()), "1:2:3"); ok(join(':', &Devel::PPPort::mXPUSHp()), "one:two:three"); ok(join(':', &Devel::PPPort::mXPUSHn()), "0.5:-0.25:0.125"); ok(join(':', &Devel::PPPort::mXPUSHi()), "-1:2:-3"); ok(join(':', &Devel::PPPort::mXPUSHu()), "1:2:3");