File Coverage

blib/lib/Devel/PPPort.pm
Criterion Covered Total %
statement 25 25 100.0
branch 3 4 75.0
condition 3 4 75.0
subroutine 5 5 100.0
pod 2 2 100.0
total 38 40 95.0


line stmt bran cond sub pod time code
1             ################################################################################
2             #
3             # !!!!! Do NOT edit this file directly! -- Edit PPPort_pm.PL instead. !!!!!
4             #
5             # This file was automatically generated from the definition files in the
6             # parts/inc/ subdirectory by PPPort_pm.PL. To learn more about how all this
7             # works, please read the F file that came with this distribution.
8             #
9             ################################################################################
10             #
11             # Perl/Pollution/Portability
12             #
13             ################################################################################
14             #
15             # Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
16             # Copyright (C) 2018, The perl5 porters
17             # Version 2.x, Copyright (C) 2001, Paul Marquess.
18             # Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
19             #
20             # This program is free software; you can redistribute it and/or
21             # modify it under the same terms as Perl itself.
22             #
23             ################################################################################
24              
25             =head1 NAME
26              
27             Devel::PPPort - Perl/Pollution/Portability
28              
29             =head1 SYNOPSIS
30              
31             Devel::PPPort::WriteFile(); # defaults to ./ppport.h
32             Devel::PPPort::WriteFile('someheader.h');
33              
34             # Same as above but retrieve contents rather than write file
35             my $contents = Devel::PPPort::GetFileContents();
36             my $contents = Devel::PPPort::GetFileContents('someheader.h');
37              
38             =head1 Start using Devel::PPPort for XS projects
39              
40             $ cpan Devel::PPPort
41             $ perl -MDevel::PPPort -e'Devel::PPPort::WriteFile'
42             $ perl ppport.h --compat-version=5.6.1 --patch=diff.patch *.xs
43             $ patch -p0 < diff.patch
44             $ echo ppport.h >>MANIFEST
45              
46             =head1 DESCRIPTION
47              
48             Perl's API has changed over time, gaining new features, new functions,
49             increasing its flexibility, and reducing the impact on the C namespace
50             environment (reduced pollution). The header file written by this module,
51             typically F, attempts to bring some of the newer Perl API
52             features to older versions of Perl, so that you can worry less about
53             keeping track of old releases, but users can still reap the benefit.
54              
55             C contains two functions, C and C.
56             C's only purpose is to write the F C header file.
57             This file contains a series of macros and, if explicitly requested, functions
58             that allow XS modules to be built using older versions of Perl. Currently,
59             Perl versions from 5.003 to 5.30 are supported.
60              
61             C can be used to retrieve the file contents rather than
62             writing it out.
63              
64             This module is used by C to write the file F.
65              
66             =head2 Why use ppport.h?
67              
68             You should use F in modern code so that your code will work
69             with the widest range of Perl interpreters possible, without significant
70             additional work.
71              
72             You should attempt older code to fully use F, because the
73             reduced pollution of newer Perl versions is an important thing. It's so
74             important that the old polluting ways of original Perl modules will not be
75             supported very far into the future, and your module will almost certainly
76             break! By adapting to it now, you'll gain compatibility and a sense of
77             having done the electronic ecology some good.
78              
79             =head2 How to use ppport.h
80              
81             Don't direct the users of your module to download C.
82             They are most probably no XS writers. Also, don't make F
83             optional. Rather, just take the most recent copy of F that
84             you can find (e.g. by generating it with the latest C
85             release from CPAN), copy it into your project, adjust your project to
86             use it, and distribute the header along with your module.
87              
88             =head2 Running ppport.h
89              
90             But F is more than just a C header. It's also a Perl script
91             that can check your source code. It will suggest hints and portability
92             notes, and can even make suggestions on how to change your code. You
93             can run it like any other Perl program:
94              
95             perl ppport.h [options] [files]
96              
97             It also has embedded documentation, so you can use
98              
99             perldoc ppport.h
100              
101             to find out more about how to use it.
102              
103             =head1 FUNCTIONS
104              
105             =head2 WriteFile
106              
107             C takes one optional argument. When called with one
108             argument, it expects to be passed a filename. When called with
109             no arguments, it defaults to the filename F.
110              
111             The function returns a true value if the file was written successfully.
112             Otherwise it returns a false value.
113              
114             =head2 GetFileContents
115              
116             C behaves like C above, but returns the contents
117             of the would-be file rather than writing it out.
118              
119             =head1 COMPATIBILITY
120              
121             F supports Perl versions from 5.003 to 5.30
122             in threaded and non-threaded configurations.
123              
124             =head2 Provided Perl compatibility API
125              
126             The header file written by this module, typically F, provides
127             access to the following elements of the Perl API that is not available
128             in older Perl releases:
129              
130             __ASSERT_
131             _aMY_CXT
132             _pMY_CXT
133             aMY_CXT
134             aMY_CXT_
135             aTHX
136             aTHX_
137             aTHXR
138             aTHXR_
139             av_tindex
140             av_top_index
141             AvFILLp
142             boolSV
143             C_ARRAY_END
144             C_ARRAY_LENGTH
145             call_argv
146             call_method
147             call_pv
148             call_sv
149             caller_cx
150             cBOOL
151             ckWARN
152             CopFILE
153             CopFILE_set
154             CopFILEAV
155             CopFILEGV
156             CopFILEGV_set
157             CopFILESV
158             CopSTASH
159             CopSTASH_eq
160             CopSTASH_set
161             CopSTASHPV
162             CopSTASHPV_set
163             CopyD
164             CPERLscope
165             croak_memory_wrap
166             croak_no_modify
167             croak_nocontext
168             croak_sv
169             croak_xs_usage
170             dAX
171             dAXMARK
172             DEFSV
173             DEFSV_set
174             die_sv
175             dITEMS
176             dMY_CXT
177             dMY_CXT_SV
178             dNOOP
179             dTHR
180             dTHX
181             dTHXa
182             dTHXoa
183             dTHXR
184             dUNDERBAR
185             dVAR
186             dXCPT
187             dXSTARG
188             END_EXTERN_C
189             ERRSV
190             eval_pv
191             eval_sv
192             EXTERN_C
193             G_METHOD
194             get_av
195             get_cv
196             get_cvs
197             get_hv
198             get_sv
199             grok_bin
200             grok_hex
201             grok_number
202             GROK_NUMERIC_RADIX
203             grok_numeric_radix
204             grok_oct
205             gv_fetchpvn_flags
206             gv_fetchpvs
207             gv_stashpvn
208             gv_stashpvs
209             HEf_SVKEY
210             HeUTF8
211             hv_fetchs
212             hv_stores
213             HvNAME_get
214             HvNAMELEN_get
215             IN_LOCALE
216             IN_LOCALE_COMPILETIME
217             IN_LOCALE_RUNTIME
218             IN_PERL_COMPILETIME
219             INT2PTR
220             IS_NUMBER_GREATER_THAN_UV_MAX
221             IS_NUMBER_IN_UV
222             IS_NUMBER_INFINITY
223             IS_NUMBER_NAN
224             IS_NUMBER_NEG
225             IS_NUMBER_NOT_INT
226             isALNUM
227             isALNUM_A
228             isALNUMC
229             isALNUMC_A
230             isALPHA
231             isALPHA_A
232             isALPHANUMERIC
233             isALPHANUMERIC_A
234             isASCII
235             isASCII_A
236             isBLANK
237             isBLANK_A
238             isCNTRL
239             isCNTRL_A
240             isDIGIT
241             isDIGIT_A
242             isGRAPH
243             isGRAPH_A
244             isIDCONT
245             isIDCONT_A
246             isIDFIRST
247             isIDFIRST_A
248             isLOWER
249             isLOWER_A
250             isOCTAL
251             isOCTAL_A
252             isPRINT
253             isPRINT_A
254             isPSXSPC
255             isPSXSPC_A
256             isPUNCT
257             isPUNCT_A
258             isSPACE
259             isSPACE_A
260             isUPPER
261             isUPPER_A
262             isWORDCHAR
263             isWORDCHAR_A
264             isXDIGIT
265             isXDIGIT_A
266             IVdf
267             IVSIZE
268             IVTYPE
269             LIKELY
270             load_module
271             memEQ
272             memEQs
273             memNE
274             memNEs
275             mess
276             mess_nocontext
277             mess_sv
278             mg_findext
279             MoveD
280             mPUSHi
281             mPUSHn
282             mPUSHp
283             mPUSHs
284             mPUSHu
285             MUTABLE_PTR
286             MUTABLE_SV
287             mXPUSHi
288             mXPUSHn
289             mXPUSHp
290             mXPUSHs
291             mXPUSHu
292             MY_CXT
293             MY_CXT_CLONE
294             MY_CXT_INIT
295             my_snprintf
296             my_sprintf
297             my_strlcat
298             my_strlcpy
299             my_strnlen
300             newCONSTSUB
301             newRV_inc
302             newRV_noinc
303             newSV_type
304             newSVpvn
305             newSVpvn_flags
306             newSVpvn_share
307             newSVpvn_utf8
308             newSVpvs
309             newSVpvs_flags
310             newSVpvs_share
311             newSVuv
312             Newx
313             Newxc
314             Newxz
315             NOOP
316             NUM2PTR
317             NVef
318             NVff
319             NVgf
320             NVTYPE
321             OpHAS_SIBLING
322             OpLASTSIB_set
323             OpMAYBESIB_set
324             OpMORESIB_set
325             OpSIBLING
326             packWARN
327             PERL_ABS
328             PERL_ARGS_ASSERT_CROAK_XS_USAGE
329             PERL_BCDVERSION
330             Perl_croak_no_modify
331             PERL_GCC_BRACE_GROUPS_FORBIDDEN
332             PERL_HASH
333             PERL_INT_MAX
334             PERL_INT_MIN
335             PERL_LONG_MAX
336             PERL_LONG_MIN
337             PERL_MAGIC_arylen
338             PERL_MAGIC_backref
339             PERL_MAGIC_bm
340             PERL_MAGIC_collxfrm
341             PERL_MAGIC_dbfile
342             PERL_MAGIC_dbline
343             PERL_MAGIC_defelem
344             PERL_MAGIC_env
345             PERL_MAGIC_envelem
346             PERL_MAGIC_ext
347             PERL_MAGIC_fm
348             PERL_MAGIC_glob
349             PERL_MAGIC_isa
350             PERL_MAGIC_isaelem
351             PERL_MAGIC_mutex
352             PERL_MAGIC_nkeys
353             PERL_MAGIC_overload
354             PERL_MAGIC_overload_elem
355             PERL_MAGIC_overload_table
356             PERL_MAGIC_pos
357             PERL_MAGIC_qr
358             PERL_MAGIC_regdata
359             PERL_MAGIC_regdatum
360             PERL_MAGIC_regex_global
361             PERL_MAGIC_shared
362             PERL_MAGIC_shared_scalar
363             PERL_MAGIC_sig
364             PERL_MAGIC_sigelem
365             PERL_MAGIC_substr
366             PERL_MAGIC_sv
367             PERL_MAGIC_taint
368             PERL_MAGIC_tied
369             PERL_MAGIC_tiedelem
370             PERL_MAGIC_tiedscalar
371             PERL_MAGIC_utf8
372             PERL_MAGIC_uvar
373             PERL_MAGIC_uvar_elem
374             PERL_MAGIC_vec
375             PERL_MAGIC_vstring
376             PERL_PV_ESCAPE_ALL
377             PERL_PV_ESCAPE_FIRSTCHAR
378             PERL_PV_ESCAPE_NOBACKSLASH
379             PERL_PV_ESCAPE_NOCLEAR
380             PERL_PV_ESCAPE_QUOTE
381             PERL_PV_ESCAPE_RE
382             PERL_PV_ESCAPE_UNI
383             PERL_PV_ESCAPE_UNI_DETECT
384             PERL_PV_PRETTY_DUMP
385             PERL_PV_PRETTY_ELLIPSES
386             PERL_PV_PRETTY_LTGT
387             PERL_PV_PRETTY_NOCLEAR
388             PERL_PV_PRETTY_QUOTE
389             PERL_PV_PRETTY_REGPROP
390             PERL_QUAD_MAX
391             PERL_QUAD_MIN
392             PERL_REVISION
393             PERL_SCAN_ALLOW_UNDERSCORES
394             PERL_SCAN_DISALLOW_PREFIX
395             PERL_SCAN_GREATER_THAN_UV_MAX
396             PERL_SCAN_SILENT_ILLDIGIT
397             PERL_SHORT_MAX
398             PERL_SHORT_MIN
399             PERL_SIGNALS_UNSAFE_FLAG
400             PERL_SUBVERSION
401             PERL_UCHAR_MAX
402             PERL_UCHAR_MIN
403             PERL_UINT_MAX
404             PERL_UINT_MIN
405             PERL_ULONG_MAX
406             PERL_ULONG_MIN
407             PERL_UNUSED_ARG
408             PERL_UNUSED_CONTEXT
409             PERL_UNUSED_DECL
410             PERL_UNUSED_RESULT
411             PERL_UNUSED_VAR
412             PERL_UQUAD_MAX
413             PERL_UQUAD_MIN
414             PERL_USE_GCC_BRACE_GROUPS
415             PERL_USHORT_MAX
416             PERL_USHORT_MIN
417             PERL_VERSION
418             Perl_warner
419             Perl_warner_nocontext
420             PERLIO_FUNCS_CAST
421             PERLIO_FUNCS_DECL
422             PL_bufend
423             PL_bufptr
424             PL_compiling
425             PL_copline
426             PL_curcop
427             PL_curstash
428             PL_DBsignal
429             PL_DBsingle
430             PL_DBsub
431             PL_DBtrace
432             PL_debstash
433             PL_defgv
434             PL_diehook
435             PL_dirty
436             PL_dowarn
437             PL_errgv
438             PL_error_count
439             PL_expect
440             PL_hexdigit
441             PL_hints
442             PL_in_my
443             PL_in_my_stash
444             PL_laststatval
445             PL_lex_state
446             PL_lex_stuff
447             PL_linestr
448             PL_na
449             PL_no_modify
450             PL_parser
451             PL_perl_destruct_level
452             PL_perldb
453             PL_ppaddr
454             PL_rsfp
455             PL_rsfp_filters
456             PL_signals
457             PL_stack_base
458             PL_stack_sp
459             PL_statcache
460             PL_stdingv
461             PL_Sv
462             PL_sv_arenaroot
463             PL_sv_no
464             PL_sv_undef
465             PL_sv_yes
466             PL_tainted
467             PL_tainting
468             PL_tokenbuf
469             pMY_CXT
470             pMY_CXT_
471             Poison
472             PoisonFree
473             PoisonNew
474             PoisonWith
475             pTHX
476             pTHX_
477             PTR2IV
478             PTR2nat
479             PTR2NV
480             PTR2ul
481             PTR2UV
482             PTRV
483             PUSHmortal
484             PUSHu
485             pv_display
486             pv_escape
487             pv_pretty
488             SAVE_DEFSV
489             START_EXTERN_C
490             START_MY_CXT
491             STMT_END
492             STMT_START
493             STR_WITH_LEN
494             sv_2pv_flags
495             sv_2pv_nolen
496             sv_2pvbyte
497             sv_2pvbyte_nolen
498             sv_2uv
499             sv_catpv_mg
500             sv_catpvf_mg
501             sv_catpvf_mg_nocontext
502             sv_catpvn_mg
503             sv_catpvn_nomg
504             sv_catpvs
505             sv_catsv_mg
506             sv_catsv_nomg
507             SV_CONST_RETURN
508             SV_COW_DROP_PV
509             SV_COW_SHARED_HASH_KEYS
510             SV_GMAGIC
511             SV_HAS_TRAILING_NUL
512             SV_IMMEDIATE_UNREF
513             sv_magic_portable
514             SV_MUTABLE_RETURN
515             SV_NOSTEAL
516             sv_pvn_force_flags
517             sv_pvn_nomg
518             sv_setiv_mg
519             sv_setnv_mg
520             sv_setpv_mg
521             sv_setpvf_mg
522             sv_setpvf_mg_nocontext
523             sv_setpvn_mg
524             sv_setpvs
525             sv_setsv_mg
526             sv_setsv_nomg
527             sv_setuv
528             sv_setuv_mg
529             SV_SMAGIC
530             sv_unmagicext
531             sv_usepvn_mg
532             SV_UTF8_NO_ENCODING
533             sv_uv
534             sv_vcatpvf
535             sv_vcatpvf_mg
536             sv_vsetpvf
537             sv_vsetpvf_mg
538             SVf
539             SVf_UTF8
540             SVfARG
541             SvGETMAGIC
542             SvIV_nomg
543             SvMAGIC_set
544             SvPV_const
545             SvPV_flags
546             SvPV_flags_const
547             SvPV_flags_const_nolen
548             SvPV_flags_mutable
549             SvPV_force
550             SvPV_force_flags
551             SvPV_force_flags_mutable
552             SvPV_force_flags_nolen
553             SvPV_force_mutable
554             SvPV_force_nolen
555             SvPV_force_nomg
556             SvPV_force_nomg_nolen
557             SvPV_mutable
558             SvPV_nolen
559             SvPV_nolen_const
560             SvPV_nomg
561             SvPV_nomg_const
562             SvPV_nomg_const_nolen
563             SvPV_nomg_nolen
564             SvPV_renew
565             SvPVbyte
566             SvPVX_const
567             SvPVX_mutable
568             SvREFCNT_inc
569             SvREFCNT_inc_NN
570             SvREFCNT_inc_simple
571             SvREFCNT_inc_simple_NN
572             SvREFCNT_inc_simple_void
573             SvREFCNT_inc_simple_void_NN
574             SvREFCNT_inc_void
575             SvREFCNT_inc_void_NN
576             SvRV_set
577             SvRX
578             SvRXOK
579             SvSHARED_HASH
580             SvSTASH_set
581             SvUOK
582             SvUV
583             SvUV_nomg
584             SvUV_set
585             SvUVX
586             SvUVx
587             SvUVXx
588             SvVSTRING_mg
589             UNDERBAR
590             UNICODE_REPLACEMENT
591             UNLIKELY
592             UTF8_MAXBYTES
593             UTF8_SAFE_SKIP
594             utf8_to_uvchr
595             utf8_to_uvchr_buf
596             UVof
597             UVSIZE
598             UVTYPE
599             UVuf
600             UVXf
601             UVxf
602             vload_module
603             vmess
604             vnewSVpvf
605             WARN_ALL
606             WARN_AMBIGUOUS
607             WARN_ASSERTIONS
608             WARN_BAREWORD
609             WARN_CLOSED
610             WARN_CLOSURE
611             WARN_DEBUGGING
612             WARN_DEPRECATED
613             WARN_DIGIT
614             WARN_EXEC
615             WARN_EXITING
616             WARN_GLOB
617             WARN_INPLACE
618             WARN_INTERNAL
619             WARN_IO
620             WARN_LAYER
621             WARN_MALLOC
622             WARN_MISC
623             WARN_NEWLINE
624             warn_nocontext
625             WARN_NUMERIC
626             WARN_ONCE
627             WARN_OVERFLOW
628             WARN_PACK
629             WARN_PARENTHESIS
630             WARN_PIPE
631             WARN_PORTABLE
632             WARN_PRECEDENCE
633             WARN_PRINTF
634             WARN_PROTOTYPE
635             WARN_QW
636             WARN_RECURSION
637             WARN_REDEFINE
638             WARN_REGEXP
639             WARN_RESERVED
640             WARN_SEMICOLON
641             WARN_SEVERE
642             WARN_SIGNAL
643             WARN_SUBSTR
644             warn_sv
645             WARN_SYNTAX
646             WARN_TAINT
647             WARN_THREADS
648             WARN_UNINITIALIZED
649             WARN_UNOPENED
650             WARN_UNPACK
651             WARN_UNTIE
652             WARN_UTF8
653             WARN_VOID
654             warner
655             WIDEST_UTYPE
656             XCPT_CATCH
657             XCPT_RETHROW
658             XCPT_TRY_END
659             XCPT_TRY_START
660             XPUSHmortal
661             XPUSHu
662             XSprePUSH
663             XSPROTO
664             XSRETURN
665             XSRETURN_UV
666             XST_mUV
667             ZeroD
668              
669             =head2 Perl API not supported by ppport.h
670              
671             There is still a big part of the API not supported by F.
672             Either because it doesn't make sense to back-port that part of the API,
673             or simply because it hasn't been implemented yet. Patches welcome!
674              
675             Here's a list of the currently unsupported API, and also the version of
676             Perl below which it is unsupported:
677              
678             =over 4
679              
680             =item perl 5.24.0
681              
682             BhkDISABLE
683             BhkENABLE
684             BhkENTRY_set
685             MULTICALL
686             PERL_SYS_TERM
687             POP_MULTICALL
688             PUSH_MULTICALL
689             PadARRAY
690             PadMAX
691             PadlistARRAY
692             PadlistMAX
693             PadlistNAMES
694             PadlistNAMESARRAY
695             PadlistNAMESMAX
696             PadnameLEN
697             PadnamePV
698             PadnameREFCNT
699             PadnameREFCNT_dec
700             PadnameSV
701             PadnamelistARRAY
702             PadnamelistMAX
703             PadnamelistREFCNT
704             PadnamelistREFCNT_dec
705             RESTORE_LC_NUMERIC
706             STORE_LC_NUMERIC_FORCE_TO_UNDERLYING
707             STORE_LC_NUMERIC_SET_TO_NEEDED
708             XS_APIVERSION_BOOTCHECK
709             XS_EXTERNAL
710             XS_INTERNAL
711             XS_VERSION_BOOTCHECK
712             XopDISABLE
713             XopENABLE
714             XopENTRY
715             XopENTRYCUSTOM
716             XopENTRY_set
717             cophh_new_empty
718             my_lstat
719             my_stat
720             reentrant_free
721             reentrant_init
722             reentrant_retry
723             reentrant_size
724             ref
725             sv_setref_pvs
726              
727             =item perl 5.23.9
728              
729             toFOLD_uvchr
730             toLOWER_uvchr
731             toTITLE_uvchr
732             toUPPER_uvchr
733              
734             =item perl 5.23.8
735              
736             clear_defarray
737              
738             =item perl 5.22.0
739              
740             UVCHR_SKIP
741              
742             =item perl 5.21.10
743              
744             DECLARATION_FOR_LC_NUMERIC_MANIPULATION
745              
746             =item perl 5.21.7
747              
748             PadnameUTF8
749             is_invariant_string
750             newUNOP_AUX
751              
752             =item perl 5.21.6
753              
754             newDEFSVOP
755             op_convert_list
756              
757             =item perl 5.21.5
758              
759             cv_name
760             newMETHOP
761             newMETHOP_named
762              
763             =item perl 5.21.4
764              
765             cv_set_call_checker_flags
766             grok_infnan
767             isinfnan
768             sync_locale
769              
770             =item perl 5.21.2
771              
772             grok_number_flags
773             op_sibling_splice
774              
775             =item perl 5.21.1
776              
777             isUTF8_CHAR
778             markstack_grow
779              
780             =item perl 5.19.10
781              
782             OP_TYPE_IS_OR_WAS
783              
784             =item perl 5.19.7
785              
786             OP_TYPE_IS
787              
788             =item perl 5.19.4
789              
790             is_safe_syscall
791             uvoffuni_to_utf8_flags
792              
793             =item perl 5.19.3
794              
795             sv_pos_b2u_flags
796              
797             =item perl 5.19.2
798              
799             SVt_INVLIST
800              
801             =item perl 5.19.1
802              
803             re_intuit_start
804             toFOLD
805             toFOLD_utf8
806             toLOWER_L1
807             toTITLE
808              
809             =item perl 5.18.0
810              
811             hv_rand_set
812              
813             =item perl 5.17.9
814              
815             av_tindex
816             av_top_index
817              
818             =item perl 5.17.8
819              
820             isALPHANUMERIC
821             isIDCONT
822              
823             =item perl 5.17.7
824              
825             SvREFCNT_dec_NN
826              
827             =item perl 5.17.6
828              
829             READ_XDIGIT
830              
831             =item perl 5.17.4
832              
833             PL_comppad_name
834             PadlistREFCNT
835             newMYSUB
836             newSVpadname
837              
838             =item perl 5.17.2
839              
840             sv_copypv_flags
841             sv_copypv_nomg
842             sv_vcatpvfn_flags
843              
844             =item perl 5.15.9
845              
846             utf8_to_uvchr_buf
847              
848             =item perl 5.15.8
849              
850             is_utf8_char_buf
851             wrap_op_checker
852              
853             =item perl 5.15.7
854              
855             toLOWER_utf8
856             toTITLE_utf8
857             toUPPER_utf8
858             to_utf8_fold
859             to_utf8_lower
860             to_utf8_title
861             to_utf8_upper
862              
863             =item perl 5.15.6
864              
865             newCONSTSUB_flags
866              
867             =item perl 5.15.4
868              
869             HvENAMELEN
870             HvENAMEUTF8
871             HvNAMELEN
872             HvNAMEUTF8
873             gv_autoload_pv
874             gv_autoload_pvn
875             gv_autoload_sv
876             gv_fetchmeth_pv
877             gv_fetchmeth_pv_autoload
878             gv_fetchmeth_pvn
879             gv_fetchmeth_pvn_autoload
880             gv_fetchmeth_sv
881             gv_fetchmeth_sv_autoload
882             gv_init_pv
883             gv_init_sv
884             newGVgen_flags
885             sv_derived_from_pv
886             sv_derived_from_pvn
887             sv_derived_from_sv
888             sv_does_pv
889             sv_does_pvn
890             sv_does_sv
891             sv_ref
892             whichsig_pv
893             whichsig_pvn
894             whichsig_sv
895              
896             =item perl 5.15.1
897              
898             pad_add_name_pv
899             pad_add_name_pvn
900             pad_add_name_pvs
901             pad_add_name_sv
902             pad_findmy_pv
903             pad_findmy_pvn
904             pad_findmy_pvs
905             pad_findmy_sv
906              
907             =item perl 5.13.8
908              
909             foldEQ_latin1
910              
911             =item perl 5.13.7
912              
913             HvENAME
914             OP_CLASS
915             XopFLAGS
916             amagic_deref_call
917             bytes_cmp_utf8
918             cop_hints_2hv
919             cop_hints_fetch_pv
920             cop_hints_fetch_pvn
921             cop_hints_fetch_pvs
922             cop_hints_fetch_sv
923             cophh_2hv
924             cophh_copy
925             cophh_delete_pv
926             cophh_delete_pvn
927             cophh_delete_pvs
928             cophh_delete_sv
929             cophh_fetch_pv
930             cophh_fetch_pvn
931             cophh_fetch_pvs
932             cophh_fetch_sv
933             cophh_free
934             cophh_store_pv
935             cophh_store_pvn
936             cophh_store_pvs
937             cophh_store_sv
938             custom_op_register
939             custom_op_xop
940             newFOROP
941             newWHILEOP
942              
943             =item perl 5.13.6
944              
945             LINKLIST
946             SvTRUE_nomg
947             ck_entersub_args_list
948             ck_entersub_args_proto
949             ck_entersub_args_proto_or_list
950             cv_get_call_checker
951             cv_set_call_checker
952             isWORDCHAR
953             mg_free_type
954             newSVpv_share
955             op_append_elem
956             op_append_list
957             op_contextualize
958             op_linklist
959             op_prepend_elem
960             rv2cv_op_cv
961             savesharedpvs
962             savesharedsvpv
963             sv_2bool_flags
964             sv_catpv_flags
965             sv_catpv_nomg
966             sv_catpvs_flags
967             sv_catpvs_mg
968             sv_catpvs_nomg
969             sv_cmp_flags
970             sv_cmp_locale_flags
971             sv_collxfrm_flags
972             sv_eq_flags
973             sv_setpvs_mg
974              
975             =item perl 5.13.5
976              
977             PL_rpeepp
978             isOCTAL
979             lex_stuff_pvs
980              
981             =item perl 5.13.3
982              
983             blockhook_register
984              
985             =item perl 5.13.2
986              
987             SvNV_nomg
988             find_rundefsv
989             foldEQ
990             foldEQ_locale
991             foldEQ_utf8
992             hv_fill
993             sv_dec_nomg
994             sv_inc_nomg
995              
996             =item perl 5.13.1
997              
998             sv_2nv_flags
999              
1000             =item perl 5.11.5
1001              
1002             sv_pos_u2b_flags
1003              
1004             =item perl 5.11.4
1005              
1006             prescan_version
1007              
1008             =item perl 5.11.2
1009              
1010             PL_keyword_plugin
1011              
1012             =item perl 5.11.1
1013              
1014             ck_warner
1015             ck_warner_d
1016              
1017             =item perl 5.11.0
1018              
1019             Gv_AMupdate
1020             PL_opfreehook
1021             SVt_REGEXP
1022             SvOOK_offset
1023             av_iter_p
1024             gv_add_by_type
1025             is_ascii_string
1026             pregfree2
1027             save_adelete
1028             save_aelem_flags
1029             save_hdelete
1030             save_helem_flags
1031             sv_utf8_upgrade_flags_grow
1032              
1033             =item perl 5.10.1
1034              
1035             mro_get_from_name
1036             mro_get_private_data
1037             mro_register
1038             mro_set_mro
1039             mro_set_private_data
1040             save_hints
1041             save_padsv_and_mortalize
1042             save_pushi32ptr
1043             save_pushptr
1044             save_pushptrptr
1045             sv_insert_flags
1046              
1047             =item perl 5.10.0
1048              
1049             hv_common
1050             hv_common_key_len
1051             sv_destroyable
1052             sys_init
1053             sys_init3
1054             sys_term
1055              
1056             =item perl 5.9.5
1057              
1058             gv_fetchfile_flags
1059             mro_get_linear_isa
1060             mro_method_changed_in
1061             my_dirfd
1062             pregcomp
1063             ptr_table_fetch
1064             ptr_table_free
1065             ptr_table_new
1066             ptr_table_split
1067             ptr_table_store
1068             re_compile
1069             reg_named_buff_all
1070             reg_named_buff_exists
1071             reg_named_buff_fetch
1072             reg_named_buff_firstkey
1073             reg_named_buff_nextkey
1074             reg_named_buff_scalar
1075             regfree_internal
1076             savesharedpvn
1077             scan_vstring
1078             upg_version
1079              
1080             =item perl 5.9.4
1081              
1082             PerlIO_context_layers
1083             gv_name_set
1084             hv_copy_hints_hv
1085             my_vsnprintf
1086             sv_does
1087             sv_usepvn_flags
1088              
1089             =item perl 5.9.3
1090              
1091             av_arylen_p
1092             ckwarn
1093             ckwarn_d
1094             csighandler
1095             dMULTICALL
1096             doref
1097             gv_const_sv
1098             hv_eiter_p
1099             hv_eiter_set
1100             hv_name_set
1101             hv_placeholders_get
1102             hv_placeholders_set
1103             hv_riter_p
1104             hv_riter_set
1105             is_utf8_string_loclen
1106             newGIVENOP
1107             newSVhek
1108             newWHENOP
1109             pad_compname_type
1110             savepvs
1111             sortsv_flags
1112             vverify
1113              
1114             =item perl 5.9.2
1115              
1116             SvPVbyte_force
1117             op_refcnt_lock
1118             op_refcnt_unlock
1119             savesvpv
1120             vnormal
1121              
1122             =item perl 5.9.1
1123              
1124             hv_clear_placeholders
1125             hv_scalar
1126             scan_version
1127             sv_2iv_flags
1128             sv_2uv_flags
1129              
1130             =item perl 5.9.0
1131              
1132             new_version
1133             save_set_svflags
1134             vcmp
1135             vnumify
1136             vstringify
1137              
1138             =item perl 5.8.3
1139              
1140             SvIsCOW
1141             SvIsCOW_shared_hash
1142              
1143             =item perl 5.8.1
1144              
1145             CvPADLIST
1146             PL_comppad
1147             SvVOK
1148             doing_taint
1149             find_runcv
1150             is_utf8_string_loc
1151             packlist
1152             pad_add_anon
1153             pad_new
1154             save_bool
1155             savestack_grow_cnt
1156             seed
1157             sv_cat_decode
1158             sv_setpviv
1159             sv_setpviv_mg
1160             unpackstring
1161              
1162             =item perl 5.8.0
1163              
1164             HeUTF8
1165             nothreadhook
1166              
1167             =item perl 5.7.3
1168              
1169             OP_DESC
1170             OP_NAME
1171             PL_peepp
1172             PerlIO_clearerr
1173             PerlIO_close
1174             PerlIO_eof
1175             PerlIO_error
1176             PerlIO_fileno
1177             PerlIO_fill
1178             PerlIO_flush
1179             PerlIO_get_base
1180             PerlIO_get_bufsiz
1181             PerlIO_get_cnt
1182             PerlIO_get_ptr
1183             PerlIO_read
1184             PerlIO_seek
1185             PerlIO_set_cnt
1186             PerlIO_set_ptrcnt
1187             PerlIO_setlinebuf
1188             PerlIO_stderr
1189             PerlIO_stdin
1190             PerlIO_stdout
1191             PerlIO_tell
1192             PerlIO_unread
1193             PerlIO_write
1194             SvLOCK
1195             SvSHARE
1196             SvUNLOCK
1197             atfork_lock
1198             atfork_unlock
1199             custom_op_desc
1200             custom_op_name
1201             deb
1202             debstack
1203             debstackptrs
1204             gv_fetchmeth_autoload
1205             ibcmp_utf8
1206             my_fork
1207             my_socketpair
1208             pack_cat
1209             perl_destruct
1210             pv_uni_display
1211             save_shared_pvref
1212             savesharedpv
1213             sortsv
1214             sv_magicext
1215             sv_nolocking
1216             sv_nosharing
1217             sv_recode_to_utf8
1218             sv_uni_display
1219             unpack_str
1220             uvchr_to_utf8_flags
1221             uvuni_to_utf8_flags
1222             vdeb
1223              
1224             =item perl 5.7.2
1225              
1226             calloc
1227             getcwd_sv
1228             init_tm
1229             malloc
1230             mfree
1231             mini_mktime
1232             my_atof2
1233             my_strftime
1234             op_null
1235             realloc
1236             sv_catpvn_flags
1237             sv_catsv_flags
1238             sv_setsv_flags
1239             sv_utf8_upgrade_flags
1240             sv_utf8_upgrade_nomg
1241              
1242             =item perl 5.7.1
1243              
1244             POPpbytex
1245             despatch_signals
1246             do_openn
1247             gv_handler
1248             is_lvalue_sub
1249             my_popen_list
1250             save_mortalizesv
1251             scan_num
1252             sv_force_normal_flags
1253             sv_setref_uv
1254             sv_unref_flags
1255             sv_utf8_upgrade
1256             utf8_length
1257             utf8n_to_uvchr
1258             utf8n_to_uvuni
1259             uvchr_to_utf8
1260             uvuni_to_utf8
1261              
1262             =item perl 5.6.1
1263              
1264             SvGAMAGIC
1265             gv_efullname4
1266             gv_fullname4
1267             is_utf8_string
1268             save_generic_pvref
1269             utf16_to_utf8
1270             utf16_to_utf8_reversed
1271              
1272             =item perl 5.6.0
1273              
1274             DO_UTF8
1275             PERL_SYS_INIT3
1276             PL_check
1277             POPul
1278             SvIOK_UV
1279             SvIOK_notUV
1280             SvIOK_only_UV
1281             SvPOK_only_UTF8
1282             SvPVbyte_nolen
1283             SvPVbytex
1284             SvPVbytex_force
1285             SvPVutf8
1286             SvPVutf8_force
1287             SvPVutf8_nolen
1288             SvPVutf8x
1289             SvPVutf8x_force
1290             SvUOK
1291             SvUTF8
1292             SvUTF8_off
1293             SvUTF8_on
1294             UTF8SKIP
1295             av_delete
1296             av_exists
1297             call_atexit
1298             caller_cx
1299             cast_i32
1300             cast_iv
1301             cast_ulong
1302             cast_uv
1303             do_gv_dump
1304             do_gvgv_dump
1305             do_hv_dump
1306             do_magic_dump
1307             do_op_dump
1308             do_open9
1309             do_pmop_dump
1310             do_sv_dump
1311             dump_all
1312             dump_eval
1313             dump_form
1314             dump_indent
1315             dump_packsubs
1316             dump_sub
1317             dump_vindent
1318             get_context
1319             get_ppaddr
1320             gv_dump
1321             magic_dump
1322             my_atof
1323             my_fflush_all
1324             newANONATTRSUB
1325             newATTRSUB
1326             newXS
1327             newXSproto
1328             op_dump
1329             perl_parse
1330             pmop_dump
1331             re_intuit_string
1332             reginitcolors
1333             require_pv
1334             safesyscalloc
1335             safesysfree
1336             safesysmalloc
1337             safesysrealloc
1338             save_I8
1339             save_alloc
1340             save_destructor
1341             save_destructor_x
1342             save_re_context
1343             save_vptr
1344             scan_bin
1345             set_context
1346             set_numeric_local
1347             set_numeric_radix
1348             set_numeric_standard
1349             str_to_version
1350             sv_2pvutf8
1351             sv_2pvutf8_nolen
1352             sv_force_normal
1353             sv_len_utf8
1354             sv_pos_b2u
1355             sv_pos_u2b
1356             sv_pv
1357             sv_pvbyte
1358             sv_pvbyten
1359             sv_pvbyten_force
1360             sv_pvutf8
1361             sv_pvutf8n
1362             sv_pvutf8n_force
1363             sv_rvweaken
1364             sv_utf8_encode
1365             utf8_distance
1366             utf8_hop
1367             vcroak
1368             vform
1369             vmess
1370             vwarn
1371             vwarner
1372              
1373             =item perl 5.005_03
1374              
1375             POPpx
1376             get_vtbl
1377             save_generic_svref
1378              
1379             =item perl 5.005
1380              
1381             PL_curpad
1382             PL_modglobal
1383             cx_dump
1384             debop
1385             debprofdump
1386             fbm_compile
1387             fbm_instr
1388             get_op_descs
1389             get_op_names
1390             init_stacks
1391             mg_size
1392             newHVhv
1393             new_stackinfo
1394             regdump
1395             regexec_flags
1396             regnext
1397             runops_debug
1398             runops_standard
1399             save_iv
1400             save_op
1401             sv_iv
1402             sv_nv
1403             sv_peek
1404             sv_pvn
1405             sv_pvn_nomg
1406             sv_true
1407              
1408             =item perl 5.004_05
1409              
1410             CopyD
1411             MoveD
1412             do_binmode
1413             my_bcopy
1414             save_aelem
1415             save_helem
1416              
1417             =item perl 5.004
1418              
1419             GIMME_V
1420             G_VOID
1421             HePV
1422             HeSVKEY_set
1423             POPu
1424             SvSetMagicSV
1425             SvSetMagicSV_nosteal
1426             SvSetSV_nosteal
1427             SvTAINTED
1428             SvTAINTED_off
1429             SvTAINTED_on
1430             block_end
1431             block_gimme
1432             block_start
1433             call_list
1434             delimcpy
1435             form
1436             gv_autoload4
1437             gv_fetchmethod_autoload
1438             hv_delayfree_ent
1439             hv_free_ent
1440             ibcmp_locale
1441             intro_my
1442             my_failure_exit
1443             newSVpvf
1444             rsignal
1445             rsignal_state
1446             save_I16
1447             save_gp
1448             share_hek
1449             start_subparse
1450             sv_catpvf
1451             sv_catpvf_mg
1452             sv_cmp_locale
1453             sv_derived_from
1454             sv_magic_portable
1455             sv_setpvf
1456             sv_setpvf_mg
1457             sv_taint
1458             sv_tainted
1459             sv_untaint
1460             sv_vcatpvf
1461             sv_vcatpvf_mg
1462             sv_vcatpvfn
1463             sv_vsetpvf
1464             sv_vsetpvf_mg
1465             sv_vsetpvfn
1466             toLOWER_LC
1467             vnewSVpvf
1468             warner
1469              
1470             =item perl 5.003_07
1471              
1472             HeHASH
1473             HeKEY
1474             HeKLEN
1475             HeSVKEY
1476             HeSVKEY_force
1477             HeVAL
1478             cv_const_sv
1479             do_open
1480             gv_efullname3
1481             gv_fullname3
1482             hv_delete_ent
1483             hv_exists_ent
1484             hv_fetch_ent
1485             hv_iterkeysv
1486             hv_ksplit
1487             hv_store_ent
1488             my_pclose
1489             my_popen
1490             sv_gets
1491             unsharepvn
1492              
1493             =back
1494              
1495             =head1 BUGS
1496              
1497             If you find any bugs, C doesn't seem to build on your
1498             system, or any of its tests fail, please send a bug report to
1499             L.
1500              
1501             =head1 AUTHORS
1502              
1503             =over 2
1504              
1505             =item *
1506              
1507             Version 1.x of Devel::PPPort was written by Kenneth Albanowski.
1508              
1509             =item *
1510              
1511             Version 2.x was ported to the Perl core by Paul Marquess.
1512              
1513             =item *
1514              
1515             Version 3.x was ported back to CPAN by Marcus Holland-Moritz.
1516              
1517             =item *
1518              
1519             Versions >= 3.22 are maintained with support from Matthew Horsfall (alh).
1520              
1521             =back
1522              
1523             =head1 COPYRIGHT
1524              
1525             Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
1526              
1527             Copyright (C) 2018, The perl5 porters
1528              
1529             Version 2.x, Copyright (C) 2001, Paul Marquess.
1530              
1531             Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
1532              
1533             This program is free software; you can redistribute it and/or
1534             modify it under the same terms as Perl itself.
1535              
1536             =head1 SEE ALSO
1537              
1538             See L, L.
1539              
1540             =cut
1541              
1542             package Devel::PPPort;
1543              
1544 34     34   211327 use strict;
  34         278  
  34         1112  
