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