Commit | Line | Data |
adfe19db |
1 | ################################################################################ |
2 | ## |
0d0f8426 |
3 | ## $Revision: 6 $ |
adfe19db |
4 | ## $Author: mhx $ |
0d0f8426 |
5 | ## $Date: 2006/01/14 18:08:01 +0100 $ |
adfe19db |
6 | ## |
7 | ################################################################################ |
8 | ## |
0d0f8426 |
9 | ## Version 3.x, Copyright (C) 2004-2006, Marcus Holland-Moritz. |
adfe19db |
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 | |
38 | void |
39 | mPUSHp() |
40 | PPCODE: |
41 | EXTEND(SP, 3); |
42 | mPUSHp("one", 3); |
43 | mPUSHp("two", 3); |
44 | mPUSHp("three", 5); |
45 | XSRETURN(3); |
46 | |
47 | void |
48 | mPUSHn() |
49 | PPCODE: |
50 | EXTEND(SP, 3); |
51 | mPUSHn(0.5); |
52 | mPUSHn(-0.25); |
53 | mPUSHn(0.125); |
54 | XSRETURN(3); |
55 | |
56 | void |
57 | mPUSHi() |
58 | PPCODE: |
59 | EXTEND(SP, 3); |
60 | mPUSHi(-1); |
61 | mPUSHi(2); |
62 | mPUSHi(-3); |
63 | XSRETURN(3); |
64 | |
65 | void |
66 | mPUSHu() |
67 | PPCODE: |
68 | EXTEND(SP, 3); |
69 | mPUSHu(1); |
70 | mPUSHu(2); |
71 | mPUSHu(3); |
72 | XSRETURN(3); |
73 | |
74 | void |
75 | mXPUSHp() |
76 | PPCODE: |
77 | mXPUSHp("one", 3); |
78 | mXPUSHp("two", 3); |
79 | mXPUSHp("three", 5); |
80 | XSRETURN(3); |
81 | |
82 | void |
83 | mXPUSHn() |
84 | PPCODE: |
85 | mXPUSHn(0.5); |
86 | mXPUSHn(-0.25); |
87 | mXPUSHn(0.125); |
88 | XSRETURN(3); |
89 | |
90 | void |
91 | mXPUSHi() |
92 | PPCODE: |
93 | mXPUSHi(-1); |
94 | mXPUSHi(2); |
95 | mXPUSHi(-3); |
96 | XSRETURN(3); |
97 | |
98 | void |
99 | mXPUSHu() |
100 | PPCODE: |
101 | mXPUSHu(1); |
102 | mXPUSHu(2); |
103 | mXPUSHu(3); |
104 | XSRETURN(3); |
105 | |
106 | =tests plan => 8 |
107 | |
108 | ok(join(':', &Devel::PPPort::mPUSHp()), "one:two:three"); |
109 | ok(join(':', &Devel::PPPort::mPUSHn()), "0.5:-0.25:0.125"); |
110 | ok(join(':', &Devel::PPPort::mPUSHi()), "-1:2:-3"); |
111 | ok(join(':', &Devel::PPPort::mPUSHu()), "1:2:3"); |
112 | |
113 | ok(join(':', &Devel::PPPort::mXPUSHp()), "one:two:three"); |
114 | ok(join(':', &Devel::PPPort::mXPUSHn()), "0.5:-0.25:0.125"); |
115 | ok(join(':', &Devel::PPPort::mXPUSHi()), "-1:2:-3"); |
116 | ok(join(':', &Devel::PPPort::mXPUSHu()), "1:2:3"); |
117 | |