libt1 support is deprecated
[imager.git] / ppport.h
1 #if 0
2 <<'SKIP';
3 #endif
4 /*
5 ----------------------------------------------------------------------
6
7     ppport.h -- Perl/Pollution/Portability Version 3.21
8
9     Automatically created by Devel::PPPort running under perl 5.020000.
10
11     Do NOT edit this file directly! -- Edit PPPort_pm.PL and the
12     includes in parts/inc/ instead.
13
14     Use 'perldoc ppport.h' to view the documentation below.
15
16 ----------------------------------------------------------------------
17
18 SKIP
19
20 =pod
21
22 =head1 NAME
23
24 ppport.h - Perl/Pollution/Portability version 3.21
25
26 =head1 SYNOPSIS
27
28   perl ppport.h [options] [source files]
29
30   Searches current directory for files if no [source files] are given
31
32   --help                      show short help
33
34   --version                   show version
35
36   --patch=file                write one patch file with changes
37   --copy=suffix               write changed copies with suffix
38   --diff=program              use diff program and options
39
40   --compat-version=version    provide compatibility with Perl version
41   --cplusplus                 accept C++ comments
42
43   --quiet                     don't output anything except fatal errors
44   --nodiag                    don't show diagnostics
45   --nohints                   don't show hints
46   --nochanges                 don't suggest changes
47   --nofilter                  don't filter input files
48
49   --strip                     strip all script and doc functionality from
50                               ppport.h
51
52   --list-provided             list provided API
53   --list-unsupported          list unsupported API
54   --api-info=name             show Perl API portability information
55
56 =head1 COMPATIBILITY
57
58 This version of F<ppport.h> is designed to support operation with Perl
59 installations back to 5.003, and has been tested up to 5.11.5.
60
61 =head1 OPTIONS
62
63 =head2 --help
64
65 Display a brief usage summary.
66
67 =head2 --version
68
69 Display the version of F<ppport.h>.
70
71 =head2 --patch=I<file>
72
73 If this option is given, a single patch file will be created if
74 any changes are suggested. This requires a working diff program
75 to be installed on your system.
76
77 =head2 --copy=I<suffix>
78
79 If this option is given, a copy of each file will be saved with
80 the given suffix that contains the suggested changes. This does
81 not require any external programs. Note that this does not
82 automagially add a dot between the original filename and the
83 suffix. If you want the dot, you have to include it in the option
84 argument.
85
86 If neither C<--patch> or C<--copy> are given, the default is to
87 simply print the diffs for each file. This requires either
88 C<Text::Diff> or a C<diff> program to be installed.
89
90 =head2 --diff=I<program>
91
92 Manually set the diff program and options to use. The default
93 is to use C<Text::Diff>, when installed, and output unified
94 context diffs.
95
96 =head2 --compat-version=I<version>
97
98 Tell F<ppport.h> to check for compatibility with the given
99 Perl version. The default is to check for compatibility with Perl
100 version 5.003. You can use this option to reduce the output
101 of F<ppport.h> if you intend to be backward compatible only
102 down to a certain Perl version.
103
104 =head2 --cplusplus
105
106 Usually, F<ppport.h> will detect C++ style comments and
107 replace them with C style comments for portability reasons.
108 Using this option instructs F<ppport.h> to leave C++
109 comments untouched.
110
111 =head2 --quiet
112
113 Be quiet. Don't print anything except fatal errors.
114
115 =head2 --nodiag
116
117 Don't output any diagnostic messages. Only portability
118 alerts will be printed.
119
120 =head2 --nohints
121
122 Don't output any hints. Hints often contain useful portability
123 notes. Warnings will still be displayed.
124
125 =head2 --nochanges
126
127 Don't suggest any changes. Only give diagnostic output and hints
128 unless these are also deactivated.
129
130 =head2 --nofilter
131
132 Don't filter the list of input files. By default, files not looking
133 like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped.
134
135 =head2 --strip
136
137 Strip all script and documentation functionality from F<ppport.h>.
138 This reduces the size of F<ppport.h> dramatically and may be useful
139 if you want to include F<ppport.h> in smaller modules without
140 increasing their distribution size too much.
141
142 The stripped F<ppport.h> will have a C<--unstrip> option that allows
143 you to undo the stripping, but only if an appropriate C<Devel::PPPort>
144 module is installed.
145
146 =head2 --list-provided
147
148 Lists the API elements for which compatibility is provided by
149 F<ppport.h>. Also lists if it must be explicitly requested,
150 if it has dependencies, and if there are hints or warnings for it.
151
152 =head2 --list-unsupported
153
154 Lists the API elements that are known not to be supported by
155 F<ppport.h> and below which version of Perl they probably
156 won't be available or work.
157
158 =head2 --api-info=I<name>
159
160 Show portability information for API elements matching I<name>.
161 If I<name> is surrounded by slashes, it is interpreted as a regular
162 expression.
163
164 =head1 DESCRIPTION
165
166 In order for a Perl extension (XS) module to be as portable as possible
167 across differing versions of Perl itself, certain steps need to be taken.
168
169 =over 4
170
171 =item *
172
173 Including this header is the first major one. This alone will give you
174 access to a large part of the Perl API that hasn't been available in
175 earlier Perl releases. Use
176
177     perl ppport.h --list-provided
178
179 to see which API elements are provided by ppport.h.
180
181 =item *
182
183 You should avoid using deprecated parts of the API. For example, using
184 global Perl variables without the C<PL_> prefix is deprecated. Also,
185 some API functions used to have a C<perl_> prefix. Using this form is
186 also deprecated. You can safely use the supported API, as F<ppport.h>
187 will provide wrappers for older Perl versions.
188
189 =item *
190
191 If you use one of a few functions or variables that were not present in
192 earlier versions of Perl, and that can't be provided using a macro, you
193 have to explicitly request support for these functions by adding one or
194 more C<#define>s in your source code before the inclusion of F<ppport.h>.
195
196 These functions or variables will be marked C<explicit> in the list shown
197 by C<--list-provided>.
198
199 Depending on whether you module has a single or multiple files that
200 use such functions or variables, you want either C<static> or global
201 variants.
202
203 For a C<static> function or variable (used only in a single source
204 file), use:
205
206     #define NEED_function
207     #define NEED_variable
208
209 For a global function or variable (used in multiple source files),
210 use:
211
212     #define NEED_function_GLOBAL
213     #define NEED_variable_GLOBAL
214
215 Note that you mustn't have more than one global request for the
216 same function or variable in your project.
217
218     Function / Variable       Static Request               Global Request
219     -----------------------------------------------------------------------------------------
220     PL_parser                 NEED_PL_parser               NEED_PL_parser_GLOBAL
221     PL_signals                NEED_PL_signals              NEED_PL_signals_GLOBAL
222     eval_pv()                 NEED_eval_pv                 NEED_eval_pv_GLOBAL
223     grok_bin()                NEED_grok_bin                NEED_grok_bin_GLOBAL
224     grok_hex()                NEED_grok_hex                NEED_grok_hex_GLOBAL
225     grok_number()             NEED_grok_number             NEED_grok_number_GLOBAL
226     grok_numeric_radix()      NEED_grok_numeric_radix      NEED_grok_numeric_radix_GLOBAL
227     grok_oct()                NEED_grok_oct                NEED_grok_oct_GLOBAL
228     load_module()             NEED_load_module             NEED_load_module_GLOBAL
229     my_snprintf()             NEED_my_snprintf             NEED_my_snprintf_GLOBAL
230     my_sprintf()              NEED_my_sprintf              NEED_my_sprintf_GLOBAL
231     my_strlcat()              NEED_my_strlcat              NEED_my_strlcat_GLOBAL
232     my_strlcpy()              NEED_my_strlcpy              NEED_my_strlcpy_GLOBAL
233     newCONSTSUB()             NEED_newCONSTSUB             NEED_newCONSTSUB_GLOBAL
234     newRV_noinc()             NEED_newRV_noinc             NEED_newRV_noinc_GLOBAL
235     newSV_type()              NEED_newSV_type              NEED_newSV_type_GLOBAL
236     newSVpvn_flags()          NEED_newSVpvn_flags          NEED_newSVpvn_flags_GLOBAL
237     newSVpvn_share()          NEED_newSVpvn_share          NEED_newSVpvn_share_GLOBAL
238     pv_display()              NEED_pv_display              NEED_pv_display_GLOBAL
239     pv_escape()               NEED_pv_escape               NEED_pv_escape_GLOBAL
240     pv_pretty()               NEED_pv_pretty               NEED_pv_pretty_GLOBAL
241     sv_2pv_flags()            NEED_sv_2pv_flags            NEED_sv_2pv_flags_GLOBAL
242     sv_2pvbyte()              NEED_sv_2pvbyte              NEED_sv_2pvbyte_GLOBAL
243     sv_catpvf_mg()            NEED_sv_catpvf_mg            NEED_sv_catpvf_mg_GLOBAL
244     sv_catpvf_mg_nocontext()  NEED_sv_catpvf_mg_nocontext  NEED_sv_catpvf_mg_nocontext_GLOBAL
245     sv_pvn_force_flags()      NEED_sv_pvn_force_flags      NEED_sv_pvn_force_flags_GLOBAL
246     sv_setpvf_mg()            NEED_sv_setpvf_mg            NEED_sv_setpvf_mg_GLOBAL
247     sv_setpvf_mg_nocontext()  NEED_sv_setpvf_mg_nocontext  NEED_sv_setpvf_mg_nocontext_GLOBAL
248     vload_module()            NEED_vload_module            NEED_vload_module_GLOBAL
249     vnewSVpvf()               NEED_vnewSVpvf               NEED_vnewSVpvf_GLOBAL
250     warner()                  NEED_warner                  NEED_warner_GLOBAL
251
252 To avoid namespace conflicts, you can change the namespace of the
253 explicitly exported functions / variables using the C<DPPP_NAMESPACE>
254 macro. Just C<#define> the macro before including C<ppport.h>:
255
256     #define DPPP_NAMESPACE MyOwnNamespace_
257     #include "ppport.h"
258
259 The default namespace is C<DPPP_>.
260
261 =back
262
263 The good thing is that most of the above can be checked by running
264 F<ppport.h> on your source code. See the next section for
265 details.
266
267 =head1 EXAMPLES
268
269 To verify whether F<ppport.h> is needed for your module, whether you
270 should make any changes to your code, and whether any special defines
271 should be used, F<ppport.h> can be run as a Perl script to check your
272 source code. Simply say:
273
274     perl ppport.h
275
276 The result will usually be a list of patches suggesting changes
277 that should at least be acceptable, if not necessarily the most
278 efficient solution, or a fix for all possible problems.
279
280 If you know that your XS module uses features only available in
281 newer Perl releases, if you're aware that it uses C++ comments,
282 and if you want all suggestions as a single patch file, you could
283 use something like this:
284
285     perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff
286
287 If you only want your code to be scanned without any suggestions
288 for changes, use:
289
290     perl ppport.h --nochanges
291
292 You can specify a different C<diff> program or options, using
293 the C<--diff> option:
294
295     perl ppport.h --diff='diff -C 10'
296
297 This would output context diffs with 10 lines of context.
298
299 If you want to create patched copies of your files instead, use:
300
301     perl ppport.h --copy=.new
302
303 To display portability information for the C<newSVpvn> function,
304 use:
305
306     perl ppport.h --api-info=newSVpvn
307
308 Since the argument to C<--api-info> can be a regular expression,
309 you can use
310
311     perl ppport.h --api-info=/_nomg$/
312
313 to display portability information for all C<_nomg> functions or
314
315     perl ppport.h --api-info=/./
316
317 to display information for all known API elements.
318
319 =head1 BUGS
320
321 If this version of F<ppport.h> is causing failure during
322 the compilation of this module, please check if newer versions
323 of either this module or C<Devel::PPPort> are available on CPAN
324 before sending a bug report.
325
326 If F<ppport.h> was generated using the latest version of
327 C<Devel::PPPort> and is causing failure of this module, please
328 file a bug report using the CPAN Request Tracker at L<http://rt.cpan.org/>.
329
330 Please include the following information:
331
332 =over 4
333
334 =item 1.
335
336 The complete output from running "perl -V"
337
338 =item 2.
339
340 This file.
341
342 =item 3.
343
344 The name and version of the module you were trying to build.
345
346 =item 4.
347
348 A full log of the build that failed.
349
350 =item 5.
351
352 Any other information that you think could be relevant.
353
354 =back
355
356 For the latest version of this code, please get the C<Devel::PPPort>
357 module from CPAN.
358
359 =head1 COPYRIGHT
360
361 Version 3.x, Copyright (c) 2004-2013, Marcus Holland-Moritz.
362
363 Version 2.x, Copyright (C) 2001, Paul Marquess.
364
365 Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
366
367 This program is free software; you can redistribute it and/or
368 modify it under the same terms as Perl itself.
369
370 =head1 SEE ALSO
371
372 See L<Devel::PPPort>.
373
374 =cut
375
376 use strict;
377
378 # Disable broken TRIE-optimization
379 BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 }
380
381 my $VERSION = 3.21;
382
383 my %opt = (
384   quiet     => 0,
385   diag      => 1,
386   hints     => 1,
387   changes   => 1,
388   cplusplus => 0,
389   filter    => 1,
390   strip     => 0,
391   version   => 0,
392 );
393
394 my($ppport) = $0 =~ /([\w.]+)$/;
395 my $LF = '(?:\r\n|[\r\n])';   # line feed
396 my $HS = "[ \t]";             # horizontal whitespace
397
398 # Never use C comments in this file!
399 my $ccs  = '/'.'*';
400 my $cce  = '*'.'/';
401 my $rccs = quotemeta $ccs;
402 my $rcce = quotemeta $cce;
403
404 eval {
405   require Getopt::Long;
406   Getopt::Long::GetOptions(\%opt, qw(
407     help quiet diag! filter! hints! changes! cplusplus strip version
408     patch=s copy=s diff=s compat-version=s
409     list-provided list-unsupported api-info=s
410   )) or usage();
411 };
412
413 if ($@ and grep /^-/, @ARGV) {
414   usage() if "@ARGV" =~ /^--?h(?:elp)?$/;
415   die "Getopt::Long not found. Please don't use any options.\n";
416 }
417
418 if ($opt{version}) {
419   print "This is $0 $VERSION.\n";
420   exit 0;
421 }
422
423 usage() if $opt{help};
424 strip() if $opt{strip};
425
426 if (exists $opt{'compat-version'}) {
427   my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) };
428   if ($@) {
429     die "Invalid version number format: '$opt{'compat-version'}'\n";
430   }
431   die "Only Perl 5 is supported\n" if $r != 5;
432   die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000;
433   $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s;
434 }
435 else {
436   $opt{'compat-version'} = 5;
437 }
438
439 my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/
440                 ? ( $1 => {
441                       ($2                  ? ( base     => $2 ) : ()),
442                       ($3                  ? ( todo     => $3 ) : ()),
443                       (index($4, 'v') >= 0 ? ( varargs  => 1  ) : ()),
444                       (index($4, 'p') >= 0 ? ( provided => 1  ) : ()),
445                       (index($4, 'n') >= 0 ? ( nothxarg => 1  ) : ()),
446                     } )
447                 : die "invalid spec: $_" } qw(
448 AvFILLp|5.004050||p
449 AvFILL|||
450 BhkDISABLE||5.019003|
451 BhkENABLE||5.019003|
452 BhkENTRY_set||5.019003|
453 BhkENTRY|||
454 BhkFLAGS|||
455 CALL_BLOCK_HOOKS|||
456 CLASS|||n
457 CPERLscope|5.005000||p
458 CX_CURPAD_SAVE|||
459 CX_CURPAD_SV|||
460 CopFILEAV|5.006000||p
461 CopFILEGV_set|5.006000||p
462 CopFILEGV|5.006000||p
463 CopFILESV|5.006000||p
464 CopFILE_set|5.006000||p
465 CopFILE|5.006000||p
466 CopSTASHPV_set|5.006000||p
467 CopSTASHPV|5.006000||p
468 CopSTASH_eq|5.006000||p
469 CopSTASH_set|5.006000||p
470 CopSTASH|5.006000||p
471 CopyD|5.009002|5.004050|p
472 Copy||5.004050|
473 CvPADLIST||5.008001|
474 CvSTASH|||
475 CvWEAKOUTSIDE|||
476 DEFSV_set|5.010001||p
477 DEFSV|5.004050||p
478 END_EXTERN_C|5.005000||p
479 ENTER|||
480 ERRSV|5.004050||p
481 EXTEND|||
482 EXTERN_C|5.005000||p
483 F0convert|||n
484 FREETMPS|||
485 GIMME_V||5.004000|n
486 GIMME|||n
487 GROK_NUMERIC_RADIX|5.007002||p
488 G_ARRAY|||
489 G_DISCARD|||
490 G_EVAL|||
491 G_METHOD|5.006001||p
492 G_NOARGS|||
493 G_SCALAR|||
494 G_VOID||5.004000|
495 GetVars|||
496 GvAV|||
497 GvCV|||
498 GvHV|||
499 GvSVn|5.009003||p
500 GvSV|||
501 Gv_AMupdate||5.011000|
502 HEf_SVKEY||5.004000|
503 HeHASH||5.004000|
504 HeKEY||5.004000|
505 HeKLEN||5.004000|
506 HePV||5.004000|
507 HeSVKEY_force||5.004000|
508 HeSVKEY_set||5.004000|
509 HeSVKEY||5.004000|
510 HeUTF8||5.010001|
511 HeVAL||5.004000|
512 HvENAMELEN||5.015004|
513 HvENAMEUTF8||5.015004|
514 HvENAME||5.013007|
515 HvNAMELEN_get|5.009003||p
516 HvNAMELEN||5.015004|
517 HvNAMEUTF8||5.015004|
518 HvNAME_get|5.009003||p
519 HvNAME|||
520 INT2PTR|5.006000||p
521 IN_LOCALE_COMPILETIME|5.007002||p
522 IN_LOCALE_RUNTIME|5.007002||p
523 IN_LOCALE|5.007002||p
524 IN_PERL_COMPILETIME|5.008001||p
525 IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p
526 IS_NUMBER_INFINITY|5.007002||p
527 IS_NUMBER_IN_UV|5.007002||p
528 IS_NUMBER_NAN|5.007003||p
529 IS_NUMBER_NEG|5.007002||p
530 IS_NUMBER_NOT_INT|5.007002||p
531 IVSIZE|5.006000||p
532 IVTYPE|5.006000||p
533 IVdf|5.006000||p
534 LEAVE|||
535 LINKLIST||5.013006|
536 LVRET|||
537 MARK|||
538 MULTICALL||5.019003|
539 MY_CXT_CLONE|5.009002||p
540 MY_CXT_INIT|5.007003||p
541 MY_CXT|5.007003||p
542 MoveD|5.009002|5.004050|p
543 Move||5.004050|
544 NOOP|5.005000||p
545 NUM2PTR|5.006000||p
546 NVTYPE|5.006000||p
547 NVef|5.006001||p
548 NVff|5.006001||p
549 NVgf|5.006001||p
550 Newxc|5.009003||p
551 Newxz|5.009003||p
552 Newx|5.009003||p
553 Nullav|||
554 Nullch|||
555 Nullcv|||
556 Nullhv|||
557 Nullsv|||
558 OP_CLASS||5.013007|
559 OP_DESC||5.007003|
560 OP_NAME||5.007003|
561 ORIGMARK|||
562 PAD_BASE_SV|||
563 PAD_CLONE_VARS|||
564 PAD_COMPNAME_FLAGS|||
565 PAD_COMPNAME_GEN_set|||
566 PAD_COMPNAME_GEN|||
567 PAD_COMPNAME_OURSTASH|||
568 PAD_COMPNAME_PV|||
569 PAD_COMPNAME_TYPE|||
570 PAD_RESTORE_LOCAL|||
571 PAD_SAVE_LOCAL|||
572 PAD_SAVE_SETNULLPAD|||
573 PAD_SETSV|||
574 PAD_SET_CUR_NOSAVE|||
575 PAD_SET_CUR|||
576 PAD_SVl|||
577 PAD_SV|||
578 PERLIO_FUNCS_CAST|5.009003||p
579 PERLIO_FUNCS_DECL|5.009003||p
580 PERL_ABS|5.008001||p
581 PERL_BCDVERSION|5.019002||p
582 PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
583 PERL_HASH|5.004000||p
584 PERL_INT_MAX|5.004000||p
585 PERL_INT_MIN|5.004000||p
586 PERL_LONG_MAX|5.004000||p
587 PERL_LONG_MIN|5.004000||p
588 PERL_MAGIC_arylen|5.007002||p
589 PERL_MAGIC_backref|5.007002||p
590 PERL_MAGIC_bm|5.007002||p
591 PERL_MAGIC_collxfrm|5.007002||p
592 PERL_MAGIC_dbfile|5.007002||p
593 PERL_MAGIC_dbline|5.007002||p
594 PERL_MAGIC_defelem|5.007002||p
595 PERL_MAGIC_envelem|5.007002||p
596 PERL_MAGIC_env|5.007002||p
597 PERL_MAGIC_ext|5.007002||p
598 PERL_MAGIC_fm|5.007002||p
599 PERL_MAGIC_glob|5.019002||p
600 PERL_MAGIC_isaelem|5.007002||p
601 PERL_MAGIC_isa|5.007002||p
602 PERL_MAGIC_mutex|5.019002||p
603 PERL_MAGIC_nkeys|5.007002||p
604 PERL_MAGIC_overload_elem|5.019002||p
605 PERL_MAGIC_overload_table|5.007002||p
606 PERL_MAGIC_overload|5.019002||p
607 PERL_MAGIC_pos|5.007002||p
608 PERL_MAGIC_qr|5.007002||p
609 PERL_MAGIC_regdata|5.007002||p
610 PERL_MAGIC_regdatum|5.007002||p
611 PERL_MAGIC_regex_global|5.007002||p
612 PERL_MAGIC_shared_scalar|5.007003||p
613 PERL_MAGIC_shared|5.007003||p
614 PERL_MAGIC_sigelem|5.007002||p
615 PERL_MAGIC_sig|5.007002||p
616 PERL_MAGIC_substr|5.007002||p
617 PERL_MAGIC_sv|5.007002||p
618 PERL_MAGIC_taint|5.007002||p
619 PERL_MAGIC_tiedelem|5.007002||p
620 PERL_MAGIC_tiedscalar|5.007002||p
621 PERL_MAGIC_tied|5.007002||p
622 PERL_MAGIC_utf8|5.008001||p
623 PERL_MAGIC_uvar_elem|5.007003||p
624 PERL_MAGIC_uvar|5.007002||p
625 PERL_MAGIC_vec|5.007002||p
626 PERL_MAGIC_vstring|5.008001||p
627 PERL_PV_ESCAPE_ALL|5.009004||p
628 PERL_PV_ESCAPE_FIRSTCHAR|5.009004||p
629 PERL_PV_ESCAPE_NOBACKSLASH|5.009004||p
630 PERL_PV_ESCAPE_NOCLEAR|5.009004||p
631 PERL_PV_ESCAPE_QUOTE|5.009004||p
632 PERL_PV_ESCAPE_RE|5.009005||p
633 PERL_PV_ESCAPE_UNI_DETECT|5.009004||p
634 PERL_PV_ESCAPE_UNI|5.009004||p
635 PERL_PV_PRETTY_DUMP|5.009004||p
636 PERL_PV_PRETTY_ELLIPSES|5.010000||p
637 PERL_PV_PRETTY_LTGT|5.009004||p
638 PERL_PV_PRETTY_NOCLEAR|5.010000||p
639 PERL_PV_PRETTY_QUOTE|5.009004||p
640 PERL_PV_PRETTY_REGPROP|5.009004||p
641 PERL_QUAD_MAX|5.004000||p
642 PERL_QUAD_MIN|5.004000||p
643 PERL_REVISION|5.006000||p
644 PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p
645 PERL_SCAN_DISALLOW_PREFIX|5.007003||p
646 PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p
647 PERL_SCAN_SILENT_ILLDIGIT|5.008001||p
648 PERL_SHORT_MAX|5.004000||p
649 PERL_SHORT_MIN|5.004000||p
650 PERL_SIGNALS_UNSAFE_FLAG|5.008001||p
651 PERL_SUBVERSION|5.006000||p
652 PERL_SYS_INIT3||5.010000|
653 PERL_SYS_INIT||5.010000|
654 PERL_SYS_TERM||5.019003|
655 PERL_UCHAR_MAX|5.004000||p
656 PERL_UCHAR_MIN|5.004000||p
657 PERL_UINT_MAX|5.004000||p
658 PERL_UINT_MIN|5.004000||p
659 PERL_ULONG_MAX|5.004000||p
660 PERL_ULONG_MIN|5.004000||p
661 PERL_UNUSED_ARG|5.009003||p
662 PERL_UNUSED_CONTEXT|5.009004||p
663 PERL_UNUSED_DECL|5.007002||p
664 PERL_UNUSED_VAR|5.007002||p
665 PERL_UQUAD_MAX|5.004000||p
666 PERL_UQUAD_MIN|5.004000||p
667 PERL_USE_GCC_BRACE_GROUPS|5.009004||p
668 PERL_USHORT_MAX|5.004000||p
669 PERL_USHORT_MIN|5.004000||p
670 PERL_VERSION|5.006000||p
671 PL_DBsignal|5.005000||p
672 PL_DBsingle|||pn
673 PL_DBsub|||pn
674 PL_DBtrace|||pn
675 PL_Sv|5.005000||p
676 PL_bufend|5.019002||p
677 PL_bufptr|5.019002||p
678 PL_check||5.006000|
679 PL_compiling|5.004050||p
680 PL_comppad_name||5.017004|
681 PL_comppad||5.008001|
682 PL_copline|5.019002||p
683 PL_curcop|5.004050||p
684 PL_curpad||5.005000|
685 PL_curstash|5.004050||p
686 PL_debstash|5.004050||p
687 PL_defgv|5.004050||p
688 PL_diehook|5.004050||p
689 PL_dirty|5.004050||p
690 PL_dowarn|||pn
691 PL_errgv|5.004050||p
692 PL_error_count|5.019002||p
693 PL_expect|5.019002||p
694 PL_hexdigit|5.005000||p
695 PL_hints|5.005000||p
696 PL_in_my_stash|5.019002||p
697 PL_in_my|5.019002||p
698 PL_keyword_plugin||5.011002|
699 PL_last_in_gv|||n
700 PL_laststatval|5.005000||p
701 PL_lex_state|5.019002||p
702 PL_lex_stuff|5.019002||p
703 PL_linestr|5.019002||p
704 PL_modglobal||5.005000|n
705 PL_na|5.004050||pn
706 PL_no_modify|5.006000||p
707 PL_ofsgv|||n
708 PL_opfreehook||5.011000|n
709 PL_parser|5.009005|5.009005|p
710 PL_peepp||5.007003|n
711 PL_perl_destruct_level|5.004050||p
712 PL_perldb|5.004050||p
713 PL_ppaddr|5.006000||p
714 PL_rpeepp||5.013005|n
715 PL_rsfp_filters|5.019002||p
716 PL_rsfp|5.019002||p
717 PL_rs|||n
718 PL_signals|5.008001||p
719 PL_stack_base|5.004050||p
720 PL_stack_sp|5.004050||p
721 PL_statcache|5.005000||p
722 PL_stdingv|5.004050||p
723 PL_sv_arenaroot|5.004050||p
724 PL_sv_no|5.004050||pn
725 PL_sv_undef|5.004050||pn
726 PL_sv_yes|5.004050||pn
727 PL_tainted|5.004050||p
728 PL_tainting|5.004050||p
729 PL_tokenbuf|5.019002||p
730 POP_MULTICALL||5.019003|
731 POPi|||n
732 POPl|||n
733 POPn|||n
734 POPpbytex||5.007001|n
735 POPpx||5.005030|n
736 POPp|||n
737 POPs|||n
738 PTR2IV|5.006000||p
739 PTR2NV|5.006000||p
740 PTR2UV|5.006000||p
741 PTR2nat|5.009003||p
742 PTR2ul|5.007001||p
743 PTRV|5.006000||p
744 PUSHMARK|||
745 PUSH_MULTICALL||5.019003|
746 PUSHi|||
747 PUSHmortal|5.009002||p
748 PUSHn|||
749 PUSHp|||
750 PUSHs|||
751 PUSHu|5.004000||p
752 PUTBACK|||
753 PadARRAY||5.019003|
754 PadMAX||5.019003|
755 PadlistARRAY||5.019003|
756 PadlistMAX||5.019003|
757 PadlistNAMESARRAY||5.019003|
758 PadlistNAMESMAX||5.019003|
759 PadlistNAMES||5.019003|
760 PadlistREFCNT||5.017004|
761 PadnameIsOUR|||
762 PadnameIsSTATE|||
763 PadnameLEN||5.019003|
764 PadnameOURSTASH|||
765 PadnameOUTER|||
766 PadnamePV||5.019003|
767 PadnameSV||5.019003|
768 PadnameTYPE|||
769 PadnameUTF8||5.019003|
770 PadnamelistARRAY||5.019003|
771 PadnamelistMAX||5.019003|
772 PerlIO_clearerr||5.007003|
773 PerlIO_close||5.007003|
774 PerlIO_context_layers||5.009004|
775 PerlIO_eof||5.007003|
776 PerlIO_error||5.007003|
777 PerlIO_fileno||5.007003|
778 PerlIO_fill||5.007003|
779 PerlIO_flush||5.007003|
780 PerlIO_get_base||5.007003|
781 PerlIO_get_bufsiz||5.007003|
782 PerlIO_get_cnt||5.007003|
783 PerlIO_get_ptr||5.007003|
784 PerlIO_read||5.007003|
785 PerlIO_seek||5.007003|
786 PerlIO_set_cnt||5.007003|
787 PerlIO_set_ptrcnt||5.007003|
788 PerlIO_setlinebuf||5.007003|
789 PerlIO_stderr||5.007003|
790 PerlIO_stdin||5.007003|
791 PerlIO_stdout||5.007003|
792 PerlIO_tell||5.007003|
793 PerlIO_unread||5.007003|
794 PerlIO_write||5.007003|
795 Perl_signbit||5.009005|n
796 PoisonFree|5.009004||p
797 PoisonNew|5.009004||p
798 PoisonWith|5.009004||p
799 Poison|5.008000||p
800 READ_XDIGIT||5.017006|
801 RETVAL|||n
802 Renewc|||
803 Renew|||
804 SAVECLEARSV|||
805 SAVECOMPPAD|||
806 SAVEPADSV|||
807 SAVETMPS|||
808 SAVE_DEFSV|5.004050||p
809 SPAGAIN|||
810 SP|||
811 START_EXTERN_C|5.005000||p
812 START_MY_CXT|5.007003||p
813 STMT_END|||p
814 STMT_START|||p
815 STR_WITH_LEN|5.009003||p
816 ST|||
817 SV_CONST_RETURN|5.009003||p
818 SV_COW_DROP_PV|5.008001||p
819 SV_COW_SHARED_HASH_KEYS|5.009005||p
820 SV_GMAGIC|5.007002||p
821 SV_HAS_TRAILING_NUL|5.009004||p
822 SV_IMMEDIATE_UNREF|5.007001||p
823 SV_MUTABLE_RETURN|5.009003||p
824 SV_NOSTEAL|5.009002||p
825 SV_SMAGIC|5.009003||p
826 SV_UTF8_NO_ENCODING|5.008001||p
827 SVfARG|5.009005||p
828 SVf_UTF8|5.006000||p
829 SVf|5.006000||p
830 SVt_INVLIST||5.019002|
831 SVt_IV|||
832 SVt_NULL|||
833 SVt_NV|||
834 SVt_PVAV|||
835 SVt_PVCV|||
836 SVt_PVFM|||
837 SVt_PVGV|||
838 SVt_PVHV|||
839 SVt_PVIO|||
840 SVt_PVIV|||
841 SVt_PVLV|||
842 SVt_PVMG|||
843 SVt_PVNV|||
844 SVt_PV|||
845 SVt_REGEXP||5.011000|
846 Safefree|||
847 Slab_Alloc|||
848 Slab_Free|||
849 Slab_to_ro|||
850 Slab_to_rw|||
851 StructCopy|||
852 SvCUR_set|||
853 SvCUR|||
854 SvEND|||
855 SvGAMAGIC||5.006001|
856 SvGETMAGIC|5.004050||p
857 SvGROW|||
858 SvIOK_UV||5.006000|
859 SvIOK_notUV||5.006000|
860 SvIOK_off|||
861 SvIOK_only_UV||5.006000|
862 SvIOK_only|||
863 SvIOK_on|||
864 SvIOKp|||
865 SvIOK|||
866 SvIVX|||
867 SvIV_nomg|5.009001||p
868 SvIV_set|||
869 SvIVx|||
870 SvIV|||
871 SvIsCOW_shared_hash||5.008003|
872 SvIsCOW||5.008003|
873 SvLEN_set|||
874 SvLEN|||
875 SvLOCK||5.007003|
876 SvMAGIC_set|5.009003||p
877 SvNIOK_off|||
878 SvNIOKp|||
879 SvNIOK|||
880 SvNOK_off|||
881 SvNOK_only|||
882 SvNOK_on|||
883 SvNOKp|||
884 SvNOK|||
885 SvNVX|||
886 SvNV_nomg||5.013002|
887 SvNV_set|||
888 SvNVx|||
889 SvNV|||
890 SvOK|||
891 SvOOK_offset||5.011000|
892 SvOOK|||
893 SvPOK_off|||
894 SvPOK_only_UTF8||5.006000|
895 SvPOK_only|||
896 SvPOK_on|||
897 SvPOKp|||
898 SvPOK|||
899 SvPVX_const|5.009003||p
900 SvPVX_mutable|5.009003||p
901 SvPVX|||
902 SvPV_const|5.009003||p
903 SvPV_flags_const_nolen|5.009003||p
904 SvPV_flags_const|5.009003||p
905 SvPV_flags_mutable|5.009003||p
906 SvPV_flags|5.007002||p
907 SvPV_force_flags_mutable|5.009003||p
908 SvPV_force_flags_nolen|5.009003||p
909 SvPV_force_flags|5.007002||p
910 SvPV_force_mutable|5.009003||p
911 SvPV_force_nolen|5.009003||p
912 SvPV_force_nomg_nolen|5.009003||p
913 SvPV_force_nomg|5.007002||p
914 SvPV_force|||p
915 SvPV_mutable|5.009003||p
916 SvPV_nolen_const|5.009003||p
917 SvPV_nolen|5.006000||p
918 SvPV_nomg_const_nolen|5.009003||p
919 SvPV_nomg_const|5.009003||p
920 SvPV_nomg_nolen|5.013007||p
921 SvPV_nomg|5.007002||p
922 SvPV_renew|5.009003||p
923 SvPV_set|||
924 SvPVbyte_force||5.009002|
925 SvPVbyte_nolen||5.006000|
926 SvPVbytex_force||5.006000|
927 SvPVbytex||5.006000|
928 SvPVbyte|5.006000||p
929 SvPVutf8_force||5.006000|
930 SvPVutf8_nolen||5.006000|
931 SvPVutf8x_force||5.006000|
932 SvPVutf8x||5.006000|
933 SvPVutf8||5.006000|
934 SvPVx|||
935 SvPV|||
936 SvREFCNT_dec_NN||5.017007|
937 SvREFCNT_dec|||
938 SvREFCNT_inc_NN|5.009004||p
939 SvREFCNT_inc_simple_NN|5.009004||p
940 SvREFCNT_inc_simple_void_NN|5.009004||p
941 SvREFCNT_inc_simple_void|5.009004||p
942 SvREFCNT_inc_simple|5.009004||p
943 SvREFCNT_inc_void_NN|5.009004||p
944 SvREFCNT_inc_void|5.009004||p
945 SvREFCNT_inc|||p
946 SvREFCNT|||
947 SvROK_off|||
948 SvROK_on|||
949 SvROK|||
950 SvRV_set|5.009003||p
951 SvRV|||
952 SvRXOK||5.009005|
953 SvRX||5.009005|
954 SvSETMAGIC|||
955 SvSHARED_HASH|5.009003||p
956 SvSHARE||5.007003|
957 SvSTASH_set|5.009003||p
958 SvSTASH|||
959 SvSetMagicSV_nosteal||5.004000|
960 SvSetMagicSV||5.004000|
961 SvSetSV_nosteal||5.004000|
962 SvSetSV|||
963 SvTAINTED_off||5.004000|
964 SvTAINTED_on||5.004000|
965 SvTAINTED||5.004000|
966 SvTAINT|||
967 SvTHINKFIRST|||
968 SvTRUE_nomg||5.013006|
969 SvTRUE|||
970 SvTYPE|||
971 SvUNLOCK||5.007003|
972 SvUOK|5.007001|5.006000|p
973 SvUPGRADE|||
974 SvUTF8_off||5.006000|
975 SvUTF8_on||5.006000|
976 SvUTF8||5.006000|
977 SvUVXx|5.004000||p
978 SvUVX|5.004000||p
979 SvUV_nomg|5.009001||p
980 SvUV_set|5.009003||p
981 SvUVx|5.004000||p
982 SvUV|5.004000||p
983 SvVOK||5.008001|
984 SvVSTRING_mg|5.009004||p
985 THIS|||n
986 UNDERBAR|5.009002||p
987 UTF8_MAXBYTES|5.009002||p
988 UVSIZE|5.006000||p
989 UVTYPE|5.006000||p
990 UVXf|5.007001||p
991 UVof|5.006000||p
992 UVuf|5.006000||p
993 UVxf|5.006000||p
994 WARN_ALL|5.006000||p
995 WARN_AMBIGUOUS|5.006000||p
996 WARN_ASSERTIONS|5.019002||p
997 WARN_BAREWORD|5.006000||p
998 WARN_CLOSED|5.006000||p
999 WARN_CLOSURE|5.006000||p
1000 WARN_DEBUGGING|5.006000||p
1001 WARN_DEPRECATED|5.006000||p
1002 WARN_DIGIT|5.006000||p
1003 WARN_EXEC|5.006000||p
1004 WARN_EXITING|5.006000||p
1005 WARN_GLOB|5.006000||p
1006 WARN_INPLACE|5.006000||p
1007 WARN_INTERNAL|5.006000||p
1008 WARN_IO|5.006000||p
1009 WARN_LAYER|5.008000||p
1010 WARN_MALLOC|5.006000||p
1011 WARN_MISC|5.006000||p
1012 WARN_NEWLINE|5.006000||p
1013 WARN_NUMERIC|5.006000||p
1014 WARN_ONCE|5.006000||p
1015 WARN_OVERFLOW|5.006000||p
1016 WARN_PACK|5.006000||p
1017 WARN_PARENTHESIS|5.006000||p
1018 WARN_PIPE|5.006000||p
1019 WARN_PORTABLE|5.006000||p
1020 WARN_PRECEDENCE|5.006000||p
1021 WARN_PRINTF|5.006000||p
1022 WARN_PROTOTYPE|5.006000||p
1023 WARN_QW|5.006000||p
1024 WARN_RECURSION|5.006000||p
1025 WARN_REDEFINE|5.006000||p
1026 WARN_REGEXP|5.006000||p
1027 WARN_RESERVED|5.006000||p
1028 WARN_SEMICOLON|5.006000||p
1029 WARN_SEVERE|5.006000||p
1030 WARN_SIGNAL|5.006000||p
1031 WARN_SUBSTR|5.006000||p
1032 WARN_SYNTAX|5.006000||p
1033 WARN_TAINT|5.006000||p
1034 WARN_THREADS|5.008000||p
1035 WARN_UNINITIALIZED|5.006000||p
1036 WARN_UNOPENED|5.006000||p
1037 WARN_UNPACK|5.006000||p
1038 WARN_UNTIE|5.006000||p
1039 WARN_UTF8|5.006000||p
1040 WARN_VOID|5.006000||p
1041 WIDEST_UTYPE|5.015004||p
1042 XCPT_CATCH|5.009002||p
1043 XCPT_RETHROW|5.009002|5.007001|p
1044 XCPT_TRY_END|5.009002|5.004000|p
1045 XCPT_TRY_START|5.009002|5.004000|p
1046 XPUSHi|||
1047 XPUSHmortal|5.009002||p
1048 XPUSHn|||
1049 XPUSHp|||
1050 XPUSHs|||
1051 XPUSHu|5.004000||p
1052 XSPROTO|5.010000||p
1053 XSRETURN_EMPTY|||
1054 XSRETURN_IV|||
1055 XSRETURN_NO|||
1056 XSRETURN_NV|||
1057 XSRETURN_PV|||
1058 XSRETURN_UNDEF|||
1059 XSRETURN_UV|5.008001||p
1060 XSRETURN_YES|||
1061 XSRETURN|||p
1062 XST_mIV|||
1063 XST_mNO|||
1064 XST_mNV|||
1065 XST_mPV|||
1066 XST_mUNDEF|||
1067 XST_mUV|5.008001||p
1068 XST_mYES|||
1069 XS_APIVERSION_BOOTCHECK||5.013004|
1070 XS_EXTERNAL||5.019003|
1071 XS_INTERNAL||5.019003|
1072 XS_VERSION_BOOTCHECK|||
1073 XS_VERSION|||
1074 XSprePUSH|5.006000||p
1075 XS|||
1076 XopDISABLE||5.019003|
1077 XopENABLE||5.019003|
1078 XopENTRY_set||5.019003|
1079 XopENTRY||5.019003|
1080 XopFLAGS||5.013007|
1081 ZeroD|5.009002||p
1082 Zero|||
1083 _aMY_CXT|5.007003||p
1084 _add_range_to_invlist|||
1085 _append_range_to_invlist|||
1086 _core_swash_init|||
1087 _get_swash_invlist|||
1088 _invlist_array_init|||
1089 _invlist_contains_cp|||
1090 _invlist_contents|||
1091 _invlist_dump|||
1092 _invlist_intersection_maybe_complement_2nd|||
1093 _invlist_intersection|||
1094 _invlist_invert_prop|||
1095 _invlist_invert|||
1096 _invlist_len|||
1097 _invlist_populate_swatch|||
1098 _invlist_search|||
1099 _invlist_subtract|||
1100 _invlist_union_maybe_complement_2nd|||
1101 _invlist_union|||
1102 _is_uni_FOO||5.017008|
1103 _is_uni_perl_idcont||5.017008|
1104 _is_uni_perl_idstart||5.017007|
1105 _is_utf8_FOO||5.017008|
1106 _is_utf8_mark||5.017008|
1107 _is_utf8_perl_idcont||5.017008|
1108 _is_utf8_perl_idstart||5.017007|
1109 _new_invlist_C_array|||
1110 _new_invlist|||
1111 _pMY_CXT|5.007003||p
1112 _swash_inversion_hash|||
1113 _swash_to_invlist|||
1114 _to_fold_latin1|||
1115 _to_uni_fold_flags||5.013011|
1116 _to_upper_title_latin1|||
1117 _to_utf8_fold_flags||5.015006|
1118 _to_utf8_lower_flags||5.015006|
1119 _to_utf8_title_flags||5.015006|
1120 _to_utf8_upper_flags||5.015006|
1121 aMY_CXT_|5.007003||p
1122 aMY_CXT|5.007003||p
1123 aTHXR_|5.019002||p
1124 aTHXR|5.019002||p
1125 aTHX_|5.006000||p
1126 aTHX|5.006000||p
1127 aassign_common_vars|||
1128 add_cp_to_invlist|||
1129 add_data|||n
1130 add_utf16_textfilter|||
1131 addmad|||
1132 adjust_size_and_find_bucket|||n
1133 adjust_stack_on_leave|||
1134 alloc_maybe_populate_EXACT|||
1135 alloccopstash|||
1136 allocmy|||
1137 amagic_call|||
1138 amagic_cmp_locale|||
1139 amagic_cmp|||
1140 amagic_deref_call||5.013007|
1141 amagic_i_ncmp|||
1142 amagic_is_enabled|||
1143 amagic_ncmp|||
1144 anonymise_cv_maybe|||
1145 any_dup|||
1146 ao|||
1147 append_madprops|||
1148 apply_attrs_my|||
1149 apply_attrs_string||5.006001|
1150 apply_attrs|||
1151 apply|||
1152 assert_uft8_cache_coherent|||
1153 atfork_lock||5.007003|n
1154 atfork_unlock||5.007003|n
1155 av_arylen_p||5.009003|
1156 av_clear|||
1157 av_create_and_push||5.009005|
1158 av_create_and_unshift_one||5.009005|
1159 av_delete||5.006000|
1160 av_exists||5.006000|
1161 av_extend_guts|||
1162 av_extend|||
1163 av_fetch|||
1164 av_fill|||
1165 av_iter_p||5.011000|
1166 av_len|||
1167 av_make|||
1168 av_pop|||
1169 av_push|||
1170 av_reify|||
1171 av_shift|||
1172 av_store|||
1173 av_tindex||5.017009|
1174 av_top_index||5.017009|
1175 av_undef|||
1176 av_unshift|||
1177 ax|||n
1178 bad_type_gv|||
1179 bad_type_pv|||
1180 bind_match|||
1181 block_end|||
1182 block_gimme||5.004000|
1183 block_start|||
1184 blockhook_register||5.013003|
1185 boolSV|5.004000||p
1186 boot_core_PerlIO|||
1187 boot_core_UNIVERSAL|||
1188 boot_core_mro|||
1189 bytes_cmp_utf8||5.013007|
1190 bytes_from_utf8||5.007001|
1191 bytes_to_uni|||n
1192 bytes_to_utf8||5.006001|
1193 call_argv|5.006000||p
1194 call_atexit||5.006000|
1195 call_list||5.004000|
1196 call_method|5.006000||p
1197 call_pv|5.006000||p
1198 call_sv|5.006000||p
1199 caller_cx||5.013005|
1200 calloc||5.007002|n
1201 cando|||
1202 cast_i32||5.006000|
1203 cast_iv||5.006000|
1204 cast_ulong||5.006000|
1205 cast_uv||5.006000|
1206 check_locale_boundary_crossing|||
1207 check_type_and_open|||
1208 check_uni|||
1209 check_utf8_print|||
1210 checkcomma|||
1211 ckWARN|5.006000||p
1212 ck_entersub_args_core|||
1213 ck_entersub_args_list||5.013006|
1214 ck_entersub_args_proto_or_list||5.013006|
1215 ck_entersub_args_proto||5.013006|
1216 ck_warner_d||5.011001|v
1217 ck_warner||5.011001|v
1218 ckwarn_common|||
1219 ckwarn_d||5.009003|
1220 ckwarn||5.009003|
1221 cl_and|||n
1222 cl_anything|||n
1223 cl_init|||n
1224 cl_is_anything|||n
1225 cl_or|||n
1226 clear_placeholders|||
1227 clone_params_del|||n
1228 clone_params_new|||n
1229 closest_cop|||
1230 compute_EXACTish|||
1231 convert|||
1232 cop_fetch_label||5.015001|
1233 cop_free|||
1234 cop_hints_2hv||5.013007|
1235 cop_hints_fetch_pvn||5.013007|
1236 cop_hints_fetch_pvs||5.013007|
1237 cop_hints_fetch_pv||5.013007|
1238 cop_hints_fetch_sv||5.013007|
1239 cop_store_label||5.015001|
1240 cophh_2hv||5.013007|
1241 cophh_copy||5.013007|
1242 cophh_delete_pvn||5.013007|
1243 cophh_delete_pvs||5.013007|
1244 cophh_delete_pv||5.013007|
1245 cophh_delete_sv||5.013007|
1246 cophh_fetch_pvn||5.013007|
1247 cophh_fetch_pvs||5.013007|
1248 cophh_fetch_pv||5.013007|
1249 cophh_fetch_sv||5.013007|
1250 cophh_free||5.013007|
1251 cophh_new_empty||5.019003|
1252 cophh_store_pvn||5.013007|
1253 cophh_store_pvs||5.013007|
1254 cophh_store_pv||5.013007|
1255 cophh_store_sv||5.013007|
1256 core_prototype|||
1257 core_regclass_swash|||
1258 coresub_op|||
1259 could_it_be_a_POSIX_class|||
1260 cr_textfilter|||
1261 create_eval_scope|||
1262 croak_memory_wrap||5.019003|n
1263 croak_no_mem|||n
1264 croak_no_modify||5.013003|n
1265 croak_nocontext|||vn
1266 croak_popstack|||n
1267 croak_sv||5.013001|
1268 croak_xs_usage||5.010001|n
1269 croak|||v
1270 csighandler||5.009003|n
1271 curmad|||
1272 current_re_engine|||
1273 curse|||
1274 custom_op_desc||5.007003|
1275 custom_op_name||5.007003|
1276 custom_op_register||5.013007|
1277 custom_op_xop||5.013007|
1278 cv_ckproto_len_flags|||
1279 cv_clone_into|||
1280 cv_clone|||
1281 cv_const_sv_or_av|||
1282 cv_const_sv||5.004000|
1283 cv_dump|||
1284 cv_forget_slab|||
1285 cv_get_call_checker||5.013006|
1286 cv_set_call_checker||5.013006|
1287 cv_undef|||
1288 cvgv_set|||
1289 cvstash_set|||
1290 cx_dump||5.005000|
1291 cx_dup|||
1292 cxinc|||
1293 dAXMARK|5.009003||p
1294 dAX|5.007002||p
1295 dITEMS|5.007002||p
1296 dMARK|||
1297 dMULTICALL||5.009003|
1298 dMY_CXT_SV|5.007003||p
1299 dMY_CXT|5.007003||p
1300 dNOOP|5.006000||p
1301 dORIGMARK|||
1302 dSP|||
1303 dTHR|5.004050||p
1304 dTHXR|5.019002||p
1305 dTHXa|5.006000||p
1306 dTHXoa|5.006000||p
1307 dTHX|5.006000||p
1308 dUNDERBAR|5.009002||p
1309 dVAR|5.009003||p
1310 dXCPT|5.009002||p
1311 dXSARGS|||
1312 dXSI32|||
1313 dXSTARG|5.006000||p
1314 deb_curcv|||
1315 deb_nocontext|||vn
1316 deb_stack_all|||
1317 deb_stack_n|||
1318 debop||5.005000|
1319 debprofdump||5.005000|
1320 debprof|||
1321 debstackptrs||5.007003|
1322 debstack||5.007003|
1323 debug_start_match|||
1324 deb||5.007003|v
1325 defelem_target|||
1326 del_sv|||
1327 delete_eval_scope|||
1328 delimcpy||5.004000|n
1329 deprecate_commaless_var_list|||
1330 despatch_signals||5.007001|
1331 destroy_matcher|||
1332 die_nocontext|||vn
1333 die_sv||5.013001|
1334 die_unwind|||
1335 die|||v
1336 dirp_dup|||
1337 div128|||
1338 djSP|||
1339 do_aexec5|||
1340 do_aexec|||
1341 do_aspawn|||
1342 do_binmode||5.004050|
1343 do_chomp|||
1344 do_close|||
1345 do_delete_local|||
1346 do_dump_pad|||
1347 do_eof|||
1348 do_exec3|||
1349 do_execfree|||
1350 do_exec|||
1351 do_gv_dump||5.006000|
1352 do_gvgv_dump||5.006000|
1353 do_hv_dump||5.006000|
1354 do_ipcctl|||
1355 do_ipcget|||
1356 do_join|||
1357 do_magic_dump||5.006000|
1358 do_msgrcv|||
1359 do_msgsnd|||
1360 do_ncmp|||
1361 do_oddball|||
1362 do_op_dump||5.006000|
1363 do_op_xmldump|||
1364 do_open9||5.006000|
1365 do_openn||5.007001|
1366 do_open||5.004000|
1367 do_pmop_dump||5.006000|
1368 do_pmop_xmldump|||
1369 do_print|||
1370 do_readline|||
1371 do_seek|||
1372 do_semop|||
1373 do_shmio|||
1374 do_smartmatch|||
1375 do_spawn_nowait|||
1376 do_spawn|||
1377 do_sprintf|||
1378 do_sv_dump||5.006000|
1379 do_sysseek|||
1380 do_tell|||
1381 do_trans_complex_utf8|||
1382 do_trans_complex|||
1383 do_trans_count_utf8|||
1384 do_trans_count|||
1385 do_trans_simple_utf8|||
1386 do_trans_simple|||
1387 do_trans|||
1388 do_vecget|||
1389 do_vecset|||
1390 do_vop|||
1391 docatch|||
1392 doeval|||
1393 dofile|||
1394 dofindlabel|||
1395 doform|||
1396 doing_taint||5.008001|n
1397 dooneliner|||
1398 doopen_pm|||
1399 doparseform|||
1400 dopoptoeval|||
1401 dopoptogiven|||
1402 dopoptolabel|||
1403 dopoptoloop|||
1404 dopoptosub_at|||
1405 dopoptowhen|||
1406 doref||5.009003|
1407 dounwind|||
1408 dowantarray|||
1409 dump_all_perl|||
1410 dump_all||5.006000|
1411 dump_eval||5.006000|
1412 dump_exec_pos|||
1413 dump_fds|||
1414 dump_form||5.006000|
1415 dump_indent||5.006000|v
1416 dump_mstats|||
1417 dump_packsubs_perl|||
1418 dump_packsubs||5.006000|
1419 dump_sub_perl|||
1420 dump_sub||5.006000|
1421 dump_sv_child|||
1422 dump_trie_interim_list|||
1423 dump_trie_interim_table|||
1424 dump_trie|||
1425 dump_vindent||5.006000|
1426 dumpuntil|||
1427 dup_attrlist|||
1428 emulate_cop_io|||
1429 eval_pv|5.006000||p
1430 eval_sv|5.006000||p
1431 exec_failed|||
1432 expect_number|||
1433 fbm_compile||5.005000|
1434 fbm_instr||5.005000|
1435 feature_is_enabled|||
1436 filter_add|||
1437 filter_del|||
1438 filter_gets|||
1439 filter_read|||
1440 finalize_optree|||
1441 finalize_op|||
1442 find_and_forget_pmops|||
1443 find_array_subscript|||
1444 find_beginning|||
1445 find_byclass|||
1446 find_hash_subscript|||
1447 find_in_my_stash|||
1448 find_lexical_cv|||
1449 find_runcv_where|||
1450 find_runcv||5.008001|
1451 find_rundefsv2|||
1452 find_rundefsvoffset||5.009002|
1453 find_rundefsv||5.013002|
1454 find_script|||
1455 find_uninit_var|||
1456 first_symbol|||n
1457 foldEQ_latin1||5.013008|n
1458 foldEQ_locale||5.013002|n
1459 foldEQ_utf8_flags||5.013010|
1460 foldEQ_utf8||5.013002|
1461 foldEQ||5.013002|n
1462 fold_constants|||
1463 forbid_setid|||
1464 force_ident_maybe_lex|||
1465 force_ident|||
1466 force_list|||
1467 force_next|||
1468 force_strict_version|||
1469 force_version|||
1470 force_word|||
1471 forget_pmop|||
1472 form_nocontext|||vn
1473 form_short_octal_warning|||
1474 form||5.004000|v
1475 fp_dup|||
1476 fprintf_nocontext|||vn
1477 free_global_struct|||
1478 free_tied_hv_pool|||
1479 free_tmps|||
1480 gen_constant_list|||
1481 get_and_check_backslash_N_name|||
1482 get_aux_mg|||
1483 get_av|5.006000||p
1484 get_context||5.006000|n
1485 get_cvn_flags|5.009005||p
1486 get_cvs|5.011000||p
1487 get_cv|5.006000||p
1488 get_db_sub|||
1489 get_debug_opts|||
1490 get_hash_seed|||
1491 get_hv|5.006000||p
1492 get_invlist_iter_addr|||
1493 get_invlist_offset_addr|||
1494 get_invlist_previous_index_addr|||
1495 get_mstats|||
1496 get_no_modify|||
1497 get_num|||
1498 get_op_descs||5.005000|
1499 get_op_names||5.005000|
1500 get_opargs|||
1501 get_ppaddr||5.006000|
1502 get_re_arg|||
1503 get_sv|5.006000||p
1504 get_vtbl||5.005030|
1505 getcwd_sv||5.007002|
1506 getenv_len|||
1507 glob_2number|||
1508 glob_assign_glob|||
1509 glob_assign_ref|||
1510 gp_dup|||
1511 gp_free|||
1512 gp_ref|||
1513 grok_bin|5.007003||p
1514 grok_bslash_N|||
1515 grok_bslash_c|||
1516 grok_bslash_o|||
1517 grok_bslash_x|||
1518 grok_hex|5.007003||p
1519 grok_number|5.007002||p
1520 grok_numeric_radix|5.007002||p
1521 grok_oct|5.007003||p
1522 group_end|||
1523 gv_AVadd|||
1524 gv_HVadd|||
1525 gv_IOadd|||
1526 gv_SVadd|||
1527 gv_add_by_type||5.011000|
1528 gv_autoload4||5.004000|
1529 gv_autoload_pvn||5.015004|
1530 gv_autoload_pv||5.015004|
1531 gv_autoload_sv||5.015004|
1532 gv_check|||
1533 gv_const_sv||5.009003|
1534 gv_dump||5.006000|
1535 gv_efullname3||5.004000|
1536 gv_efullname4||5.006001|
1537 gv_efullname|||
1538 gv_ename|||
1539 gv_fetchfile_flags||5.009005|
1540 gv_fetchfile|||
1541 gv_fetchmeth_autoload||5.007003|
1542 gv_fetchmeth_pv_autoload||5.015004|
1543 gv_fetchmeth_pvn_autoload||5.015004|
1544 gv_fetchmeth_pvn||5.015004|
1545 gv_fetchmeth_pv||5.015004|
1546 gv_fetchmeth_sv_autoload||5.015004|
1547 gv_fetchmeth_sv||5.015004|
1548 gv_fetchmethod_autoload||5.004000|
1549 gv_fetchmethod_pv_flags||5.015004|
1550 gv_fetchmethod_pvn_flags||5.015004|
1551 gv_fetchmethod_sv_flags||5.015004|
1552 gv_fetchmethod|||
1553 gv_fetchmeth|||
1554 gv_fetchpvn_flags|5.009002||p
1555 gv_fetchpvs|5.009004||p
1556 gv_fetchpv|||
1557 gv_fetchsv|5.009002||p
1558 gv_fullname3||5.004000|
1559 gv_fullname4||5.006001|
1560 gv_fullname|||
1561 gv_handler||5.007001|
1562 gv_init_pvn||5.015004|
1563 gv_init_pv||5.015004|
1564 gv_init_svtype|||
1565 gv_init_sv||5.015004|
1566 gv_init|||
1567 gv_magicalize_isa|||
1568 gv_name_set||5.009004|
1569 gv_stashpvn|5.004000||p
1570 gv_stashpvs|5.009003||p
1571 gv_stashpv|||
1572 gv_stashsv|||
1573 gv_try_downgrade|||
1574 handle_regex_sets|||
1575 he_dup|||
1576 hek_dup|||
1577 hfree_next_entry|||
1578 hfreeentries|||
1579 hsplit|||
1580 hv_assert|||
1581 hv_auxinit|||
1582 hv_backreferences_p|||
1583 hv_clear_placeholders||5.009001|
1584 hv_clear|||
1585 hv_common_key_len||5.010000|
1586 hv_common||5.010000|
1587 hv_copy_hints_hv||5.009004|
1588 hv_delayfree_ent||5.004000|
1589 hv_delete_common|||
1590 hv_delete_ent||5.004000|
1591 hv_delete|||
1592 hv_eiter_p||5.009003|
1593 hv_eiter_set||5.009003|
1594 hv_ename_add|||
1595 hv_ename_delete|||
1596 hv_exists_ent||5.004000|
1597 hv_exists|||
1598 hv_fetch_ent||5.004000|
1599 hv_fetchs|5.009003||p
1600 hv_fetch|||
1601 hv_fill||5.013002|
1602 hv_free_ent_ret|||
1603 hv_free_ent||5.004000|
1604 hv_iterinit|||
1605 hv_iterkeysv||5.004000|
1606 hv_iterkey|||
1607 hv_iternext_flags||5.008000|
1608 hv_iternextsv|||
1609 hv_iternext|||
1610 hv_iterval|||
1611 hv_kill_backrefs|||
1612 hv_ksplit||5.004000|
1613 hv_magic_check|||n
1614 hv_magic|||
1615 hv_name_set||5.009003|
1616 hv_notallowed|||
1617 hv_placeholders_get||5.009003|
1618 hv_placeholders_p|||
1619 hv_placeholders_set||5.009003|
1620 hv_rand_set||5.017011|
1621 hv_riter_p||5.009003|
1622 hv_riter_set||5.009003|
1623 hv_scalar||5.009001|
1624 hv_store_ent||5.004000|
1625 hv_store_flags||5.008000|
1626 hv_stores|5.009004||p
1627 hv_store|||
1628 hv_undef_flags|||
1629 hv_undef|||
1630 ibcmp_locale||5.004000|
1631 ibcmp_utf8||5.007003|
1632 ibcmp|||
1633 incline|||
1634 incpush_if_exists|||
1635 incpush_use_sep|||
1636 incpush|||
1637 ingroup|||
1638 init_argv_symbols|||
1639 init_constants|||
1640 init_dbargs|||
1641 init_debugger|||
1642 init_global_struct|||
1643 init_i18nl10n||5.006000|
1644 init_i18nl14n||5.006000|
1645 init_ids|||
1646 init_interp|||
1647 init_main_stash|||
1648 init_perllib|||
1649 init_postdump_symbols|||
1650 init_predump_symbols|||
1651 init_stacks||5.005000|
1652 init_tm||5.007002|
1653 inplace_aassign|||
1654 instr|||n
1655 intro_my|||
1656 intuit_method|||
1657 intuit_more|||
1658 invert|||
1659 invlist_array|||
1660 invlist_clone|||
1661 invlist_extend|||
1662 invlist_highest|||
1663 invlist_is_iterating|||
1664 invlist_iterfinish|||
1665 invlist_iterinit|||
1666 invlist_iternext|||
1667 invlist_max|||
1668 invlist_previous_index|||
1669 invlist_set_len|||
1670 invlist_set_previous_index|||
1671 invlist_trim|||
1672 invoke_exception_hook|||
1673 io_close|||
1674 isALNUMC|5.006000||p
1675 isALNUM_lazy|||
1676 isALPHANUMERIC||5.017008|
1677 isALPHA|||
1678 isASCII|5.006000|5.006000|p
1679 isBLANK|5.006001||p
1680 isCNTRL|5.006000|5.006000|p
1681 isDIGIT|||
1682 isFOO_lc|||
1683 isFOO_utf8_lc|||
1684 isGRAPH|5.006000||p
1685 isGV_with_GP|5.009004||p
1686 isIDCONT||5.017008|
1687 isIDFIRST_lazy|||
1688 isIDFIRST|||
1689 isLOWER|||
1690 isOCTAL||5.013005|
1691 isPRINT|5.004000||p
1692 isPSXSPC|5.006001||p
1693 isPUNCT|5.006000||p
1694 isSPACE|||
1695 isUPPER|||
1696 isWORDCHAR||5.013006|
1697 isXDIGIT|5.006000||p
1698 is_an_int|||
1699 is_ascii_string||5.011000|n
1700 is_cur_LC_category_utf8|||
1701 is_handle_constructor|||n
1702 is_list_assignment|||
1703 is_lvalue_sub||5.007001|
1704 is_uni_alnum_lc||5.006000|
1705 is_uni_alnumc_lc||5.017007|
1706 is_uni_alnumc||5.017007|
1707 is_uni_alnum||5.006000|
1708 is_uni_alpha_lc||5.006000|
1709 is_uni_alpha||5.006000|
1710 is_uni_ascii_lc||5.006000|
1711 is_uni_ascii||5.006000|
1712 is_uni_blank_lc||5.017002|
1713 is_uni_blank||5.017002|
1714 is_uni_cntrl_lc||5.006000|
1715 is_uni_cntrl||5.006000|
1716 is_uni_digit_lc||5.006000|
1717 is_uni_digit||5.006000|
1718 is_uni_graph_lc||5.006000|
1719 is_uni_graph||5.006000|
1720 is_uni_idfirst_lc||5.006000|
1721 is_uni_idfirst||5.006000|
1722 is_uni_lower_lc||5.006000|
1723 is_uni_lower||5.006000|
1724 is_uni_print_lc||5.006000|
1725 is_uni_print||5.006000|
1726 is_uni_punct_lc||5.006000|
1727 is_uni_punct||5.006000|
1728 is_uni_space_lc||5.006000|
1729 is_uni_space||5.006000|
1730 is_uni_upper_lc||5.006000|
1731 is_uni_upper||5.006000|
1732 is_uni_xdigit_lc||5.006000|
1733 is_uni_xdigit||5.006000|
1734 is_utf8_alnumc||5.017007|
1735 is_utf8_alnum||5.006000|
1736 is_utf8_alpha||5.006000|
1737 is_utf8_ascii||5.006000|
1738 is_utf8_blank||5.017002|
1739 is_utf8_char_buf||5.015008|n
1740 is_utf8_char_slow|||n
1741 is_utf8_char||5.006000|n
1742 is_utf8_cntrl||5.006000|
1743 is_utf8_common|||
1744 is_utf8_digit||5.006000|
1745 is_utf8_graph||5.006000|
1746 is_utf8_idcont||5.008000|
1747 is_utf8_idfirst||5.006000|
1748 is_utf8_lower||5.006000|
1749 is_utf8_mark||5.006000|
1750 is_utf8_perl_space||5.011001|
1751 is_utf8_perl_word||5.011001|
1752 is_utf8_posix_digit||5.011001|
1753 is_utf8_print||5.006000|
1754 is_utf8_punct||5.006000|
1755 is_utf8_space||5.006000|
1756 is_utf8_string_loclen||5.009003|n
1757 is_utf8_string_loc||5.008001|n
1758 is_utf8_string||5.006001|n
1759 is_utf8_upper||5.006000|
1760 is_utf8_xdigit||5.006000|
1761 is_utf8_xidcont||5.013010|
1762 is_utf8_xidfirst||5.013010|
1763 isa_lookup|||
1764 items|||n
1765 ix|||n
1766 jmaybe|||
1767 join_exact|||
1768 keyword_plugin_standard|||
1769 keyword|||
1770 leave_scope|||
1771 lex_bufutf8||5.011002|
1772 lex_discard_to||5.011002|
1773 lex_grow_linestr||5.011002|
1774 lex_next_chunk||5.011002|
1775 lex_peek_unichar||5.011002|
1776 lex_read_space||5.011002|
1777 lex_read_to||5.011002|
1778 lex_read_unichar||5.011002|
1779 lex_start||5.009005|
1780 lex_stuff_pvn||5.011002|
1781 lex_stuff_pvs||5.013005|
1782 lex_stuff_pv||5.013006|
1783 lex_stuff_sv||5.011002|
1784 lex_unstuff||5.011002|
1785 listkids|||
1786 list|||
1787 load_module_nocontext|||vn
1788 load_module|5.006000||pv
1789 localize|||
1790 looks_like_bool|||
1791 looks_like_number|||
1792 lop|||
1793 mPUSHi|5.009002||p
1794 mPUSHn|5.009002||p
1795 mPUSHp|5.009002||p
1796 mPUSHs|5.010001||p
1797 mPUSHu|5.009002||p
1798 mXPUSHi|5.009002||p
1799 mXPUSHn|5.009002||p
1800 mXPUSHp|5.009002||p
1801 mXPUSHs|5.010001||p
1802 mXPUSHu|5.009002||p
1803 mad_free|||
1804 madlex|||
1805 madparse|||
1806 magic_clear_all_env|||
1807 magic_cleararylen_p|||
1808 magic_clearenv|||
1809 magic_clearhints|||
1810 magic_clearhint|||
1811 magic_clearisa|||
1812 magic_clearpack|||
1813 magic_clearsig|||
1814 magic_copycallchecker|||
1815 magic_dump||5.006000|
1816 magic_existspack|||
1817 magic_freearylen_p|||
1818 magic_freeovrld|||
1819 magic_getarylen|||
1820 magic_getdefelem|||
1821 magic_getnkeys|||
1822 magic_getpack|||
1823 magic_getpos|||
1824 magic_getsig|||
1825 magic_getsubstr|||
1826 magic_gettaint|||
1827 magic_getuvar|||
1828 magic_getvec|||
1829 magic_get|||
1830 magic_killbackrefs|||
1831 magic_methcall1|||
1832 magic_methcall|||v
1833 magic_methpack|||
1834 magic_nextpack|||
1835 magic_regdata_cnt|||
1836 magic_regdatum_get|||
1837 magic_regdatum_set|||
1838 magic_scalarpack|||
1839 magic_set_all_env|||
1840 magic_setarylen|||
1841 magic_setcollxfrm|||
1842 magic_setdbline|||
1843 magic_setdefelem|||
1844 magic_setenv|||
1845 magic_sethint|||
1846 magic_setisa|||
1847 magic_setmglob|||
1848 magic_setnkeys|||
1849 magic_setpack|||
1850 magic_setpos|||
1851 magic_setregexp|||
1852 magic_setsig|||
1853 magic_setsubstr|||
1854 magic_settaint|||
1855 magic_setutf8|||
1856 magic_setuvar|||
1857 magic_setvec|||
1858 magic_set|||
1859 magic_sizepack|||
1860 magic_wipepack|||
1861 make_matcher|||
1862 make_trie_failtable|||
1863 make_trie|||
1864 malloc_good_size|||n
1865 malloced_size|||n
1866 malloc||5.007002|n
1867 markstack_grow|||
1868 matcher_matches_sv|||
1869 mayberelocate|||
1870 measure_struct|||
1871 memEQs|5.009005||p
1872 memEQ|5.004000||p
1873 memNEs|5.009005||p
1874 memNE|5.004000||p
1875 mem_collxfrm|||
1876 mem_log_common|||n
1877 mess_alloc|||
1878 mess_nocontext|||vn
1879 mess_sv||5.013001|
1880 mess||5.006000|v
1881 method_common|||
1882 mfree||5.007002|n
1883 mg_clear|||
1884 mg_copy|||
1885 mg_dup|||
1886 mg_find_mglob|||
1887 mg_findext||5.013008|
1888 mg_find|||
1889 mg_free_type||5.013006|
1890 mg_free|||
1891 mg_get|||
1892 mg_length||5.005000|
1893 mg_localize|||
1894 mg_magical|||
1895 mg_set|||
1896 mg_size||5.005000|
1897 mini_mktime||5.007002|
1898 minus_v|||
1899 missingterm|||
1900 mode_from_discipline|||
1901 modkids|||
1902 more_bodies|||
1903 more_sv|||
1904 moreswitches|||
1905 mro_clean_isarev|||
1906 mro_gather_and_rename|||
1907 mro_get_from_name||5.010001|
1908 mro_get_linear_isa_dfs|||
1909 mro_get_linear_isa||5.009005|
1910 mro_get_private_data||5.010001|
1911 mro_isa_changed_in|||
1912 mro_meta_dup|||
1913 mro_meta_init|||
1914 mro_method_changed_in||5.009005|
1915 mro_package_moved|||
1916 mro_register||5.010001|
1917 mro_set_mro||5.010001|
1918 mro_set_private_data||5.010001|
1919 mul128|||
1920 mulexp10|||n
1921 my_atof2||5.007002|
1922 my_atof||5.006000|
1923 my_attrs|||
1924 my_bcopy|||n
1925 my_bzero|||n
1926 my_chsize|||
1927 my_clearenv|||
1928 my_cxt_index|||
1929 my_cxt_init|||
1930 my_dirfd||5.009005|
1931 my_exit_jump|||
1932 my_exit|||
1933 my_failure_exit||5.004000|
1934 my_fflush_all||5.006000|
1935 my_fork||5.007003|n
1936 my_kid|||
1937 my_lstat_flags|||
1938 my_lstat||5.019003|
1939 my_memcmp|||n
1940 my_memset||5.004000|n
1941 my_pclose||5.004000|
1942 my_popen_list||5.007001|
1943 my_popen||5.004000|
1944 my_setenv|||
1945 my_snprintf|5.009004||pvn
1946 my_socketpair||5.007003|n
1947 my_sprintf|5.009003||pvn
1948 my_stat_flags|||
1949 my_stat||5.019003|
1950 my_strftime||5.007002|
1951 my_strlcat|5.009004||pn
1952 my_strlcpy|5.009004||pn
1953 my_unexec|||
1954 my_vsnprintf||5.009004|n
1955 need_utf8|||n
1956 newANONATTRSUB||5.006000|
1957 newANONHASH|||
1958 newANONLIST|||
1959 newANONSUB|||
1960 newASSIGNOP|||
1961 newATTRSUB_flags|||
1962 newATTRSUB||5.006000|
1963 newAVREF|||
1964 newAV|||
1965 newBINOP|||
1966 newCONDOP|||
1967 newCONSTSUB_flags||5.015006|
1968 newCONSTSUB|5.004050||p
1969 newCVREF|||
1970 newDEFSVOP|||
1971 newFORM|||
1972 newFOROP||5.013007|
1973 newGIVENOP||5.009003|
1974 newGIVWHENOP|||
1975 newGP|||
1976 newGVOP|||
1977 newGVREF|||
1978 newGVgen_flags||5.015004|
1979 newGVgen|||
1980 newHVREF|||
1981 newHVhv||5.005000|
1982 newHV|||
1983 newIO|||
1984 newLISTOP|||
1985 newLOGOP|||
1986 newLOOPEX|||
1987 newLOOPOP|||
1988 newMADPROP|||
1989 newMADsv|||
1990 newMYSUB||5.017004|
1991 newNULLLIST|||
1992 newOP|||
1993 newPADOP|||
1994 newPMOP|||
1995 newPROG|||
1996 newPVOP|||
1997 newRANGE|||
1998 newRV_inc|5.004000||p
1999 newRV_noinc|5.004000||p
2000 newRV|||
2001 newSLICEOP|||
2002 newSTATEOP|||
2003 newSTUB|||
2004 newSUB|||
2005 newSVOP|||
2006 newSVREF|||
2007 newSV_type|5.009005||p
2008 newSVhek||5.009003|
2009 newSViv|||
2010 newSVnv|||
2011 newSVpadname||5.017004|
2012 newSVpv_share||5.013006|
2013 newSVpvf_nocontext|||vn
2014 newSVpvf||5.004000|v
2015 newSVpvn_flags|5.010001||p
2016 newSVpvn_share|5.007001||p
2017 newSVpvn_utf8|5.010001||p
2018 newSVpvn|5.004050||p
2019 newSVpvs_flags|5.010001||p
2020 newSVpvs_share|5.009003||p
2021 newSVpvs|5.009003||p
2022 newSVpv|||
2023 newSVrv|||
2024 newSVsv|||
2025 newSVuv|5.006000||p
2026 newSV|||
2027 newTOKEN|||
2028 newUNOP|||
2029 newWHENOP||5.009003|
2030 newWHILEOP||5.013007|
2031 newXS_flags||5.009004|
2032 newXS_len_flags|||
2033 newXSproto||5.006000|
2034 newXS||5.006000|
2035 new_collate||5.006000|
2036 new_constant|||
2037 new_ctype||5.006000|
2038 new_he|||
2039 new_logop|||
2040 new_numeric||5.006000|
2041 new_stackinfo||5.005000|
2042 new_version||5.009000|
2043 new_warnings_bitfield|||
2044 next_symbol|||
2045 nextargv|||
2046 nextchar|||
2047 ninstr|||n
2048 no_bareword_allowed|||
2049 no_fh_allowed|||
2050 no_op|||
2051 not_a_number|||
2052 not_incrementable|||
2053 nothreadhook||5.008000|
2054 nuke_stacks|||
2055 num_overflow|||n
2056 oopsAV|||
2057 oopsHV|||
2058 op_append_elem||5.013006|
2059 op_append_list||5.013006|
2060 op_clear|||
2061 op_const_sv|||
2062 op_contextualize||5.013006|
2063 op_dump||5.006000|
2064 op_free|||
2065 op_getmad_weak|||
2066 op_getmad|||
2067 op_integerize|||
2068 op_linklist||5.013006|
2069 op_lvalue_flags|||
2070 op_lvalue||5.013007|
2071 op_null||5.007002|
2072 op_prepend_elem||5.013006|
2073 op_refcnt_dec|||
2074 op_refcnt_inc|||
2075 op_refcnt_lock||5.009002|
2076 op_refcnt_unlock||5.009002|
2077 op_scope||5.013007|
2078 op_std_init|||
2079 op_unscope|||
2080 op_xmldump|||
2081 open_script|||
2082 opslab_force_free|||
2083 opslab_free_nopad|||
2084 opslab_free|||
2085 pMY_CXT_|5.007003||p
2086 pMY_CXT|5.007003||p
2087 pTHX_|5.006000||p
2088 pTHX|5.006000||p
2089 packWARN|5.007003||p
2090 pack_cat||5.007003|
2091 pack_rec|||
2092 package_version|||
2093 package|||
2094 packlist||5.008001|
2095 pad_add_anon||5.008001|
2096 pad_add_name_pvn||5.015001|
2097 pad_add_name_pvs||5.015001|
2098 pad_add_name_pv||5.015001|
2099 pad_add_name_sv||5.015001|
2100 pad_alloc_name|||
2101 pad_alloc|||
2102 pad_block_start|||
2103 pad_check_dup|||
2104 pad_compname_type||5.009003|
2105 pad_findlex|||
2106 pad_findmy_pvn||5.015001|
2107 pad_findmy_pvs||5.015001|
2108 pad_findmy_pv||5.015001|
2109 pad_findmy_sv||5.015001|
2110 pad_fixup_inner_anons|||
2111 pad_free|||
2112 pad_leavemy|||
2113 pad_new||5.008001|
2114 pad_peg|||n
2115 pad_push|||
2116 pad_reset|||
2117 pad_setsv|||
2118 pad_sv|||
2119 pad_swipe|||
2120 pad_tidy||5.008001|
2121 padlist_dup|||
2122 padlist_store|||
2123 parse_arithexpr||5.013008|
2124 parse_barestmt||5.013007|
2125 parse_block||5.013007|
2126 parse_body|||
2127 parse_fullexpr||5.013008|
2128 parse_fullstmt||5.013005|
2129 parse_ident|||
2130 parse_label||5.013007|
2131 parse_listexpr||5.013008|
2132 parse_lparen_question_flags|||
2133 parse_stmtseq||5.013006|
2134 parse_termexpr||5.013008|
2135 parse_unicode_opts|||
2136 parser_dup|||
2137 parser_free_nexttoke_ops|||
2138 parser_free|||
2139 path_is_searchable|||n
2140 peep|||
2141 pending_ident|||
2142 perl_alloc_using|||n
2143 perl_alloc|||n
2144 perl_clone_using|||n
2145 perl_clone|||n
2146 perl_construct|||n
2147 perl_destruct||5.007003|n
2148 perl_free|||n
2149 perl_parse||5.006000|n
2150 perl_run|||n
2151 pidgone|||
2152 pm_description|||
2153 pmop_dump||5.006000|
2154 pmop_xmldump|||
2155 pmruntime|||
2156 pmtrans|||
2157 pop_scope|||
2158 populate_isa|||v
2159 pregcomp||5.009005|
2160 pregexec|||
2161 pregfree2||5.011000|
2162 pregfree|||
2163 prepend_madprops|||
2164 prescan_version||5.011004|
2165 printbuf|||
2166 printf_nocontext|||vn
2167 process_special_blocks|||
2168 ptr_hash|||n
2169 ptr_table_clear||5.009005|
2170 ptr_table_fetch||5.009005|
2171 ptr_table_find|||n
2172 ptr_table_free||5.009005|
2173 ptr_table_new||5.009005|
2174 ptr_table_split||5.009005|
2175 ptr_table_store||5.009005|
2176 push_scope|||
2177 put_byte|||
2178 put_latin1_charclass_innards|||
2179 pv_display|5.006000||p
2180 pv_escape|5.009004||p
2181 pv_pretty|5.009004||p
2182 pv_uni_display||5.007003|
2183 qerror|||
2184 qsortsvu|||
2185 re_compile||5.009005|
2186 re_croak2|||
2187 re_dup_guts|||
2188 re_intuit_start||5.019001|
2189 re_intuit_string||5.006000|
2190 re_op_compile|||
2191 readpipe_override|||
2192 realloc||5.007002|n
2193 reentrant_free||5.019003|
2194 reentrant_init||5.019003|
2195 reentrant_retry||5.019003|vn
2196 reentrant_size||5.019003|
2197 ref_array_or_hash|||
2198 refcounted_he_chain_2hv|||
2199 refcounted_he_fetch_pvn|||
2200 refcounted_he_fetch_pvs|||
2201 refcounted_he_fetch_pv|||
2202 refcounted_he_fetch_sv|||
2203 refcounted_he_free|||
2204 refcounted_he_inc|||
2205 refcounted_he_new_pvn|||
2206 refcounted_he_new_pvs|||
2207 refcounted_he_new_pv|||
2208 refcounted_he_new_sv|||
2209 refcounted_he_value|||
2210 refkids|||
2211 refto|||
2212 ref||5.019003|
2213 reg_check_named_buff_matched|||
2214 reg_named_buff_all||5.009005|
2215 reg_named_buff_exists||5.009005|
2216 reg_named_buff_fetch||5.009005|
2217 reg_named_buff_firstkey||5.009005|
2218 reg_named_buff_iter|||
2219 reg_named_buff_nextkey||5.009005|
2220 reg_named_buff_scalar||5.009005|
2221 reg_named_buff|||
2222 reg_node|||
2223 reg_numbered_buff_fetch|||
2224 reg_numbered_buff_length|||
2225 reg_numbered_buff_store|||
2226 reg_qr_package|||
2227 reg_recode|||
2228 reg_scan_name|||
2229 reg_skipcomment|||
2230 reg_temp_copy|||
2231 reganode|||
2232 regatom|||
2233 regbranch|||
2234 regclass_swash||5.009004|
2235 regclass|||
2236 regcppop|||
2237 regcppush|||
2238 regcurly|||
2239 regdump_extflags|||
2240 regdump_intflags|||
2241 regdump||5.005000|
2242 regdupe_internal|||
2243 regexec_flags||5.005000|
2244 regfree_internal||5.009005|
2245 reghop3|||n
2246 reghop4|||n
2247 reghopmaybe3|||n
2248 reginclass|||
2249 reginitcolors||5.006000|
2250 reginsert|||
2251 regmatch|||
2252 regnext||5.005000|
2253 regpatws|||n
2254 regpiece|||
2255 regpposixcc|||
2256 regprop|||
2257 regrepeat|||
2258 regtail_study|||
2259 regtail|||
2260 regtry|||
2261 reguni|||
2262 regwhite|||n
2263 reg|||
2264 repeatcpy|||n
2265 report_evil_fh|||
2266 report_redefined_cv|||
2267 report_uninit|||
2268 report_wrongway_fh|||
2269 require_pv||5.006000|
2270 require_tie_mod|||
2271 restore_magic|||
2272 rninstr|||n
2273 rpeep|||
2274 rsignal_restore|||
2275 rsignal_save|||
2276 rsignal_state||5.004000|
2277 rsignal||5.004000|
2278 run_body|||
2279 run_user_filter|||
2280 runops_debug||5.005000|
2281 runops_standard||5.005000|
2282 rv2cv_op_cv||5.013006|
2283 rvpv_dup|||
2284 rxres_free|||
2285 rxres_restore|||
2286 rxres_save|||
2287 safesyscalloc||5.006000|n
2288 safesysfree||5.006000|n
2289 safesysmalloc||5.006000|n
2290 safesysrealloc||5.006000|n
2291 same_dirent|||
2292 save_I16||5.004000|
2293 save_I32|||
2294 save_I8||5.006000|
2295 save_adelete||5.011000|
2296 save_aelem_flags||5.011000|
2297 save_aelem||5.004050|
2298 save_alloc||5.006000|
2299 save_aptr|||
2300 save_ary|||
2301 save_bool||5.008001|
2302 save_clearsv|||
2303 save_delete|||
2304 save_destructor_x||5.006000|
2305 save_destructor||5.006000|
2306 save_freeop|||
2307 save_freepv|||
2308 save_freesv|||
2309 save_generic_pvref||5.006001|
2310 save_generic_svref||5.005030|
2311 save_gp||5.004000|
2312 save_hash|||
2313 save_hdelete||5.011000|
2314 save_hek_flags|||n
2315 save_helem_flags||5.011000|
2316 save_helem||5.004050|
2317 save_hints||5.010001|
2318 save_hptr|||
2319 save_int|||
2320 save_item|||
2321 save_iv||5.005000|
2322 save_lines|||
2323 save_list|||
2324 save_long|||
2325 save_magic_flags|||
2326 save_mortalizesv||5.007001|
2327 save_nogv|||
2328 save_op||5.005000|
2329 save_padsv_and_mortalize||5.010001|
2330 save_pptr|||
2331 save_pushi32ptr||5.010001|
2332 save_pushptri32ptr|||
2333 save_pushptrptr||5.010001|
2334 save_pushptr||5.010001|
2335 save_re_context||5.006000|
2336 save_scalar_at|||
2337 save_scalar|||
2338 save_set_svflags||5.009000|
2339 save_shared_pvref||5.007003|
2340 save_sptr|||
2341 save_svref|||
2342 save_vptr||5.006000|
2343 savepvn|||
2344 savepvs||5.009003|
2345 savepv|||
2346 savesharedpvn||5.009005|
2347 savesharedpvs||5.013006|
2348 savesharedpv||5.007003|
2349 savesharedsvpv||5.013006|
2350 savestack_grow_cnt||5.008001|
2351 savestack_grow|||
2352 savesvpv||5.009002|
2353 sawparens|||
2354 scalar_mod_type|||n
2355 scalarboolean|||
2356 scalarkids|||
2357 scalarseq|||
2358 scalarvoid|||
2359 scalar|||
2360 scan_bin||5.006000|
2361 scan_commit|||
2362 scan_const|||
2363 scan_formline|||
2364 scan_heredoc|||
2365 scan_hex|||
2366 scan_ident|||
2367 scan_inputsymbol|||
2368 scan_num||5.007001|
2369 scan_oct|||
2370 scan_pat|||
2371 scan_str|||
2372 scan_subst|||
2373 scan_trans|||
2374 scan_version||5.009001|
2375 scan_vstring||5.009005|
2376 scan_word|||
2377 screaminstr||5.005000|
2378 search_const|||
2379 seed||5.008001|
2380 sequence_num|||
2381 set_context||5.006000|n
2382 set_numeric_local||5.006000|
2383 set_numeric_radix||5.006000|
2384 set_numeric_standard||5.006000|
2385 setdefout|||
2386 share_hek_flags|||
2387 share_hek||5.004000|
2388 si_dup|||
2389 sighandler|||n
2390 simplify_sort|||
2391 skipspace0|||
2392 skipspace1|||
2393 skipspace2|||
2394 skipspace_flags|||
2395 softref2xv|||
2396 sortcv_stacked|||
2397 sortcv_xsub|||
2398 sortcv|||
2399 sortsv_flags||5.009003|
2400 sortsv||5.007003|
2401 space_join_names_mortal|||
2402 ss_dup|||
2403 stack_grow|||
2404 start_force|||
2405 start_glob|||
2406 start_subparse||5.004000|
2407 stdize_locale|||
2408 strEQ|||
2409 strGE|||
2410 strGT|||
2411 strLE|||
2412 strLT|||
2413 strNE|||
2414 str_to_version||5.006000|
2415 strip_return|||
2416 strnEQ|||
2417 strnNE|||
2418 study_chunk|||
2419 sub_crush_depth|||
2420 sublex_done|||
2421 sublex_push|||
2422 sublex_start|||
2423 sv_2bool_flags||5.013006|
2424 sv_2bool|||
2425 sv_2cv|||
2426 sv_2io|||
2427 sv_2iuv_common|||
2428 sv_2iuv_non_preserve|||
2429 sv_2iv_flags||5.009001|
2430 sv_2iv|||
2431 sv_2mortal|||
2432 sv_2num|||
2433 sv_2nv_flags||5.013001|
2434 sv_2pv_flags|5.007002||p
2435 sv_2pv_nolen|5.006000||p
2436 sv_2pvbyte_nolen|5.006000||p
2437 sv_2pvbyte|5.006000||p
2438 sv_2pvutf8_nolen||5.006000|
2439 sv_2pvutf8||5.006000|
2440 sv_2pv|||
2441 sv_2uv_flags||5.009001|
2442 sv_2uv|5.004000||p
2443 sv_add_arena|||
2444 sv_add_backref|||
2445 sv_backoff|||
2446 sv_bless|||
2447 sv_cat_decode||5.008001|
2448 sv_catpv_flags||5.013006|
2449 sv_catpv_mg|5.004050||p
2450 sv_catpv_nomg||5.013006|
2451 sv_catpvf_mg_nocontext|||pvn
2452 sv_catpvf_mg|5.006000|5.004000|pv
2453 sv_catpvf_nocontext|||vn
2454 sv_catpvf||5.004000|v
2455 sv_catpvn_flags||5.007002|
2456 sv_catpvn_mg|5.004050||p
2457 sv_catpvn_nomg|5.007002||p
2458 sv_catpvn|||
2459 sv_catpvs_flags||5.013006|
2460 sv_catpvs_mg||5.013006|
2461 sv_catpvs_nomg||5.013006|
2462 sv_catpvs|5.009003||p
2463 sv_catpv|||
2464 sv_catsv_flags||5.007002|
2465 sv_catsv_mg|5.004050||p
2466 sv_catsv_nomg|5.007002||p
2467 sv_catsv|||
2468 sv_catxmlpvn|||
2469 sv_catxmlpv|||
2470 sv_catxmlsv|||
2471 sv_chop|||
2472 sv_clean_all|||
2473 sv_clean_objs|||
2474 sv_clear|||
2475 sv_cmp_flags||5.013006|
2476 sv_cmp_locale_flags||5.013006|
2477 sv_cmp_locale||5.004000|
2478 sv_cmp|||
2479 sv_collxfrm_flags||5.013006|
2480 sv_collxfrm|||
2481 sv_copypv_flags||5.017002|
2482 sv_copypv_nomg||5.017002|
2483 sv_copypv|||
2484 sv_dec_nomg||5.013002|
2485 sv_dec|||
2486 sv_del_backref|||
2487 sv_derived_from_pvn||5.015004|
2488 sv_derived_from_pv||5.015004|
2489 sv_derived_from_sv||5.015004|
2490 sv_derived_from||5.004000|
2491 sv_destroyable||5.010000|
2492 sv_display|||
2493 sv_does_pvn||5.015004|
2494 sv_does_pv||5.015004|
2495 sv_does_sv||5.015004|
2496 sv_does||5.009004|
2497 sv_dump|||
2498 sv_dup_common|||
2499 sv_dup_inc_multiple|||
2500 sv_dup_inc|||
2501 sv_dup|||
2502 sv_eq_flags||5.013006|
2503 sv_eq|||
2504 sv_exp_grow|||
2505 sv_force_normal_flags||5.007001|
2506 sv_force_normal||5.006000|
2507 sv_free2|||
2508 sv_free_arenas|||
2509 sv_free|||
2510 sv_gets||5.004000|
2511 sv_grow|||
2512 sv_i_ncmp|||
2513 sv_inc_nomg||5.013002|
2514 sv_inc|||
2515 sv_insert_flags||5.010001|
2516 sv_insert|||
2517 sv_isa|||
2518 sv_isobject|||
2519 sv_iv||5.005000|
2520 sv_kill_backrefs|||
2521 sv_len_utf8_nomg|||
2522 sv_len_utf8||5.006000|
2523 sv_len|||
2524 sv_magic_portable|5.019003|5.004000|p
2525 sv_magicext_mglob|||
2526 sv_magicext||5.007003|
2527 sv_magic|||
2528 sv_mortalcopy_flags|||
2529 sv_mortalcopy|||
2530 sv_ncmp|||
2531 sv_newmortal|||
2532 sv_newref|||
2533 sv_nolocking||5.007003|
2534 sv_nosharing||5.007003|
2535 sv_nounlocking|||
2536 sv_nv||5.005000|
2537 sv_peek||5.005000|
2538 sv_pos_b2u_flags||5.019003|
2539 sv_pos_b2u_midway|||
2540 sv_pos_b2u||5.006000|
2541 sv_pos_u2b_cached|||
2542 sv_pos_u2b_flags||5.011005|
2543 sv_pos_u2b_forwards|||n
2544 sv_pos_u2b_midway|||n
2545 sv_pos_u2b||5.006000|
2546 sv_pvbyten_force||5.006000|
2547 sv_pvbyten||5.006000|
2548 sv_pvbyte||5.006000|
2549 sv_pvn_force_flags|5.007002||p
2550 sv_pvn_force|||
2551 sv_pvn_nomg|5.007003|5.005000|p
2552 sv_pvn||5.005000|
2553 sv_pvutf8n_force||5.006000|
2554 sv_pvutf8n||5.006000|
2555 sv_pvutf8||5.006000|
2556 sv_pv||5.006000|
2557 sv_recode_to_utf8||5.007003|
2558 sv_reftype|||
2559 sv_ref|||
2560 sv_release_COW|||
2561 sv_replace|||
2562 sv_report_used|||
2563 sv_resetpvn|||
2564 sv_reset|||
2565 sv_rvweaken||5.006000|
2566 sv_sethek|||
2567 sv_setiv_mg|5.004050||p
2568 sv_setiv|||
2569 sv_setnv_mg|5.006000||p
2570 sv_setnv|||
2571 sv_setpv_mg|5.004050||p
2572 sv_setpvf_mg_nocontext|||pvn
2573 sv_setpvf_mg|5.006000|5.004000|pv
2574 sv_setpvf_nocontext|||vn
2575 sv_setpvf||5.004000|v
2576 sv_setpviv_mg||5.008001|
2577 sv_setpviv||5.008001|
2578 sv_setpvn_mg|5.004050||p
2579 sv_setpvn|||
2580 sv_setpvs_mg||5.013006|
2581 sv_setpvs|5.009004||p
2582 sv_setpv|||
2583 sv_setref_iv|||
2584 sv_setref_nv|||
2585 sv_setref_pvn|||
2586 sv_setref_pvs||5.019003|
2587 sv_setref_pv|||
2588 sv_setref_uv||5.007001|
2589 sv_setsv_cow|||
2590 sv_setsv_flags||5.007002|
2591 sv_setsv_mg|5.004050||p
2592 sv_setsv_nomg|5.007002||p
2593 sv_setsv|||
2594 sv_setuv_mg|5.004050||p
2595 sv_setuv|5.004000||p
2596 sv_tainted||5.004000|
2597 sv_taint||5.004000|
2598 sv_true||5.005000|
2599 sv_unglob|||
2600 sv_uni_display||5.007003|
2601 sv_unmagicext||5.013008|
2602 sv_unmagic|||
2603 sv_unref_flags||5.007001|
2604 sv_unref|||
2605 sv_untaint||5.004000|
2606 sv_upgrade|||
2607 sv_usepvn_flags||5.009004|
2608 sv_usepvn_mg|5.004050||p
2609 sv_usepvn|||
2610 sv_utf8_decode||5.006000|
2611 sv_utf8_downgrade||5.006000|
2612 sv_utf8_encode||5.006000|
2613 sv_utf8_upgrade_flags_grow||5.011000|
2614 sv_utf8_upgrade_flags||5.007002|
2615 sv_utf8_upgrade_nomg||5.007002|
2616 sv_utf8_upgrade||5.007001|
2617 sv_uv|5.005000||p
2618 sv_vcatpvf_mg|5.006000|5.004000|p
2619 sv_vcatpvfn_flags||5.017002|
2620 sv_vcatpvfn||5.004000|
2621 sv_vcatpvf|5.006000|5.004000|p
2622 sv_vsetpvf_mg|5.006000|5.004000|p
2623 sv_vsetpvfn||5.004000|
2624 sv_vsetpvf|5.006000|5.004000|p
2625 sv_xmlpeek|||
2626 svtype|||
2627 swallow_bom|||
2628 swash_fetch||5.007002|
2629 swash_init||5.006000|
2630 swatch_get|||
2631 sys_init3||5.010000|n
2632 sys_init||5.010000|n
2633 sys_intern_clear|||
2634 sys_intern_dup|||
2635 sys_intern_init|||
2636 sys_term||5.010000|n
2637 taint_env|||
2638 taint_proper|||
2639 tied_method|||v
2640 tmps_grow||5.006000|
2641 toFOLD_uni||5.007003|
2642 toFOLD_utf8||5.019001|
2643 toFOLD||5.019001|
2644 toLOWER_L1||5.019001|
2645 toLOWER_LC||5.004000|
2646 toLOWER_uni||5.007003|
2647 toLOWER_utf8||5.015007|
2648 toLOWER|||
2649 toTITLE_uni||5.007003|
2650 toTITLE_utf8||5.015007|
2651 toTITLE||5.019001|
2652 toUPPER_uni||5.007003|
2653 toUPPER_utf8||5.015007|
2654 toUPPER||5.004000|
2655 to_byte_substr|||
2656 to_lower_latin1|||
2657 to_uni_fold||5.007003|
2658 to_uni_lower_lc||5.006000|
2659 to_uni_lower||5.007003|
2660 to_uni_title_lc||5.006000|
2661 to_uni_title||5.007003|
2662 to_uni_upper_lc||5.006000|
2663 to_uni_upper||5.007003|
2664 to_utf8_case||5.007003|
2665 to_utf8_fold||5.015007|
2666 to_utf8_lower||5.015007|
2667 to_utf8_substr|||
2668 to_utf8_title||5.015007|
2669 to_utf8_upper||5.015007|
2670 token_free|||
2671 token_getmad|||
2672 tokenize_use|||
2673 tokeq|||
2674 tokereport|||
2675 too_few_arguments_pv|||
2676 too_few_arguments_sv|||
2677 too_many_arguments_pv|||
2678 too_many_arguments_sv|||
2679 translate_substr_offsets|||
2680 try_amagic_bin|||
2681 try_amagic_un|||
2682 uiv_2buf|||n
2683 unlnk|||
2684 unpack_rec|||
2685 unpack_str||5.007003|
2686 unpackstring||5.008001|
2687 unreferenced_to_tmp_stack|||
2688 unshare_hek_or_pvn|||
2689 unshare_hek|||
2690 unsharepvn||5.004000|
2691 unwind_handler_stack|||
2692 update_debugger_info|||
2693 upg_version||5.009005|
2694 usage|||
2695 utf16_textfilter|||
2696 utf16_to_utf8_reversed||5.006001|
2697 utf16_to_utf8||5.006001|
2698 utf8_distance||5.006000|
2699 utf8_hop||5.006000|
2700 utf8_length||5.007001|
2701 utf8_mg_len_cache_update|||
2702 utf8_mg_pos_cache_update|||
2703 utf8_to_bytes||5.006001|
2704 utf8_to_uvchr_buf||5.015009|
2705 utf8_to_uvchr||5.007001|
2706 utf8_to_uvuni_buf||5.015009|
2707 utf8_to_uvuni||5.007001|
2708 utf8n_to_uvchr|||
2709 utf8n_to_uvuni||5.007001|
2710 utilize|||
2711 uvchr_to_utf8_flags||5.007003|
2712 uvchr_to_utf8|||
2713 uvuni_to_utf8_flags||5.007003|
2714 uvuni_to_utf8||5.007001|
2715 valid_utf8_to_uvchr|||
2716 valid_utf8_to_uvuni||5.015009|
2717 validate_proto|||
2718 validate_suid|||
2719 varname|||
2720 vcmp||5.009000|
2721 vcroak||5.006000|
2722 vdeb||5.007003|
2723 vform||5.006000|
2724 visit|||
2725 vivify_defelem|||
2726 vivify_ref|||
2727 vload_module|5.006000||p
2728 vmess||5.006000|
2729 vnewSVpvf|5.006000|5.004000|p
2730 vnormal||5.009002|
2731 vnumify||5.009000|
2732 vstringify||5.009000|
2733 vverify||5.009003|
2734 vwarner||5.006000|
2735 vwarn||5.006000|
2736 wait4pid|||
2737 warn_nocontext|||vn
2738 warn_sv||5.013001|
2739 warner_nocontext|||vn
2740 warner|5.006000|5.004000|pv
2741 warn|||v
2742 was_lvalue_sub|||
2743 watch|||
2744 whichsig_pvn||5.015004|
2745 whichsig_pv||5.015004|
2746 whichsig_sv||5.015004|
2747 whichsig|||
2748 win32_croak_not_implemented|||n
2749 with_queued_errors|||
2750 wrap_op_checker||5.015008|
2751 write_to_stderr|||
2752 xmldump_all_perl|||
2753 xmldump_all|||
2754 xmldump_attr|||
2755 xmldump_eval|||
2756 xmldump_form|||
2757 xmldump_indent|||v
2758 xmldump_packsubs_perl|||
2759 xmldump_packsubs|||
2760 xmldump_sub_perl|||
2761 xmldump_sub|||
2762 xmldump_vindent|||
2763 xs_apiversion_bootcheck|||
2764 xs_version_bootcheck|||
2765 yyerror_pvn|||
2766 yyerror_pv|||
2767 yyerror|||
2768 yylex|||
2769 yyparse|||
2770 yyunlex|||
2771 yywarn|||
2772 );
2773
2774 if (exists $opt{'list-unsupported'}) {
2775   my $f;
2776   for $f (sort { lc $a cmp lc $b } keys %API) {
2777     next unless $API{$f}{todo};
2778     print "$f ", '.'x(40-length($f)), " ", format_version($API{$f}{todo}), "\n";
2779   }
2780   exit 0;
2781 }
2782
2783 # Scan for possible replacement candidates
2784
2785 my(%replace, %need, %hints, %warnings, %depends);
2786 my $replace = 0;
2787 my($hint, $define, $function);
2788
2789 sub find_api
2790 {
2791   my $code = shift;
2792   $code =~ s{
2793     / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
2794   | "[^"\\]*(?:\\.[^"\\]*)*"
2795   | '[^'\\]*(?:\\.[^'\\]*)*' }{}egsx;
2796   grep { exists $API{$_} } $code =~ /(\w+)/mg;
2797 }
2798
2799 while (<DATA>) {
2800   if ($hint) {
2801     my $h = $hint->[0] eq 'Hint' ? \%hints : \%warnings;
2802     if (m{^\s*\*\s(.*?)\s*$}) {
2803       for (@{$hint->[1]}) {
2804         $h->{$_} ||= '';  # suppress warning with older perls
2805         $h->{$_} .= "$1\n";
2806       }
2807     }
2808     else { undef $hint }
2809   }
2810
2811   $hint = [$1, [split /,?\s+/, $2]]
2812       if m{^\s*$rccs\s+(Hint|Warning):\s+(\w+(?:,?\s+\w+)*)\s*$};
2813
2814   if ($define) {
2815     if ($define->[1] =~ /\\$/) {
2816       $define->[1] .= $_;
2817     }
2818     else {
2819       if (exists $API{$define->[0]} && $define->[1] !~ /^DPPP_\(/) {
2820         my @n = find_api($define->[1]);
2821         push @{$depends{$define->[0]}}, @n if @n
2822       }
2823       undef $define;
2824     }
2825   }
2826
2827   $define = [$1, $2] if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(.*)};
2828
2829   if ($function) {
2830     if (/^}/) {
2831       if (exists $API{$function->[0]}) {
2832         my @n = find_api($function->[1]);
2833         push @{$depends{$function->[0]}}, @n if @n
2834       }
2835       undef $function;
2836     }
2837     else {
2838       $function->[1] .= $_;
2839     }
2840   }
2841
2842   $function = [$1, ''] if m{^DPPP_\(my_(\w+)\)};
2843
2844   $replace     = $1 if m{^\s*$rccs\s+Replace:\s+(\d+)\s+$rcce\s*$};
2845   $replace{$2} = $1 if $replace and m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+)};
2846   $replace{$2} = $1 if m{^\s*#\s*define\s+(\w+)(?:\([^)]*\))?\s+(\w+).*$rccs\s+Replace\s+$rcce};
2847   $replace{$1} = $2 if m{^\s*$rccs\s+Replace (\w+) with (\w+)\s+$rcce\s*$};
2848
2849   if (m{^\s*$rccs\s+(\w+(\s*,\s*\w+)*)\s+depends\s+on\s+(\w+(\s*,\s*\w+)*)\s+$rcce\s*$}) {
2850     my @deps = map { s/\s+//g; $_ } split /,/, $3;
2851     my $d;
2852     for $d (map { s/\s+//g; $_ } split /,/, $1) {
2853       push @{$depends{$d}}, @deps;
2854     }
2855   }
2856
2857   $need{$1} = 1 if m{^#if\s+defined\(NEED_(\w+)(?:_GLOBAL)?\)};
2858 }
2859
2860 for (values %depends) {
2861   my %s;
2862   $_ = [sort grep !$s{$_}++, @$_];
2863 }
2864
2865 if (exists $opt{'api-info'}) {
2866   my $f;
2867   my $count = 0;
2868   my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
2869   for $f (sort { lc $a cmp lc $b } keys %API) {
2870     next unless $f =~ /$match/;
2871     print "\n=== $f ===\n\n";
2872     my $info = 0;
2873     if ($API{$f}{base} || $API{$f}{todo}) {
2874       my $base = format_version($API{$f}{base} || $API{$f}{todo});
2875       print "Supported at least starting from perl-$base.\n";
2876       $info++;
2877     }
2878     if ($API{$f}{provided}) {
2879       my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003";
2880       print "Support by $ppport provided back to perl-$todo.\n";
2881       print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
2882       print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
2883       print "\n$hints{$f}" if exists $hints{$f};
2884       print "\nWARNING:\n$warnings{$f}" if exists $warnings{$f};
2885       $info++;
2886     }
2887     print "No portability information available.\n" unless $info;
2888     $count++;
2889   }
2890   $count or print "Found no API matching '$opt{'api-info'}'.";
2891   print "\n";
2892   exit 0;
2893 }
2894
2895 if (exists $opt{'list-provided'}) {
2896   my $f;
2897   for $f (sort { lc $a cmp lc $b } keys %API) {
2898     next unless $API{$f}{provided};
2899     my @flags;
2900     push @flags, 'explicit' if exists $need{$f};
2901     push @flags, 'depend'   if exists $depends{$f};
2902     push @flags, 'hint'     if exists $hints{$f};
2903     push @flags, 'warning'  if exists $warnings{$f};
2904     my $flags = @flags ? '  ['.join(', ', @flags).']' : '';
2905     print "$f$flags\n";
2906   }
2907   exit 0;
2908 }
2909
2910 my @files;
2911 my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc );
2912 my $srcext = join '|', map { quotemeta $_ } @srcext;
2913
2914 if (@ARGV) {
2915   my %seen;
2916   for (@ARGV) {
2917     if (-e) {
2918       if (-f) {
2919         push @files, $_ unless $seen{$_}++;
2920       }
2921       else { warn "'$_' is not a file.\n" }
2922     }
2923     else {
2924       my @new = grep { -f } glob $_
2925           or warn "'$_' does not exist.\n";
2926       push @files, grep { !$seen{$_}++ } @new;
2927     }
2928   }
2929 }
2930 else {
2931   eval {
2932     require File::Find;
2933     File::Find::find(sub {
2934       $File::Find::name =~ /($srcext)$/i
2935           and push @files, $File::Find::name;
2936     }, '.');
2937   };
2938   if ($@) {
2939     @files = map { glob "*$_" } @srcext;
2940   }
2941 }
2942
2943 if (!@ARGV || $opt{filter}) {
2944   my(@in, @out);
2945   my %xsc = map { /(.*)\.xs$/ ? ("$1.c" => 1, "$1.cc" => 1) : () } @files;
2946   for (@files) {
2947     my $out = exists $xsc{$_} || /\b\Q$ppport\E$/i || !/($srcext)$/i;
2948     push @{ $out ? \@out : \@in }, $_;
2949   }
2950   if (@ARGV && @out) {
2951     warning("Skipping the following files (use --nofilter to avoid this):\n| ", join "\n| ", @out);
2952   }
2953   @files = @in;
2954 }
2955
2956 die "No input files given!\n" unless @files;
2957
2958 my(%files, %global, %revreplace);
2959 %revreplace = reverse %replace;
2960 my $filename;
2961 my $patch_opened = 0;
2962
2963 for $filename (@files) {
2964   unless (open IN, "<$filename") {
2965     warn "Unable to read from $filename: $!\n";
2966     next;
2967   }
2968
2969   info("Scanning $filename ...");
2970
2971   my $c = do { local $/; <IN> };
2972   close IN;
2973
2974   my %file = (orig => $c, changes => 0);
2975
2976   # Temporarily remove C/XS comments and strings from the code
2977   my @ccom;
2978
2979   $c =~ s{
2980     ( ^$HS*\#$HS*include\b[^\r\n]+\b(?:\Q$ppport\E|XSUB\.h)\b[^\r\n]*
2981     | ^$HS*\#$HS*(?:define|elif|if(?:def)?)\b[^\r\n]* )
2982   | ( ^$HS*\#[^\r\n]*
2983     | "[^"\\]*(?:\\.[^"\\]*)*"
2984     | '[^'\\]*(?:\\.[^'\\]*)*'
2985     | / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]* ) )
2986   }{ defined $2 and push @ccom, $2;
2987      defined $1 ? $1 : "$ccs$#ccom$cce" }mgsex;
2988
2989   $file{ccom} = \@ccom;
2990   $file{code} = $c;
2991   $file{has_inc_ppport} = $c =~ /^$HS*#$HS*include[^\r\n]+\b\Q$ppport\E\b/m;
2992
2993   my $func;
2994
2995   for $func (keys %API) {
2996     my $match = $func;
2997     $match .= "|$revreplace{$func}" if exists $revreplace{$func};
2998     if ($c =~ /\b(?:Perl_)?($match)\b/) {
2999       $file{uses_replace}{$1}++ if exists $revreplace{$func} && $1 eq $revreplace{$func};
3000       $file{uses_Perl}{$func}++ if $c =~ /\bPerl_$func\b/;
3001       if (exists $API{$func}{provided}) {
3002         $file{uses_provided}{$func}++;
3003         if (!exists $API{$func}{base} || $API{$func}{base} > $opt{'compat-version'}) {
3004           $file{uses}{$func}++;
3005           my @deps = rec_depend($func);
3006           if (@deps) {
3007             $file{uses_deps}{$func} = \@deps;
3008             for (@deps) {
3009               $file{uses}{$_} = 0 unless exists $file{uses}{$_};
3010             }
3011           }
3012           for ($func, @deps) {
3013             $file{needs}{$_} = 'static' if exists $need{$_};
3014           }
3015         }
3016       }
3017       if (exists $API{$func}{todo} && $API{$func}{todo} > $opt{'compat-version'}) {
3018         if ($c =~ /\b$func\b/) {
3019           $file{uses_todo}{$func}++;
3020         }
3021       }
3022     }
3023   }
3024
3025   while ($c =~ /^$HS*#$HS*define$HS+(NEED_(\w+?)(_GLOBAL)?)\b/mg) {
3026     if (exists $need{$2}) {
3027       $file{defined $3 ? 'needed_global' : 'needed_static'}{$2}++;
3028     }
3029     else { warning("Possibly wrong #define $1 in $filename") }
3030   }
3031
3032   for (qw(uses needs uses_todo needed_global needed_static)) {
3033     for $func (keys %{$file{$_}}) {
3034       push @{$global{$_}{$func}}, $filename;
3035     }
3036   }
3037
3038   $files{$filename} = \%file;
3039 }
3040
3041 # Globally resolve NEED_'s
3042 my $need;
3043 for $need (keys %{$global{needs}}) {
3044   if (@{$global{needs}{$need}} > 1) {
3045     my @targets = @{$global{needs}{$need}};
3046     my @t = grep $files{$_}{needed_global}{$need}, @targets;
3047     @targets = @t if @t;
3048     @t = grep /\.xs$/i, @targets;
3049     @targets = @t if @t;
3050     my $target = shift @targets;
3051     $files{$target}{needs}{$need} = 'global';
3052     for (@{$global{needs}{$need}}) {
3053       $files{$_}{needs}{$need} = 'extern' if $_ ne $target;
3054     }
3055   }
3056 }
3057
3058 for $filename (@files) {
3059   exists $files{$filename} or next;
3060
3061   info("=== Analyzing $filename ===");
3062
3063   my %file = %{$files{$filename}};
3064   my $func;
3065   my $c = $file{code};
3066   my $warnings = 0;
3067
3068   for $func (sort keys %{$file{uses_Perl}}) {
3069     if ($API{$func}{varargs}) {
3070       unless ($API{$func}{nothxarg}) {
3071         my $changes = ($c =~ s{\b(Perl_$func\s*\(\s*)(?!aTHX_?)(\)|[^\s)]*\))}
3072                               { $1 . ($2 eq ')' ? 'aTHX' : 'aTHX_ ') . $2 }ge);
3073         if ($changes) {
3074           warning("Doesn't pass interpreter argument aTHX to Perl_$func");
3075           $file{changes} += $changes;
3076         }
3077       }
3078     }
3079     else {
3080       warning("Uses Perl_$func instead of $func");
3081       $file{changes} += ($c =~ s{\bPerl_$func(\s*)\((\s*aTHX_?)?\s*}
3082                                 {$func$1(}g);
3083     }
3084   }
3085
3086   for $func (sort keys %{$file{uses_replace}}) {
3087     warning("Uses $func instead of $replace{$func}");
3088     $file{changes} += ($c =~ s/\b$func\b/$replace{$func}/g);
3089   }
3090
3091   for $func (sort keys %{$file{uses_provided}}) {
3092     if ($file{uses}{$func}) {
3093       if (exists $file{uses_deps}{$func}) {
3094         diag("Uses $func, which depends on ", join(', ', @{$file{uses_deps}{$func}}));
3095       }
3096       else {
3097         diag("Uses $func");
3098       }
3099     }
3100     $warnings += hint($func);
3101   }
3102
3103   unless ($opt{quiet}) {
3104     for $func (sort keys %{$file{uses_todo}}) {
3105       print "*** WARNING: Uses $func, which may not be portable below perl ",
3106             format_version($API{$func}{todo}), ", even with '$ppport'\n";
3107       $warnings++;
3108     }
3109   }
3110
3111   for $func (sort keys %{$file{needed_static}}) {
3112     my $message = '';
3113     if (not exists $file{uses}{$func}) {
3114       $message = "No need to define NEED_$func if $func is never used";
3115     }
3116     elsif (exists $file{needs}{$func} && $file{needs}{$func} ne 'static') {
3117       $message = "No need to define NEED_$func when already needed globally";
3118     }
3119     if ($message) {
3120       diag($message);
3121       $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_$func\b.*$LF//mg);
3122     }
3123   }
3124
3125   for $func (sort keys %{$file{needed_global}}) {
3126     my $message = '';
3127     if (not exists $global{uses}{$func}) {
3128       $message = "No need to define NEED_${func}_GLOBAL if $func is never used";
3129     }
3130     elsif (exists $file{needs}{$func}) {
3131       if ($file{needs}{$func} eq 'extern') {
3132         $message = "No need to define NEED_${func}_GLOBAL when already needed globally";
3133       }
3134       elsif ($file{needs}{$func} eq 'static') {
3135         $message = "No need to define NEED_${func}_GLOBAL when only used in this file";
3136       }
3137     }
3138     if ($message) {
3139       diag($message);
3140       $file{changes} += ($c =~ s/^$HS*#$HS*define$HS+NEED_${func}_GLOBAL\b.*$LF//mg);
3141     }
3142   }
3143
3144   $file{needs_inc_ppport} = keys %{$file{uses}};
3145
3146   if ($file{needs_inc_ppport}) {
3147     my $pp = '';
3148
3149     for $func (sort keys %{$file{needs}}) {
3150       my $type = $file{needs}{$func};
3151       next if $type eq 'extern';
3152       my $suffix = $type eq 'global' ? '_GLOBAL' : '';
3153       unless (exists $file{"needed_$type"}{$func}) {
3154         if ($type eq 'global') {
3155           diag("Files [@{$global{needs}{$func}}] need $func, adding global request");
3156         }
3157         else {
3158           diag("File needs $func, adding static request");
3159         }
3160         $pp .= "#define NEED_$func$suffix\n";
3161       }
3162     }
3163
3164     if ($pp && ($c =~ s/^(?=$HS*#$HS*define$HS+NEED_\w+)/$pp/m)) {
3165       $pp = '';
3166       $file{changes}++;
3167     }
3168
3169     unless ($file{has_inc_ppport}) {
3170       diag("Needs to include '$ppport'");
3171       $pp .= qq(#include "$ppport"\n)
3172     }
3173
3174     if ($pp) {
3175       $file{changes} += ($c =~ s/^($HS*#$HS*define$HS+NEED_\w+.*?)^/$1$pp/ms)
3176                      || ($c =~ s/^(?=$HS*#$HS*include.*\Q$ppport\E)/$pp/m)
3177                      || ($c =~ s/^($HS*#$HS*include.*XSUB.*\s*?)^/$1$pp/m)
3178                      || ($c =~ s/^/$pp/);
3179     }
3180   }
3181   else {
3182     if ($file{has_inc_ppport}) {
3183       diag("No need to include '$ppport'");
3184       $file{changes} += ($c =~ s/^$HS*?#$HS*include.*\Q$ppport\E.*?$LF//m);
3185     }
3186   }
3187
3188   # put back in our C comments
3189   my $ix;
3190   my $cppc = 0;
3191   my @ccom = @{$file{ccom}};
3192   for $ix (0 .. $#ccom) {
3193     if (!$opt{cplusplus} && $ccom[$ix] =~ s!^//!!) {
3194       $cppc++;
3195       $file{changes} += $c =~ s/$rccs$ix$rcce/$ccs$ccom[$ix] $cce/;
3196     }
3197     else {
3198       $c =~ s/$rccs$ix$rcce/$ccom[$ix]/;
3199     }
3200   }
3201
3202   if ($cppc) {
3203     my $s = $cppc != 1 ? 's' : '';
3204     warning("Uses $cppc C++ style comment$s, which is not portable");
3205   }
3206
3207   my $s = $warnings != 1 ? 's' : '';
3208   my $warn = $warnings ? " ($warnings warning$s)" : '';
3209   info("Analysis completed$warn");
3210
3211   if ($file{changes}) {
3212     if (exists $opt{copy}) {
3213       my $newfile = "$filename$opt{copy}";
3214       if (-e $newfile) {
3215         error("'$newfile' already exists, refusing to write copy of '$filename'");
3216       }
3217       else {
3218         local *F;
3219         if (open F, ">$newfile") {
3220           info("Writing copy of '$filename' with changes to '$newfile'");
3221           print F $c;
3222           close F;
3223         }
3224         else {
3225           error("Cannot open '$newfile' for writing: $!");
3226         }
3227       }
3228     }
3229     elsif (exists $opt{patch} || $opt{changes}) {
3230       if (exists $opt{patch}) {
3231         unless ($patch_opened) {
3232           if (open PATCH, ">$opt{patch}") {
3233             $patch_opened = 1;
3234           }
3235           else {
3236             error("Cannot open '$opt{patch}' for writing: $!");
3237             delete $opt{patch};
3238             $opt{changes} = 1;
3239             goto fallback;
3240           }
3241         }
3242         mydiff(\*PATCH, $filename, $c);
3243       }
3244       else {
3245 fallback:
3246         info("Suggested changes:");
3247         mydiff(\*STDOUT, $filename, $c);
3248       }
3249     }
3250     else {
3251       my $s = $file{changes} == 1 ? '' : 's';
3252       info("$file{changes} potentially required change$s detected");
3253     }
3254   }
3255   else {
3256     info("Looks good");
3257   }
3258 }
3259
3260 close PATCH if $patch_opened;
3261
3262 exit 0;
3263
3264
3265 sub try_use { eval "use @_;"; return $@ eq '' }
3266
3267 sub mydiff
3268 {
3269   local *F = shift;
3270   my($file, $str) = @_;
3271   my $diff;
3272
3273   if (exists $opt{diff}) {
3274     $diff = run_diff($opt{diff}, $file, $str);
3275   }
3276
3277   if (!defined $diff and try_use('Text::Diff')) {
3278     $diff = Text::Diff::diff($file, \$str, { STYLE => 'Unified' });
3279     $diff = <<HEADER . $diff;
3280 --- $file
3281 +++ $file.patched
3282 HEADER
3283   }
3284
3285   if (!defined $diff) {
3286     $diff = run_diff('diff -u', $file, $str);
3287   }
3288
3289   if (!defined $diff) {
3290     $diff = run_diff('diff', $file, $str);
3291   }
3292
3293   if (!defined $diff) {
3294     error("Cannot generate a diff. Please install Text::Diff or use --copy.");
3295     return;
3296   }
3297
3298   print F $diff;
3299 }
3300
3301 sub run_diff
3302 {
3303   my($prog, $file, $str) = @_;
3304   my $tmp = 'dppptemp';
3305   my $suf = 'aaa';
3306   my $diff = '';
3307   local *F;
3308
3309   while (-e "$tmp.$suf") { $suf++ }
3310   $tmp = "$tmp.$suf";
3311
3312   if (open F, ">$tmp") {
3313     print F $str;
3314     close F;
3315
3316     if (open F, "$prog $file $tmp |") {
3317       while (<F>) {
3318         s/\Q$tmp\E/$file.patched/;
3319         $diff .= $_;
3320       }
3321       close F;
3322       unlink $tmp;
3323       return $diff;
3324     }
3325
3326     unlink $tmp;
3327   }
3328   else {
3329     error("Cannot open '$tmp' for writing: $!");
3330   }
3331
3332   return undef;
3333 }
3334
3335 sub rec_depend
3336 {
3337   my($func, $seen) = @_;
3338   return () unless exists $depends{$func};
3339   $seen = {%{$seen||{}}};
3340   return () if $seen->{$func}++;
3341   my %s;
3342   grep !$s{$_}++, map { ($_, rec_depend($_, $seen)) } @{$depends{$func}};
3343 }
3344
3345 sub parse_version
3346 {
3347   my $ver = shift;
3348
3349   if ($ver =~ /^(\d+)\.(\d+)\.(\d+)$/) {
3350     return ($1, $2, $3);
3351   }
3352   elsif ($ver !~ /^\d+\.[\d_]+$/) {
3353     die "cannot parse version '$ver'\n";
3354   }
3355
3356   $ver =~ s/_//g;
3357   $ver =~ s/$/000000/;
3358
3359   my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
3360
3361   $v = int $v;
3362   $s = int $s;
3363
3364   if ($r < 5 || ($r == 5 && $v < 6)) {
3365     if ($s % 10) {
3366       die "cannot parse version '$ver'\n";
3367     }
3368   }
3369
3370   return ($r, $v, $s);
3371 }
3372
3373 sub format_version
3374 {
3375   my $ver = shift;
3376
3377   $ver =~ s/$/000000/;
3378   my($r,$v,$s) = $ver =~ /(\d+)\.(\d{3})(\d{3})/;
3379
3380   $v = int $v;
3381   $s = int $s;
3382
3383   if ($r < 5 || ($r == 5 && $v < 6)) {
3384     if ($s % 10) {
3385       die "invalid version '$ver'\n";
3386     }
3387     $s /= 10;
3388
3389     $ver = sprintf "%d.%03d", $r, $v;
3390     $s > 0 and $ver .= sprintf "_%02d", $s;
3391
3392     return $ver;
3393   }
3394
3395   return sprintf "%d.%d.%d", $r, $v, $s;
3396 }
3397
3398 sub info
3399 {
3400   $opt{quiet} and return;
3401   print @_, "\n";
3402 }
3403
3404 sub diag
3405 {
3406   $opt{quiet} and return;
3407   $opt{diag} and print @_, "\n";
3408 }
3409
3410 sub warning
3411 {
3412   $opt{quiet} and return;
3413   print "*** ", @_, "\n";
3414 }
3415
3416 sub error
3417 {
3418   print "*** ERROR: ", @_, "\n";
3419 }
3420
3421 my %given_hints;
3422 my %given_warnings;
3423 sub hint
3424 {
3425   $opt{quiet} and return;
3426   my $func = shift;
3427   my $rv = 0;
3428   if (exists $warnings{$func} && !$given_warnings{$func}++) {
3429     my $warn = $warnings{$func};
3430     $warn =~ s!^!*** !mg;
3431     print "*** WARNING: $func\n", $warn;
3432     $rv++;
3433   }
3434   if ($opt{hints} && exists $hints{$func} && !$given_hints{$func}++) {
3435     my $hint = $hints{$func};
3436     $hint =~ s/^/   /mg;
3437     print "   --- hint for $func ---\n", $hint;
3438   }
3439   $rv;
3440 }
3441
3442 sub usage
3443 {
3444   my($usage) = do { local(@ARGV,$/)=($0); <> } =~ /^=head\d$HS+SYNOPSIS\s*^(.*?)\s*^=/ms;
3445   my %M = ( 'I' => '*' );
3446   $usage =~ s/^\s*perl\s+\S+/$^X $0/;
3447   $usage =~ s/([A-Z])<([^>]+)>/$M{$1}$2$M{$1}/g;
3448
3449   print <<ENDUSAGE;
3450
3451 Usage: $usage
3452
3453 See perldoc $0 for details.
3454
3455 ENDUSAGE
3456
3457   exit 2;
3458 }
3459
3460 sub strip
3461 {
3462   my $self = do { local(@ARGV,$/)=($0); <> };
3463   my($copy) = $self =~ /^=head\d\s+COPYRIGHT\s*^(.*?)^=\w+/ms;
3464   $copy =~ s/^(?=\S+)/    /gms;
3465   $self =~ s/^$HS+Do NOT edit.*?(?=^-)/$copy/ms;
3466   $self =~ s/^SKIP.*(?=^__DATA__)/SKIP
3467 if (\@ARGV && \$ARGV[0] eq '--unstrip') {
3468   eval { require Devel::PPPort };
3469   \$@ and die "Cannot require Devel::PPPort, please install.\\n";
3470   if (eval \$Devel::PPPort::VERSION < $VERSION) {
3471     die "$0 was originally generated with Devel::PPPort $VERSION.\\n"
3472       . "Your Devel::PPPort is only version \$Devel::PPPort::VERSION.\\n"
3473       . "Please install a newer version, or --unstrip will not work.\\n";
3474   }
3475   Devel::PPPort::WriteFile(\$0);
3476   exit 0;
3477 }
3478 print <<END;
3479
3480 Sorry, but this is a stripped version of \$0.
3481
3482 To be able to use its original script and doc functionality,
3483 please try to regenerate this file using:
3484
3485   \$^X \$0 --unstrip
3486
3487 END
3488 /ms;
3489   my($pl, $c) = $self =~ /(.*^__DATA__)(.*)/ms;
3490   $c =~ s{
3491     / (?: \*[^*]*\*+(?:[^$ccs][^*]*\*+)* / | /[^\r\n]*)
3492   | ( "[^"\\]*(?:\\.[^"\\]*)*"
3493     | '[^'\\]*(?:\\.[^'\\]*)*' )
3494   | ($HS+) }{ defined $2 ? ' ' : ($1 || '') }gsex;
3495   $c =~ s!\s+$!!mg;
3496   $c =~ s!^$LF!!mg;
3497   $c =~ s!^\s*#\s*!#!mg;
3498   $c =~ s!^\s+!!mg;
3499
3500   open OUT, ">$0" or die "cannot strip $0: $!\n";
3501   print OUT "$pl$c\n";
3502
3503   exit 0;
3504 }
3505
3506 __DATA__
3507 */
3508
3509 #ifndef _P_P_PORTABILITY_H_
3510 #define _P_P_PORTABILITY_H_
3511
3512 #ifndef DPPP_NAMESPACE
3513 #  define DPPP_NAMESPACE DPPP_
3514 #endif
3515
3516 #define DPPP_CAT2(x,y) CAT2(x,y)
3517 #define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
3518
3519 #ifndef PERL_REVISION
3520 #  if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
3521 #    define PERL_PATCHLEVEL_H_IMPLICIT
3522 #    include <patchlevel.h>
3523 #  endif
3524 #  if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
3525 #    include <could_not_find_Perl_patchlevel.h>
3526 #  endif
3527 #  ifndef PERL_REVISION
3528 #    define PERL_REVISION       (5)
3529      /* Replace: 1 */
3530 #    define PERL_VERSION        PATCHLEVEL
3531 #    define PERL_SUBVERSION     SUBVERSION
3532      /* Replace PERL_PATCHLEVEL with PERL_VERSION */
3533      /* Replace: 0 */
3534 #  endif
3535 #endif
3536
3537 #define _dpppDEC2BCD(dec) ((((dec)/100)<<8)|((((dec)%100)/10)<<4)|((dec)%10))
3538 #define PERL_BCDVERSION ((_dpppDEC2BCD(PERL_REVISION)<<24)|(_dpppDEC2BCD(PERL_VERSION)<<12)|_dpppDEC2BCD(PERL_SUBVERSION))
3539
3540 /* It is very unlikely that anyone will try to use this with Perl 6
3541    (or greater), but who knows.
3542  */
3543 #if PERL_REVISION != 5
3544 #  error ppport.h only works with Perl version 5
3545 #endif /* PERL_REVISION != 5 */
3546 #ifndef dTHR
3547 #  define dTHR                           dNOOP
3548 #endif
3549 #ifndef dTHX
3550 #  define dTHX                           dNOOP
3551 #endif
3552
3553 #ifndef dTHXa
3554 #  define dTHXa(x)                       dNOOP
3555 #endif
3556 #ifndef pTHX
3557 #  define pTHX                           void
3558 #endif
3559
3560 #ifndef pTHX_
3561 #  define pTHX_
3562 #endif
3563
3564 #ifndef aTHX
3565 #  define aTHX
3566 #endif
3567
3568 #ifndef aTHX_
3569 #  define aTHX_
3570 #endif
3571
3572 #if (PERL_BCDVERSION < 0x5006000)
3573 #  ifdef USE_THREADS
3574 #    define aTHXR  thr
3575 #    define aTHXR_ thr,
3576 #  else
3577 #    define aTHXR
3578 #    define aTHXR_
3579 #  endif
3580 #  define dTHXR  dTHR
3581 #else
3582 #  define aTHXR  aTHX
3583 #  define aTHXR_ aTHX_
3584 #  define dTHXR  dTHX
3585 #endif
3586 #ifndef dTHXoa
3587 #  define dTHXoa(x)                      dTHXa(x)
3588 #endif
3589
3590 #ifdef I_LIMITS
3591 #  include <limits.h>
3592 #endif
3593
3594 #ifndef PERL_UCHAR_MIN
3595 #  define PERL_UCHAR_MIN ((unsigned char)0)
3596 #endif
3597
3598 #ifndef PERL_UCHAR_MAX
3599 #  ifdef UCHAR_MAX
3600 #    define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX)
3601 #  else
3602 #    ifdef MAXUCHAR
3603 #      define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR)
3604 #    else
3605 #      define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0)
3606 #    endif
3607 #  endif
3608 #endif
3609
3610 #ifndef PERL_USHORT_MIN
3611 #  define PERL_USHORT_MIN ((unsigned short)0)
3612 #endif
3613
3614 #ifndef PERL_USHORT_MAX
3615 #  ifdef USHORT_MAX
3616 #    define PERL_USHORT_MAX ((unsigned short)USHORT_MAX)
3617 #  else
3618 #    ifdef MAXUSHORT
3619 #      define PERL_USHORT_MAX ((unsigned short)MAXUSHORT)
3620 #    else
3621 #      ifdef USHRT_MAX
3622 #        define PERL_USHORT_MAX ((unsigned short)USHRT_MAX)
3623 #      else
3624 #        define PERL_USHORT_MAX ((unsigned short)~(unsigned)0)
3625 #      endif
3626 #    endif
3627 #  endif
3628 #endif
3629
3630 #ifndef PERL_SHORT_MAX
3631 #  ifdef SHORT_MAX
3632 #    define PERL_SHORT_MAX ((short)SHORT_MAX)
3633 #  else
3634 #    ifdef MAXSHORT    /* Often used in <values.h> */
3635 #      define PERL_SHORT_MAX ((short)MAXSHORT)
3636 #    else
3637 #      ifdef SHRT_MAX
3638 #        define PERL_SHORT_MAX ((short)SHRT_MAX)
3639 #      else
3640 #        define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1))
3641 #      endif
3642 #    endif
3643 #  endif
3644 #endif
3645
3646 #ifndef PERL_SHORT_MIN
3647 #  ifdef SHORT_MIN
3648 #    define PERL_SHORT_MIN ((short)SHORT_MIN)
3649 #  else
3650 #    ifdef MINSHORT
3651 #      define PERL_SHORT_MIN ((short)MINSHORT)
3652 #    else
3653 #      ifdef SHRT_MIN
3654 #        define PERL_SHORT_MIN ((short)SHRT_MIN)
3655 #      else
3656 #        define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3))
3657 #      endif
3658 #    endif
3659 #  endif
3660 #endif
3661
3662 #ifndef PERL_UINT_MAX
3663 #  ifdef UINT_MAX
3664 #    define PERL_UINT_MAX ((unsigned int)UINT_MAX)
3665 #  else
3666 #    ifdef MAXUINT
3667 #      define PERL_UINT_MAX ((unsigned int)MAXUINT)
3668 #    else
3669 #      define PERL_UINT_MAX (~(unsigned int)0)
3670 #    endif
3671 #  endif
3672 #endif
3673
3674 #ifndef PERL_UINT_MIN
3675 #  define PERL_UINT_MIN ((unsigned int)0)
3676 #endif
3677
3678 #ifndef PERL_INT_MAX
3679 #  ifdef INT_MAX
3680 #    define PERL_INT_MAX ((int)INT_MAX)
3681 #  else
3682 #    ifdef MAXINT    /* Often used in <values.h> */
3683 #      define PERL_INT_MAX ((int)MAXINT)
3684 #    else
3685 #      define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1))
3686 #    endif
3687 #  endif
3688 #endif
3689
3690 #ifndef PERL_INT_MIN
3691 #  ifdef INT_MIN
3692 #    define PERL_INT_MIN ((int)INT_MIN)
3693 #  else
3694 #    ifdef MININT
3695 #      define PERL_INT_MIN ((int)MININT)
3696 #    else
3697 #      define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3))
3698 #    endif
3699 #  endif
3700 #endif
3701
3702 #ifndef PERL_ULONG_MAX
3703 #  ifdef ULONG_MAX
3704 #    define PERL_ULONG_MAX ((unsigned long)ULONG_MAX)
3705 #  else
3706 #    ifdef MAXULONG
3707 #      define PERL_ULONG_MAX ((unsigned long)MAXULONG)
3708 #    else
3709 #      define PERL_ULONG_MAX (~(unsigned long)0)
3710 #    endif
3711 #  endif
3712 #endif
3713
3714 #ifndef PERL_ULONG_MIN
3715 #  define PERL_ULONG_MIN ((unsigned long)0L)
3716 #endif
3717
3718 #ifndef PERL_LONG_MAX
3719 #  ifdef LONG_MAX
3720 #    define PERL_LONG_MAX ((long)LONG_MAX)
3721 #  else
3722 #    ifdef MAXLONG
3723 #      define PERL_LONG_MAX ((long)MAXLONG)
3724 #    else
3725 #      define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1))
3726 #    endif
3727 #  endif
3728 #endif
3729
3730 #ifndef PERL_LONG_MIN
3731 #  ifdef LONG_MIN
3732 #    define PERL_LONG_MIN ((long)LONG_MIN)
3733 #  else
3734 #    ifdef MINLONG
3735 #      define PERL_LONG_MIN ((long)MINLONG)
3736 #    else
3737 #      define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3))
3738 #    endif
3739 #  endif
3740 #endif
3741
3742 #if defined(HAS_QUAD) && (defined(convex) || defined(uts))
3743 #  ifndef PERL_UQUAD_MAX
3744 #    ifdef ULONGLONG_MAX
3745 #      define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX)
3746 #    else
3747 #      ifdef MAXULONGLONG
3748 #        define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG)
3749 #      else
3750 #        define PERL_UQUAD_MAX (~(unsigned long long)0)
3751 #      endif
3752 #    endif
3753 #  endif
3754
3755 #  ifndef PERL_UQUAD_MIN
3756 #    define PERL_UQUAD_MIN ((unsigned long long)0L)
3757 #  endif
3758
3759 #  ifndef PERL_QUAD_MAX
3760 #    ifdef LONGLONG_MAX
3761 #      define PERL_QUAD_MAX ((long long)LONGLONG_MAX)
3762 #    else
3763 #      ifdef MAXLONGLONG
3764 #        define PERL_QUAD_MAX ((long long)MAXLONGLONG)
3765 #      else
3766 #        define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1))
3767 #      endif
3768 #    endif
3769 #  endif
3770
3771 #  ifndef PERL_QUAD_MIN
3772 #    ifdef LONGLONG_MIN
3773 #      define PERL_QUAD_MIN ((long long)LONGLONG_MIN)
3774 #    else
3775 #      ifdef MINLONGLONG
3776 #        define PERL_QUAD_MIN ((long long)MINLONGLONG)
3777 #      else
3778 #        define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3))
3779 #      endif
3780 #    endif
3781 #  endif
3782 #endif
3783
3784 /* This is based on code from 5.003 perl.h */
3785 #ifdef HAS_QUAD
3786 #  ifdef cray
3787 #ifndef IVTYPE
3788 #  define IVTYPE                         int
3789 #endif
3790
3791 #ifndef IV_MIN
3792 #  define IV_MIN                         PERL_INT_MIN
3793 #endif
3794
3795 #ifndef IV_MAX
3796 #  define IV_MAX                         PERL_INT_MAX
3797 #endif
3798
3799 #ifndef UV_MIN
3800 #  define UV_MIN                         PERL_UINT_MIN
3801 #endif
3802
3803 #ifndef UV_MAX
3804 #  define UV_MAX                         PERL_UINT_MAX
3805 #endif
3806
3807 #    ifdef INTSIZE
3808 #ifndef IVSIZE
3809 #  define IVSIZE                         INTSIZE
3810 #endif
3811
3812 #    endif
3813 #  else
3814 #    if defined(convex) || defined(uts)
3815 #ifndef IVTYPE
3816 #  define IVTYPE                         long long
3817 #endif
3818
3819 #ifndef IV_MIN
3820 #  define IV_MIN                         PERL_QUAD_MIN
3821 #endif
3822
3823 #ifndef IV_MAX
3824 #  define IV_MAX                         PERL_QUAD_MAX
3825 #endif
3826
3827 #ifndef UV_MIN
3828 #  define UV_MIN                         PERL_UQUAD_MIN
3829 #endif
3830
3831 #ifndef UV_MAX
3832 #  define UV_MAX                         PERL_UQUAD_MAX
3833 #endif
3834
3835 #      ifdef LONGLONGSIZE
3836 #ifndef IVSIZE
3837 #  define IVSIZE                         LONGLONGSIZE
3838 #endif
3839
3840 #      endif
3841 #    else
3842 #ifndef IVTYPE
3843 #  define IVTYPE                         long
3844 #endif
3845
3846 #ifndef IV_MIN
3847 #  define IV_MIN                         PERL_LONG_MIN
3848 #endif
3849
3850 #ifndef IV_MAX
3851 #  define IV_MAX                         PERL_LONG_MAX
3852 #endif
3853
3854 #ifndef UV_MIN
3855 #  define UV_MIN                         PERL_ULONG_MIN
3856 #endif
3857
3858 #ifndef UV_MAX
3859 #  define UV_MAX                         PERL_ULONG_MAX
3860 #endif
3861
3862 #      ifdef LONGSIZE
3863 #ifndef IVSIZE
3864 #  define IVSIZE                         LONGSIZE
3865 #endif
3866
3867 #      endif
3868 #    endif
3869 #  endif
3870 #ifndef IVSIZE
3871 #  define IVSIZE                         8
3872 #endif
3873
3874 #ifndef LONGSIZE
3875 #  define LONGSIZE                       8
3876 #endif
3877
3878 #ifndef PERL_QUAD_MIN
3879 #  define PERL_QUAD_MIN                  IV_MIN
3880 #endif
3881
3882 #ifndef PERL_QUAD_MAX
3883 #  define PERL_QUAD_MAX                  IV_MAX
3884 #endif
3885
3886 #ifndef PERL_UQUAD_MIN
3887 #  define PERL_UQUAD_MIN                 UV_MIN
3888 #endif
3889
3890 #ifndef PERL_UQUAD_MAX
3891 #  define PERL_UQUAD_MAX                 UV_MAX
3892 #endif
3893
3894 #else
3895 #ifndef IVTYPE
3896 #  define IVTYPE                         long
3897 #endif
3898
3899 #ifndef LONGSIZE
3900 #  define LONGSIZE                       4
3901 #endif
3902
3903 #ifndef IV_MIN
3904 #  define IV_MIN                         PERL_LONG_MIN
3905 #endif
3906
3907 #ifndef IV_MAX
3908 #  define IV_MAX                         PERL_LONG_MAX
3909 #endif
3910
3911 #ifndef UV_MIN
3912 #  define UV_MIN                         PERL_ULONG_MIN
3913 #endif
3914
3915 #ifndef UV_MAX
3916 #  define UV_MAX                         PERL_ULONG_MAX
3917 #endif
3918
3919 #endif
3920
3921 #ifndef IVSIZE
3922 #  ifdef LONGSIZE
3923 #    define IVSIZE LONGSIZE
3924 #  else
3925 #    define IVSIZE 4 /* A bold guess, but the best we can make. */
3926 #  endif
3927 #endif
3928 #ifndef UVTYPE
3929 #  define UVTYPE                         unsigned IVTYPE
3930 #endif
3931
3932 #ifndef UVSIZE
3933 #  define UVSIZE                         IVSIZE
3934 #endif
3935 #ifndef sv_setuv
3936 #  define sv_setuv(sv, uv)               \
3937                STMT_START {                         \
3938                  UV TeMpUv = uv;                    \
3939                  if (TeMpUv <= IV_MAX)              \
3940                    sv_setiv(sv, TeMpUv);            \
3941                  else                               \
3942                    sv_setnv(sv, (double)TeMpUv);    \
3943                } STMT_END
3944 #endif
3945 #ifndef newSVuv
3946 #  define newSVuv(uv)                    ((uv) <= IV_MAX ? newSViv((IV)uv) : newSVnv((NV)uv))
3947 #endif
3948 #ifndef sv_2uv
3949 #  define sv_2uv(sv)                     ((PL_Sv = (sv)), (UV) (SvNOK(PL_Sv) ? SvNV(PL_Sv) : sv_2nv(PL_Sv)))
3950 #endif
3951
3952 #ifndef SvUVX
3953 #  define SvUVX(sv)                      ((UV)SvIVX(sv))
3954 #endif
3955
3956 #ifndef SvUVXx
3957 #  define SvUVXx(sv)                     SvUVX(sv)
3958 #endif
3959
3960 #ifndef SvUV
3961 #  define SvUV(sv)                       (SvIOK(sv) ? SvUVX(sv) : sv_2uv(sv))
3962 #endif
3963
3964 #ifndef SvUVx
3965 #  define SvUVx(sv)                      ((PL_Sv = (sv)), SvUV(PL_Sv))
3966 #endif
3967
3968 /* Hint: sv_uv
3969  * Always use the SvUVx() macro instead of sv_uv().
3970  */
3971 #ifndef sv_uv
3972 #  define sv_uv(sv)                      SvUVx(sv)
3973 #endif
3974
3975 #if !defined(SvUOK) && defined(SvIOK_UV)
3976 #  define SvUOK(sv) SvIOK_UV(sv)
3977 #endif
3978 #ifndef XST_mUV
3979 #  define XST_mUV(i,v)                   (ST(i) = sv_2mortal(newSVuv(v))  )
3980 #endif
3981
3982 #ifndef XSRETURN_UV
3983 #  define XSRETURN_UV(v)                 STMT_START { XST_mUV(0,v);  XSRETURN(1); } STMT_END
3984 #endif
3985 #ifndef PUSHu
3986 #  define PUSHu(u)                       STMT_START { sv_setuv(TARG, (UV)(u)); PUSHTARG;  } STMT_END
3987 #endif
3988
3989 #ifndef XPUSHu
3990 #  define XPUSHu(u)                      STMT_START { sv_setuv(TARG, (UV)(u)); XPUSHTARG; } STMT_END
3991 #endif
3992
3993 #ifdef HAS_MEMCMP
3994 #ifndef memNE
3995 #  define memNE(s1,s2,l)                 (memcmp(s1,s2,l))
3996 #endif
3997
3998 #ifndef memEQ
3999 #  define memEQ(s1,s2,l)                 (!memcmp(s1,s2,l))
4000 #endif
4001
4002 #else
4003 #ifndef memNE
4004 #  define memNE(s1,s2,l)                 (bcmp(s1,s2,l))
4005 #endif
4006
4007 #ifndef memEQ
4008 #  define memEQ(s1,s2,l)                 (!bcmp(s1,s2,l))
4009 #endif
4010
4011 #endif
4012 #ifndef memEQs
4013 #  define memEQs(s1, l, s2)              \
4014                    (sizeof(s2)-1 == l && memEQ(s1, (s2 ""), (sizeof(s2)-1)))
4015 #endif
4016
4017 #ifndef memNEs
4018 #  define memNEs(s1, l, s2)              !memEQs(s1, l, s2)
4019 #endif
4020 #ifndef MoveD
4021 #  define MoveD(s,d,n,t)                 memmove((char*)(d),(char*)(s), (n) * sizeof(t))
4022 #endif
4023
4024 #ifndef CopyD
4025 #  define CopyD(s,d,n,t)                 memcpy((char*)(d),(char*)(s), (n) * sizeof(t))
4026 #endif
4027
4028 #ifdef HAS_MEMSET
4029 #ifndef ZeroD
4030 #  define ZeroD(d,n,t)                   memzero((char*)(d), (n) * sizeof(t))
4031 #endif
4032
4033 #else
4034 #ifndef ZeroD
4035 #  define ZeroD(d,n,t)                   ((void)memzero((char*)(d), (n) * sizeof(t)), d)
4036 #endif
4037
4038 #endif
4039 #ifndef PoisonWith
4040 #  define PoisonWith(d,n,t,b)            (void)memset((char*)(d), (U8)(b), (n) * sizeof(t))
4041 #endif
4042
4043 #ifndef PoisonNew
4044 #  define PoisonNew(d,n,t)               PoisonWith(d,n,t,0xAB)
4045 #endif
4046
4047 #ifndef PoisonFree
4048 #  define PoisonFree(d,n,t)              PoisonWith(d,n,t,0xEF)
4049 #endif
4050
4051 #ifndef Poison
4052 #  define Poison(d,n,t)                  PoisonFree(d,n,t)
4053 #endif
4054 #ifndef Newx
4055 #  define Newx(v,n,t)                    New(0,v,n,t)
4056 #endif
4057
4058 #ifndef Newxc
4059 #  define Newxc(v,n,t,c)                 Newc(0,v,n,t,c)
4060 #endif
4061
4062 #ifndef Newxz
4063 #  define Newxz(v,n,t)                   Newz(0,v,n,t)
4064 #endif
4065
4066 #ifndef PERL_UNUSED_DECL
4067 #  ifdef HASATTRIBUTE
4068 #    if (defined(__GNUC__) && defined(__cplusplus)) || defined(__INTEL_COMPILER)
4069 #      define PERL_UNUSED_DECL
4070 #    else
4071 #      define PERL_UNUSED_DECL __attribute__((unused))
4072 #    endif
4073 #  else
4074 #    define PERL_UNUSED_DECL
4075 #  endif
4076 #endif
4077
4078 #ifndef PERL_UNUSED_ARG
4079 #  if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
4080 #    include <note.h>
4081 #    define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
4082 #  else
4083 #    define PERL_UNUSED_ARG(x) ((void)x)
4084 #  endif
4085 #endif
4086
4087 #ifndef PERL_UNUSED_VAR
4088 #  define PERL_UNUSED_VAR(x) ((void)x)
4089 #endif
4090
4091 #ifndef PERL_UNUSED_CONTEXT
4092 #  ifdef USE_ITHREADS
4093 #    define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
4094 #  else
4095 #    define PERL_UNUSED_CONTEXT
4096 #  endif
4097 #endif
4098 #ifndef NOOP
4099 #  define NOOP                           /*EMPTY*/(void)0
4100 #endif
4101
4102 #ifndef dNOOP
4103 #  define dNOOP                          extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
4104 #endif
4105
4106 #ifndef NVTYPE
4107 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
4108 #    define NVTYPE long double
4109 #  else
4110 #    define NVTYPE double
4111 #  endif
4112 typedef NVTYPE NV;
4113 #endif
4114
4115 #ifndef INT2PTR
4116 #  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
4117 #    define PTRV                  UV
4118 #    define INT2PTR(any,d)        (any)(d)
4119 #  else
4120 #    if PTRSIZE == LONGSIZE
4121 #      define PTRV                unsigned long
4122 #    else
4123 #      define PTRV                unsigned
4124 #    endif
4125 #    define INT2PTR(any,d)        (any)(PTRV)(d)
4126 #  endif
4127 #endif
4128
4129 #ifndef PTR2ul
4130 #  if PTRSIZE == LONGSIZE
4131 #    define PTR2ul(p)     (unsigned long)(p)
4132 #  else
4133 #    define PTR2ul(p)     INT2PTR(unsigned long,p)
4134 #  endif
4135 #endif
4136 #ifndef PTR2nat
4137 #  define PTR2nat(p)                     (PTRV)(p)
4138 #endif
4139
4140 #ifndef NUM2PTR
4141 #  define NUM2PTR(any,d)                 (any)PTR2nat(d)
4142 #endif
4143
4144 #ifndef PTR2IV
4145 #  define PTR2IV(p)                      INT2PTR(IV,p)
4146 #endif
4147
4148 #ifndef PTR2UV
4149 #  define PTR2UV(p)                      INT2PTR(UV,p)
4150 #endif
4151
4152 #ifndef PTR2NV
4153 #  define PTR2NV(p)                      NUM2PTR(NV,p)
4154 #endif
4155
4156 #undef START_EXTERN_C
4157 #undef END_EXTERN_C
4158 #undef EXTERN_C
4159 #ifdef __cplusplus
4160 #  define START_EXTERN_C extern "C" {
4161 #  define END_EXTERN_C }
4162 #  define EXTERN_C extern "C"
4163 #else
4164 #  define START_EXTERN_C
4165 #  define END_EXTERN_C
4166 #  define EXTERN_C extern
4167 #endif
4168
4169 #if defined(PERL_GCC_PEDANTIC)
4170 #  ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
4171 #    define PERL_GCC_BRACE_GROUPS_FORBIDDEN
4172 #  endif
4173 #endif
4174
4175 #if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
4176 #  ifndef PERL_USE_GCC_BRACE_GROUPS
4177 #    define PERL_USE_GCC_BRACE_GROUPS
4178 #  endif
4179 #endif
4180
4181 #undef STMT_START
4182 #undef STMT_END
4183 #ifdef PERL_USE_GCC_BRACE_GROUPS
4184 #  define STMT_START    (void)( /* gcc supports ``({ STATEMENTS; })'' */
4185 #  define STMT_END      )
4186 #else
4187 #  if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
4188 #    define STMT_START  if (1)
4189 #    define STMT_END    else (void)0
4190 #  else
4191 #    define STMT_START  do
4192 #    define STMT_END    while (0)
4193 #  endif
4194 #endif
4195 #ifndef boolSV
4196 #  define boolSV(b)                      ((b) ? &PL_sv_yes : &PL_sv_no)
4197 #endif
4198
4199 /* DEFSV appears first in 5.004_56 */
4200 #ifndef DEFSV
4201 #  define DEFSV                          GvSV(PL_defgv)
4202 #endif
4203
4204 #ifndef SAVE_DEFSV
4205 #  define SAVE_DEFSV                     SAVESPTR(GvSV(PL_defgv))
4206 #endif
4207
4208 #ifndef DEFSV_set
4209 #  define DEFSV_set(sv)                  (DEFSV = (sv))
4210 #endif
4211
4212 /* Older perls (<=5.003) lack AvFILLp */
4213 #ifndef AvFILLp
4214 #  define AvFILLp                        AvFILL
4215 #endif
4216 #ifndef ERRSV
4217 #  define ERRSV                          get_sv("@",FALSE)
4218 #endif
4219
4220 /* Hint: gv_stashpvn
4221  * This function's backport doesn't support the length parameter, but
4222  * rather ignores it. Portability can only be ensured if the length
4223  * parameter is used for speed reasons, but the length can always be
4224  * correctly computed from the string argument.
4225  */
4226 #ifndef gv_stashpvn
4227 #  define gv_stashpvn(str,len,create)    gv_stashpv(str,create)
4228 #endif
4229
4230 /* Replace: 1 */
4231 #ifndef get_cv
4232 #  define get_cv                         perl_get_cv
4233 #endif
4234
4235 #ifndef get_sv
4236 #  define get_sv                         perl_get_sv
4237 #endif
4238
4239 #ifndef get_av
4240 #  define get_av                         perl_get_av
4241 #endif
4242
4243 #ifndef get_hv
4244 #  define get_hv                         perl_get_hv
4245 #endif
4246
4247 /* Replace: 0 */
4248 #ifndef dUNDERBAR
4249 #  define dUNDERBAR                      dNOOP
4250 #endif
4251
4252 #ifndef UNDERBAR
4253 #  define UNDERBAR                       DEFSV
4254 #endif
4255 #ifndef dAX
4256 #  define dAX                            I32 ax = MARK - PL_stack_base + 1
4257 #endif
4258
4259 #ifndef dITEMS
4260 #  define dITEMS                         I32 items = SP - MARK
4261 #endif
4262 #ifndef dXSTARG
4263 #  define dXSTARG                        SV * targ = sv_newmortal()
4264 #endif
4265 #ifndef dAXMARK
4266 #  define dAXMARK                        I32 ax = POPMARK; \
4267                                register SV ** const mark = PL_stack_base + ax++
4268 #endif
4269 #ifndef XSprePUSH
4270 #  define XSprePUSH                      (sp = PL_stack_base + ax - 1)
4271 #endif
4272
4273 #if (PERL_BCDVERSION < 0x5005000)
4274 #  undef XSRETURN
4275 #  define XSRETURN(off)                                   \
4276       STMT_START {                                        \
4277           PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
4278           return;                                         \
4279       } STMT_END
4280 #endif
4281 #ifndef XSPROTO
4282 #  define XSPROTO(name)                  void name(pTHX_ CV* cv)
4283 #endif
4284
4285 #ifndef SVfARG
4286 #  define SVfARG(p)                      ((void*)(p))
4287 #endif
4288 #ifndef PERL_ABS
4289 #  define PERL_ABS(x)                    ((x) < 0 ? -(x) : (x))
4290 #endif
4291 #ifndef dVAR
4292 #  define dVAR                           dNOOP
4293 #endif
4294 #ifndef SVf
4295 #  define SVf                            "_"
4296 #endif
4297 #ifndef UTF8_MAXBYTES
4298 #  define UTF8_MAXBYTES                  UTF8_MAXLEN
4299 #endif
4300 #ifndef CPERLscope
4301 #  define CPERLscope(x)                  x
4302 #endif
4303 #ifndef PERL_HASH
4304 #  define PERL_HASH(hash,str,len)        \
4305      STMT_START { \
4306         const char *s_PeRlHaSh = str; \
4307         I32 i_PeRlHaSh = len; \
4308         U32 hash_PeRlHaSh = 0; \
4309         while (i_PeRlHaSh--) \
4310             hash_PeRlHaSh = hash_PeRlHaSh * 33 + *s_PeRlHaSh++; \
4311         (hash) = hash_PeRlHaSh; \
4312     } STMT_END
4313 #endif
4314
4315 #ifndef PERLIO_FUNCS_DECL
4316 # ifdef PERLIO_FUNCS_CONST
4317 #  define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs
4318 #  define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs)
4319 # else
4320 #  define PERLIO_FUNCS_DECL(funcs) PerlIO_funcs funcs
4321 #  define PERLIO_FUNCS_CAST(funcs) (funcs)
4322 # endif
4323 #endif
4324
4325 /* provide these typedefs for older perls */
4326 #if (PERL_BCDVERSION < 0x5009003)
4327
4328 # ifdef ARGSproto
4329 typedef OP* (CPERLscope(*Perl_ppaddr_t))(ARGSproto);
4330 # else
4331 typedef OP* (CPERLscope(*Perl_ppaddr_t))(pTHX);
4332 # endif
4333
4334 typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
4335
4336 #endif
4337 #ifndef isPSXSPC
4338 #  define isPSXSPC(c)                    (isSPACE(c) || (c) == '\v')
4339 #endif
4340
4341 #ifndef isBLANK
4342 #  define isBLANK(c)                     ((c) == ' ' || (c) == '\t')
4343 #endif
4344
4345 #ifdef EBCDIC
4346 #ifndef isALNUMC
4347 #  define isALNUMC(c)                    isalnum(c)
4348 #endif
4349
4350 #ifndef isASCII
4351 #  define isASCII(c)                     isascii(c)
4352 #endif
4353
4354 #ifndef isCNTRL
4355 #  define isCNTRL(c)                     iscntrl(c)
4356 #endif
4357
4358 #ifndef isGRAPH
4359 #  define isGRAPH(c)                     isgraph(c)
4360 #endif
4361
4362 #ifndef isPRINT
4363 #  define isPRINT(c)                     isprint(c)
4364 #endif
4365
4366 #ifndef isPUNCT
4367 #  define isPUNCT(c)                     ispunct(c)
4368 #endif
4369
4370 #ifndef isXDIGIT
4371 #  define isXDIGIT(c)                    isxdigit(c)
4372 #endif
4373
4374 #else
4375 # if (PERL_BCDVERSION < 0x5010000)
4376 /* Hint: isPRINT
4377  * The implementation in older perl versions includes all of the
4378  * isSPACE() characters, which is wrong. The version provided by
4379  * Devel::PPPort always overrides a present buggy version.
4380  */
4381 #  undef isPRINT
4382 # endif
4383
4384 #ifdef HAS_QUAD
4385 # define WIDEST_UTYPE U64TYPE
4386 #else
4387 # define WIDEST_UTYPE U32
4388 #endif
4389 #ifndef isALNUMC
4390 #  define isALNUMC(c)                    (isALPHA(c) || isDIGIT(c))
4391 #endif
4392
4393 #ifndef isASCII
4394 #  define isASCII(c)                     ((WIDEST_UTYPE) (c) <= 127)
4395 #endif
4396
4397 #ifndef isCNTRL
4398 #  define isCNTRL(c)                     ((WIDEST_UTYPE) (c) < ' ' || (c) == 127)
4399 #endif
4400
4401 #ifndef isGRAPH
4402 #  define isGRAPH(c)                     (isALNUM(c) || isPUNCT(c))
4403 #endif
4404
4405 #ifndef isPRINT
4406 #  define isPRINT(c)                     (((c) >= 32 && (c) < 127))
4407 #endif
4408
4409 #ifndef isPUNCT
4410 #  define isPUNCT(c)                     (((c) >= 33 && (c) <= 47) || ((c) >= 58 && (c) <= 64)  || ((c) >= 91 && (c) <= 96) || ((c) >= 123 && (c) <= 126))
4411 #endif
4412
4413 #ifndef isXDIGIT
4414 #  define isXDIGIT(c)                    (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F'))
4415 #endif
4416
4417 #endif
4418
4419 #ifndef PERL_SIGNALS_UNSAFE_FLAG
4420
4421 #define PERL_SIGNALS_UNSAFE_FLAG 0x0001
4422
4423 #if (PERL_BCDVERSION < 0x5008000)
4424 #  define D_PPP_PERL_SIGNALS_INIT   PERL_SIGNALS_UNSAFE_FLAG
4425 #else
4426 #  define D_PPP_PERL_SIGNALS_INIT   0
4427 #endif
4428
4429 #if defined(NEED_PL_signals)
4430 static U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
4431 #elif defined(NEED_PL_signals_GLOBAL)
4432 U32 DPPP_(my_PL_signals) = D_PPP_PERL_SIGNALS_INIT;
4433 #else
4434 extern U32 DPPP_(my_PL_signals);
4435 #endif
4436 #define PL_signals DPPP_(my_PL_signals)
4437
4438 #endif
4439
4440 /* Hint: PL_ppaddr
4441  * Calling an op via PL_ppaddr requires passing a context argument
4442  * for threaded builds. Since the context argument is different for
4443  * 5.005 perls, you can use aTHXR (supplied by ppport.h), which will
4444  * automatically be defined as the correct argument.
4445  */
4446
4447 #if (PERL_BCDVERSION <= 0x5005005)
4448 /* Replace: 1 */
4449 #  define PL_ppaddr                 ppaddr
4450 #  define PL_no_modify              no_modify
4451 /* Replace: 0 */
4452 #endif
4453
4454 #if (PERL_BCDVERSION <= 0x5004005)
4455 /* Replace: 1 */
4456 #  define PL_DBsignal               DBsignal
4457 #  define PL_DBsingle               DBsingle
4458 #  define PL_DBsub                  DBsub
4459 #  define PL_DBtrace                DBtrace
4460 #  define PL_Sv                     Sv
4461 #  define PL_bufend                 bufend
4462 #  define PL_bufptr                 bufptr
4463 #  define PL_compiling              compiling
4464 #  define PL_copline                copline
4465 #  define PL_curcop                 curcop
4466 #  define PL_curstash               curstash
4467 #  define PL_debstash               debstash
4468 #  define PL_defgv                  defgv
4469 #  define PL_diehook                diehook
4470 #  define PL_dirty                  dirty
4471 #  define PL_dowarn                 dowarn
4472 #  define PL_errgv                  errgv
4473 #  define PL_error_count            error_count
4474 #  define PL_expect                 expect
4475 #  define PL_hexdigit               hexdigit
4476 #  define PL_hints                  hints
4477 #  define PL_in_my                  in_my
4478 #  define PL_laststatval            laststatval
4479 #  define PL_lex_state              lex_state
4480 #  define PL_lex_stuff              lex_stuff
4481 #  define PL_linestr                linestr
4482 #  define PL_na                     na
4483 #  define PL_perl_destruct_level    perl_destruct_level
4484 #  define PL_perldb                 perldb
4485 #  define PL_rsfp_filters           rsfp_filters
4486 #  define PL_rsfp                   rsfp
4487 #  define PL_stack_base             stack_base
4488 #  define PL_stack_sp               stack_sp
4489 #  define PL_statcache              statcache
4490 #  define PL_stdingv                stdingv
4491 #  define PL_sv_arenaroot           sv_arenaroot
4492 #  define PL_sv_no                  sv_no
4493 #  define PL_sv_undef               sv_undef
4494 #  define PL_sv_yes                 sv_yes
4495 #  define PL_tainted                tainted
4496 #  define PL_tainting               tainting
4497 #  define PL_tokenbuf               tokenbuf
4498 /* Replace: 0 */
4499 #endif
4500
4501 /* Warning: PL_parser
4502  * For perl versions earlier than 5.9.5, this is an always
4503  * non-NULL dummy. Also, it cannot be dereferenced. Don't
4504  * use it if you can avoid is and unless you absolutely know
4505  * what you're doing.
4506  * If you always check that PL_parser is non-NULL, you can
4507  * define DPPP_PL_parser_NO_DUMMY to avoid the creation of
4508  * a dummy parser structure.
4509  */
4510
4511 #if (PERL_BCDVERSION >= 0x5009005)
4512 # ifdef DPPP_PL_parser_NO_DUMMY
4513 #  define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
4514                 (croak("panic: PL_parser == NULL in %s:%d", \
4515                        __FILE__, __LINE__), (yy_parser *) NULL))->var)
4516 # else
4517 #  ifdef DPPP_PL_parser_NO_DUMMY_WARNING
4518 #   define D_PPP_parser_dummy_warning(var)
4519 #  else
4520 #   define D_PPP_parser_dummy_warning(var) \
4521              warn("warning: dummy PL_" #var " used in %s:%d", __FILE__, __LINE__),
4522 #  endif
4523 #  define D_PPP_my_PL_parser_var(var) ((PL_parser ? PL_parser : \
4524                 (D_PPP_parser_dummy_warning(var) &DPPP_(dummy_PL_parser)))->var)
4525 #if defined(NEED_PL_parser)
4526 static yy_parser DPPP_(dummy_PL_parser);
4527 #elif defined(NEED_PL_parser_GLOBAL)
4528 yy_parser DPPP_(dummy_PL_parser);
4529 #else
4530 extern yy_parser DPPP_(dummy_PL_parser);
4531 #endif
4532
4533 # endif
4534
4535 /* PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf depends on PL_parser */
4536 /* Warning: PL_expect, PL_copline, PL_rsfp, PL_rsfp_filters, PL_linestr, PL_bufptr, PL_bufend, PL_lex_state, PL_lex_stuff, PL_tokenbuf
4537  * Do not use this variable unless you know exactly what you're
4538  * doint. It is internal to the perl parser and may change or even
4539  * be removed in the future. As of perl 5.9.5, you have to check
4540  * for (PL_parser != NULL) for this variable to have any effect.
4541  * An always non-NULL PL_parser dummy is provided for earlier
4542  * perl versions.
4543  * If PL_parser is NULL when you try to access this variable, a
4544  * dummy is being accessed instead and a warning is issued unless
4545  * you define DPPP_PL_parser_NO_DUMMY_WARNING.
4546  * If DPPP_PL_parser_NO_DUMMY is defined, the code trying to access
4547  * this variable will croak with a panic message.
4548  */
4549
4550 # define PL_expect         D_PPP_my_PL_parser_var(expect)
4551 # define PL_copline        D_PPP_my_PL_parser_var(copline)
4552 # define PL_rsfp           D_PPP_my_PL_parser_var(rsfp)
4553 # define PL_rsfp_filters   D_PPP_my_PL_parser_var(rsfp_filters)
4554 # define PL_linestr        D_PPP_my_PL_parser_var(linestr)
4555 # define PL_bufptr         D_PPP_my_PL_parser_var(bufptr)
4556 # define PL_bufend         D_PPP_my_PL_parser_var(bufend)
4557 # define PL_lex_state      D_PPP_my_PL_parser_var(lex_state)
4558 # define PL_lex_stuff      D_PPP_my_PL_parser_var(lex_stuff)
4559 # define PL_tokenbuf       D_PPP_my_PL_parser_var(tokenbuf)
4560 # define PL_in_my          D_PPP_my_PL_parser_var(in_my)
4561 # define PL_in_my_stash    D_PPP_my_PL_parser_var(in_my_stash)
4562 # define PL_error_count    D_PPP_my_PL_parser_var(error_count)
4563
4564
4565 #else
4566
4567 /* ensure that PL_parser != NULL and cannot be dereferenced */
4568 # define PL_parser         ((void *) 1)
4569
4570 #endif
4571 #ifndef mPUSHs
4572 #  define mPUSHs(s)                      PUSHs(sv_2mortal(s))
4573 #endif
4574
4575 #ifndef PUSHmortal
4576 #  define PUSHmortal                     PUSHs(sv_newmortal())
4577 #endif
4578
4579 #ifndef mPUSHp
4580 #  define mPUSHp(p,l)                    sv_setpvn(PUSHmortal, (p), (l))
4581 #endif
4582
4583 #ifndef mPUSHn
4584 #  define mPUSHn(n)                      sv_setnv(PUSHmortal, (NV)(n))
4585 #endif
4586
4587 #ifndef mPUSHi
4588 #  define mPUSHi(i)                      sv_setiv(PUSHmortal, (IV)(i))
4589 #endif
4590
4591 #ifndef mPUSHu
4592 #  define mPUSHu(u)                      sv_setuv(PUSHmortal, (UV)(u))
4593 #endif
4594 #ifndef mXPUSHs
4595 #  define mXPUSHs(s)                     XPUSHs(sv_2mortal(s))
4596 #endif
4597
4598 #ifndef XPUSHmortal
4599 #  define XPUSHmortal                    XPUSHs(sv_newmortal())
4600 #endif
4601
4602 #ifndef mXPUSHp
4603 #  define mXPUSHp(p,l)                   STMT_START { EXTEND(sp,1); sv_setpvn(PUSHmortal, (p), (l)); } STMT_END
4604 #endif
4605
4606 #ifndef mXPUSHn
4607 #  define mXPUSHn(n)                     STMT_START { EXTEND(sp,1); sv_setnv(PUSHmortal, (NV)(n)); } STMT_END
4608 #endif
4609
4610 #ifndef mXPUSHi
4611 #  define mXPUSHi(i)                     STMT_START { EXTEND(sp,1); sv_setiv(PUSHmortal, (IV)(i)); } STMT_END
4612 #endif
4613
4614 #ifndef mXPUSHu
4615 #  define mXPUSHu(u)                     STMT_START { EXTEND(sp,1); sv_setuv(PUSHmortal, (UV)(u)); } STMT_END
4616 #endif
4617
4618 /* Replace: 1 */
4619 #ifndef call_sv
4620 #  define call_sv                        perl_call_sv
4621 #endif
4622
4623 #ifndef call_pv
4624 #  define call_pv                        perl_call_pv
4625 #endif
4626
4627 #ifndef call_argv
4628 #  define call_argv                      perl_call_argv
4629 #endif
4630
4631 #ifndef call_method
4632 #  define call_method                    perl_call_method
4633 #endif
4634 #ifndef eval_sv
4635 #  define eval_sv                        perl_eval_sv
4636 #endif
4637
4638 /* Replace: 0 */
4639 #ifndef PERL_LOADMOD_DENY
4640 #  define PERL_LOADMOD_DENY              0x1
4641 #endif
4642
4643 #ifndef PERL_LOADMOD_NOIMPORT
4644 #  define PERL_LOADMOD_NOIMPORT          0x2
4645 #endif
4646
4647 #ifndef PERL_LOADMOD_IMPORT_OPS
4648 #  define PERL_LOADMOD_IMPORT_OPS        0x4
4649 #endif
4650
4651 #ifndef G_METHOD
4652 # define G_METHOD               64
4653 # ifdef call_sv
4654 #  undef call_sv
4655 # endif
4656 # if (PERL_BCDVERSION < 0x5006000)
4657 #  define call_sv(sv, flags)  ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \
4658                                 (flags) & ~G_METHOD) : perl_call_sv(sv, flags))
4659 # else
4660 #  define call_sv(sv, flags)  ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \
4661                                 (flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
4662 # endif
4663 #endif
4664
4665 /* Replace perl_eval_pv with eval_pv */
4666
4667 #ifndef eval_pv
4668 #if defined(NEED_eval_pv)
4669 static SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
4670 static
4671 #else
4672 extern SV* DPPP_(my_eval_pv)(char *p, I32 croak_on_error);
4673 #endif
4674
4675 #ifdef eval_pv
4676 #  undef eval_pv
4677 #endif
4678 #define eval_pv(a,b) DPPP_(my_eval_pv)(aTHX_ a,b)
4679 #define Perl_eval_pv DPPP_(my_eval_pv)
4680
4681 #if defined(NEED_eval_pv) || defined(NEED_eval_pv_GLOBAL)
4682
4683 SV*
4684 DPPP_(my_eval_pv)(char *p, I32 croak_on_error)
4685 {
4686     dSP;
4687     SV* sv = newSVpv(p, 0);
4688
4689     PUSHMARK(sp);
4690     eval_sv(sv, G_SCALAR);
4691     SvREFCNT_dec(sv);
4692
4693     SPAGAIN;
4694     sv = POPs;
4695     PUTBACK;
4696
4697     if (croak_on_error && SvTRUE(GvSV(errgv)))
4698         croak(SvPVx(GvSV(errgv), na));
4699
4700     return sv;
4701 }
4702
4703 #endif
4704 #endif
4705
4706 #ifndef vload_module
4707 #if defined(NEED_vload_module)
4708 static void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args);
4709 static
4710 #else
4711 extern void DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args);
4712 #endif
4713
4714 #ifdef vload_module
4715 #  undef vload_module
4716 #endif
4717 #define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d)
4718 #define Perl_vload_module DPPP_(my_vload_module)
4719
4720 #if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL)
4721
4722 void
4723 DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
4724 {
4725     dTHR;
4726     dVAR;
4727     OP *veop, *imop;
4728
4729     OP * const modname = newSVOP(OP_CONST, 0, name);
4730     /* 5.005 has a somewhat hacky force_normal that doesn't croak on
4731        SvREADONLY() if PL_compling is true. Current perls take care in
4732        ck_require() to correctly turn off SvREADONLY before calling
4733        force_normal_flags(). This seems a better fix than fudging PL_compling
4734      */
4735     SvREADONLY_off(((SVOP*)modname)->op_sv);
4736     modname->op_private |= OPpCONST_BARE;
4737     if (ver) {
4738         veop = newSVOP(OP_CONST, 0, ver);
4739     }
4740     else
4741         veop = NULL;
4742     if (flags & PERL_LOADMOD_NOIMPORT) {
4743         imop = sawparens(newNULLLIST());
4744     }
4745     else if (flags & PERL_LOADMOD_IMPORT_OPS) {
4746         imop = va_arg(*args, OP*);
4747     }
4748     else {
4749         SV *sv;
4750         imop = NULL;
4751         sv = va_arg(*args, SV*);
4752         while (sv) {
4753             imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
4754             sv = va_arg(*args, SV*);
4755         }
4756     }
4757     {
4758         const line_t ocopline = PL_copline;
4759         COP * const ocurcop = PL_curcop;
4760         const int oexpect = PL_expect;
4761
4762 #if (PERL_BCDVERSION >= 0x5004000)
4763         utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0),
4764                 veop, modname, imop);
4765 #else
4766         utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(),
4767                 modname, imop);
4768 #endif
4769         PL_expect = oexpect;
4770         PL_copline = ocopline;
4771         PL_curcop = ocurcop;
4772     }
4773 }
4774
4775 #endif
4776 #endif
4777
4778 #ifndef load_module
4779 #if defined(NEED_load_module)
4780 static void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...);
4781 static
4782 #else
4783 extern void DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...);
4784 #endif
4785
4786 #ifdef load_module
4787 #  undef load_module
4788 #endif
4789 #define load_module DPPP_(my_load_module)
4790 #define Perl_load_module DPPP_(my_load_module)
4791
4792 #if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL)
4793
4794 void
4795 DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
4796 {
4797     va_list args;
4798     va_start(args, ver);
4799     vload_module(flags, name, ver, &args);
4800     va_end(args);
4801 }
4802
4803 #endif
4804 #endif
4805 #ifndef newRV_inc
4806 #  define newRV_inc(sv)                  newRV(sv)   /* Replace */
4807 #endif
4808
4809 #ifndef newRV_noinc
4810 #if defined(NEED_newRV_noinc)
4811 static SV * DPPP_(my_newRV_noinc)(SV *sv);
4812 static
4813 #else
4814 extern SV * DPPP_(my_newRV_noinc)(SV *sv);
4815 #endif
4816
4817 #ifdef newRV_noinc
4818 #  undef newRV_noinc
4819 #endif
4820 #define newRV_noinc(a) DPPP_(my_newRV_noinc)(aTHX_ a)
4821 #define Perl_newRV_noinc DPPP_(my_newRV_noinc)
4822
4823 #if defined(NEED_newRV_noinc) || defined(NEED_newRV_noinc_GLOBAL)
4824 SV *
4825 DPPP_(my_newRV_noinc)(SV *sv)
4826 {
4827   SV *rv = (SV *)newRV(sv);
4828   SvREFCNT_dec(sv);
4829   return rv;
4830 }
4831 #endif
4832 #endif
4833
4834 /* Hint: newCONSTSUB
4835  * Returns a CV* as of perl-5.7.1. This return value is not supported
4836  * by Devel::PPPort.
4837  */
4838
4839 /* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */
4840 #if (PERL_BCDVERSION < 0x5004063) && (PERL_BCDVERSION != 0x5004005)
4841 #if defined(NEED_newCONSTSUB)
4842 static void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv);
4843 static
4844 #else
4845 extern void DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv);
4846 #endif
4847
4848 #ifdef newCONSTSUB
4849 #  undef newCONSTSUB
4850 #endif
4851 #define newCONSTSUB(a,b,c) DPPP_(my_newCONSTSUB)(aTHX_ a,b,c)
4852 #define Perl_newCONSTSUB DPPP_(my_newCONSTSUB)
4853
4854 #if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL)
4855
4856 /* This is just a trick to avoid a dependency of newCONSTSUB on PL_parser */
4857 /* (There's no PL_parser in perl < 5.005, so this is completely safe)     */
4858 #define D_PPP_PL_copline PL_copline
4859
4860 void
4861 DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
4862 {
4863         U32 oldhints = PL_hints;
4864         HV *old_cop_stash = PL_curcop->cop_stash;
4865         HV *old_curstash = PL_curstash;
4866         line_t oldline = PL_curcop->cop_line;
4867         PL_curcop->cop_line = D_PPP_PL_copline;
4868
4869         PL_hints &= ~HINT_BLOCK_SCOPE;
4870         if (stash)
4871                 PL_curstash = PL_curcop->cop_stash = stash;
4872
4873         newSUB(
4874
4875 #if   (PERL_BCDVERSION < 0x5003022)
4876                 start_subparse(),
4877 #elif (PERL_BCDVERSION == 0x5003022)
4878                 start_subparse(0),
4879 #else  /* 5.003_23  onwards */
4880                 start_subparse(FALSE, 0),
4881 #endif
4882
4883                 newSVOP(OP_CONST, 0, newSVpv((char *) name, 0)),
4884                 newSVOP(OP_CONST, 0, &PL_sv_no),   /* SvPV(&PL_sv_no) == "" -- GMB */
4885                 newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
4886         );
4887
4888         PL_hints = oldhints;
4889         PL_curcop->cop_stash = old_cop_stash;
4890         PL_curstash = old_curstash;
4891         PL_curcop->cop_line = oldline;
4892 }
4893 #endif
4894 #endif
4895
4896 /*
4897  * Boilerplate macros for initializing and accessing interpreter-local
4898  * data from C.  All statics in extensions should be reworked to use
4899  * this, if you want to make the extension thread-safe.  See ext/re/re.xs
4900  * for an example of the use of these macros.
4901  *
4902  * Code that uses these macros is responsible for the following:
4903  * 1. #define MY_CXT_KEY to a unique string, e.g. "DynaLoader_guts"
4904  * 2. Declare a typedef named my_cxt_t that is a structure that contains
4905  *    all the data that needs to be interpreter-local.
4906  * 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
4907  * 4. Use the MY_CXT_INIT macro such that it is called exactly once
4908  *    (typically put in the BOOT: section).
4909  * 5. Use the members of the my_cxt_t structure everywhere as
4910  *    MY_CXT.member.
4911  * 6. Use the dMY_CXT macro (a declaration) in all the functions that
4912  *    access MY_CXT.
4913  */
4914
4915 #if defined(MULTIPLICITY) || defined(PERL_OBJECT) || \
4916     defined(PERL_CAPI)    || defined(PERL_IMPLICIT_CONTEXT)
4917
4918 #ifndef START_MY_CXT
4919
4920 /* This must appear in all extensions that define a my_cxt_t structure,
4921  * right after the definition (i.e. at file scope).  The non-threads
4922  * case below uses it to declare the data as static. */
4923 #define START_MY_CXT
4924
4925 #if (PERL_BCDVERSION < 0x5004068)
4926 /* Fetches the SV that keeps the per-interpreter data. */
4927 #define dMY_CXT_SV \
4928         SV *my_cxt_sv = get_sv(MY_CXT_KEY, FALSE)
4929 #else /* >= perl5.004_68 */
4930 #define dMY_CXT_SV \
4931         SV *my_cxt_sv = *hv_fetch(PL_modglobal, MY_CXT_KEY,             \
4932                                   sizeof(MY_CXT_KEY)-1, TRUE)
4933 #endif /* < perl5.004_68 */
4934
4935 /* This declaration should be used within all functions that use the
4936  * interpreter-local data. */
4937 #define dMY_CXT \
4938         dMY_CXT_SV;                                                     \
4939         my_cxt_t *my_cxtp = INT2PTR(my_cxt_t*,SvUV(my_cxt_sv))
4940
4941 /* Creates and zeroes the per-interpreter data.
4942  * (We allocate my_cxtp in a Perl SV so that it will be released when
4943  * the interpreter goes away.) */
4944 #define MY_CXT_INIT \
4945         dMY_CXT_SV;                                                     \
4946         /* newSV() allocates one more than needed */                    \
4947         my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
4948         Zero(my_cxtp, 1, my_cxt_t);                                     \
4949         sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
4950
4951 /* This macro must be used to access members of the my_cxt_t structure.
4952  * e.g. MYCXT.some_data */
4953 #define MY_CXT          (*my_cxtp)
4954
4955 /* Judicious use of these macros can reduce the number of times dMY_CXT
4956  * is used.  Use is similar to pTHX, aTHX etc. */
4957 #define pMY_CXT         my_cxt_t *my_cxtp
4958 #define pMY_CXT_        pMY_CXT,
4959 #define _pMY_CXT        ,pMY_CXT
4960 #define aMY_CXT         my_cxtp
4961 #define aMY_CXT_        aMY_CXT,
4962 #define _aMY_CXT        ,aMY_CXT
4963
4964 #endif /* START_MY_CXT */
4965
4966 #ifndef MY_CXT_CLONE
4967 /* Clones the per-interpreter data. */
4968 #define MY_CXT_CLONE \
4969         dMY_CXT_SV;                                                     \
4970         my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
4971         Copy(INT2PTR(my_cxt_t*, SvUV(my_cxt_sv)), my_cxtp, 1, my_cxt_t);\
4972         sv_setuv(my_cxt_sv, PTR2UV(my_cxtp))
4973 #endif
4974
4975 #else /* single interpreter */
4976
4977 #ifndef START_MY_CXT
4978
4979 #define START_MY_CXT    static my_cxt_t my_cxt;
4980 #define dMY_CXT_SV      dNOOP
4981 #define dMY_CXT         dNOOP
4982 #define MY_CXT_INIT     NOOP
4983 #define MY_CXT          my_cxt
4984
4985 #define pMY_CXT         void
4986 #define pMY_CXT_
4987 #define _pMY_CXT
4988 #define aMY_CXT
4989 #define aMY_CXT_
4990 #define _aMY_CXT
4991
4992 #endif /* START_MY_CXT */
4993
4994 #ifndef MY_CXT_CLONE
4995 #define MY_CXT_CLONE    NOOP
4996 #endif
4997
4998 #endif
4999
5000 #ifndef IVdf
5001 #  if IVSIZE == LONGSIZE
5002 #    define     IVdf      "ld"
5003 #    define     UVuf      "lu"
5004 #    define     UVof      "lo"
5005 #    define     UVxf      "lx"
5006 #    define     UVXf      "lX"
5007 #  elif IVSIZE == INTSIZE
5008 #    define   IVdf      "d"
5009 #    define   UVuf      "u"
5010 #    define   UVof      "o"
5011 #    define   UVxf      "x"
5012 #    define   UVXf      "X"
5013 #  else
5014 #    error "cannot define IV/UV formats"
5015 #  endif
5016 #endif
5017
5018 #ifndef NVef
5019 #  if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && \
5020       defined(PERL_PRIfldbl) && (PERL_BCDVERSION != 0x5006000)
5021             /* Not very likely, but let's try anyway. */
5022 #    define NVef          PERL_PRIeldbl
5023 #    define NVff          PERL_PRIfldbl
5024 #    define NVgf          PERL_PRIgldbl
5025 #  else
5026 #    define NVef          "e"
5027 #    define NVff          "f"
5028 #    define NVgf          "g"
5029 #  endif
5030 #endif
5031
5032 #ifndef SvREFCNT_inc
5033 #  ifdef PERL_USE_GCC_BRACE_GROUPS
5034 #    define SvREFCNT_inc(sv)            \
5035       ({                                \
5036           SV * const _sv = (SV*)(sv);   \
5037           if (_sv)                      \
5038                (SvREFCNT(_sv))++;       \
5039           _sv;                          \
5040       })
5041 #  else
5042 #    define SvREFCNT_inc(sv)    \
5043           ((PL_Sv=(SV*)(sv)) ? (++(SvREFCNT(PL_Sv)),PL_Sv) : NULL)
5044 #  endif
5045 #endif
5046
5047 #ifndef SvREFCNT_inc_simple
5048 #  ifdef PERL_USE_GCC_BRACE_GROUPS
5049 #    define SvREFCNT_inc_simple(sv)     \
5050       ({                                        \
5051           if (sv)                               \
5052                (SvREFCNT(sv))++;                \
5053           (SV *)(sv);                           \
5054       })
5055 #  else
5056 #    define SvREFCNT_inc_simple(sv) \
5057           ((sv) ? (SvREFCNT(sv)++,(SV*)(sv)) : NULL)
5058 #  endif
5059 #endif
5060
5061 #ifndef SvREFCNT_inc_NN
5062 #  ifdef PERL_USE_GCC_BRACE_GROUPS
5063 #    define SvREFCNT_inc_NN(sv)         \
5064       ({                                        \
5065           SV * const _sv = (SV*)(sv);   \
5066           SvREFCNT(_sv)++;              \
5067           _sv;                          \
5068       })
5069 #  else
5070 #    define SvREFCNT_inc_NN(sv) \
5071           (PL_Sv=(SV*)(sv),++(SvREFCNT(PL_Sv)),PL_Sv)
5072 #  endif
5073 #endif
5074
5075 #ifndef SvREFCNT_inc_void
5076 #  ifdef PERL_USE_GCC_BRACE_GROUPS
5077 #    define SvREFCNT_inc_void(sv)               \
5078       ({                                        \
5079           SV * const _sv = (SV*)(sv);   \
5080           if (_sv)                      \
5081               (void)(SvREFCNT(_sv)++);  \
5082       })
5083 #  else
5084 #    define SvREFCNT_inc_void(sv) \
5085           (void)((PL_Sv=(SV*)(sv)) ? ++(SvREFCNT(PL_Sv)) : 0)
5086 #  endif
5087 #endif
5088 #ifndef SvREFCNT_inc_simple_void
5089 #  define SvREFCNT_inc_simple_void(sv)   STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
5090 #endif
5091
5092 #ifndef SvREFCNT_inc_simple_NN
5093 #  define SvREFCNT_inc_simple_NN(sv)     (++SvREFCNT(sv), (SV*)(sv))
5094 #endif
5095
5096 #ifndef SvREFCNT_inc_void_NN
5097 #  define SvREFCNT_inc_void_NN(sv)       (void)(++SvREFCNT((SV*)(sv)))
5098 #endif
5099
5100 #ifndef SvREFCNT_inc_simple_void_NN
5101 #  define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT((SV*)(sv)))
5102 #endif
5103
5104 #ifndef newSV_type
5105
5106 #if defined(NEED_newSV_type)
5107 static SV* DPPP_(my_newSV_type)(pTHX_ svtype const t);
5108 static
5109 #else
5110 extern SV* DPPP_(my_newSV_type)(pTHX_ svtype const t);
5111 #endif
5112
5113 #ifdef newSV_type
5114 #  undef newSV_type
5115 #endif
5116 #define newSV_type(a) DPPP_(my_newSV_type)(aTHX_ a)
5117 #define Perl_newSV_type DPPP_(my_newSV_type)
5118
5119 #if defined(NEED_newSV_type) || defined(NEED_newSV_type_GLOBAL)
5120
5121 SV*
5122 DPPP_(my_newSV_type)(pTHX_ svtype const t)
5123 {
5124   SV* const sv = newSV(0);
5125   sv_upgrade(sv, t);
5126   return sv;
5127 }
5128
5129 #endif
5130
5131 #endif
5132
5133 #if (PERL_BCDVERSION < 0x5006000)
5134 # define D_PPP_CONSTPV_ARG(x)  ((char *) (x))
5135 #else
5136 # define D_PPP_CONSTPV_ARG(x)  (x)
5137 #endif
5138 #ifndef newSVpvn
5139 #  define newSVpvn(data,len)             ((data)                                              \
5140                                     ? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \
5141                                     : newSV(0))
5142 #endif
5143 #ifndef newSVpvn_utf8
5144 #  define newSVpvn_utf8(s, len, u)       newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)
5145 #endif
5146 #ifndef SVf_UTF8
5147 #  define SVf_UTF8                       0
5148 #endif
5149
5150 #ifndef newSVpvn_flags
5151
5152 #if defined(NEED_newSVpvn_flags)
5153 static SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags);
5154 static
5155 #else
5156 extern SV * DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags);
5157 #endif
5158
5159 #ifdef newSVpvn_flags
5160 #  undef newSVpvn_flags
5161 #endif
5162 #define newSVpvn_flags(a,b,c) DPPP_(my_newSVpvn_flags)(aTHX_ a,b,c)
5163 #define Perl_newSVpvn_flags DPPP_(my_newSVpvn_flags)
5164
5165 #if defined(NEED_newSVpvn_flags) || defined(NEED_newSVpvn_flags_GLOBAL)
5166
5167 SV *
5168 DPPP_(my_newSVpvn_flags)(pTHX_ const char *s, STRLEN len, U32 flags)
5169 {
5170   SV *sv = newSVpvn(D_PPP_CONSTPV_ARG(s), len);
5171   SvFLAGS(sv) |= (flags & SVf_UTF8);
5172   return (flags & SVs_TEMP) ? sv_2mortal(sv) : sv;
5173 }
5174
5175 #endif
5176
5177 #endif
5178
5179 /* Backwards compatibility stuff... :-( */
5180 #if !defined(NEED_sv_2pv_flags) && defined(NEED_sv_2pv_nolen)
5181 #  define NEED_sv_2pv_flags
5182 #endif
5183 #if !defined(NEED_sv_2pv_flags_GLOBAL) && defined(NEED_sv_2pv_nolen_GLOBAL)
5184 #  define NEED_sv_2pv_flags_GLOBAL
5185 #endif
5186
5187 /* Hint: sv_2pv_nolen
5188  * Use the SvPV_nolen() or SvPV_nolen_const() macros instead of sv_2pv_nolen().
5189  */
5190 #ifndef sv_2pv_nolen
5191 #  define sv_2pv_nolen(sv)               SvPV_nolen(sv)
5192 #endif
5193
5194 #ifdef SvPVbyte
5195
5196 /* Hint: SvPVbyte
5197  * Does not work in perl-5.6.1, ppport.h implements a version
5198  * borrowed from perl-5.7.3.
5199  */
5200
5201 #if (PERL_BCDVERSION < 0x5007000)
5202
5203 #if defined(NEED_sv_2pvbyte)
5204 static char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp);
5205 static
5206 #else
5207 extern char * DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp);
5208 #endif
5209
5210 #ifdef sv_2pvbyte
5211 #  undef sv_2pvbyte
5212 #endif
5213 #define sv_2pvbyte(a,b) DPPP_(my_sv_2pvbyte)(aTHX_ a,b)
5214 #define Perl_sv_2pvbyte DPPP_(my_sv_2pvbyte)
5215
5216 #if defined(NEED_sv_2pvbyte) || defined(NEED_sv_2pvbyte_GLOBAL)
5217
5218 char *
5219 DPPP_(my_sv_2pvbyte)(pTHX_ SV *sv, STRLEN *lp)
5220 {
5221   sv_utf8_downgrade(sv,0);
5222   return SvPV(sv,*lp);
5223 }
5224
5225 #endif
5226
5227 /* Hint: sv_2pvbyte
5228  * Use the SvPVbyte() macro instead of sv_2pvbyte().
5229  */
5230
5231 #undef SvPVbyte
5232
5233 #define SvPVbyte(sv, lp)                                                \
5234         ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK)                \
5235          ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &lp))
5236
5237 #endif
5238
5239 #else
5240
5241 #  define SvPVbyte          SvPV
5242 #  define sv_2pvbyte        sv_2pv
5243
5244 #endif
5245 #ifndef sv_2pvbyte_nolen
5246 #  define sv_2pvbyte_nolen(sv)           sv_2pv_nolen(sv)
5247 #endif
5248
5249 /* Hint: sv_pvn
5250  * Always use the SvPV() macro instead of sv_pvn().
5251  */
5252
5253 /* Hint: sv_pvn_force
5254  * Always use the SvPV_force() macro instead of sv_pvn_force().
5255  */
5256
5257 /* If these are undefined, they're not handled by the core anyway */
5258 #ifndef SV_IMMEDIATE_UNREF
5259 #  define SV_IMMEDIATE_UNREF             0
5260 #endif
5261
5262 #ifndef SV_GMAGIC
5263 #  define SV_GMAGIC                      0
5264 #endif
5265
5266 #ifndef SV_COW_DROP_PV
5267 #  define SV_COW_DROP_PV                 0
5268 #endif
5269
5270 #ifndef SV_UTF8_NO_ENCODING
5271 #  define SV_UTF8_NO_ENCODING            0
5272 #endif
5273
5274 #ifndef SV_NOSTEAL
5275 #  define SV_NOSTEAL                     0
5276 #endif
5277
5278 #ifndef SV_CONST_RETURN
5279 #  define SV_CONST_RETURN                0
5280 #endif
5281
5282 #ifndef SV_MUTABLE_RETURN
5283 #  define SV_MUTABLE_RETURN              0
5284 #endif
5285
5286 #ifndef SV_SMAGIC
5287 #  define SV_SMAGIC                      0
5288 #endif
5289
5290 #ifndef SV_HAS_TRAILING_NUL
5291 #  define SV_HAS_TRAILING_NUL            0
5292 #endif
5293
5294 #ifndef SV_COW_SHARED_HASH_KEYS
5295 #  define SV_COW_SHARED_HASH_KEYS        0
5296 #endif
5297
5298 #if (PERL_BCDVERSION < 0x5007002)
5299
5300 #if defined(NEED_sv_2pv_flags)
5301 static char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
5302 static
5303 #else
5304 extern char * DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
5305 #endif
5306
5307 #ifdef sv_2pv_flags
5308 #  undef sv_2pv_flags
5309 #endif
5310 #define sv_2pv_flags(a,b,c) DPPP_(my_sv_2pv_flags)(aTHX_ a,b,c)
5311 #define Perl_sv_2pv_flags DPPP_(my_sv_2pv_flags)
5312
5313 #if defined(NEED_sv_2pv_flags) || defined(NEED_sv_2pv_flags_GLOBAL)
5314
5315 char *
5316 DPPP_(my_sv_2pv_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags)
5317 {
5318   STRLEN n_a = (STRLEN) flags;
5319   return sv_2pv(sv, lp ? lp : &n_a);
5320 }
5321
5322 #endif
5323
5324 #if defined(NEED_sv_pvn_force_flags)
5325 static char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
5326 static
5327 #else
5328 extern char * DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags);
5329 #endif
5330
5331 #ifdef sv_pvn_force_flags
5332 #  undef sv_pvn_force_flags
5333 #endif
5334 #define sv_pvn_force_flags(a,b,c) DPPP_(my_sv_pvn_force_flags)(aTHX_ a,b,c)
5335 #define Perl_sv_pvn_force_flags DPPP_(my_sv_pvn_force_flags)
5336
5337 #if defined(NEED_sv_pvn_force_flags) || defined(NEED_sv_pvn_force_flags_GLOBAL)
5338
5339 char *
5340 DPPP_(my_sv_pvn_force_flags)(pTHX_ SV *sv, STRLEN *lp, I32 flags)
5341 {
5342   STRLEN n_a = (STRLEN) flags;
5343   return sv_pvn_force(sv, lp ? lp : &n_a);
5344 }
5345
5346 #endif
5347
5348 #endif
5349
5350 #if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) )
5351 # define DPPP_SVPV_NOLEN_LP_ARG &PL_na
5352 #else
5353 # define DPPP_SVPV_NOLEN_LP_ARG 0
5354 #endif
5355 #ifndef SvPV_const
5356 #  define SvPV_const(sv, lp)             SvPV_flags_const(sv, lp, SV_GMAGIC)
5357 #endif
5358
5359 #ifndef SvPV_mutable
5360 #  define SvPV_mutable(sv, lp)           SvPV_flags_mutable(sv, lp, SV_GMAGIC)
5361 #endif
5362 #ifndef SvPV_flags
5363 #  define SvPV_flags(sv, lp, flags)      \
5364                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
5365                   ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags))
5366 #endif
5367 #ifndef SvPV_flags_const
5368 #  define SvPV_flags_const(sv, lp, flags) \
5369                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
5370                   ? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \
5371                   (const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN))
5372 #endif
5373 #ifndef SvPV_flags_const_nolen
5374 #  define SvPV_flags_const_nolen(sv, flags) \
5375                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
5376                   ? SvPVX_const(sv) : \
5377                   (const char*) sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN))
5378 #endif
5379 #ifndef SvPV_flags_mutable
5380 #  define SvPV_flags_mutable(sv, lp, flags) \
5381                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
5382                   ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \
5383                   sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
5384 #endif
5385 #ifndef SvPV_force
5386 #  define SvPV_force(sv, lp)             SvPV_force_flags(sv, lp, SV_GMAGIC)
5387 #endif
5388
5389 #ifndef SvPV_force_nolen
5390 #  define SvPV_force_nolen(sv)           SvPV_force_flags_nolen(sv, SV_GMAGIC)
5391 #endif
5392
5393 #ifndef SvPV_force_mutable
5394 #  define SvPV_force_mutable(sv, lp)     SvPV_force_flags_mutable(sv, lp, SV_GMAGIC)
5395 #endif
5396
5397 #ifndef SvPV_force_nomg
5398 #  define SvPV_force_nomg(sv, lp)        SvPV_force_flags(sv, lp, 0)
5399 #endif
5400
5401 #ifndef SvPV_force_nomg_nolen
5402 #  define SvPV_force_nomg_nolen(sv)      SvPV_force_flags_nolen(sv, 0)
5403 #endif
5404 #ifndef SvPV_force_flags
5405 #  define SvPV_force_flags(sv, lp, flags) \
5406                  ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
5407                  ? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags))
5408 #endif
5409 #ifndef SvPV_force_flags_nolen
5410 #  define SvPV_force_flags_nolen(sv, flags) \
5411                  ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
5412                  ? SvPVX(sv) : sv_pvn_force_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, flags))
5413 #endif
5414 #ifndef SvPV_force_flags_mutable
5415 #  define SvPV_force_flags_mutable(sv, lp, flags) \
5416                  ((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
5417                  ? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \
5418                   : sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
5419 #endif
5420 #ifndef SvPV_nolen
5421 #  define SvPV_nolen(sv)                 \
5422                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
5423                   ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC))
5424 #endif
5425 #ifndef SvPV_nolen_const
5426 #  define SvPV_nolen_const(sv)           \
5427                  ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
5428                   ? SvPVX_const(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN))
5429 #endif
5430 #ifndef SvPV_nomg
5431 #  define SvPV_nomg(sv, lp)              SvPV_flags(sv, lp, 0)
5432 #endif
5433
5434 #ifndef SvPV_nomg_const
5435 #  define SvPV_nomg_const(sv, lp)        SvPV_flags_const(sv, lp, 0)
5436 #endif
5437
5438 #ifndef SvPV_nomg_const_nolen
5439 #  define SvPV_nomg_const_nolen(sv)      SvPV_flags_const_nolen(sv, 0)
5440 #endif
5441
5442 #ifndef SvPV_nomg_nolen
5443 #  define SvPV_nomg_nolen(sv)            ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
5444                                     ? SvPVX(sv) : sv_2pv_flags(sv, DPPP_SVPV_NOLEN_LP_ARG, 0))
5445 #endif
5446 #ifndef SvPV_renew
5447 #  define SvPV_renew(sv,n)               STMT_START { SvLEN_set(sv, n); \
5448                  SvPV_set((sv), (char *) saferealloc(          \
5449                        (Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \
5450                } STMT_END
5451 #endif
5452 #ifndef SvMAGIC_set
5453 #  define SvMAGIC_set(sv, val)           \
5454                 STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
5455                 (((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END
5456 #endif
5457
5458 #if (PERL_BCDVERSION < 0x5009003)
5459 #ifndef SvPVX_const
5460 #  define SvPVX_const(sv)                ((const char*) (0 + SvPVX(sv)))
5461 #endif
5462
5463 #ifndef SvPVX_mutable
5464 #  define SvPVX_mutable(sv)              (0 + SvPVX(sv))
5465 #endif
5466 #ifndef SvRV_set
5467 #  define SvRV_set(sv, val)              \
5468                 STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \
5469                 (((XRV*) SvANY(sv))->xrv_rv = (val)); } STMT_END
5470 #endif
5471
5472 #else
5473 #ifndef SvPVX_const
5474 #  define SvPVX_const(sv)                ((const char*)((sv)->sv_u.svu_pv))
5475 #endif
5476
5477 #ifndef SvPVX_mutable
5478 #  define SvPVX_mutable(sv)              ((sv)->sv_u.svu_pv)
5479 #endif
5480 #ifndef SvRV_set
5481 #  define SvRV_set(sv, val)              \
5482                 STMT_START { assert(SvTYPE(sv) >=  SVt_RV); \
5483                 ((sv)->sv_u.svu_rv = (val)); } STMT_END
5484 #endif
5485
5486 #endif
5487 #ifndef SvSTASH_set
5488 #  define SvSTASH_set(sv, val)           \
5489                 STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
5490                 (((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END
5491 #endif
5492
5493 #if (PERL_BCDVERSION < 0x5004000)
5494 #ifndef SvUV_set
5495 #  define SvUV_set(sv, val)              \
5496                 STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
5497                 (((XPVIV*) SvANY(sv))->xiv_iv = (IV) (val)); } STMT_END
5498 #endif
5499
5500 #else
5501 #ifndef SvUV_set
5502 #  define SvUV_set(sv, val)              \
5503                 STMT_START { assert(SvTYPE(sv) == SVt_IV || SvTYPE(sv) >= SVt_PVIV); \
5504                 (((XPVUV*) SvANY(sv))->xuv_uv = (val)); } STMT_END
5505 #endif
5506
5507 #endif
5508
5509 #if (PERL_BCDVERSION >= 0x5004000) && !defined(vnewSVpvf)
5510 #if defined(NEED_vnewSVpvf)
5511 static SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args);
5512 static
5513 #else
5514 extern SV * DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args);
5515 #endif
5516
5517 #ifdef vnewSVpvf
5518 #  undef vnewSVpvf
5519 #endif
5520 #define vnewSVpvf(a,b) DPPP_(my_vnewSVpvf)(aTHX_ a,b)
5521 #define Perl_vnewSVpvf DPPP_(my_vnewSVpvf)
5522
5523 #if defined(NEED_vnewSVpvf) || defined(NEED_vnewSVpvf_GLOBAL)
5524
5525 SV *
5526 DPPP_(my_vnewSVpvf)(pTHX_ const char *pat, va_list *args)
5527 {
5528   register SV *sv = newSV(0);
5529   sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
5530   return sv;
5531 }
5532
5533 #endif
5534 #endif
5535
5536 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf)
5537 #  define sv_vcatpvf(sv, pat, args)  sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
5538 #endif
5539
5540 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vsetpvf)
5541 #  define sv_vsetpvf(sv, pat, args)  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))
5542 #endif
5543
5544 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg)
5545 #if defined(NEED_sv_catpvf_mg)
5546 static void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
5547 static
5548 #else
5549 extern void DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
5550 #endif
5551
5552 #define Perl_sv_catpvf_mg DPPP_(my_sv_catpvf_mg)
5553
5554 #if defined(NEED_sv_catpvf_mg) || defined(NEED_sv_catpvf_mg_GLOBAL)
5555
5556 void
5557 DPPP_(my_sv_catpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
5558 {
5559   va_list args;
5560   va_start(args, pat);
5561   sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
5562   SvSETMAGIC(sv);
5563   va_end(args);
5564 }
5565
5566 #endif
5567 #endif
5568
5569 #ifdef PERL_IMPLICIT_CONTEXT
5570 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_catpvf_mg_nocontext)
5571 #if defined(NEED_sv_catpvf_mg_nocontext)
5572 static void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...);
5573 static
5574 #else
5575 extern void DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...);
5576 #endif
5577
5578 #define sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
5579 #define Perl_sv_catpvf_mg_nocontext DPPP_(my_sv_catpvf_mg_nocontext)
5580
5581 #if defined(NEED_sv_catpvf_mg_nocontext) || defined(NEED_sv_catpvf_mg_nocontext_GLOBAL)
5582
5583 void
5584 DPPP_(my_sv_catpvf_mg_nocontext)(SV *sv, const char *pat, ...)
5585 {
5586   dTHX;
5587   va_list args;
5588   va_start(args, pat);
5589   sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
5590   SvSETMAGIC(sv);
5591   va_end(args);
5592 }
5593
5594 #endif
5595 #endif
5596 #endif
5597
5598 /* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */
5599 #ifndef sv_catpvf_mg
5600 #  ifdef PERL_IMPLICIT_CONTEXT
5601 #    define sv_catpvf_mg   Perl_sv_catpvf_mg_nocontext
5602 #  else
5603 #    define sv_catpvf_mg   Perl_sv_catpvf_mg
5604 #  endif
5605 #endif
5606
5607 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_vcatpvf_mg)
5608 #  define sv_vcatpvf_mg(sv, pat, args)                                     \
5609    STMT_START {                                                            \
5610      sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \
5611      SvSETMAGIC(sv);                                                       \
5612    } STMT_END
5613 #endif
5614
5615 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg)
5616 #if defined(NEED_sv_setpvf_mg)
5617 static void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
5618 static
5619 #else
5620 extern void DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...);
5621 #endif
5622
5623 #define Perl_sv_setpvf_mg DPPP_(my_sv_setpvf_mg)
5624
5625 #if defined(NEED_sv_setpvf_mg) || defined(NEED_sv_setpvf_mg_GLOBAL)
5626
5627 void
5628 DPPP_(my_sv_setpvf_mg)(pTHX_ SV *sv, const char *pat, ...)
5629 {
5630   va_list args;
5631   va_start(args, pat);
5632   sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));
5633   SvSETMAGIC(sv);
5634   va_end(args);
5635 }
5636
5637 #endif
5638 #endif
5639
5640 #ifdef PERL_IMPLICIT_CONTEXT
5641 #if (PERL_BCDVERSION >= 0x5004000) && !defined(sv_setpvf_mg_nocontext)
5642 #if defined(NEED_sv_setpvf_mg_nocontext)
5643 static void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...);
5644 static
5645 #else
5646 extern void DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...);
5647 #endif
5648
5649 #define sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
5650 #define Perl_sv_setpvf_mg_nocontext DPPP_(my_sv_setpvf_mg_nocontext)
5651
5652 #if defined(NEED_sv_setpvf_mg_nocontext) || defined(NEED_sv_setpvf_mg_nocontext_GLOBAL)
5653
5654 void
5655 DPPP_(my_sv_setpvf_mg_nocontext)(SV *sv, const char *pat, ...)
5656 {
5657   dTHX;
5658   va_list args;
5659   va_start(args, pat);
5660   sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));