Upgrade to Devel::PPPort 3.00.
[p5sagit/p5-mst-13.2.git] / ext / Devel / PPPort / parts / inc / mPUSH
CommitLineData
adfe19db 1################################################################################
2##
3## $Revision: 4 $
4## $Author: mhx $
5## $Date: 2004/08/13 12:45:55 +0200 $
6##
7################################################################################
8##
9## Version 3.x, Copyright (C) 2004, 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