This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Opcode.pm: wrap long verbatim pod line
[perl5.git] / ext / XS-APItest / numeric.xs
CommitLineData
ffe53d21
NC
1MODULE = XS::APItest PACKAGE = XS::APItest::numeric
2
3void
4grok_number(number)
5 SV *number
6 PREINIT:
7 STRLEN len;
8 const char *pv = SvPV(number, len);
9 UV value;
10 int result;
11 PPCODE:
12 EXTEND(SP,2);
13 result = grok_number(pv, len, &value);
14 PUSHs(sv_2mortal(newSViv(result)));
15 if (result & IS_NUMBER_IN_UV)
16 PUSHs(sv_2mortal(newSVuv(value)));
e222d7e2
TC
17
18void
19grok_number_flags(number, flags)
20 SV *number
21 U32 flags
22 PREINIT:
23 STRLEN len;
24 const char *pv = SvPV(number, len);
25 UV value;
26 int result;
27 PPCODE:
28 EXTEND(SP,2);
29 result = grok_number_flags(pv, len, &value, flags);
30 PUSHs(sv_2mortal(newSViv(result)));
31 if (result & IS_NUMBER_IN_UV)
32 PUSHs(sv_2mortal(newSVuv(value)));
dd52de80
JH
33
34void
35grok_atou(number, endsv)
36 SV *number
37 SV *endsv
38 PREINIT:
39 STRLEN len;
40 const char *pv = SvPV(number, len);
41 UV result;
42 const char* endptr;
43 PPCODE:
44 EXTEND(SP,2);
45 if (endsv == &PL_sv_undef) {
46 result = grok_atou(pv, NULL);
47 } else {
48 result = grok_atou(pv, &endptr);
49 }
50 PUSHs(sv_2mortal(newSVuv(result)));
51 if (endsv == &PL_sv_undef) {
52 PUSHs(sv_2mortal(newSVpvn(NULL, 0)));
53 } else {
75feedba
JH
54 if (endptr) {
55 PUSHs(sv_2mortal(newSViv(endptr - pv)));
56 } else {
57 PUSHs(sv_2mortal(newSViv(0)));
58 }
dd52de80 59 }