1545 34     34   167 use vars qw($VERSION $data);
  34         65  
  34         10537  
1546              
1547             $VERSION = '3.52';
1548              
1549             sub _init_data
1550             {
1551 1     1   2 $data = do { local $/; };
  1         4  
  1         398  
1552 1         5 my $pkg = 'Devel::PPPort';
1553 1         399 $data =~ s/__PERL_VERSION__/$]/g;
1554 1         459 $data =~ s/__VERSION__/$VERSION/g;
1555 1         440 $data =~ s/__PKG__/$pkg/g;
1556 1         407 $data =~ s/^\|>//gm;
1557             }
1558              
1559             sub GetFileContents {
1560 3   100 3 1 15 my $file = shift || 'ppport.h';
1561 3 100       10 defined $data or _init_data();
1562 3         31 my $copy = $data;
1563 3         775 $copy =~ s/\bppport\.h\b/$file/g;
1564              
1565 3         548 return $copy;
1566             }
1567              
1568             sub WriteFile
1569             {
1570 1   50 1 1 1255 my $file = shift || 'ppport.h';
1571 1         4 my $data = GetFileContents($file);
1572 1 50       90 open F, ">$file" or return undef;
1573 1         391 print F $data;
1574 1         29 close F;
1575              
1576 1         13 return 1;
1577             }
1578              
1579             1;
1580              
1581             __DATA__