source: trunk/third/perl/embed.pl @ 17035

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