Rename ext/Devel/PPPort to ext/Devel-PPPort
[p5sagit/p5-mst-13.2.git] / ext / Devel-PPPort / parts / inc / mPUSH
CommitLineData
adfe19db 1################################################################################
2##
51d6c659 3## $Revision: 11 $
adfe19db 4## $Author: mhx $
51d6c659 5## $Date: 2009/01/18 14:10:54 +0100 $
adfe19db 6##
7################################################################################
8##
51d6c659 9## Version 3.x, Copyright (C) 2004-2009, 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
c1a049cb 24__UNDEFINED__ mPUSHs(s) PUSHs(sv_2mortal(s))
adfe19db 25__UNDEFINED__ PUSHmortal PUSHs(sv_newmortal())
c1a049cb 26__UNDEFINED__ mPUSHp(p,l) sv_setpvn(PUSHmortal, (p), (l))
27__UNDEFINED__ mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n))
28__UNDEFINED__ mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i))
29__UNDEFINED__ mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u))
adfe19db 30
c1a049cb 31__UNDEFINED__ mXPUSHs(s) XPUSHs(sv_2mortal(s))
adfe19db 32__UNDEFINED__ XPUSHmortal XPUSHs(sv_newmortal())
c1a049cb 33__UNDEFINED__ mXPUSHp(p,l) STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END
34__UNDEFINED__ mXPUSHn(n) STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END
35__UNDEFINED__ mXPUSHi(i) STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END
36__UNDEFINED__ mXPUSHu(u) STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END
adfe19db 37
38=xsubs
39
40void
c1a049cb 41mPUSHs()
42 PPCODE:
43 EXTEND(SP, 3);
44 mPUSHs(newSVpv("foo", 0));
45 mPUSHs(newSVpv("bar13", 3));
46 mPUSHs(newSViv(42));
47 XSRETURN(3);
48
49void
adfe19db 50mPUSHp()
51 PPCODE:
52 EXTEND(SP, 3);
53 mPUSHp("one", 3);
54 mPUSHp("two", 3);
55 mPUSHp("three", 5);
56 XSRETURN(3);
57
58void
59mPUSHn()
60 PPCODE:
61 EXTEND(SP, 3);
62 mPUSHn(0.5);
63 mPUSHn(-0.25);
64 mPUSHn(0.125);
65 XSRETURN(3);
66
67void
68mPUSHi()
69 PPCODE:
70 EXTEND(SP, 3);
71 mPUSHi(-1);
72 mPUSHi(2);
73 mPUSHi(-3);
74 XSRETURN(3);
75
76void
77mPUSHu()
78 PPCODE:
79 EXTEND(SP, 3);
80 mPUSHu(1);
81 mPUSHu(2);
82 mPUSHu(3);
83 XSRETURN(3);
84
85void
c1a049cb 86mXPUSHs()
87 PPCODE:
88 mXPUSHs(newSVpv("foo", 0));
89 mXPUSHs(newSVpv("bar13", 3));
90 mXPUSHs(newSViv(42));
91 XSRETURN(3);
92
93void
adfe19db 94mXPUSHp()
95 PPCODE:
96 mXPUSHp("one", 3);
97 mXPUSHp("two", 3);
98 mXPUSHp("three", 5);
99 XSRETURN(3);
100
101void
102mXPUSHn()
103 PPCODE:
104 mXPUSHn(0.5);
105 mXPUSHn(-0.25);
106 mXPUSHn(0.125);
107 XSRETURN(3);
108
109void
110mXPUSHi()
111 PPCODE:
112 mXPUSHi(-1);
113 mXPUSHi(2);
114 mXPUSHi(-3);
115 XSRETURN(3);
116
117void
118mXPUSHu()
119 PPCODE:
120 mXPUSHu(1);
121 mXPUSHu(2);
122 mXPUSHu(3);
123 XSRETURN(3);
124
c1a049cb 125=tests plan => 10
adfe19db 126
c1a049cb 127ok(join(':', &Devel::PPPort::mPUSHs()), "foo:bar:42");
adfe19db 128ok(join(':', &Devel::PPPort::mPUSHp()), "one:two:three");
129ok(join(':', &Devel::PPPort::mPUSHn()), "0.5:-0.25:0.125");
130ok(join(':', &Devel::PPPort::mPUSHi()), "-1:2:-3");
131ok(join(':', &Devel::PPPort::mPUSHu()), "1:2:3");
132
c1a049cb 133ok(join(':', &Devel::PPPort::mXPUSHs()), "foo:bar:42");
adfe19db 134ok(join(':', &Devel::PPPort::mXPUSHp()), "one:two:three");
135ok(join(':', &Devel::PPPort::mXPUSHn()), "0.5:-0.25:0.125");
136ok(join(':', &Devel::PPPort::mXPUSHi()), "-1:2:-3");
137ok(join(':', &Devel::PPPort::mXPUSHu()), "1:2:3");
138