[patch: perl@8867] embed.{h|pl} need not mention ebcdic_control ...
[p5sagit/p5-mst-13.2.git] / embed.pl
1 #!/usr/bin/perl -w
2
3 BEGIN {
4     unshift @INC, "./lib";
5 }
6
7 require 5.003;  # keep this compatible, an old perl is all we may have before
8                 # we build the new one
9
10 #
11 # See database of global and static function prototypes at the __END__.
12 # This is used to generate prototype headers under various configurations,
13 # export symbols lists for different platforms, and macros to provide an
14 # implicit interpreter context argument.
15 #
16
17 my $END = tell DATA;
18
19 # walk table providing an array of components in each line to
20 # subroutine, printing the result
21 sub walk_table (&@) {
22     my $function = shift;
23     my $filename = shift || '-';
24     my $leader = shift;
25     my $trailer = shift;
26     my $F;
27     local *F;
28     if (ref $filename) {        # filehandle
29         $F = $filename;
30     }
31     else {
32         open F, ">$filename" or die "Can't open $filename: $!";
33         $F = \*F;
34     }
35     print $F $leader if $leader;
36     seek DATA, $END, 0;         # so we may restart
37     while (<DATA>) {
38         chomp;
39         next if /^:/;
40         while (s|\\$||) {
41             $_ .= <DATA>;
42             chomp;
43         }
44         my @args;
45         if (/^\s*(#|$)/) {
46             @args = $_;
47         }
48         else {
49             @args = split /\s*\|\s*/, $_;
50         }
51         print $F $function->(@args);
52     }
53     print $F $trailer if $trailer;
54     close $F unless ref $filename;
55 }
56
57 sub munge_c_files () {
58     my $functions = {};
59     unless (@ARGV) {
60         warn "\@ARGV empty, nothing to do\n";
61         return;
62     }
63     walk_table {
64         if (@_ > 1) {
65             $functions->{$_[2]} = \@_ if $_[@_-1] =~ /\.\.\./;
66         }
67     } '/dev/null';
68     local $^I = '.bak';
69     while (<>) {
70 #       if (/^#\s*include\s+"perl.h"/) {
71 #           my $file = uc $ARGV;
72 #           $file =~ s/\./_/g;
73 #           print "#define PERL_IN_$file\n";
74 #       }
75 #       s{^(\w+)\s*\(}
76 #        {
77 #           my $f = $1;
78 #           my $repl = "$f(";
79 #           if (exists $functions->{$f}) {
80 #               my $flags = $functions->{$f}[0];
81 #               $repl = "Perl_$repl" if $flags =~ /p/;
82 #               unless ($flags =~ /n/) {
83 #                   $repl .= "pTHX";
84 #                   $repl .= "_ " if @{$functions->{$f}} > 3;
85 #               }
86 #               warn("$ARGV:$.:$repl\n");
87 #           }
88 #           $repl;
89 #        }e;
90         s{(\b(\w+)[ \t]*\([ \t]*(?!aTHX))}
91          {
92             my $repl = $1;
93             my $f = $2;
94             if (exists $functions->{$f}) {
95                 $repl .= "aTHX_ ";
96                 warn("$ARGV:$.:$`#$repl#$'");
97             }
98             $repl;
99          }eg;
100         print;
101         close ARGV if eof;      # restart $.
102     }
103     exit;
104 }
105
106 #munge_c_files();
107
108 # generate proto.h
109 my $wrote_protected = 0;
110
111 sub write_protos {
112     my $ret = "";
113     if (@_ == 1) {
114         my $arg = shift;
115         $ret .= "$arg\n";
116     }
117     else {
118         my ($flags,$retval,$func,@args) = @_;
119         if ($flags =~ /s/) {
120             $retval = "STATIC $retval";
121             $func = "S_$func";
122         }
123         else {
124             $retval = "PERL_CALLCONV $retval";
125             if ($flags =~ /p/) {
126                 $func = "Perl_$func";
127             }
128         }
129         $ret .= "$retval\t$func(";
130         unless ($flags =~ /n/) {
131             $ret .= "pTHX";
132             $ret .= "_ " if @args;
133         }
134         if (@args) {
135             $ret .= join ", ", @args;
136         }
137         else {
138             $ret .= "void" if $flags =~ /n/;
139         }
140         $ret .= ")";
141         $ret .= " __attribute__((noreturn))" if $flags =~ /r/;
142         if( $flags =~ /f/ ) {
143             my $prefix = $flags =~ /n/ ? '' : 'pTHX_';
144             my $args = scalar @args;
145             $ret .= "\n#ifdef CHECK_FORMAT\n";
146             $ret .= sprintf " __attribute__((format(printf,%s%d,%s%d)))",
147                                     $prefix, $args - 1, $prefix, $args;
148             $ret .= "\n#endif\n";
149         }
150         $ret .= ";\n";
151     }
152     $ret;
153 }
154
155 # generates global.sym (API export list), and populates %global with global symbols
156 sub write_global_sym {
157     my $ret = "";
158     if (@_ > 1) {
159         my ($flags,$retval,$func,@args) = @_;
160         if ($flags =~ /A/ && $flags !~ /x/) { # public API, so export
161             $func = "Perl_$func" if $flags =~ /p/;
162             $ret = "$func\n";
163         }
164     }
165     $ret;
166 }
167
168
169 walk_table(\&write_protos, 'proto.h', <<'EOT');
170 /*
171  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
172  * This file is autogenerated from data in embed.pl.  Edit that file
173  * and run 'make regen_headers' to effect changes.
174  */
175
176 EOT
177
178 walk_table(\&write_global_sym, 'global.sym', <<'EOT');
179 #
180 # !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
181 # This file is autogenerated from data in embed.pl.  Edit that file
182 # and run 'make regen_headers' to effect changes.
183 #
184
185 EOT
186
187 # XXX others that may need adding
188 #       warnhook
189 #       hints
190 #       copline
191 my @extvars = qw(sv_undef sv_yes sv_no na dowarn
192                  curcop compiling
193                  tainting tainted stack_base stack_sp sv_arenaroot
194                  no_modify
195                  curstash DBsub DBsingle debstash
196                  rsfp
197                  stdingv
198                  defgv
199                  errgv
200                  rsfp_filters
201                  perldb
202                  diehook
203                  dirty
204                  perl_destruct_level
205                  ppaddr
206                 );
207
208 sub readsyms (\%$) {
209     my ($syms, $file) = @_;
210     local (*FILE, $_);
211     open(FILE, "< $file")
212         or die "embed.pl: Can't open $file: $!\n";
213     while (<FILE>) {
214         s/[ \t]*#.*//;          # Delete comments.
215         if (/^\s*(\S+)\s*$/) {
216             my $sym = $1;
217             warn "duplicate symbol $sym while processing $file\n"
218                 if exists $$syms{$sym};
219             $$syms{$sym} = 1;
220         }
221     }
222     close(FILE);
223 }
224
225 # Perl_pp_* and Perl_ck_* are in pp.sym
226 readsyms my %ppsym, 'pp.sym';
227
228 sub readvars(\%$$@) {
229     my ($syms, $file,$pre,$keep_pre) = @_;
230     local (*FILE, $_);
231     open(FILE, "< $file")
232         or die "embed.pl: Can't open $file: $!\n";
233     while (<FILE>) {
234         s/[ \t]*#.*//;          # Delete comments.
235         if (/PERLVARA?I?C?\($pre(\w+)/) {
236             my $sym = $1;
237             $sym = $pre . $sym if $keep_pre;
238             warn "duplicate symbol $sym while processing $file\n"
239                 if exists $$syms{$sym};
240             $$syms{$sym} = $pre || 1;
241         }
242     }
243     close(FILE);
244 }
245
246 my %intrp;
247 my %thread;
248
249 readvars %intrp,  'intrpvar.h','I';
250 readvars %thread, 'thrdvar.h','T';
251 readvars %globvar, 'perlvars.h','G';
252
253 foreach my $sym (sort keys %thread) {
254   warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym};
255 }
256
257 sub undefine ($) {
258     my ($sym) = @_;
259     "#undef  $sym\n";
260 }
261
262 sub hide ($$) {
263     my ($from, $to) = @_;
264     my $t = int(length($from) / 8);
265     "#define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n";
266 }
267
268 sub bincompat_var ($$) {
269     my ($pfx, $sym) = @_;
270     my $arg = ($pfx eq 'G' ? 'NULL' : 'aTHXo');
271     undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))");
272 }
273
274 sub multon ($$$) {
275     my ($sym,$pre,$ptr) = @_;
276     hide("PL_$sym", "($ptr$pre$sym)");
277 }
278
279 sub multoff ($$) {
280     my ($sym,$pre) = @_;
281     return hide("PL_$pre$sym", "PL_$sym");
282 }
283
284 unlink 'embed.h';
285 open(EM, '> embed.h') or die "Can't create embed.h: $!\n";
286
287 print EM <<'END';
288 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
289    This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
290    perlvars.h and thrdvar.h.  Any changes made here will be lost!
291 */
292
293 /* (Doing namespace management portably in C is really gross.) */
294
295 /* NO_EMBED is no longer supported. i.e. EMBED is always active. */
296
297 /* provide binary compatible (but inconsistent) names */
298 #if defined(PERL_BINCOMPAT_5005)
299 #  define  Perl_call_atexit             perl_atexit
300 #  define  Perl_eval_sv                 perl_eval_sv
301 #  define  Perl_eval_pv                 perl_eval_pv
302 #  define  Perl_call_argv               perl_call_argv
303 #  define  Perl_call_method             perl_call_method
304 #  define  Perl_call_pv                 perl_call_pv
305 #  define  Perl_call_sv                 perl_call_sv
306 #  define  Perl_get_av                  perl_get_av
307 #  define  Perl_get_cv                  perl_get_cv
308 #  define  Perl_get_hv                  perl_get_hv
309 #  define  Perl_get_sv                  perl_get_sv
310 #  define  Perl_init_i18nl10n           perl_init_i18nl10n
311 #  define  Perl_init_i18nl14n           perl_init_i18nl14n
312 #  define  Perl_new_collate             perl_new_collate
313 #  define  Perl_new_ctype               perl_new_ctype
314 #  define  Perl_new_numeric             perl_new_numeric
315 #  define  Perl_require_pv              perl_require_pv
316 #  define  Perl_safesyscalloc           Perl_safecalloc
317 #  define  Perl_safesysfree             Perl_safefree
318 #  define  Perl_safesysmalloc           Perl_safemalloc
319 #  define  Perl_safesysrealloc          Perl_saferealloc
320 #  define  Perl_set_numeric_local       perl_set_numeric_local
321 #  define  Perl_set_numeric_standard    perl_set_numeric_standard
322 /* malloc() pollution was the default in earlier versions, so enable
323  * it for bincompat; but not for systems that used to do prevent that,
324  * or when they ask for {HIDE,EMBED}MYMALLOC */
325 #  if !defined(EMBEDMYMALLOC) && !defined(HIDEMYMALLOC)
326 #    if !defined(NeXT) && !defined(__NeXT) && !defined(__MACHTEN__) && \
327         !defined(__QNX__)
328 #      define  PERL_POLLUTE_MALLOC
329 #    endif
330 #  endif
331 #endif
332
333 /* Hide global symbols */
334
335 #if !defined(PERL_OBJECT)
336 #if !defined(PERL_IMPLICIT_CONTEXT)
337
338 END
339
340 walk_table {
341     my $ret = "";
342     if (@_ == 1) {
343         my $arg = shift;
344         $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/;
345     }
346     else {
347         my ($flags,$retval,$func,@args) = @_;
348         unless ($flags =~ /o/) {
349             if ($flags =~ /s/) {
350                 $ret .= hide($func,"S_$func");
351             }
352             elsif ($flags =~ /p/) {
353                 $ret .= hide($func,"Perl_$func");
354             }
355         }
356     }
357     $ret;
358 } \*EM;
359
360 for $sym (sort keys %ppsym) {
361     $sym =~ s/^Perl_//;
362     print EM hide($sym, "Perl_$sym");
363 }
364
365 print EM <<'END';
366
367 #else   /* PERL_IMPLICIT_CONTEXT */
368
369 END
370
371 my @az = ('a'..'z');
372
373 walk_table {
374     my $ret = "";
375     if (@_ == 1) {
376         my $arg = shift;
377         $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/;
378     }
379     else {
380         my ($flags,$retval,$func,@args) = @_;
381         unless ($flags =~ /o/) {
382             my $args = scalar @args;
383             if ($args and $args[$args-1] =~ /\.\.\./) {
384                 # we're out of luck for varargs functions under CPP
385             }
386             elsif ($flags =~ /n/) {
387                 if ($flags =~ /s/) {
388                     $ret .= hide($func,"S_$func");
389                 }
390                 elsif ($flags =~ /p/) {
391                     $ret .= hide($func,"Perl_$func");
392                 }
393             }
394             else {
395                 my $alist = join(",", @az[0..$args-1]);
396                 $ret = "#define $func($alist)";
397                 my $t = int(length($ret) / 8);
398                 $ret .=  "\t" x ($t < 4 ? 4 - $t : 1);
399                 if ($flags =~ /s/) {
400                     $ret .= "S_$func(aTHX";
401                 }
402                 elsif ($flags =~ /p/) {
403                     $ret .= "Perl_$func(aTHX";
404                 }
405                 $ret .= "_ " if $alist;
406                 $ret .= $alist . ")\n";
407             }
408         }
409     }
410     $ret;
411 } \*EM;
412
413 for $sym (sort keys %ppsym) {
414     $sym =~ s/^Perl_//;
415     if ($sym =~ /^ck_/) {
416         print EM hide("$sym(a)", "Perl_$sym(aTHX_ a)");
417     }
418     elsif ($sym =~ /^pp_/) {
419         print EM hide("$sym()", "Perl_$sym(aTHX)");
420     }
421     else {
422         warn "Illegal symbol '$sym' in pp.sym";
423     }
424 }
425
426 print EM <<'END';
427
428 #endif  /* PERL_IMPLICIT_CONTEXT */
429 #else   /* PERL_OBJECT */
430
431 END
432
433 walk_table {
434     my $ret = "";
435     if (@_ == 1) {
436         my $arg = shift;
437         $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/;
438     }
439     else {
440         my ($flags,$retval,$func,@args) = @_;
441         if ($flags =~ /s/) {
442             $ret .= hide("S_$func","CPerlObj::S_$func") if $flags !~ /j/;
443             $ret .= hide($func,"S_$func");
444         }
445         elsif ($flags =~ /p/) {
446             $ret .= hide("Perl_$func","CPerlObj::Perl_$func") if $flags !~ /j/;
447             $ret .= hide($func,"Perl_$func");
448         }
449         else {
450             $ret .= hide($func,"CPerlObj::$func") if $flags !~ /j/;
451         }
452     }
453     $ret;
454 } \*EM;
455
456 for $sym (sort keys %ppsym) {
457     $sym =~ s/^Perl_//;
458     print EM hide("Perl_$sym", "CPerlObj::Perl_$sym");
459     print EM hide($sym, "Perl_$sym");
460 }
461
462 print EM <<'END';
463
464 #endif  /* PERL_OBJECT */
465
466 /* Compatibility stubs.  Compile extensions with -DPERL_NOCOMPAT to
467    disable them.
468  */
469
470 #if !defined(PERL_CORE)
471 #  define sv_setptrobj(rv,ptr,name)     sv_setref_iv(rv,name,PTR2IV(ptr))
472 #  define sv_setptrref(rv,ptr)          sv_setref_iv(rv,Nullch,PTR2IV(ptr))
473 #endif
474
475 #if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) && !defined(PERL_BINCOMPAT_5005)
476
477 /* Compatibility for various misnamed functions.  All functions
478    in the API that begin with "perl_" (not "Perl_") take an explicit
479    interpreter context pointer.
480    The following are not like that, but since they had a "perl_"
481    prefix in previous versions, we provide compatibility macros.
482  */
483 #  define perl_atexit(a,b)              call_atexit(a,b)
484 #  define perl_call_argv(a,b,c)         call_argv(a,b,c)
485 #  define perl_call_pv(a,b)             call_pv(a,b)
486 #  define perl_call_method(a,b)         call_method(a,b)
487 #  define perl_call_sv(a,b)             call_sv(a,b)
488 #  define perl_eval_sv(a,b)             eval_sv(a,b)
489 #  define perl_eval_pv(a,b)             eval_pv(a,b)
490 #  define perl_require_pv(a)            require_pv(a)
491 #  define perl_get_sv(a,b)              get_sv(a,b)
492 #  define perl_get_av(a,b)              get_av(a,b)
493 #  define perl_get_hv(a,b)              get_hv(a,b)
494 #  define perl_get_cv(a,b)              get_cv(a,b)
495 #  define perl_init_i18nl10n(a)         init_i18nl10n(a)
496 #  define perl_init_i18nl14n(a)         init_i18nl14n(a)
497 #  define perl_new_ctype(a)             new_ctype(a)
498 #  define perl_new_collate(a)           new_collate(a)
499 #  define perl_new_numeric(a)           new_numeric(a)
500
501 /* varargs functions can't be handled with CPP macros. :-(
502    This provides a set of compatibility functions that don't take
503    an extra argument but grab the context pointer using the macro
504    dTHX.
505  */
506 #if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_OBJECT)
507 #  define croak                         Perl_croak_nocontext
508 #  define deb                           Perl_deb_nocontext
509 #  define die                           Perl_die_nocontext
510 #  define form                          Perl_form_nocontext
511 #  define load_module                   Perl_load_module_nocontext
512 #  define mess                          Perl_mess_nocontext
513 #  define newSVpvf                      Perl_newSVpvf_nocontext
514 #  define sv_catpvf                     Perl_sv_catpvf_nocontext
515 #  define sv_setpvf                     Perl_sv_setpvf_nocontext
516 #  define warn                          Perl_warn_nocontext
517 #  define warner                        Perl_warner_nocontext
518 #  define sv_catpvf_mg                  Perl_sv_catpvf_mg_nocontext
519 #  define sv_setpvf_mg                  Perl_sv_setpvf_mg_nocontext
520 #endif
521
522 #endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */
523
524 #if !defined(PERL_IMPLICIT_CONTEXT)
525 /* undefined symbols, point them back at the usual ones */
526 #  define Perl_croak_nocontext          Perl_croak
527 #  define Perl_die_nocontext            Perl_die
528 #  define Perl_deb_nocontext            Perl_deb
529 #  define Perl_form_nocontext           Perl_form
530 #  define Perl_load_module_nocontext    Perl_load_module
531 #  define Perl_mess_nocontext           Perl_mess
532 #  define Perl_newSVpvf_nocontext       Perl_newSVpvf
533 #  define Perl_sv_catpvf_nocontext      Perl_sv_catpvf
534 #  define Perl_sv_setpvf_nocontext      Perl_sv_setpvf
535 #  define Perl_warn_nocontext           Perl_warn
536 #  define Perl_warner_nocontext         Perl_warner
537 #  define Perl_sv_catpvf_mg_nocontext   Perl_sv_catpvf_mg
538 #  define Perl_sv_setpvf_mg_nocontext   Perl_sv_setpvf_mg
539 #endif
540
541 END
542
543 close(EM);
544
545 unlink 'embedvar.h';
546 open(EM, '> embedvar.h')
547     or die "Can't create embedvar.h: $!\n";
548
549 print EM <<'END';
550 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
551    This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
552    perlvars.h and thrdvar.h.  Any changes made here will be lost!
553 */
554
555 /* (Doing namespace management portably in C is really gross.) */
556
557 /*
558    The following combinations of MULTIPLICITY, USE_THREADS, PERL_OBJECT
559    and PERL_IMPLICIT_CONTEXT are supported:
560      1) none
561      2) MULTIPLICITY    # supported for compatibility
562      3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT
563      4) USE_THREADS && PERL_IMPLICIT_CONTEXT
564      5) MULTIPLICITY && USE_THREADS && PERL_IMPLICIT_CONTEXT
565      6) PERL_OBJECT && PERL_IMPLICIT_CONTEXT
566
567    All other combinations of these flags are errors.
568
569    #3, #4, #5, and #6 are supported directly, while #2 is a special
570    case of #3 (supported by redefining vTHX appropriately).
571 */
572
573 #if defined(MULTIPLICITY)
574 /* cases 2, 3 and 5 above */
575
576 #  if defined(PERL_IMPLICIT_CONTEXT)
577 #    define vTHX        aTHX
578 #  else
579 #    define vTHX        PERL_GET_INTERP
580 #  endif
581
582 END
583
584 for $sym (sort keys %thread) {
585     print EM multon($sym,'T','vTHX->');
586 }
587
588 print EM <<'END';
589
590 #  if defined(PERL_OBJECT)
591 #    include "error: PERL_OBJECT + MULTIPLICITY don't go together"
592 #  endif
593
594 #  if defined(USE_THREADS)
595 /* case 5 above */
596
597 END
598
599 for $sym (sort keys %intrp) {
600     print EM multon($sym,'I','PERL_GET_INTERP->');
601 }
602
603 print EM <<'END';
604
605 #  else         /* !USE_THREADS */
606 /* cases 2 and 3 above */
607
608 END
609
610 for $sym (sort keys %intrp) {
611     print EM multon($sym,'I','vTHX->');
612 }
613
614 print EM <<'END';
615
616 #  endif        /* USE_THREADS */
617
618 #else   /* !MULTIPLICITY */
619
620 #  if defined(PERL_OBJECT)
621 /* case 6 above */
622
623 END
624
625 for $sym (sort keys %thread) {
626     print EM multon($sym,'T','aTHXo->interp.');
627 }
628
629
630 for $sym (sort keys %intrp) {
631     print EM multon($sym,'I','aTHXo->interp.');
632 }
633
634 print EM <<'END';
635
636 #  else /* !PERL_OBJECT */
637
638 /* cases 1 and 4 above */
639
640 END
641
642 for $sym (sort keys %intrp) {
643     print EM multoff($sym,'I');
644 }
645
646 print EM <<'END';
647
648 #    if defined(USE_THREADS)
649 /* case 4 above */
650
651 END
652
653 for $sym (sort keys %thread) {
654     print EM multon($sym,'T','aTHX->');
655 }
656
657 print EM <<'END';
658
659 #    else       /* !USE_THREADS */
660 /* case 1 above */
661
662 END
663
664 for $sym (sort keys %thread) {
665     print EM multoff($sym,'T');
666 }
667
668 print EM <<'END';
669
670 #    endif      /* USE_THREADS */
671 #  endif        /* PERL_OBJECT */
672 #endif  /* MULTIPLICITY */
673
674 #if defined(PERL_GLOBAL_STRUCT)
675
676 END
677
678 for $sym (sort keys %globvar) {
679     print EM multon($sym,'G','PL_Vars.');
680 }
681
682 print EM <<'END';
683
684 #else /* !PERL_GLOBAL_STRUCT */
685
686 END
687
688 for $sym (sort keys %globvar) {
689     print EM multoff($sym,'G');
690 }
691
692 print EM <<'END';
693
694 #endif /* PERL_GLOBAL_STRUCT */
695
696 #ifdef PERL_POLLUTE             /* disabled by default in 5.6.0 */
697
698 END
699
700 for $sym (sort @extvars) {
701     print EM hide($sym,"PL_$sym");
702 }
703
704 print EM <<'END';
705
706 #endif /* PERL_POLLUTE */
707 END
708
709 close(EM);
710
711 unlink 'objXSUB.h';
712 open(OBX, '> objXSUB.h')
713     or die "Can't create objXSUB.h: $!\n";
714
715 print OBX <<'EOT';
716 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
717    This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
718    perlvars.h and thrdvar.h.  Any changes made here will be lost!
719 */
720
721 #ifndef __objXSUB_h__
722 #define __objXSUB_h__
723
724 /* method calls via pPerl (static functions without a "this" pointer need these) */
725
726 #if defined(PERL_CORE) && defined(PERL_OBJECT)
727
728 /* XXX soon to be eliminated, only a few things in PERLCORE need these now */
729
730 EOT
731
732 walk_table {
733     my $ret = "";
734     if (@_ == 1) {
735         my $arg = shift;
736         $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/;
737     }
738     else {
739         my ($flags,$retval,$func,@args) = @_;
740         if ($flags =~ /A/ && $flags !~ /j/) { # API function needing macros
741             if ($flags =~ /p/) {
742                 $ret .= undefine("Perl_$func") . hide("Perl_$func","pPerl->Perl_$func");
743                 $ret .= undefine($func) . hide($func,"Perl_$func");
744             }
745             else {
746                 $ret .= undefine($func) . hide($func,"pPerl->$func");
747             }
748         }
749     }
750     $ret;
751 } \*OBX;
752
753 # NOTE: not part of API
754 #for $sym (sort keys %ppsym) {
755 #    $sym =~ s/^Perl_//;
756 #    print OBX undefine("Perl_$sym") . hide("Perl_$sym", "pPerl->Perl_$sym");
757 #    print OBX undefine($sym) . hide($sym, "Perl_$sym");
758 #}
759
760 print OBX <<'EOT';
761
762 #endif  /* PERL_CORE && PERL_OBJECT */
763 #endif  /* __objXSUB_h__ */
764 EOT
765
766 close(OBX);
767
768 unlink 'perlapi.h';
769 unlink 'perlapi.c';
770 open(CAPI, '> perlapi.c') or die "Can't create perlapi.c: $!\n";
771 open(CAPIH, '> perlapi.h') or die "Can't create perlapi.h: $!\n";
772
773 print CAPIH <<'EOT';
774 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
775    This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
776    perlvars.h and thrdvar.h.  Any changes made here will be lost!
777 */
778
779 /* declare accessor functions for Perl variables */
780 #ifndef __perlapi_h__
781 #define __perlapi_h__
782
783 #if defined(PERL_OBJECT) || defined (MULTIPLICITY)
784
785 #if defined(PERL_OBJECT)
786 #  undef  aTHXo
787 #  define aTHXo                 pPerl
788 #  undef  aTHXo_
789 #  define aTHXo_                aTHXo,
790 #endif /* PERL_OBJECT */
791
792 START_EXTERN_C
793
794 #undef PERLVAR
795 #undef PERLVARA
796 #undef PERLVARI
797 #undef PERLVARIC
798 #define PERLVAR(v,t)    EXTERN_C t* Perl_##v##_ptr(pTHXo);
799 #define PERLVARA(v,n,t) typedef t PL_##v##_t[n];                        \
800                         EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHXo);
801 #define PERLVARI(v,t,i) PERLVAR(v,t)
802 #define PERLVARIC(v,t,i) PERLVAR(v, const t)
803
804 #include "thrdvar.h"
805 #include "intrpvar.h"
806 #include "perlvars.h"
807
808 #undef PERLVAR
809 #undef PERLVARA
810 #undef PERLVARI
811 #undef PERLVARIC
812
813 END_EXTERN_C
814
815 #if defined(PERL_CORE)
816
817 /* accessor functions for Perl variables (provide binary compatibility) */
818
819 /* these need to be mentioned here, or most linkers won't put them in
820    the perl executable */
821
822 #ifndef PERL_NO_FORCE_LINK
823
824 START_EXTERN_C
825
826 #ifndef DOINIT
827 EXT void *PL_force_link_funcs[];
828 #else
829 EXT void *PL_force_link_funcs[] = {
830 #undef PERLVAR
831 #undef PERLVARA
832 #undef PERLVARI
833 #undef PERLVARIC
834 #define PERLVAR(v,t)    (void*)Perl_##v##_ptr,
835 #define PERLVARA(v,n,t) PERLVAR(v,t)
836 #define PERLVARI(v,t,i) PERLVAR(v,t)
837 #define PERLVARIC(v,t,i) PERLVAR(v,t)
838
839 #include "thrdvar.h"
840 #include "intrpvar.h"
841 #include "perlvars.h"
842
843 #undef PERLVAR
844 #undef PERLVARA
845 #undef PERLVARI
846 #undef PERLVARIC
847 };
848 #endif  /* DOINIT */
849
850 START_EXTERN_C
851
852 #endif  /* PERL_NO_FORCE_LINK */
853
854 #else   /* !PERL_CORE */
855
856 EOT
857
858 foreach my $sym (sort keys %intrp) {
859     print CAPIH bincompat_var('I',$sym);
860 }
861
862 foreach my $sym (sort keys %thread) {
863     print CAPIH bincompat_var('T',$sym);
864 }
865
866 foreach my $sym (sort keys %globvar) {
867     print CAPIH bincompat_var('G',$sym);
868 }
869
870 print CAPIH <<'EOT';
871
872 #endif /* !PERL_CORE */
873 #endif /* PERL_OBJECT || MULTIPLICITY */
874
875 #endif /* __perlapi_h__ */
876
877 EOT
878 close CAPIH;
879
880 print CAPI <<'EOT';
881 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
882    This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
883    perlvars.h and thrdvar.h.  Any changes made here will be lost!
884 */
885
886 #include "EXTERN.h"
887 #include "perl.h"
888 #include "perlapi.h"
889
890 #if defined(PERL_OBJECT) || defined (MULTIPLICITY)
891
892 /* accessor functions for Perl variables (provides binary compatibility) */
893 START_EXTERN_C
894
895 #undef PERLVAR
896 #undef PERLVARA
897 #undef PERLVARI
898 #undef PERLVARIC
899
900 #if defined(PERL_OBJECT)
901 #define PERLVAR(v,t)    t* Perl_##v##_ptr(pTHXo)                        \
902                         { return &(aTHXo->interp.v); }
903 #define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHXo)               \
904                         { return &(aTHXo->interp.v); }
905 #else   /* MULTIPLICITY */
906 #define PERLVAR(v,t)    t* Perl_##v##_ptr(pTHX)                         \
907                         { return &(aTHX->v); }
908 #define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHX)                \
909                         { return &(aTHX->v); }
910 #endif
911
912 #define PERLVARI(v,t,i) PERLVAR(v,t)
913 #define PERLVARIC(v,t,i) PERLVAR(v, const t)
914
915 #include "thrdvar.h"
916 #include "intrpvar.h"
917
918 #undef PERLVAR
919 #undef PERLVARA
920 #define PERLVAR(v,t)    t* Perl_##v##_ptr(pTHXo)                        \
921                         { return &(PL_##v); }
922 #define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHXo)               \
923                         { return &(PL_##v); }
924 #undef PERLVARIC
925 #define PERLVARIC(v,t,i)        const t* Perl_##v##_ptr(pTHXo)          \
926                         { return (const t *)&(PL_##v); }
927 #include "perlvars.h"
928
929 #undef PERLVAR
930 #undef PERLVARA
931 #undef PERLVARI
932 #undef PERLVARIC
933
934 #if defined(PERL_OBJECT)
935
936 /* C-API layer for PERL_OBJECT */
937
938 EOT
939
940 # functions that take va_list* for implementing vararg functions
941 # NOTE: makedef.pl must be updated if you add symbols to %vfuncs
942 my %vfuncs = qw(
943     Perl_croak                  Perl_vcroak
944     Perl_warn                   Perl_vwarn
945     Perl_warner                 Perl_vwarner
946     Perl_die                    Perl_vdie
947     Perl_form                   Perl_vform
948     Perl_load_module            Perl_vload_module
949     Perl_mess                   Perl_vmess
950     Perl_deb                    Perl_vdeb
951     Perl_newSVpvf               Perl_vnewSVpvf
952     Perl_sv_setpvf              Perl_sv_vsetpvf
953     Perl_sv_setpvf_mg           Perl_sv_vsetpvf_mg
954     Perl_sv_catpvf              Perl_sv_vcatpvf
955     Perl_sv_catpvf_mg           Perl_sv_vcatpvf_mg
956     Perl_dump_indent            Perl_dump_vindent
957     Perl_default_protect        Perl_vdefault_protect
958 );
959
960 sub emit_func {
961     my ($addcontext, $rettype,$func,@args) = @_;
962     my @aargs = @args;
963     my $a;
964     for $a (@aargs) { $a =~ s/^.*\b(\w+)$/$1/ }
965     my $ctxarg = '';
966     if (not $addcontext) {
967         $ctxarg = 'pTHXo';
968         $ctxarg .= '_ ' if @args;
969     }
970     my $decl = '';
971     if ($addcontext) {
972         $decl .= "    dTHXo;\n";
973     }
974     local $" = ', ';
975     my $return = ($rettype =~ /^\s*(void|Free_t|Signal_t)\s*$/
976                   ? '' : 'return ');
977     my $emitval = '';
978     if (@args and $args[$#args] =~ /\.\.\./) {
979         pop @aargs;
980         my $retarg = '';
981         my $ctxfunc = $func;
982         $ctxfunc =~ s/_nocontext$//;
983         return $emitval unless exists $vfuncs{$ctxfunc};
984         if (length $return) {
985             $decl .= "    $rettype retval;\n";
986             $retarg .= "retval = ";
987             $return = "\n    ${return}retval;\n";
988         }
989         $emitval .= <<EOT
990 $rettype
991 $func($ctxarg@args)
992 {
993 $decl    va_list args;
994     va_start(args, $aargs[$#aargs]);
995     $retarg((CPerlObj*)pPerl)->$vfuncs{$ctxfunc}(@aargs, &args);
996     va_end(args);$return
997 }
998 EOT
999     }
1000     else {
1001         $emitval .= <<EOT
1002 $rettype
1003 $func($ctxarg@args)
1004 {
1005 $decl    $return((CPerlObj*)pPerl)->$func(@aargs);
1006 }
1007 EOT
1008     }
1009     $emitval;
1010 }
1011
1012 # XXXX temporary hack
1013 my $sym;
1014 for $sym (qw(
1015                 perl_construct
1016                 perl_destruct
1017                 perl_free
1018                 perl_run
1019                 perl_parse
1020                 ))
1021 {
1022     $skipapi_funcs{$sym}++;
1023 }
1024
1025 walk_table {
1026     my $ret = "";
1027     if (@_ == 1) {
1028         my $arg = shift;
1029         $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/;
1030     }
1031     else {
1032         my ($flags,$retval,$func,@args) = @_;
1033         return $ret if exists $skipapi_funcs{$func};
1034         if ($flags =~ /A/ && $flags !~ /j/) { # in public API, needed for XSUBS
1035             $ret .= "\n";
1036             my $addctx = 1 if $flags =~ /n/;
1037             if ($flags =~ /p/) {
1038                 $ret .= undefine("Perl_$func");
1039                 $ret .= emit_func($addctx,$retval,"Perl_$func",@args);
1040             }
1041             else {
1042                 $ret .= undefine($func);
1043                 $ret .= emit_func($addctx,$retval,$func,@args);
1044             }
1045         }
1046     }
1047     $ret;
1048 } \*CAPI;
1049
1050 # NOTE: not part of the API
1051 #for $sym (sort keys %ppsym) {
1052 #    $sym =~ s/^Perl_//;
1053 #    print CAPI "\n";
1054 #    print CAPI undefine("Perl_$sym");
1055 #    if ($sym =~ /^ck_/) {
1056 #       print CAPI emit_func(0, 'OP *',"Perl_$sym",'OP *o');
1057 #    }
1058 #   else {                                      # pp_foo
1059 #       print CAPI emit_func(0, 'OP *',"Perl_$sym");
1060 #    }
1061 #}
1062
1063 print CAPI <<'EOT';
1064
1065 #undef Perl_fprintf_nocontext
1066 int
1067 Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
1068 {
1069     dTHXo;
1070     va_list(arglist);
1071     va_start(arglist, format);
1072     return (*PL_StdIO->pVprintf)(PL_StdIO, stream, format, arglist);
1073 }
1074
1075 END_EXTERN_C
1076
1077 #endif /* PERL_OBJECT */
1078 #endif /* PERL_OBJECT || MULTIPLICITY */
1079 EOT
1080
1081 close(CAPI);
1082
1083 # autogenerate documentation from comments in source files
1084
1085 my %apidocs;
1086 my %gutsdocs;
1087 my %docfuncs;
1088
1089 sub autodoc ($$) { # parse a file and extract documentation info
1090     my($fh,$file) = @_;
1091     my($in, $doc, $line);
1092 FUNC:
1093     while (defined($in = <$fh>)) {
1094         $line++;
1095         if ($in =~ /^=for\s+apidoc\s+(.*)\n/) {
1096             my $proto = $1;
1097             $proto = "||$proto" unless $proto =~ /\|/;
1098             my($flags, $ret, $name, @args) = split /\|/, $proto;
1099             my $docs = "";
1100 DOC:
1101             while (defined($doc = <$fh>)) {
1102                 $line++;
1103                 last DOC if $doc =~ /^=\w+/;
1104                 if ($doc =~ m:^\*/$:) {
1105                     warn "=cut missing? $file:$line:$doc";;
1106                     last DOC;
1107                 }
1108                 $docs .= $doc;
1109             }
1110             $docs = "\n$docs" if $docs and $docs !~ /^\n/;
1111             if ($flags =~ /m/) {
1112                 if ($flags =~ /A/) {
1113                     $apidocs{$name} = [$flags, $docs, $ret, $file, @args];
1114                 }
1115                 else {
1116                     $gutsdocs{$name} = [$flags, $docs, $ret, $file, @args];
1117                 }
1118             }
1119             else {
1120                 $docfuncs{$name} = [$flags, $docs, $ret, $file, @args];
1121             }
1122             if (defined $doc) {
1123                 if ($doc =~ /^=for/) {
1124                     $in = $doc;
1125                     redo FUNC;
1126                 }
1127             } else {
1128                 warn "$file:$line:$in";
1129             }
1130         }
1131     }
1132 }
1133
1134 sub docout ($$$) { # output the docs for one function
1135     my($fh, $name, $docref) = @_;
1136     my($flags, $docs, $ret, $file, @args) = @$docref;
1137
1138     $docs .= "NOTE: this function is experimental and may change or be
1139 removed without notice.\n\n" if $flags =~ /x/;
1140     $docs .= "NOTE: the perl_ form of this function is deprecated.\n\n"
1141         if $flags =~ /p/;
1142
1143     print $fh "=item $name\n$docs";
1144
1145     if ($flags =~ /U/) { # no usage
1146         # nothing
1147     } elsif ($flags =~ /s/) { # semicolon ("dTHR;")
1148         print $fh "\t\t$name;\n\n";
1149     } elsif ($flags =~ /n/) { # no args
1150         print $fh "\t$ret\t$name\n\n";
1151     } else { # full usage
1152         print $fh "\t$ret\t$name";
1153         print $fh "(" . join(", ", @args) . ")";
1154         print $fh "\n\n";
1155     }
1156     print $fh "=for hackers\nFound in file $file\n\n";
1157 }
1158
1159 my $file;
1160 for $file (glob('*.c'), glob('*.h')) {
1161     open F, "< $file" or die "Cannot open $file for docs: $!\n";
1162     autodoc(\*F,$file);
1163     close F or die "Error closing $file: $!\n";
1164 }
1165
1166 unlink "pod/perlapi.pod";
1167 open (DOC, ">pod/perlapi.pod") or
1168         die "Can't create pod/perlapi.pod: $!\n";
1169
1170 walk_table {    # load documented functions into approriate hash
1171     if (@_ > 1) {
1172         my($flags, $retval, $func, @args) = @_;
1173         return "" unless $flags =~ /d/;
1174         $func =~ s/\t//g; $flags =~ s/p//; # clean up fields from embed.pl
1175         $retval =~ s/\t//;
1176         if ($flags =~ /A/) {
1177             my $docref = delete $docfuncs{$func};
1178             warn "no docs for $func\n" unless $docref and @$docref;
1179         $docref->[0].="x" if $flags =~ /M/;
1180             $apidocs{$func} = [$docref->[0] . 'A', $docref->[1], $retval,
1181                                $docref->[3], @args];
1182         } else {
1183             my $docref = delete $docfuncs{$func};
1184             $gutsdocs{$func} = [$docref->[0], $docref->[1], $retval,
1185                                 $docref->[3], @args];
1186         }
1187     }
1188     return "";
1189 } \*DOC;
1190
1191 for (sort keys %docfuncs) {
1192     # Have you used a full for apidoc or just a func name?
1193     # Have you used Ap instead of Am in the for apidoc?
1194     warn "Unable to place $_!\n";
1195 }
1196
1197 print DOC <<'_EOB_';
1198 =head1 NAME
1199
1200 perlapi - autogenerated documentation for the perl public API
1201
1202 =head1 DESCRIPTION
1203
1204 This file contains the documentation of the perl public API generated by
1205 embed.pl, specifically a listing of functions, macros, flags, and variables
1206 that may be used by extension writers.  The interfaces of any functions that
1207 are not listed here are subject to change without notice.  For this reason,
1208 blindly using functions listed in proto.h is to be avoided when writing
1209 extensions.
1210
1211 Note that all Perl API global variables must be referenced with the C<PL_>
1212 prefix.  Some macros are provided for compatibility with the older,
1213 unadorned names, but this support may be disabled in a future release.
1214
1215 The listing is alphabetical, case insensitive.
1216
1217 =over 8
1218
1219 _EOB_
1220
1221 my $key;
1222 for $key (sort { uc($a) cmp uc($b); } keys %apidocs) { # case insensitive sort
1223     docout(\*DOC, $key, $apidocs{$key});
1224 }
1225
1226 print DOC <<'_EOE_';
1227 =back
1228
1229 =head1 AUTHORS
1230
1231 Until May 1997, this document was maintained by Jeff Okamoto
1232 <okamoto@corp.hp.com>.  It is now maintained as part of Perl itself.
1233
1234 With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
1235 Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
1236 Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
1237 Stephen McCamant, and Gurusamy Sarathy.
1238
1239 API Listing originally by Dean Roehrich <roehrich@cray.com>.
1240
1241 Updated to be autogenerated from comments in the source by Benjamin Stuhl.
1242
1243 =head1 SEE ALSO
1244
1245 perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
1246
1247 _EOE_
1248
1249
1250 close(DOC);
1251
1252 open(GUTS, ">pod/perlintern.pod") or
1253                 die "Unable to create pod/perlintern.pod: $!\n";
1254 print GUTS <<'END';
1255 =head1 NAME
1256
1257 perlintern - autogenerated documentation of purely B<internal>
1258                  Perl functions
1259
1260 =head1 DESCRIPTION
1261
1262 This file is the autogenerated documentation of functions in the
1263 Perl interpreter that are documented using Perl's internal documentation
1264 format but are not marked as part of the Perl API. In other words,
1265 B<they are not for use in extensions>!
1266
1267 =over 8
1268
1269 END
1270
1271 for $key (sort { uc($a) cmp uc($b); } keys %gutsdocs) {
1272     docout(\*GUTS, $key, $gutsdocs{$key});
1273 }
1274
1275 print GUTS <<'END';
1276 =back
1277
1278 =head1 AUTHORS
1279
1280 The autodocumentation system was originally added to the Perl core by
1281 Benjamin Stuhl. Documentation is by whoever was kind enough to
1282 document their functions.
1283
1284 =head1 SEE ALSO
1285
1286 perlguts(1), perlapi(1)
1287
1288 END
1289
1290 close GUTS;
1291
1292
1293 __END__
1294
1295 : Lines are of the form:
1296 :    flags|return_type|function_name|arg1|arg2|...|argN
1297 :
1298 : A line may be continued on another by ending it with a backslash.
1299 : Leading and trailing whitespace will be ignored in each component.
1300 :
1301 : flags are single letters with following meanings:
1302 :       A               member of public API
1303 :       d               function has documentation with its source
1304 :       s               static function, should have an S_ prefix in source
1305 :                               file
1306 :       n               has no implicit interpreter/thread context argument
1307 :       p               function has a Perl_ prefix
1308 :       f               function takes printf style format string, varargs
1309 :       r               function never returns
1310 :       o               has no compatibility macro (#define foo Perl_foo)
1311 :       j               not a member of CPerlObj
1312 :       x               not exported
1313 :       M               may change
1314 :
1315 : Individual flags may be separated by whitespace.
1316 :
1317 : New global functions should be added at the end for binary compatibility
1318 : in some configurations.
1319
1320 START_EXTERN_C
1321
1322 #if defined(PERL_IMPLICIT_SYS)
1323 Ajno    |PerlInterpreter*       |perl_alloc_using \
1324                                 |struct IPerlMem* m|struct IPerlMem* ms \
1325                                 |struct IPerlMem* mp|struct IPerlEnv* e \
1326                                 |struct IPerlStdIO* io|struct IPerlLIO* lio \
1327                                 |struct IPerlDir* d|struct IPerlSock* s \
1328                                 |struct IPerlProc* p
1329 #endif
1330 Ajnod   |PerlInterpreter*       |perl_alloc
1331 Ajnod   |void   |perl_construct |PerlInterpreter* interp
1332 Ajnod   |void   |perl_destruct  |PerlInterpreter* interp
1333 Ajnod   |void   |perl_free      |PerlInterpreter* interp
1334 Ajnod   |int    |perl_run       |PerlInterpreter* interp
1335 Ajnod   |int    |perl_parse     |PerlInterpreter* interp|XSINIT_t xsinit \
1336                                 |int argc|char** argv|char** env
1337 #if defined(USE_ITHREADS)
1338 : XXX: perl_clone needs docs
1339 Ajno    |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags
1340 #  if defined(PERL_IMPLICIT_SYS)
1341 Ajno    |PerlInterpreter*|perl_clone_using|PerlInterpreter *interp|UV flags \
1342                                 |struct IPerlMem* m|struct IPerlMem* ms \
1343                                 |struct IPerlMem* mp|struct IPerlEnv* e \
1344                                 |struct IPerlStdIO* io|struct IPerlLIO* lio \
1345                                 |struct IPerlDir* d|struct IPerlSock* s \
1346                                 |struct IPerlProc* p
1347 #  endif
1348 #endif
1349
1350 #if defined(MYMALLOC)
1351 Ajnop   |Malloc_t|malloc        |MEM_SIZE nbytes
1352 Ajnop   |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
1353 Ajnop   |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
1354 Ajnop   |Free_t |mfree          |Malloc_t where
1355 jnp     |MEM_SIZE|malloced_size |void *p
1356 #endif
1357
1358 Ajnp    |void*  |get_context
1359 Ajnp    |void   |set_context    |void *thx
1360
1361 END_EXTERN_C
1362
1363 /* functions with flag 'n' should come before here */
1364 #if defined(PERL_OBJECT)
1365 class CPerlObj {
1366 public:
1367         struct interpreter interp;
1368         CPerlObj(IPerlMem*, IPerlMem*, IPerlMem*, IPerlEnv*, IPerlStdIO*,
1369             IPerlLIO*, IPerlDir*, IPerlSock*, IPerlProc*);
1370         void* operator new(size_t nSize, IPerlMem *pvtbl);
1371 #ifndef __BORLANDC__
1372         static void operator delete(void* pPerl, IPerlMem *pvtbl);
1373 #endif
1374         int do_aspawn (void *vreally, void **vmark, void **vsp);
1375 #endif
1376 #if defined(PERL_OBJECT)
1377 public:
1378 #else
1379 START_EXTERN_C
1380 #endif
1381 #  include "pp_proto.h"
1382 Ap      |SV*    |amagic_call    |SV* left|SV* right|int method|int dir
1383 Ap      |bool   |Gv_AMupdate    |HV* stash
1384 Ap      |CV*    |gv_handler     |HV* stash|I32 id
1385 p       |OP*    |append_elem    |I32 optype|OP* head|OP* tail
1386 p       |OP*    |append_list    |I32 optype|LISTOP* first|LISTOP* last
1387 p       |I32    |apply          |I32 type|SV** mark|SV** sp
1388 Ap      |void   |apply_attrs_string|char *stashpv|CV *cv|char *attrstr|STRLEN len
1389 Ap      |SV*    |avhv_delete_ent|AV *ar|SV* keysv|I32 flags|U32 hash
1390 Ap      |bool   |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
1391 Ap      |SV**   |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
1392 Ap      |SV**   |avhv_store_ent |AV *ar|SV* keysv|SV* val|U32 hash
1393 Ap      |HE*    |avhv_iternext  |AV *ar
1394 Ap      |SV*    |avhv_iterval   |AV *ar|HE* entry
1395 Ap      |HV*    |avhv_keys      |AV *ar
1396 Apd     |void   |av_clear       |AV* ar
1397 Apd     |SV*    |av_delete      |AV* ar|I32 key|I32 flags
1398 Apd     |bool   |av_exists      |AV* ar|I32 key
1399 Apd     |void   |av_extend      |AV* ar|I32 key
1400 p       |AV*    |av_fake        |I32 size|SV** svp
1401 Apd     |SV**   |av_fetch       |AV* ar|I32 key|I32 lval
1402 Apd     |void   |av_fill        |AV* ar|I32 fill
1403 Apd     |I32    |av_len         |AV* ar
1404 Apd     |AV*    |av_make        |I32 size|SV** svp
1405 Apd     |SV*    |av_pop         |AV* ar
1406 Apd     |void   |av_push        |AV* ar|SV* val
1407 p       |void   |av_reify       |AV* ar
1408 Apd     |SV*    |av_shift       |AV* ar
1409 Apd     |SV**   |av_store       |AV* ar|I32 key|SV* val
1410 Apd     |void   |av_undef       |AV* ar
1411 Apd     |void   |av_unshift     |AV* ar|I32 num
1412 p       |OP*    |bind_match     |I32 type|OP* left|OP* pat
1413 p       |OP*    |block_end      |I32 floor|OP* seq
1414 Ap      |I32    |block_gimme
1415 p       |int    |block_start    |int full
1416 p       |void   |boot_core_UNIVERSAL
1417 Ap      |void   |call_list      |I32 oldscope|AV* av_list
1418 p       |bool   |cando          |Mode_t mode|Uid_t effective|Stat_t* statbufp
1419 Ap      |U32    |cast_ulong     |NV f
1420 Ap      |I32    |cast_i32       |NV f
1421 Ap      |IV     |cast_iv        |NV f
1422 Ap      |UV     |cast_uv        |NV f
1423 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
1424 Ap      |I32    |my_chsize      |int fd|Off_t length
1425 #endif
1426 #if defined(USE_THREADS)
1427 Ap      |MAGIC* |condpair_magic |SV *sv
1428 #endif
1429 p       |OP*    |convert        |I32 optype|I32 flags|OP* o
1430 Afprd   |void   |croak          |const char* pat|...
1431 Apr     |void   |vcroak         |const char* pat|va_list* args
1432 #if defined(PERL_IMPLICIT_CONTEXT)
1433 Afnrp   |void   |croak_nocontext|const char* pat|...
1434 Afnp    |OP*    |die_nocontext  |const char* pat|...
1435 Afnp    |void   |deb_nocontext  |const char* pat|...
1436 Afnp    |char*  |form_nocontext |const char* pat|...
1437 Anp     |void   |load_module_nocontext|U32 flags|SV* name|SV* ver|...
1438 Afnp    |SV*    |mess_nocontext |const char* pat|...
1439 Afnp    |void   |warn_nocontext |const char* pat|...
1440 Afnp    |void   |warner_nocontext|U32 err|const char* pat|...
1441 Afnp    |SV*    |newSVpvf_nocontext|const char* pat|...
1442 Afnp    |void   |sv_catpvf_nocontext|SV* sv|const char* pat|...
1443 Afnp    |void   |sv_setpvf_nocontext|SV* sv|const char* pat|...
1444 Afnp    |void   |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
1445 Afnp    |void   |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
1446 Afnp    |int    |fprintf_nocontext|PerlIO* stream|const char* fmt|...
1447 #endif
1448 p       |void   |cv_ckproto     |CV* cv|GV* gv|char* p
1449 p       |CV*    |cv_clone       |CV* proto
1450 Apd     |SV*    |cv_const_sv    |CV* cv
1451 p       |SV*    |op_const_sv    |OP* o|CV* cv
1452 Ap      |void   |cv_undef       |CV* cv
1453 Ap      |void   |cx_dump        |PERL_CONTEXT* cs
1454 Ap      |SV*    |filter_add     |filter_t funcp|SV* datasv
1455 Ap      |void   |filter_del     |filter_t funcp
1456 Ap      |I32    |filter_read    |int idx|SV* buffer|int maxlen
1457 Ap      |char** |get_op_descs
1458 Ap      |char** |get_op_names
1459 p       |char*  |get_no_modify
1460 p       |U32*   |get_opargs
1461 Ap      |PPADDR_t*|get_ppaddr
1462 p       |I32    |cxinc
1463 Afp     |void   |deb            |const char* pat|...
1464 Ap      |void   |vdeb           |const char* pat|va_list* args
1465 Ap      |void   |debprofdump
1466 Ap      |I32    |debop          |OP* o
1467 Ap      |I32    |debstack
1468 Ap      |I32    |debstackptrs
1469 Ap      |char*  |delimcpy       |char* to|char* toend|char* from \
1470                                 |char* fromend|int delim|I32* retlen
1471 p       |void   |deprecate      |char* s
1472 Afp     |OP*    |die            |const char* pat|...
1473 p       |OP*    |vdie           |const char* pat|va_list* args
1474 p       |OP*    |die_where      |char* message|STRLEN msglen
1475 Ap      |void   |dounwind       |I32 cxix
1476 p       |bool   |do_aexec       |SV* really|SV** mark|SV** sp
1477 p       |bool   |do_aexec5      |SV* really|SV** mark|SV** sp|int fd|int flag
1478 Ap      |int    |do_binmode     |PerlIO *fp|int iotype|int mode
1479 p       |void   |do_chop        |SV* asv|SV* sv
1480 Ap      |bool   |do_close       |GV* gv|bool not_implicit
1481 p       |bool   |do_eof         |GV* gv
1482 p       |bool   |do_exec        |char* cmd
1483 #if !defined(WIN32)
1484 p       |bool   |do_exec3       |char* cmd|int fd|int flag
1485 #endif
1486 p       |void   |do_execfree
1487 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
1488 p       |I32    |do_ipcctl      |I32 optype|SV** mark|SV** sp
1489 p       |I32    |do_ipcget      |I32 optype|SV** mark|SV** sp
1490 p       |I32    |do_msgrcv      |SV** mark|SV** sp
1491 p       |I32    |do_msgsnd      |SV** mark|SV** sp
1492 p       |I32    |do_semop       |SV** mark|SV** sp
1493 p       |I32    |do_shmio       |I32 optype|SV** mark|SV** sp
1494 #endif
1495 Ap      |void   |do_join        |SV* sv|SV* del|SV** mark|SV** sp
1496 p       |OP*    |do_kv
1497 Ap      |bool   |do_open        |GV* gv|char* name|I32 len|int as_raw \
1498                                 |int rawmode|int rawperm|PerlIO* supplied_fp
1499 Ap      |bool   |do_open9       |GV *gv|char *name|I32 len|int as_raw \
1500                                 |int rawmode|int rawperm|PerlIO *supplied_fp \
1501                                 |SV *svs|I32 num
1502 Ap      |bool   |do_openn       |GV *gv|char *name|I32 len|int as_raw \
1503                                 |int rawmode|int rawperm|PerlIO *supplied_fp \
1504                                 |SV **svp|I32 num
1505 p       |void   |do_pipe        |SV* sv|GV* rgv|GV* wgv
1506 p       |bool   |do_print       |SV* sv|PerlIO* fp
1507 p       |OP*    |do_readline
1508 p       |I32    |do_chomp       |SV* sv
1509 p       |bool   |do_seek        |GV* gv|Off_t pos|int whence
1510 p       |void   |do_sprintf     |SV* sv|I32 len|SV** sarg
1511 p       |Off_t  |do_sysseek     |GV* gv|Off_t pos|int whence
1512 p       |Off_t  |do_tell        |GV* gv
1513 p       |I32    |do_trans       |SV* sv
1514 p       |UV     |do_vecget      |SV* sv|I32 offset|I32 size
1515 p       |void   |do_vecset      |SV* sv
1516 p       |void   |do_vop         |I32 optype|SV* sv|SV* left|SV* right
1517 p       |OP*    |dofile         |OP* term
1518 Ap      |I32    |dowantarray
1519 Ap      |void   |dump_all
1520 Ap      |void   |dump_eval
1521 #if defined(DUMP_FDS)
1522 Ap      |void   |dump_fds       |char* s
1523 #endif
1524 Ap      |void   |dump_form      |GV* gv
1525 Ap      |void   |gv_dump        |GV* gv
1526 Ap      |void   |op_dump        |OP* arg
1527 Ap      |void   |pmop_dump      |PMOP* pm
1528 Ap      |void   |dump_packsubs  |HV* stash
1529 Ap      |void   |dump_sub       |GV* gv
1530 Apd     |void   |fbm_compile    |SV* sv|U32 flags
1531 Apd     |char*  |fbm_instr      |unsigned char* big|unsigned char* bigend \
1532                                 |SV* littlesv|U32 flags
1533 p       |char*  |find_script    |char *scriptname|bool dosearch \
1534                                 |char **search_ext|I32 flags
1535 #if defined(USE_THREADS)
1536 p       |PADOFFSET|find_threadsv|const char *name
1537 #endif
1538 p       |OP*    |force_list     |OP* arg
1539 p       |OP*    |fold_constants |OP* arg
1540 Afp     |char*  |form           |const char* pat|...
1541 Ap      |char*  |vform          |const char* pat|va_list* args
1542 Ap      |void   |free_tmps
1543 p       |OP*    |gen_constant_list|OP* o
1544 #if !defined(HAS_GETENV_LEN)
1545 p       |char*  |getenv_len     |const char* key|unsigned long *len
1546 #endif
1547 Ap      |void   |gp_free        |GV* gv
1548 Ap      |GP*    |gp_ref         |GP* gp
1549 Ap      |GV*    |gv_AVadd       |GV* gv
1550 Ap      |GV*    |gv_HVadd       |GV* gv
1551 Ap      |GV*    |gv_IOadd       |GV* gv
1552 Ap      |GV*    |gv_autoload4   |HV* stash|const char* name|STRLEN len \
1553                                 |I32 method
1554 Ap      |void   |gv_check       |HV* stash
1555 Ap      |void   |gv_efullname   |SV* sv|GV* gv
1556 Ap      |void   |gv_efullname3  |SV* sv|GV* gv|const char* prefix
1557 Ap      |void   |gv_efullname4  |SV* sv|GV* gv|const char* prefix|bool keepmain
1558 Ap      |GV*    |gv_fetchfile   |const char* name
1559 Apd     |GV*    |gv_fetchmeth   |HV* stash|const char* name|STRLEN len \
1560                                 |I32 level
1561 Apd     |GV*    |gv_fetchmethod |HV* stash|const char* name
1562 Apd     |GV*    |gv_fetchmethod_autoload|HV* stash|const char* name \
1563                                 |I32 autoload
1564 Ap      |GV*    |gv_fetchpv     |const char* name|I32 add|I32 sv_type
1565 Ap      |void   |gv_fullname    |SV* sv|GV* gv
1566 Ap      |void   |gv_fullname3   |SV* sv|GV* gv|const char* prefix
1567 Ap      |void   |gv_fullname4   |SV* sv|GV* gv|const char* prefix|bool keepmain
1568 Ap      |void   |gv_init        |GV* gv|HV* stash|const char* name \
1569                                 |STRLEN len|int multi
1570 Apd     |HV*    |gv_stashpv     |const char* name|I32 create
1571 Ap      |HV*    |gv_stashpvn    |const char* name|U32 namelen|I32 create
1572 Apd     |HV*    |gv_stashsv     |SV* sv|I32 create
1573 Apd     |void   |hv_clear       |HV* tb
1574 Ap      |void   |hv_delayfree_ent|HV* hv|HE* entry
1575 Apd     |SV*    |hv_delete      |HV* tb|const char* key|I32 klen|I32 flags
1576 Apd     |SV*    |hv_delete_ent  |HV* tb|SV* key|I32 flags|U32 hash
1577 Apd     |bool   |hv_exists      |HV* tb|const char* key|I32 klen
1578 Apd     |bool   |hv_exists_ent  |HV* tb|SV* key|U32 hash
1579 Apd     |SV**   |hv_fetch       |HV* tb|const char* key|I32 klen|I32 lval
1580 Apd     |HE*    |hv_fetch_ent   |HV* tb|SV* key|I32 lval|U32 hash
1581 Ap      |void   |hv_free_ent    |HV* hv|HE* entry
1582 Apd     |I32    |hv_iterinit    |HV* tb
1583 Apd     |char*  |hv_iterkey     |HE* entry|I32* retlen
1584 Apd     |SV*    |hv_iterkeysv   |HE* entry
1585 Apd     |HE*    |hv_iternext    |HV* tb
1586 Apd     |SV*    |hv_iternextsv  |HV* hv|char** key|I32* retlen
1587 Apd     |SV*    |hv_iterval     |HV* tb|HE* entry
1588 Ap      |void   |hv_ksplit      |HV* hv|IV newmax
1589 Apd     |void   |hv_magic       |HV* hv|GV* gv|int how
1590 Apd     |SV**   |hv_store       |HV* tb|const char* key|I32 klen|SV* val \
1591                                 |U32 hash
1592 Apd     |HE*    |hv_store_ent   |HV* tb|SV* key|SV* val|U32 hash
1593 Apd     |void   |hv_undef       |HV* tb
1594 Ap      |I32    |ibcmp          |const char* a|const char* b|I32 len
1595 Ap      |I32    |ibcmp_locale   |const char* a|const char* b|I32 len
1596 p       |bool   |ingroup        |Gid_t testgid|Uid_t effective
1597 p       |void   |init_debugger
1598 Ap      |void   |init_stacks
1599 p       |U32    |intro_my
1600 Ap      |char*  |instr          |const char* big|const char* little
1601 p       |bool   |io_close       |IO* io|bool not_implicit
1602 p       |OP*    |invert         |OP* cmd
1603 dp      |bool   |is_gv_magical  |char *name|STRLEN len|U32 flags
1604 p       |I32    |is_lvalue_sub
1605 Ap      |bool   |is_uni_alnum   |U32 c
1606 Ap      |bool   |is_uni_alnumc  |U32 c
1607 Ap      |bool   |is_uni_idfirst |U32 c
1608 Ap      |bool   |is_uni_alpha   |U32 c
1609 Ap      |bool   |is_uni_ascii   |U32 c
1610 Ap      |bool   |is_uni_space   |U32 c
1611 Ap      |bool   |is_uni_cntrl   |U32 c
1612 Ap      |bool   |is_uni_graph   |U32 c
1613 Ap      |bool   |is_uni_digit   |U32 c
1614 Ap      |bool   |is_uni_upper   |U32 c
1615 Ap      |bool   |is_uni_lower   |U32 c
1616 Ap      |bool   |is_uni_print   |U32 c
1617 Ap      |bool   |is_uni_punct   |U32 c
1618 Ap      |bool   |is_uni_xdigit  |U32 c
1619 Ap      |U32    |to_uni_upper   |U32 c
1620 Ap      |U32    |to_uni_title   |U32 c
1621 Ap      |U32    |to_uni_lower   |U32 c
1622 Ap      |bool   |is_uni_alnum_lc|U32 c
1623 Ap      |bool   |is_uni_alnumc_lc|U32 c
1624 Ap      |bool   |is_uni_idfirst_lc|U32 c
1625 Ap      |bool   |is_uni_alpha_lc|U32 c
1626 Ap      |bool   |is_uni_ascii_lc|U32 c
1627 Ap      |bool   |is_uni_space_lc|U32 c
1628 Ap      |bool   |is_uni_cntrl_lc|U32 c
1629 Ap      |bool   |is_uni_graph_lc|U32 c
1630 Ap      |bool   |is_uni_digit_lc|U32 c
1631 Ap      |bool   |is_uni_upper_lc|U32 c
1632 Ap      |bool   |is_uni_lower_lc|U32 c
1633 Ap      |bool   |is_uni_print_lc|U32 c
1634 Ap      |bool   |is_uni_punct_lc|U32 c
1635 Ap      |bool   |is_uni_xdigit_lc|U32 c
1636 Ap      |U32    |to_uni_upper_lc|U32 c
1637 Ap      |U32    |to_uni_title_lc|U32 c
1638 Ap      |U32    |to_uni_lower_lc|U32 c
1639 Apd     |STRLEN |is_utf8_char   |U8 *p
1640 Apd     |bool   |is_utf8_string |U8 *s|STRLEN len
1641 Ap      |bool   |is_utf8_alnum  |U8 *p
1642 Ap      |bool   |is_utf8_alnumc |U8 *p
1643 Ap      |bool   |is_utf8_idfirst|U8 *p
1644 Ap      |bool   |is_utf8_alpha  |U8 *p
1645 Ap      |bool   |is_utf8_ascii  |U8 *p
1646 Ap      |bool   |is_utf8_space  |U8 *p
1647 Ap      |bool   |is_utf8_cntrl  |U8 *p
1648 Ap      |bool   |is_utf8_digit  |U8 *p
1649 Ap      |bool   |is_utf8_graph  |U8 *p
1650 Ap      |bool   |is_utf8_upper  |U8 *p
1651 Ap      |bool   |is_utf8_lower  |U8 *p
1652 Ap      |bool   |is_utf8_print  |U8 *p
1653 Ap      |bool   |is_utf8_punct  |U8 *p
1654 Ap      |bool   |is_utf8_xdigit |U8 *p
1655 Ap      |bool   |is_utf8_mark   |U8 *p
1656 p       |OP*    |jmaybe         |OP* arg
1657 p       |I32    |keyword        |char* d|I32 len
1658 Ap      |void   |leave_scope    |I32 base
1659 p       |void   |lex_end
1660 p       |void   |lex_start      |SV* line
1661 p       |OP*    |linklist       |OP* o
1662 p       |OP*    |list           |OP* o
1663 p       |OP*    |listkids       |OP* o
1664 Ap      |void   |load_module|U32 flags|SV* name|SV* ver|...
1665 Ap      |void   |vload_module|U32 flags|SV* name|SV* ver|va_list* args
1666 p       |OP*    |localize       |OP* arg|I32 lexical
1667 Apd     |I32    |looks_like_number|SV* sv
1668 p       |int    |magic_clearenv |SV* sv|MAGIC* mg
1669 p       |int    |magic_clear_all_env|SV* sv|MAGIC* mg
1670 p       |int    |magic_clearpack|SV* sv|MAGIC* mg
1671 p       |int    |magic_clearsig |SV* sv|MAGIC* mg
1672 p       |int    |magic_existspack|SV* sv|MAGIC* mg
1673 p       |int    |magic_freeregexp|SV* sv|MAGIC* mg
1674 p       |int    |magic_freeovrld|SV* sv|MAGIC* mg
1675 p       |int    |magic_get      |SV* sv|MAGIC* mg
1676 p       |int    |magic_getarylen|SV* sv|MAGIC* mg
1677 p       |int    |magic_getdefelem|SV* sv|MAGIC* mg
1678 p       |int    |magic_getglob  |SV* sv|MAGIC* mg
1679 p       |int    |magic_getnkeys |SV* sv|MAGIC* mg
1680 p       |int    |magic_getpack  |SV* sv|MAGIC* mg
1681 p       |int    |magic_getpos   |SV* sv|MAGIC* mg
1682 p       |int    |magic_getsig   |SV* sv|MAGIC* mg
1683 p       |int    |magic_getsubstr|SV* sv|MAGIC* mg
1684 p       |int    |magic_gettaint |SV* sv|MAGIC* mg
1685 p       |int    |magic_getuvar  |SV* sv|MAGIC* mg
1686 p       |int    |magic_getvec   |SV* sv|MAGIC* mg
1687 p       |U32    |magic_len      |SV* sv|MAGIC* mg
1688 #if defined(USE_THREADS)
1689 p       |int    |magic_mutexfree|SV* sv|MAGIC* mg
1690 #endif
1691 p       |int    |magic_nextpack |SV* sv|MAGIC* mg|SV* key
1692 p       |U32    |magic_regdata_cnt|SV* sv|MAGIC* mg
1693 p       |int    |magic_regdatum_get|SV* sv|MAGIC* mg
1694 p       |int    |magic_regdatum_set|SV* sv|MAGIC* mg
1695 p       |int    |magic_set      |SV* sv|MAGIC* mg
1696 p       |int    |magic_setamagic|SV* sv|MAGIC* mg
1697 p       |int    |magic_setarylen|SV* sv|MAGIC* mg
1698 p       |int    |magic_setbm    |SV* sv|MAGIC* mg
1699 p       |int    |magic_setdbline|SV* sv|MAGIC* mg
1700 #if defined(USE_LOCALE_COLLATE)
1701 p       |int    |magic_setcollxfrm|SV* sv|MAGIC* mg
1702 #endif
1703 p       |int    |magic_setdefelem|SV* sv|MAGIC* mg
1704 p       |int    |magic_setenv   |SV* sv|MAGIC* mg
1705 p       |int    |magic_setfm    |SV* sv|MAGIC* mg
1706 p       |int    |magic_setisa   |SV* sv|MAGIC* mg
1707 p       |int    |magic_setglob  |SV* sv|MAGIC* mg
1708 p       |int    |magic_setmglob |SV* sv|MAGIC* mg
1709 p       |int    |magic_setnkeys |SV* sv|MAGIC* mg
1710 p       |int    |magic_setpack  |SV* sv|MAGIC* mg
1711 p       |int    |magic_setpos   |SV* sv|MAGIC* mg
1712 p       |int    |magic_setsig   |SV* sv|MAGIC* mg
1713 p       |int    |magic_setsubstr|SV* sv|MAGIC* mg
1714 p       |int    |magic_settaint |SV* sv|MAGIC* mg
1715 p       |int    |magic_setuvar  |SV* sv|MAGIC* mg
1716 p       |int    |magic_setvec   |SV* sv|MAGIC* mg
1717 p       |int    |magic_set_all_env|SV* sv|MAGIC* mg
1718 p       |U32    |magic_sizepack |SV* sv|MAGIC* mg
1719 p       |int    |magic_wipepack |SV* sv|MAGIC* mg
1720 p       |void   |magicname      |char* sym|char* name|I32 namlen
1721 Ap      |void   |markstack_grow
1722 #if defined(USE_LOCALE_COLLATE)
1723 p       |char*  |mem_collxfrm   |const char* s|STRLEN len|STRLEN* xlen
1724 #endif
1725 Afp     |SV*    |mess           |const char* pat|...
1726 Ap      |SV*    |vmess          |const char* pat|va_list* args
1727 p       |void   |qerror         |SV* err
1728 Apd     |int    |mg_clear       |SV* sv
1729 Apd     |int    |mg_copy        |SV* sv|SV* nsv|const char* key|I32 klen
1730 Apd     |MAGIC* |mg_find        |SV* sv|int type
1731 Apd     |int    |mg_free        |SV* sv
1732 Apd     |int    |mg_get         |SV* sv
1733 Apd     |U32    |mg_length      |SV* sv
1734 Apd     |void   |mg_magical     |SV* sv
1735 Apd     |int    |mg_set         |SV* sv
1736 Ap      |I32    |mg_size        |SV* sv
1737 p       |OP*    |mod            |OP* o|I32 type
1738 p       |int    |mode_from_discipline|SV* discp
1739 Ap      |char*  |moreswitches   |char* s
1740 p       |OP*    |my             |OP* o
1741 Ap      |NV     |my_atof        |const char *s
1742 #if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
1743 Anp     |char*  |my_bcopy       |const char* from|char* to|I32 len
1744 #endif
1745 #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
1746 Anp     |char*  |my_bzero       |char* loc|I32 len
1747 #endif
1748 Apr     |void   |my_exit        |U32 status
1749 Apr     |void   |my_failure_exit
1750 Ap      |I32    |my_fflush_all
1751 Ap      |I32    |my_lstat
1752 #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
1753 Anp     |I32    |my_memcmp      |const char* s1|const char* s2|I32 len
1754 #endif
1755 #if !defined(HAS_MEMSET)
1756 Anp     |void*  |my_memset      |char* loc|I32 ch|I32 len
1757 #endif
1758 #if !defined(PERL_OBJECT)
1759 Ap      |I32    |my_pclose      |PerlIO* ptr
1760 Ap      |PerlIO*|my_popen       |char* cmd|char* mode
1761 #endif
1762 Ap      |void   |my_setenv      |char* nam|char* val
1763 Ap      |I32    |my_stat
1764 #if defined(MYSWAP)
1765 Ap      |short  |my_swap        |short s
1766 Ap      |long   |my_htonl       |long l
1767 Ap      |long   |my_ntohl       |long l
1768 #endif
1769 p       |void   |my_unexec
1770 Ap      |OP*    |newANONLIST    |OP* o
1771 Ap      |OP*    |newANONHASH    |OP* o
1772 Ap      |OP*    |newANONSUB     |I32 floor|OP* proto|OP* block
1773 Ap      |OP*    |newASSIGNOP    |I32 flags|OP* left|I32 optype|OP* right
1774 Ap      |OP*    |newCONDOP      |I32 flags|OP* expr|OP* trueop|OP* falseop
1775 Apd     |CV*    |newCONSTSUB    |HV* stash|char* name|SV* sv
1776 Ap      |void   |newFORM        |I32 floor|OP* o|OP* block
1777 Ap      |OP*    |newFOROP       |I32 flags|char* label|line_t forline \
1778                                 |OP* sclr|OP* expr|OP*block|OP*cont
1779 Ap      |OP*    |newLOGOP       |I32 optype|I32 flags|OP* left|OP* right
1780 Ap      |OP*    |newLOOPEX      |I32 type|OP* label
1781 Ap      |OP*    |newLOOPOP      |I32 flags|I32 debuggable|OP* expr|OP* block
1782 Ap      |OP*    |newNULLLIST
1783 Ap      |OP*    |newOP          |I32 optype|I32 flags
1784 Ap      |void   |newPROG        |OP* o
1785 Ap      |OP*    |newRANGE       |I32 flags|OP* left|OP* right
1786 Ap      |OP*    |newSLICEOP     |I32 flags|OP* subscript|OP* listop
1787 Ap      |OP*    |newSTATEOP     |I32 flags|char* label|OP* o
1788 Ap      |CV*    |newSUB         |I32 floor|OP* o|OP* proto|OP* block
1789 Apd     |CV*    |newXS          |char* name|XSUBADDR_t f|char* filename
1790 Apd     |AV*    |newAV
1791 Ap      |OP*    |newAVREF       |OP* o
1792 Ap      |OP*    |newBINOP       |I32 type|I32 flags|OP* first|OP* last
1793 Ap      |OP*    |newCVREF       |I32 flags|OP* o
1794 Ap      |OP*    |newGVOP        |I32 type|I32 flags|GV* gv
1795 Ap      |GV*    |newGVgen       |char* pack
1796 Ap      |OP*    |newGVREF       |I32 type|OP* o
1797 Ap      |OP*    |newHVREF       |OP* o
1798 Apd     |HV*    |newHV
1799 Ap      |HV*    |newHVhv        |HV* hv
1800 Ap      |IO*    |newIO
1801 Ap      |OP*    |newLISTOP      |I32 type|I32 flags|OP* first|OP* last
1802 Ap      |OP*    |newPADOP       |I32 type|I32 flags|SV* sv
1803 Ap      |OP*    |newPMOP        |I32 type|I32 flags
1804 Ap      |OP*    |newPVOP        |I32 type|I32 flags|char* pv
1805 Ap      |SV*    |newRV          |SV* pref
1806 Apd     |SV*    |newRV_noinc    |SV *sv
1807 Ap      |SV*    |newSV          |STRLEN len
1808 Ap      |OP*    |newSVREF       |OP* o
1809 Ap      |OP*    |newSVOP        |I32 type|I32 flags|SV* sv
1810 Apd     |SV*    |newSViv        |IV i
1811 Apd     |SV*    |newSVuv        |UV u
1812 Apd     |SV*    |newSVnv        |NV n
1813 Apd     |SV*    |newSVpv        |const char* s|STRLEN len
1814 Apd     |SV*    |newSVpvn       |const char* s|STRLEN len
1815 Apd     |SV*    |newSVpvn_share |const char* s|I32 len|U32 hash
1816 Afpd    |SV*    |newSVpvf       |const char* pat|...
1817 Ap      |SV*    |vnewSVpvf      |const char* pat|va_list* args
1818 Apd     |SV*    |newSVrv        |SV* rv|const char* classname
1819 Apd     |SV*    |newSVsv        |SV* old
1820 Ap      |OP*    |newUNOP        |I32 type|I32 flags|OP* first
1821 Ap      |OP*    |newWHILEOP     |I32 flags|I32 debuggable|LOOP* loop \
1822                                 |I32 whileline|OP* expr|OP* block|OP* cont
1823
1824 Ap      |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
1825 p       |PerlIO*|nextargv       |GV* gv
1826 Ap      |char*  |ninstr         |const char* big|const char* bigend \
1827                                 |const char* little|const char* lend
1828 p       |OP*    |oopsCV         |OP* o
1829 Ap      |void   |op_free        |OP* arg
1830 p       |void   |package        |OP* o
1831 p       |PADOFFSET|pad_alloc    |I32 optype|U32 tmptype
1832 p       |PADOFFSET|pad_allocmy  |char* name
1833 p       |PADOFFSET|pad_findmy   |char* name
1834 p       |OP*    |oopsAV         |OP* o
1835 p       |OP*    |oopsHV         |OP* o
1836 p       |void   |pad_leavemy    |I32 fill
1837 Ap      |SV*    |pad_sv         |PADOFFSET po
1838 p       |void   |pad_free       |PADOFFSET po
1839 p       |void   |pad_reset
1840 p       |void   |pad_swipe      |PADOFFSET po
1841 p       |void   |peep           |OP* o
1842 dopM    |PerlIO*|start_glob     |SV* pattern|IO *io
1843 #if defined(PERL_OBJECT)
1844 Aox     |void   |Perl_construct
1845 Aox     |void   |Perl_destruct
1846 Aox     |void   |Perl_free
1847 Aox     |int    |Perl_run
1848 Aox     |int    |Perl_parse     |XSINIT_t xsinit \
1849                                 |int argc|char** argv|char** env
1850 #endif
1851 #if defined(USE_THREADS)
1852 Ap      |struct perl_thread*    |new_struct_thread|struct perl_thread *t
1853 #endif
1854 Ap      |void   |call_atexit    |ATEXIT_t fn|void *ptr
1855 Apd     |I32    |call_argv      |const char* sub_name|I32 flags|char** argv
1856 Apd     |I32    |call_method    |const char* methname|I32 flags
1857 Apd     |I32    |call_pv        |const char* sub_name|I32 flags
1858 Apd     |I32    |call_sv        |SV* sv|I32 flags
1859 p       |void   |despatch_signals
1860 Apd     |SV*    |eval_pv        |const char* p|I32 croak_on_error
1861 Apd     |I32    |eval_sv        |SV* sv|I32 flags
1862 Apd     |SV*    |get_sv         |const char* name|I32 create
1863 Apd     |AV*    |get_av         |const char* name|I32 create
1864 Apd     |HV*    |get_hv         |const char* name|I32 create
1865 Apd     |CV*    |get_cv         |const char* name|I32 create
1866 Ap      |int    |init_i18nl10n  |int printwarn
1867 Ap      |int    |init_i18nl14n  |int printwarn
1868 Ap      |void   |new_collate    |char* newcoll
1869 Ap      |void   |new_ctype      |char* newctype
1870 Ap      |void   |new_numeric    |char* newcoll
1871 Ap      |void   |set_numeric_local
1872 Ap      |void   |set_numeric_radix
1873 Ap      |void   |set_numeric_standard
1874 Apd     |void   |require_pv     |const char* pv
1875 p       |void   |pidgone        |Pid_t pid|int status
1876 Ap      |void   |pmflag         |U16* pmfl|int ch
1877 p       |OP*    |pmruntime      |OP* pm|OP* expr|OP* repl
1878 p       |OP*    |pmtrans        |OP* o|OP* expr|OP* repl
1879 p       |OP*    |pop_return
1880 Ap      |void   |pop_scope
1881 p       |OP*    |prepend_elem   |I32 optype|OP* head|OP* tail
1882 p       |void   |push_return    |OP* o
1883 Ap      |void   |push_scope
1884 p       |OP*    |ref            |OP* o|I32 type
1885 p       |OP*    |refkids        |OP* o|I32 type
1886 Ap      |void   |regdump        |regexp* r
1887 Ap      |SV*    |regclass_swash |struct regnode *n|bool doinit|SV **initsvp
1888 Ap      |I32    |pregexec       |regexp* prog|char* stringarg \
1889                                 |char* strend|char* strbeg|I32 minend \
1890                                 |SV* screamer|U32 nosave
1891 Ap      |void   |pregfree       |struct regexp* r
1892 Ap      |regexp*|pregcomp       |char* exp|char* xend|PMOP* pm
1893 Ap      |char*  |re_intuit_start|regexp* prog|SV* sv|char* strpos \
1894                                 |char* strend|U32 flags \
1895                                 |struct re_scream_pos_data_s *data
1896 Ap      |SV*    |re_intuit_string|regexp* prog
1897 Ap      |I32    |regexec_flags  |regexp* prog|char* stringarg \
1898                                 |char* strend|char* strbeg|I32 minend \
1899                                 |SV* screamer|void* data|U32 flags
1900 Ap      |regnode*|regnext       |regnode* p
1901 p       |void   |regprop        |SV* sv|regnode* o
1902 Ap      |void   |repeatcpy      |char* to|const char* from|I32 len|I32 count
1903 Ap      |char*  |rninstr        |const char* big|const char* bigend \
1904                                 |const char* little|const char* lend
1905 Ap      |Sighandler_t|rsignal   |int i|Sighandler_t t
1906 p       |int    |rsignal_restore|int i|Sigsave_t* t
1907 p       |int    |rsignal_save   |int i|Sighandler_t t1|Sigsave_t* t2
1908 p       |Sighandler_t|rsignal_state|int i
1909 p       |void   |rxres_free     |void** rsp
1910 p       |void   |rxres_restore  |void** rsp|REGEXP* prx
1911 p       |void   |rxres_save     |void** rsp|REGEXP* prx
1912 #if !defined(HAS_RENAME)
1913 p       |I32    |same_dirent    |char* a|char* b
1914 #endif
1915 Apd     |char*  |savepv         |const char* sv
1916 Apd     |char*  |savepvn        |const char* sv|I32 len
1917 Ap      |void   |savestack_grow
1918 Ap      |void   |save_aelem     |AV* av|I32 idx|SV **sptr
1919 Ap      |I32    |save_alloc     |I32 size|I32 pad
1920 Ap      |void   |save_aptr      |AV** aptr
1921 Ap      |AV*    |save_ary       |GV* gv
1922 Ap      |void   |save_clearsv   |SV** svp
1923 Ap      |void   |save_delete    |HV* hv|char* key|I32 klen
1924 Ap      |void   |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|void* p
1925 Ap      |void   |save_destructor_x|DESTRUCTORFUNC_t f|void* p
1926 Ap      |void   |save_freesv    |SV* sv
1927 p       |void   |save_freeop    |OP* o
1928 Ap      |void   |save_freepv    |char* pv
1929 Ap      |void   |save_generic_svref|SV** sptr
1930 Ap      |void   |save_generic_pvref|char** str
1931 Ap      |void   |save_gp        |GV* gv|I32 empty
1932 Ap      |HV*    |save_hash      |GV* gv
1933 Ap      |void   |save_helem     |HV* hv|SV *key|SV **sptr
1934 Ap      |void   |save_hints
1935 Ap      |void   |save_hptr      |HV** hptr
1936 Ap      |void   |save_I16       |I16* intp
1937 Ap      |void   |save_I32       |I32* intp
1938 Ap      |void   |save_I8        |I8* bytep
1939 Ap      |void   |save_int       |int* intp
1940 Ap      |void   |save_item      |SV* item
1941 Ap      |void   |save_iv        |IV* iv
1942 Ap      |void   |save_list      |SV** sarg|I32 maxsarg
1943 Ap      |void   |save_long      |long* longp
1944 Ap      |void   |save_nogv      |GV* gv
1945 p       |void   |save_op
1946 Ap      |SV*    |save_scalar    |GV* gv
1947 Ap      |void   |save_pptr      |char** pptr
1948 Ap      |void   |save_vptr      |void* pptr
1949 Ap      |void   |save_re_context
1950 Ap      |void   |save_padsv     |PADOFFSET off
1951 Ap      |void   |save_sptr      |SV** sptr
1952 Ap      |SV*    |save_svref     |SV** sptr
1953 Ap      |SV**   |save_threadsv  |PADOFFSET i
1954 p       |OP*    |sawparens      |OP* o
1955 p       |OP*    |scalar         |OP* o
1956 p       |OP*    |scalarkids     |OP* o
1957 p       |OP*    |scalarseq      |OP* o
1958 p       |OP*    |scalarvoid     |OP* o
1959 Ap      |NV     |scan_bin       |char* start|STRLEN len|STRLEN* retlen
1960 Ap      |NV     |scan_hex       |char* start|STRLEN len|STRLEN* retlen
1961 Ap      |char*  |scan_num       |char* s|YYSTYPE *lvalp
1962 Ap      |NV     |scan_oct       |char* start|STRLEN len|STRLEN* retlen
1963 p       |OP*    |scope          |OP* o
1964 Ap      |char*  |screaminstr    |SV* bigsv|SV* littlesv|I32 start_shift \
1965                                 |I32 end_shift|I32 *state|I32 last
1966 #if !defined(VMS)
1967 p       |I32    |setenv_getix   |char* nam
1968 #endif
1969 p       |void   |setdefout      |GV* gv
1970 Ap      |char*  |sharepvn       |const char* sv|I32 len|U32 hash
1971 p       |HEK*   |share_hek      |const char* sv|I32 len|U32 hash
1972 np      |Signal_t |sighandler   |int sig
1973 Ap      |SV**   |stack_grow     |SV** sp|SV**p|int n
1974 Ap      |I32    |start_subparse |I32 is_format|U32 flags
1975 p       |void   |sub_crush_depth|CV* cv
1976 Ap      |bool   |sv_2bool       |SV* sv
1977 Ap      |CV*    |sv_2cv         |SV* sv|HV** st|GV** gvp|I32 lref
1978 Ap      |IO*    |sv_2io         |SV* sv
1979 Ap      |IV     |sv_2iv         |SV* sv
1980 Apd     |SV*    |sv_2mortal     |SV* sv
1981 Ap      |NV     |sv_2nv         |SV* sv
1982 Ap      |char*  |sv_2pv         |SV* sv|STRLEN* lp
1983 Ap      |char*  |sv_2pvutf8     |SV* sv|STRLEN* lp
1984 Ap      |char*  |sv_2pvbyte     |SV* sv|STRLEN* lp
1985 Ap      |UV     |sv_2uv         |SV* sv
1986 Ap      |IV     |sv_iv          |SV* sv
1987 Ap      |UV     |sv_uv          |SV* sv
1988 Ap      |NV     |sv_nv          |SV* sv
1989 Ap      |char*  |sv_pvn         |SV *sv|STRLEN *len
1990 Ap      |char*  |sv_pvutf8n     |SV *sv|STRLEN *len
1991 Ap      |char*  |sv_pvbyten     |SV *sv|STRLEN *len
1992 Apd     |I32    |sv_true        |SV *sv
1993 p       |void   |sv_add_arena   |char* ptr|U32 size|U32 flags
1994 Ap      |int    |sv_backoff     |SV* sv
1995 Apd     |SV*    |sv_bless       |SV* sv|HV* stash
1996 Afpd    |void   |sv_catpvf      |SV* sv|const char* pat|...
1997 Ap      |void   |sv_vcatpvf     |SV* sv|const char* pat|va_list* args
1998 Apd     |void   |sv_catpv       |SV* sv|const char* ptr
1999 Apd     |void   |sv_catpvn      |SV* sv|const char* ptr|STRLEN len
2000 Apd     |void   |sv_catsv       |SV* dsv|SV* ssv
2001 Apd     |void   |sv_chop        |SV* sv|char* ptr
2002 p       |void   |sv_clean_all
2003 p       |void   |sv_clean_objs
2004 Apd     |void   |sv_clear       |SV* sv
2005 Apd     |I32    |sv_cmp         |SV* sv1|SV* sv2
2006 Apd     |I32    |sv_cmp_locale  |SV* sv1|SV* sv2
2007 #if defined(USE_LOCALE_COLLATE)
2008 Ap      |char*  |sv_collxfrm    |SV* sv|STRLEN* nxp
2009 #endif
2010 Ap      |OP*    |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
2011 Apd     |void   |sv_dec         |SV* sv
2012 Ap      |void   |sv_dump        |SV* sv
2013 Apd     |bool   |sv_derived_from|SV* sv|const char* name
2014 Apd     |I32    |sv_eq          |SV* sv1|SV* sv2
2015 Apd     |void   |sv_free        |SV* sv
2016 p       |void   |sv_free_arenas
2017 Apd     |char*  |sv_gets        |SV* sv|PerlIO* fp|I32 append
2018 Apd     |char*  |sv_grow        |SV* sv|STRLEN newlen
2019 Apd     |void   |sv_inc         |SV* sv
2020 Apd     |void   |sv_insert      |SV* bigsv|STRLEN offset|STRLEN len \
2021                                 |char* little|STRLEN littlelen
2022 Apd     |int    |sv_isa         |SV* sv|const char* name
2023 Apd     |int    |sv_isobject    |SV* sv
2024 Apd     |STRLEN |sv_len         |SV* sv
2025 Apd     |STRLEN |sv_len_utf8    |SV* sv
2026 Apd     |void   |sv_magic       |SV* sv|SV* obj|int how|const char* name \
2027                                 |I32 namlen
2028 Apd     |SV*    |sv_mortalcopy  |SV* oldsv
2029 Apd     |SV*    |sv_newmortal
2030 Ap      |SV*    |sv_newref      |SV* sv
2031 Ap      |char*  |sv_peek        |SV* sv
2032 Ap      |void   |sv_pos_u2b     |SV* sv|I32* offsetp|I32* lenp
2033 Ap      |void   |sv_pos_b2u     |SV* sv|I32* offsetp
2034 Apd     |char*  |sv_pvn_force   |SV* sv|STRLEN* lp
2035 Apd     |char*  |sv_pvutf8n_force|SV* sv|STRLEN* lp
2036 Ap      |char*  |sv_pvbyten_force|SV* sv|STRLEN* lp
2037 Apd     |char*  |sv_reftype     |SV* sv|int ob
2038 Apd     |void   |sv_replace     |SV* sv|SV* nsv
2039 Ap      |void   |sv_report_used
2040 Ap      |void   |sv_reset       |char* s|HV* stash
2041 Afpd    |void   |sv_setpvf      |SV* sv|const char* pat|...
2042 Ap      |void   |sv_vsetpvf     |SV* sv|const char* pat|va_list* args
2043 Apd     |void   |sv_setiv       |SV* sv|IV num
2044 Apd     |void   |sv_setpviv     |SV* sv|IV num
2045 Apd     |void   |sv_setuv       |SV* sv|UV num
2046 Apd     |void   |sv_setnv       |SV* sv|NV num
2047 Apd     |SV*    |sv_setref_iv   |SV* rv|const char* classname|IV iv
2048 Apd     |SV*    |sv_setref_uv   |SV* rv|const char* classname|UV uv
2049 Apd     |SV*    |sv_setref_nv   |SV* rv|const char* classname|NV nv
2050 Apd     |SV*    |sv_setref_pv   |SV* rv|const char* classname|void* pv
2051 Apd     |SV*    |sv_setref_pvn  |SV* rv|const char* classname|char* pv \
2052                                 |STRLEN n
2053 Apd     |void   |sv_setpv       |SV* sv|const char* ptr
2054 Apd     |void   |sv_setpvn      |SV* sv|const char* ptr|STRLEN len
2055 Apd     |void   |sv_setsv       |SV* dsv|SV* ssv
2056 Ap      |void   |sv_taint       |SV* sv
2057 Ap      |bool   |sv_tainted     |SV* sv
2058 Apd     |int    |sv_unmagic     |SV* sv|int type
2059 Apd     |void   |sv_unref       |SV* sv
2060 Apd     |void   |sv_unref_flags |SV* sv|U32 flags
2061 Ap      |void   |sv_untaint     |SV* sv
2062 Apd     |bool   |sv_upgrade     |SV* sv|U32 mt
2063 Apd     |void   |sv_usepvn      |SV* sv|char* ptr|STRLEN len
2064 Apd     |void   |sv_vcatpvfn    |SV* sv|const char* pat|STRLEN patlen \
2065                                 |va_list* args|SV** svargs|I32 svmax \
2066                                 |bool *maybe_tainted
2067 Apd     |void   |sv_vsetpvfn    |SV* sv|const char* pat|STRLEN patlen \
2068                                 |va_list* args|SV** svargs|I32 svmax \
2069                                 |bool *maybe_tainted
2070 Ap      |NV     |str_to_version |SV *sv
2071 Ap      |SV*    |swash_init     |char* pkg|char* name|SV* listsv \
2072                                 |I32 minbits|I32 none
2073 Ap      |UV     |swash_fetch    |SV *sv|U8 *ptr
2074 Ap      |void   |taint_env
2075 Ap      |void   |taint_proper   |const char* f|const char* s
2076 Ap      |UV     |to_utf8_lower  |U8 *p
2077 Ap      |UV     |to_utf8_upper  |U8 *p
2078 Ap      |UV     |to_utf8_title  |U8 *p
2079 #if defined(UNLINK_ALL_VERSIONS)
2080 Ap      |I32    |unlnk          |char* f
2081 #endif
2082 #if defined(USE_THREADS)
2083 Ap      |void   |unlock_condpair|void* svv
2084 #endif
2085 Ap      |void   |unsharepvn     |const char* sv|I32 len|U32 hash
2086 p       |void   |unshare_hek    |HEK* hek
2087 p       |void   |utilize        |int aver|I32 floor|OP* version|OP* id|OP* arg
2088 Ap      |U8*    |utf16_to_utf8  |U8* p|U8 *d|I32 bytelen|I32 *newlen
2089 Ap      |U8*    |utf16_to_utf8_reversed|U8* p|U8 *d|I32 bytelen|I32 *newlen
2090 Adp     |STRLEN |utf8_length    |U8* s|U8 *e
2091 Apd     |IV     |utf8_distance  |U8 *a|U8 *b
2092 Apd     |U8*    |utf8_hop       |U8 *s|I32 off
2093 ApMd    |U8*    |utf8_to_bytes  |U8 *s|STRLEN *len
2094 ApMd    |U8*    |bytes_from_utf8|U8 *s|STRLEN *len|bool *is_utf8
2095 ApMd    |U8*    |bytes_to_utf8  |U8 *s|STRLEN *len
2096 Apd     |UV     |utf8_to_uv_simple|U8 *s|STRLEN* retlen
2097 Adp     |UV     |utf8_to_uv     |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags
2098 Apd     |U8*    |uv_to_utf8     |U8 *d|UV uv
2099 p       |void   |vivify_defelem |SV* sv
2100 p       |void   |vivify_ref     |SV* sv|U32 to_what
2101 p       |I32    |wait4pid       |Pid_t pid|int* statusp|int flags
2102 p       |void   |report_evil_fh |GV *gv|IO *io|I32 op
2103 p       |void   |report_uninit
2104 Afpd    |void   |warn           |const char* pat|...
2105 Ap      |void   |vwarn          |const char* pat|va_list* args
2106 Afp     |void   |warner         |U32 err|const char* pat|...
2107 Ap      |void   |vwarner        |U32 err|const char* pat|va_list* args
2108 p       |void   |watch          |char** addr
2109 Ap      |I32    |whichsig       |char* sig
2110 p       |int    |yyerror        |char* s
2111 #ifdef USE_PURE_BISON
2112 p       |int    |yylex_r        |YYSTYPE *lvalp|int *lcharp
2113 #endif
2114 p       |int    |yylex
2115 p       |int    |yyparse
2116 p       |int    |yywarn         |char* s
2117 #if defined(MYMALLOC)
2118 Ap      |void   |dump_mstats    |char* s
2119 Ap      |int    |get_mstats     |perl_mstats_t *buf|int buflen|int level
2120 #endif
2121 Anp     |Malloc_t|safesysmalloc |MEM_SIZE nbytes
2122 Anp     |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
2123 Anp     |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
2124 Anp     |Free_t |safesysfree    |Malloc_t where
2125 #if defined(LEAKTEST)
2126 Anp     |Malloc_t|safexmalloc   |I32 x|MEM_SIZE size
2127 Anp     |Malloc_t|safexcalloc   |I32 x|MEM_SIZE elements|MEM_SIZE size
2128 Anp     |Malloc_t|safexrealloc  |Malloc_t where|MEM_SIZE size
2129 Anp     |void   |safexfree      |Malloc_t where
2130 #endif
2131 #if defined(PERL_GLOBAL_STRUCT)
2132 Ap      |struct perl_vars *|GetVars
2133 #endif
2134 Ap      |int    |runops_standard
2135 Ap      |int    |runops_debug
2136 #if defined(USE_THREADS)
2137 Ap      |SV*    |sv_lock        |SV *sv
2138 #endif
2139 Afpd    |void   |sv_catpvf_mg   |SV *sv|const char* pat|...
2140 Ap      |void   |sv_vcatpvf_mg  |SV* sv|const char* pat|va_list* args
2141 Apd     |void   |sv_catpv_mg    |SV *sv|const char *ptr
2142 Apd     |void   |sv_catpvn_mg   |SV *sv|const char *ptr|STRLEN len
2143 Apd     |void   |sv_catsv_mg    |SV *dstr|SV *sstr
2144 Afpd    |void   |sv_setpvf_mg   |SV *sv|const char* pat|...
2145 Ap      |void   |sv_vsetpvf_mg  |SV* sv|const char* pat|va_list* args
2146 Apd     |void   |sv_setiv_mg    |SV *sv|IV i
2147 Apd     |void   |sv_setpviv_mg  |SV *sv|IV iv
2148 Apd     |void   |sv_setuv_mg    |SV *sv|UV u
2149 Apd     |void   |sv_setnv_mg    |SV *sv|NV num
2150 Apd     |void   |sv_setpv_mg    |SV *sv|const char *ptr
2151 Apd     |void   |sv_setpvn_mg   |SV *sv|const char *ptr|STRLEN len
2152 Apd     |void   |sv_setsv_mg    |SV *dstr|SV *sstr
2153 Apd     |void   |sv_usepvn_mg   |SV *sv|char *ptr|STRLEN len
2154 Ap      |MGVTBL*|get_vtbl       |int vtbl_id
2155 p       |char*  |pv_display     |SV *sv|char *pv|STRLEN cur|STRLEN len \
2156                                 |STRLEN pvlim
2157 Afp     |void   |dump_indent    |I32 level|PerlIO *file|const char* pat|...
2158 Ap      |void   |dump_vindent   |I32 level|PerlIO *file|const char* pat \
2159                                 |va_list *args
2160 Ap      |void   |do_gv_dump     |I32 level|PerlIO *file|char *name|GV *sv
2161 Ap      |void   |do_gvgv_dump   |I32 level|PerlIO *file|char *name|GV *sv
2162 Ap      |void   |do_hv_dump     |I32 level|PerlIO *file|char *name|HV *sv
2163 Ap      |void   |do_magic_dump  |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
2164                                 |I32 maxnest|bool dumpops|STRLEN pvlim
2165 Ap      |void   |do_op_dump     |I32 level|PerlIO *file|OP *o
2166 Ap      |void   |do_pmop_dump   |I32 level|PerlIO *file|PMOP *pm
2167 Ap      |void   |do_sv_dump     |I32 level|PerlIO *file|SV *sv|I32 nest \
2168                                 |I32 maxnest|bool dumpops|STRLEN pvlim
2169 Ap      |void   |magic_dump     |MAGIC *mg
2170 #if defined(PERL_FLEXIBLE_EXCEPTIONS)
2171 Ap      |void*  |default_protect|volatile JMPENV *je|int *excpt \
2172                                 |protect_body_t body|...
2173 Ap      |void*  |vdefault_protect|volatile JMPENV *je|int *excpt \
2174                                 |protect_body_t body|va_list *args
2175 #endif
2176 Ap      |void   |reginitcolors
2177 Ap      |char*  |sv_2pv_nolen   |SV* sv
2178 Ap      |char*  |sv_2pvutf8_nolen|SV* sv
2179 Ap      |char*  |sv_2pvbyte_nolen|SV* sv
2180 Ap      |char*  |sv_pv          |SV *sv
2181 Ap      |char*  |sv_pvutf8      |SV *sv
2182 Ap      |char*  |sv_pvbyte      |SV *sv
2183 Apd      |void   |sv_utf8_upgrade|SV *sv
2184 ApdM      |bool   |sv_utf8_downgrade|SV *sv|bool fail_ok
2185 ApdM      |void   |sv_utf8_encode |SV *sv
2186 Ap      |bool   |sv_utf8_decode |SV *sv
2187 Ap      |void   |sv_force_normal|SV *sv
2188 Ap      |void   |sv_force_normal_flags|SV *sv|U32 flags
2189 Ap      |void   |tmps_grow      |I32 n
2190 Apd     |SV*    |sv_rvweaken    |SV *sv
2191 p       |int    |magic_killbackrefs|SV *sv|MAGIC *mg
2192 Ap      |OP*    |newANONATTRSUB |I32 floor|OP *proto|OP *attrs|OP *block
2193 Ap      |CV*    |newATTRSUB     |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
2194 Ap      |void   |newMYSUB       |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
2195 p       |OP *   |my_attrs       |OP *o|OP *attrs
2196 p       |void   |boot_core_xsutils
2197 #if defined(USE_ITHREADS)
2198 Ap      |PERL_CONTEXT*|cx_dup   |PERL_CONTEXT* cx|I32 ix|I32 max
2199 Ap      |PERL_SI*|si_dup        |PERL_SI* si
2200 Ap      |ANY*   |ss_dup         |PerlInterpreter* proto_perl
2201 Ap      |void*  |any_dup        |void* v|PerlInterpreter* proto_perl
2202 Ap      |HE*    |he_dup         |HE* e|bool shared
2203 Ap      |REGEXP*|re_dup         |REGEXP* r
2204 Ap      |PerlIO*|fp_dup         |PerlIO* fp|char type
2205 Ap      |DIR*   |dirp_dup       |DIR* dp
2206 Ap      |GP*    |gp_dup         |GP* gp
2207 Ap      |MAGIC* |mg_dup         |MAGIC* mg
2208 Ap      |SV*    |sv_dup         |SV* sstr
2209 #if defined(HAVE_INTERP_INTERN)
2210 Ap      |void   |sys_intern_dup |struct interp_intern* src \
2211                                 |struct interp_intern* dst
2212 #endif
2213 Ap      |PTR_TBL_t*|ptr_table_new
2214 Ap      |void*  |ptr_table_fetch|PTR_TBL_t *tbl|void *sv
2215 Ap      |void   |ptr_table_store|PTR_TBL_t *tbl|void *oldsv|void *newsv
2216 Ap      |void   |ptr_table_split|PTR_TBL_t *tbl
2217 Ap      |void   |ptr_table_clear|PTR_TBL_t *tbl
2218 Ap      |void   |ptr_table_free|PTR_TBL_t *tbl
2219 #endif
2220 #if defined(HAVE_INTERP_INTERN)
2221 Ap      |void   |sys_intern_clear
2222 Ap      |void   |sys_intern_init
2223 #endif
2224
2225 #if defined(PERL_OBJECT)
2226 protected:
2227 #else
2228 END_EXTERN_C
2229 #endif
2230
2231 #if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
2232 s       |I32    |avhv_index_sv  |SV* sv
2233 s       |I32    |avhv_index     |AV* av|SV* sv|U32 hash
2234 #endif
2235
2236 #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
2237 s       |I32    |do_trans_simple        |SV *sv
2238 s       |I32    |do_trans_count         |SV *sv
2239 s       |I32    |do_trans_complex       |SV *sv
2240 s       |I32    |do_trans_simple_utf8   |SV *sv
2241 s       |I32    |do_trans_count_utf8    |SV *sv
2242 s       |I32    |do_trans_complex_utf8  |SV *sv
2243 #endif
2244
2245 #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
2246 s       |void   |gv_init_sv     |GV *gv|I32 sv_type
2247 #endif
2248
2249 #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
2250 s       |void   |hsplit         |HV *hv
2251 s       |void   |hfreeentries   |HV *hv
2252 s       |void   |more_he
2253 s       |HE*    |new_he
2254 s       |void   |del_he         |HE *p
2255 s       |HEK*   |save_hek       |const char *str|I32 len|U32 hash
2256 s       |void   |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
2257 #endif
2258
2259 #if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
2260 s       |void   |save_magic     |I32 mgs_ix|SV *sv
2261 s       |int    |magic_methpack |SV *sv|MAGIC *mg|char *meth
2262 s       |int    |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
2263                                 |int n|SV *val
2264 #endif
2265
2266 #if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
2267 s       |I32    |list_assignment|OP *o
2268 s       |void   |bad_type       |I32 n|char *t|char *name|OP *kid
2269 s       |void   |cop_free       |COP *cop
2270 s       |OP*    |modkids        |OP *o|I32 type
2271 s       |void   |no_bareword_allowed|OP *o
2272 s       |OP*    |no_fh_allowed  |OP *o
2273 s       |OP*    |scalarboolean  |OP *o
2274 s       |OP*    |too_few_arguments|OP *o|char* name
2275 s       |OP*    |too_many_arguments|OP *o|char* name
2276 s       |U8*    |trlist_upgrade |U8** sp|U8** ep
2277 s       |void   |op_clear       |OP* o
2278 s       |void   |null           |OP* o
2279 s       |PADOFFSET|pad_addlex   |SV* name
2280 s       |PADOFFSET|pad_findlex  |char* name|PADOFFSET newoff|U32 seq \
2281                                 |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
2282 s       |OP*    |newDEFSVOP
2283 s       |OP*    |new_logop      |I32 type|I32 flags|OP **firstp|OP **otherp
2284 s       |void   |simplify_sort  |OP *o
2285 s       |bool   |is_handle_constructor  |OP *o|I32 argnum
2286 s       |char*  |gv_ename       |GV *gv
2287 #  if defined(DEBUG_CLOSURES)
2288 s       |void   |cv_dump        |CV *cv
2289 #  endif
2290 s       |CV*    |cv_clone2      |CV *proto|CV *outside
2291 s       |bool   |scalar_mod_type|OP *o|I32 type
2292 s       |OP *   |my_kid         |OP *o|OP *attrs
2293 s       |OP *   |dup_attrlist   |OP *o
2294 s       |void   |apply_attrs    |HV *stash|SV *target|OP *attrs
2295 #  if defined(PL_OP_SLAB_ALLOC)
2296 s       |void*  |Slab_Alloc     |int m|size_t sz
2297 #  endif
2298 #endif
2299
2300 #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
2301 s       |void   |find_beginning
2302 s       |void   |forbid_setid   |char *
2303 s       |void   |incpush        |char *|int|int
2304 s       |void   |init_interp
2305 s       |void   |init_ids
2306 s       |void   |init_lexer
2307 s       |void   |init_main_stash
2308 s       |void   |init_perllib
2309 s       |void   |init_postdump_symbols|int|char **|char **
2310 s       |void   |init_predump_symbols
2311 rs      |void   |my_exit_jump
2312 s       |void   |nuke_stacks
2313 s       |void   |open_script    |char *|bool|SV *|int *fd
2314 s       |void   |usage          |char *
2315 s       |void   |validate_suid  |char *|char*|int
2316 #  if defined(IAMSUID)
2317 s       |int    |fd_on_nosuid_fs|int fd
2318 #  endif
2319 s       |void*  |parse_body     |char **env|XSINIT_t xsinit
2320 s       |void*  |run_body       |I32 oldscope
2321 s       |void   |call_body      |OP *myop|int is_eval
2322 s       |void*  |call_list_body |CV *cv
2323 #if defined(PERL_FLEXIBLE_EXCEPTIONS)
2324 s       |void*  |vparse_body    |va_list args
2325 s       |void*  |vrun_body      |va_list args
2326 s       |void*  |vcall_body     |va_list args
2327 s       |void*  |vcall_list_body|va_list args
2328 #endif
2329 #  if defined(USE_THREADS)
2330 s       |struct perl_thread *   |init_main_thread
2331 #  endif
2332 #endif
2333
2334 #if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
2335 s       |void   |doencodes      |SV* sv|char* s|I32 len
2336 s       |SV*    |refto          |SV* sv
2337 s       |U32    |seed
2338 s       |SV*    |mul128         |SV *sv|U8 m
2339 s       |SV*    |is_an_int      |char *s|STRLEN l
2340 s       |int    |div128         |SV *pnum|bool *done
2341 #endif
2342
2343 #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
2344 s       |OP*    |docatch        |OP *o
2345 s       |void*  |docatch_body
2346 #if defined(PERL_FLEXIBLE_EXCEPTIONS)
2347 s       |void*  |vdocatch_body  |va_list args
2348 #endif
2349 s       |OP*    |dofindlabel    |OP *o|char *label|OP **opstack|OP **oplimit
2350 s       |void   |doparseform    |SV *sv
2351 s       |I32    |dopoptoeval    |I32 startingblock
2352 s       |I32    |dopoptolabel   |char *label
2353 s       |I32    |dopoptoloop    |I32 startingblock
2354 s       |I32    |dopoptosub     |I32 startingblock
2355 s       |I32    |dopoptosub_at  |PERL_CONTEXT* cxstk|I32 startingblock
2356 s       |void   |free_closures
2357 s       |void   |save_lines     |AV *array|SV *sv
2358 s       |OP*    |doeval         |int gimme|OP** startop
2359 s       |PerlIO *|doopen_pmc    |const char *name|const char *mode
2360 s       |void   |qsortsv        |SV ** array|size_t num_elts|SVCOMPARE_t f
2361 #endif
2362
2363 #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
2364 s       |int    |do_maybe_phash |AV *ary|SV **lelem|SV **firstlelem \
2365                                 |SV **relem|SV **lastrelem
2366 s       |void   |do_oddball     |HV *hash|SV **relem|SV **firstrelem
2367 s       |CV*    |get_db_sub     |SV **svp|CV *cv
2368 s       |SV*    |method_common  |SV* meth|U32* hashp
2369 #endif
2370
2371 #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
2372 s       |OP*    |doform         |CV *cv|GV *gv|OP *retop
2373 s       |int    |emulate_eaccess|const char* path|Mode_t mode
2374 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
2375 s       |int    |dooneliner     |char *cmd|char *filename
2376 #  endif
2377 #endif
2378
2379 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
2380 s       |regnode*|reg           |struct RExC_state_t*|I32|I32 *
2381 s       |regnode*|reganode      |struct RExC_state_t*|U8|U32
2382 s       |regnode*|regatom       |struct RExC_state_t*|I32 *
2383 s       |regnode*|regbranch     |struct RExC_state_t*|I32 *|I32
2384 s       |void   |reguni         |struct RExC_state_t*|UV|char *|STRLEN*
2385 s       |regnode*|regclass      |struct RExC_state_t*
2386 s       |I32    |regcurly       |char *
2387 s       |regnode*|reg_node      |struct RExC_state_t*|U8
2388 s       |regnode*|regpiece      |struct RExC_state_t*|I32 *
2389 s       |void   |reginsert      |struct RExC_state_t*|U8|regnode *
2390 s       |void   |regoptail      |struct RExC_state_t*|regnode *|regnode *
2391 s       |void   |regtail        |struct RExC_state_t*|regnode *|regnode *
2392 s       |char*|regwhite |char *|char *
2393 s       |char*|nextchar |struct RExC_state_t*
2394 s       |regnode*|dumpuntil     |regnode *start|regnode *node \
2395                                 |regnode *last|SV* sv|I32 l
2396 s       |void   |put_byte       |SV* sv|int c
2397 s       |void   |scan_commit    |struct RExC_state_t*|struct scan_data_t *data
2398 s       |void   |cl_anything    |struct RExC_state_t*|struct regnode_charclass_class *cl
2399 s       |int    |cl_is_anything |struct regnode_charclass_class *cl
2400 s       |void   |cl_init        |struct RExC_state_t*|struct regnode_charclass_class *cl
2401 s       |void   |cl_init_zero   |struct RExC_state_t*|struct regnode_charclass_class *cl
2402 s       |void   |cl_and         |struct regnode_charclass_class *cl \
2403                                 |struct regnode_charclass_class *and_with
2404 s       |void   |cl_or          |struct RExC_state_t*|struct regnode_charclass_class *cl \
2405                                 |struct regnode_charclass_class *or_with
2406 s       |I32    |study_chunk    |struct RExC_state_t*|regnode **scanp|I32 *deltap \
2407                                 |regnode *last|struct scan_data_t *data \
2408                                 |U32 flags
2409 s       |I32    |add_data       |struct RExC_state_t*|I32 n|char *s
2410 rs      |void|re_croak2 |const char* pat1|const char* pat2|...
2411 s       |I32    |regpposixcc    |struct RExC_state_t*|I32 value
2412 s       |void   |checkposixcc   |struct RExC_state_t*
2413 #endif
2414
2415 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
2416 s       |I32    |regmatch       |regnode *prog
2417 s       |I32    |regrepeat      |regnode *p|I32 max
2418 s       |I32    |regrepeat_hard |regnode *p|I32 max|I32 *lp
2419 s       |I32    |regtry         |regexp *prog|char *startpos
2420 s       |bool   |reginclass     |regnode *n|U8 *p|bool do_utf8sv_is_utf8
2421 s       |CHECKPOINT|regcppush   |I32 parenfloor
2422 s       |char*|regcppop
2423 s       |char*|regcp_set_to     |I32 ss
2424 s       |void   |cache_re       |regexp *prog
2425 s       |U8*    |reghop         |U8 *pos|I32 off
2426 s       |U8*    |reghop3        |U8 *pos|I32 off|U8 *lim
2427 s       |U8*    |reghopmaybe    |U8 *pos|I32 off
2428 s       |U8*    |reghopmaybe3   |U8 *pos|I32 off|U8 *lim
2429 s       |char*  |find_byclass   |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun
2430 #endif
2431
2432 #if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
2433 s       |void   |debprof        |OP *o
2434 #endif
2435
2436 #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
2437 s       |SV*    |save_scalar_at |SV **sptr
2438 #endif
2439
2440 #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
2441 s       |IV     |asIV           |SV* sv
2442 s       |UV     |asUV           |SV* sv
2443 s       |SV*    |more_sv
2444 s       |void   |more_xiv
2445 s       |void   |more_xnv
2446 s       |void   |more_xpv
2447 s       |void   |more_xpviv
2448 s       |void   |more_xpvnv
2449 s       |void   |more_xpvcv
2450 s       |void   |more_xpvav
2451 s       |void   |more_xpvhv
2452 s       |void   |more_xpvmg
2453 s       |void   |more_xpvlv
2454 s       |void   |more_xpvbm
2455 s       |void   |more_xrv
2456 s       |XPVIV* |new_xiv
2457 s       |XPVNV* |new_xnv
2458 s       |XPV*   |new_xpv
2459 s       |XPVIV* |new_xpviv
2460 s       |XPVNV* |new_xpvnv
2461 s       |XPVCV* |new_xpvcv
2462 s       |XPVAV* |new_xpvav
2463 s       |XPVHV* |new_xpvhv
2464 s       |XPVMG* |new_xpvmg
2465 s       |XPVLV* |new_xpvlv
2466 s       |XPVBM* |new_xpvbm
2467 s       |XRV*   |new_xrv
2468 s       |void   |del_xiv        |XPVIV* p
2469 s       |void   |del_xnv        |XPVNV* p
2470 s       |void   |del_xpv        |XPV* p
2471 s       |void   |del_xpviv      |XPVIV* p
2472 s       |void   |del_xpvnv      |XPVNV* p
2473 s       |void   |del_xpvcv      |XPVCV* p
2474 s       |void   |del_xpvav      |XPVAV* p
2475 s       |void   |del_xpvhv      |XPVHV* p
2476 s       |void   |del_xpvmg      |XPVMG* p
2477 s       |void   |del_xpvlv      |XPVLV* p
2478 s       |void   |del_xpvbm      |XPVBM* p
2479 s       |void   |del_xrv        |XRV* p
2480 s       |void   |sv_unglob      |SV* sv
2481 s       |void   |not_a_number   |SV *sv
2482 s       |void   |visit          |SVFUNC_t f
2483 s       |void   |sv_add_backref |SV *tsv|SV *sv
2484 s       |void   |sv_del_backref |SV *sv
2485 #  if defined(DEBUGGING)
2486 s       |void   |del_sv |SV *p
2487 #  endif
2488 #  if !defined(NV_PRESERVES_UV)
2489 s      |int    |sv_2inuv_non_preserve  |SV *sv|I32 numtype
2490 s      |int    |sv_2iuv_non_preserve   |SV *sv|I32 numtype
2491 #  endif
2492 s       |I32    |expect_number  |char** pattern
2493 #
2494 #  if defined(USE_ITHREADS)
2495 s       |SV*    |gv_share       |SV *sv
2496 #  endif
2497 #endif
2498
2499 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
2500 s       |void   |check_uni
2501 s       |void   |force_next     |I32 type
2502 s       |char*  |force_version  |char *start
2503 s       |char*  |force_word     |char *start|int token|int check_keyword \
2504                                 |int allow_pack|int allow_tick
2505 s       |SV*    |tokeq          |SV *sv
2506 s       |char*  |scan_const     |char *start
2507 s       |char*  |scan_formline  |char *s
2508 s       |char*  |scan_heredoc   |char *s
2509 s       |char*  |scan_ident     |char *s|char *send|char *dest \
2510                                 |STRLEN destlen|I32 ck_uni
2511 s       |char*  |scan_inputsymbol|char *start
2512 s       |char*  |scan_pat       |char *start|I32 type
2513 s       |char*  |scan_str       |char *start|int keep_quoted|int keep_delims
2514 s       |char*  |scan_subst     |char *start
2515 s       |char*  |scan_trans     |char *start
2516 s       |char*  |scan_word      |char *s|char *dest|STRLEN destlen \
2517                                 |int allow_package|STRLEN *slp
2518 s       |char*  |skipspace      |char *s
2519 s       |char*  |swallow_bom    |U8 *s
2520 s       |void   |checkcomma     |char *s|char *name|char *what
2521 s       |void   |force_ident    |char *s|int kind
2522 s       |void   |incline        |char *s
2523 s       |int    |intuit_method  |char *s|GV *gv
2524 s       |int    |intuit_more    |char *s
2525 s       |I32    |lop            |I32 f|int x|char *s
2526 s       |void   |missingterm    |char *s
2527 s       |void   |no_op          |char *what|char *s
2528 s       |void   |set_csh
2529 s       |I32    |sublex_done
2530 s       |I32    |sublex_push
2531 s       |I32    |sublex_start
2532 s       |char * |filter_gets    |SV *sv|PerlIO *fp|STRLEN append
2533 s       |HV *   |find_in_my_stash|char *pkgname|I32 len
2534 s       |SV*    |new_constant   |char *s|STRLEN len|const char *key|SV *sv \
2535                                 |SV *pv|const char *type
2536 s       |void   |tokereport     |char *thing|char *s|I32 rv
2537 s       |int    |ao             |int toketype
2538 s       |void   |depcom
2539 s       |char*  |incl_perldb
2540 #if 0
2541 s       |I32    |utf16_textfilter|int idx|SV *sv|int maxlen
2542 s       |I32    |utf16rev_textfilter|int idx|SV *sv|int maxlen
2543 #endif
2544 #  if defined(CRIPPLED_CC)
2545 s       |int    |uni            |I32 f|char *s
2546 #  endif
2547 #  if defined(PERL_CR_FILTER)
2548 s       |I32    |cr_textfilter  |int idx|SV *sv|int maxlen
2549 #  endif
2550 #endif
2551
2552 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
2553 s       |SV*|isa_lookup |HV *stash|const char *name|int len|int level
2554 #endif
2555
2556 #if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
2557 s       |char*  |stdize_locale  |char* locs
2558 s       |SV*    |mess_alloc
2559 #  if defined(LEAKTEST)
2560 s       |void   |xstat          |int
2561 #  endif
2562 #endif
2563
2564 #if defined(PERL_OBJECT)
2565 };
2566 #endif