This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
03c632d3baa2396d371354fef29e7431f1f7faea
[perl5.git] / dist / Devel-PPPort / parts / inc / format
1 ################################################################################
2 ##
3 ##  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
4 ##  Version 2.x, Copyright (C) 2001, Paul Marquess.
5 ##  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
6 ##
7 ##  This program is free software; you can redistribute it and/or
8 ##  modify it under the same terms as Perl itself.
9 ##
10 ################################################################################
11
12 =provides
13
14 /^#\s*define\s+(\w+)/
15
16 =implementation
17
18 #ifndef IVdf
19 #  if IVSIZE == LONGSIZE
20 #    define     IVdf      "ld"
21 #    define     UVuf      "lu"
22 #    define     UVof      "lo"
23 #    define     UVxf      "lx"
24 #    define     UVXf      "lX"
25 #  elif IVSIZE == INTSIZE
26 #    define   IVdf      "d"
27 #    define   UVuf      "u"
28 #    define   UVof      "o"
29 #    define   UVxf      "x"
30 #    define   UVXf      "X"
31 #  else
32 #    error "cannot define IV/UV formats"
33 #  endif
34 #endif
35
36 #ifndef NVef
37 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \
38       defined(PERL_PRIfldbl) && { VERSION != 5.6.0 }
39             /* Not very likely, but let's try anyway. */
40 #    define NVef          PERL_PRIeldbl
41 #    define NVff          PERL_PRIfldbl
42 #    define NVgf          PERL_PRIgldbl
43 #  else
44 #    define NVef          "e"
45 #    define NVff          "f"
46 #    define NVgf          "g"
47 #  endif
48 #endif
49
50 =xsubs
51
52 void
53 croak_NVgf(num)
54         NV num
55         PPCODE:
56                 Perl_croak(aTHX_ "%.20" NVgf "\n", num);
57
58 =tests plan => 1
59
60 my $num = 1.12345678901234567890;
61
62 eval { Devel::PPPort::croak_NVgf($num) };
63 ok($@ =~ /^1.1234567890/);