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

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