1################################################################################ 2## 3## $Revision: 1.2 $ 4## $Author: millert $ 5## $Date: 2006/03/28 19:23:02 $ 6## 7################################################################################ 8## 9## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz. 10## Version 2.x, Copyright (C) 2001, Paul Marquess. 11## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. 12## 13## This program is free software; you can redistribute it and/or 14## modify it under the same terms as Perl itself. 15## 16################################################################################ 17 18=provides 19 20__UNDEFINED__ 21 22=implementation 23 24__UNDEFINED__ PUSHmortal PUSHs(sv_newmortal()) 25__UNDEFINED__ mPUSHp(p,l) sv_setpvn_mg(PUSHmortal, (p), (l)) 26__UNDEFINED__ mPUSHn(n) sv_setnv_mg(PUSHmortal, (NV)(n)) 27__UNDEFINED__ mPUSHi(i) sv_setiv_mg(PUSHmortal, (IV)(i)) 28__UNDEFINED__ mPUSHu(u) sv_setuv_mg(PUSHmortal, (UV)(u)) 29 30__UNDEFINED__ XPUSHmortal XPUSHs(sv_newmortal()) 31__UNDEFINED__ mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn_mg(PUSHmortal, (p), (l)); } STMT_END 32__UNDEFINED__ mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv_mg(PUSHmortal, (NV)(n)); } STMT_END 33__UNDEFINED__ mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv_mg(PUSHmortal, (IV)(i)); } STMT_END 34__UNDEFINED__ mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv_mg(PUSHmortal, (UV)(u)); } STMT_END 35 36=xsubs 37 38void 39mPUSHp() 40 PPCODE: 41 EXTEND(SP, 3); 42 mPUSHp("one", 3); 43 mPUSHp("two", 3); 44 mPUSHp("three", 5); 45 XSRETURN(3); 46 47void 48mPUSHn() 49 PPCODE: 50 EXTEND(SP, 3); 51 mPUSHn(0.5); 52 mPUSHn(-0.25); 53 mPUSHn(0.125); 54 XSRETURN(3); 55 56void 57mPUSHi() 58 PPCODE: 59 EXTEND(SP, 3); 60 mPUSHi(-1); 61 mPUSHi(2); 62 mPUSHi(-3); 63 XSRETURN(3); 64 65void 66mPUSHu() 67 PPCODE: 68 EXTEND(SP, 3); 69 mPUSHu(1); 70 mPUSHu(2); 71 mPUSHu(3); 72 XSRETURN(3); 73 74void 75mXPUSHp() 76 PPCODE: 77 mXPUSHp("one", 3); 78 mXPUSHp("two", 3); 79 mXPUSHp("three", 5); 80 XSRETURN(3); 81 82void 83mXPUSHn() 84 PPCODE: 85 mXPUSHn(0.5); 86 mXPUSHn(-0.25); 87 mXPUSHn(0.125); 88 XSRETURN(3); 89 90void 91mXPUSHi() 92 PPCODE: 93 mXPUSHi(-1); 94 mXPUSHi(2); 95 mXPUSHi(-3); 96 XSRETURN(3); 97 98void 99mXPUSHu() 100 PPCODE: 101 mXPUSHu(1); 102 mXPUSHu(2); 103 mXPUSHu(3); 104 XSRETURN(3); 105 106=tests plan => 8 107 108ok(join(':', &Devel::PPPort::mPUSHp()), "one:two:three"); 109ok(join(':', &Devel::PPPort::mPUSHn()), "0.5:-0.25:0.125"); 110ok(join(':', &Devel::PPPort::mPUSHi()), "-1:2:-3"); 111ok(join(':', &Devel::PPPort::mPUSHu()), "1:2:3"); 112 113ok(join(':', &Devel::PPPort::mXPUSHp()), "one:two:three"); 114ok(join(':', &Devel::PPPort::mXPUSHn()), "0.5:-0.25:0.125"); 115ok(join(':', &Devel::PPPort::mXPUSHi()), "-1:2:-3"); 116ok(join(':', &Devel::PPPort::mXPUSHu()), "1:2:3"); 117 118