home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / embed.pl < prev    next >
Perl Script  |  2000-03-18  |  73KB  |  2,495 lines

  1. #!/usr/bin/perl -w
  2.  
  3. require 5.003;    # keep this compatible, an old perl is all we may have before
  4.                 # we build the new one
  5.  
  6. #
  7. # See database of global and static function prototypes at the __END__.
  8. # This is used to generate prototype headers under various configurations,
  9. # export symbols lists for different platforms, and macros to provide an
  10. # implicit interpreter context argument.
  11. #
  12.  
  13. my $END = tell DATA;
  14.  
  15. # walk table providing an array of components in each line to
  16. # subroutine, printing the result
  17. sub walk_table (&@) {
  18.     my $function = shift;
  19.     my $filename = shift || '-';
  20.     my $leader = shift;
  21.     my $trailer = shift;
  22.     my $F;
  23.     local *F;
  24.     if (ref $filename) {    # filehandle
  25.     $F = $filename;
  26.     }
  27.     else {
  28.     open F, ">$filename" or die "Can't open $filename: $!";
  29.     $F = \*F;
  30.     }
  31.     print $F $leader if $leader;
  32.     seek DATA, $END, 0;        # so we may restart
  33.     while (<DATA>) {
  34.     chomp;
  35.     next if /^:/;
  36.     while (s|\\$||) {
  37.         $_ .= <DATA>;
  38.         chomp;
  39.     }
  40.     my @args;
  41.     if (/^\s*(#|$)/) {
  42.         @args = $_;
  43.     }
  44.     else {
  45.         @args = split /\s*\|\s*/, $_;
  46.     }
  47.     print $F $function->(@args);
  48.     }
  49.     print $F $trailer if $trailer;
  50.     close $F unless ref $filename;
  51. }
  52.  
  53. sub munge_c_files () {
  54.     my $functions = {};
  55.     unless (@ARGV) {
  56.         warn "\@ARGV empty, nothing to do\n";
  57.     return;
  58.     }
  59.     walk_table {
  60.     if (@_ > 1) {
  61.         $functions->{$_[2]} = \@_ if $_[@_-1] =~ /\.\.\./;
  62.     }
  63.     } '/dev/null';
  64.     local $^I = '.bak';
  65.     while (<>) {
  66. #    if (/^#\s*include\s+"perl.h"/) {
  67. #        my $file = uc $ARGV;
  68. #        $file =~ s/\./_/g;
  69. #        print "#define PERL_IN_$file\n";
  70. #    }
  71. #    s{^(\w+)\s*\(}
  72. #     {
  73. #        my $f = $1;
  74. #        my $repl = "$f(";
  75. #        if (exists $functions->{$f}) {
  76. #        my $flags = $functions->{$f}[0];
  77. #        $repl = "Perl_$repl" if $flags =~ /p/;
  78. #        unless ($flags =~ /n/) {
  79. #            $repl .= "pTHX";
  80. #            $repl .= "_ " if @{$functions->{$f}} > 3;
  81. #        }
  82. #        warn("$ARGV:$.:$repl\n");
  83. #        }
  84. #        $repl;
  85. #     }e;
  86.     s{(\b(\w+)[ \t]*\([ \t]*(?!aTHX))}
  87.      {
  88.         my $repl = $1;
  89.         my $f = $2;
  90.         if (exists $functions->{$f}) {
  91.         $repl .= "aTHX_ ";
  92.         warn("$ARGV:$.:$`#$repl#$'");
  93.         }
  94.         $repl;
  95.      }eg;
  96.     print;
  97.     close ARGV if eof;    # restart $.
  98.     }
  99.     exit;
  100. }
  101.  
  102. #munge_c_files();
  103.  
  104. # generate proto.h
  105. my $wrote_protected = 0;
  106.  
  107. sub write_protos {
  108.     my $ret = "";
  109.     if (@_ == 1) {
  110.     my $arg = shift;
  111.     $ret .= "$arg\n";
  112.     }
  113.     else {
  114.     my ($flags,$retval,$func,@args) = @_;
  115.     if ($flags =~ /s/) {
  116.         $retval = "STATIC $retval";
  117.         $func = "S_$func";
  118.     }
  119.     else {
  120.         $retval = "PERL_CALLCONV $retval";
  121.         if ($flags =~ /p/) {
  122.         $func = "Perl_$func";
  123.         }
  124.     }
  125.     $ret .= "$retval\t$func(";
  126.     unless ($flags =~ /n/) {
  127.         $ret .= "pTHX";
  128.         $ret .= "_ " if @args;
  129.     }
  130.     if (@args) {
  131.         $ret .= join ", ", @args;
  132.     }
  133.     else {
  134.         $ret .= "void" if $flags =~ /n/;
  135.     }
  136.     $ret .= ")";
  137.     $ret .= " __attribute__((noreturn))" if $flags =~ /r/;
  138.     if( $flags =~ /f/ ) { 
  139.         my $prefix = $flags =~ /n/ ? '' : 'pTHX_';
  140.         my $args = scalar @args; 
  141.         $ret .= "\n#ifdef CHECK_FORMAT\n";
  142.         $ret .= sprintf " __attribute__((format(printf,%s%d,%s%d)))",
  143.                     $prefix, $args - 1, $prefix, $args; 
  144.         $ret .= "\n#endif\n";
  145.     }
  146.     $ret .= ";\n";
  147.     }
  148.     $ret;
  149. }
  150.  
  151. # generates global.sym (API export list), and populates %global with global symbols
  152. sub write_global_sym {
  153.     my $ret = "";
  154.     if (@_ > 1) {
  155.     my ($flags,$retval,$func,@args) = @_;
  156.     if ($flags =~ /A/ && $flags !~ /x/) { # public API, so export
  157.         $func = "Perl_$func" if $flags =~ /p/;
  158.         $ret = "$func\n";
  159.     }
  160.     }
  161.     $ret;
  162. }
  163.  
  164.  
  165. walk_table(\&write_protos, 'proto.h', <<'EOT');
  166. /*
  167.  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
  168.  * This file is autogenerated from data in embed.pl.  Edit that file
  169.  * and run 'make regen_headers' to effect changes.
  170.  */
  171.  
  172. EOT
  173.  
  174. walk_table(\&write_global_sym, 'global.sym', <<'EOT');
  175. #
  176. # !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
  177. # This file is autogenerated from data in embed.pl.  Edit that file
  178. # and run 'make regen_headers' to effect changes.
  179. #
  180.  
  181. EOT
  182.  
  183. # XXX others that may need adding
  184. #       warnhook
  185. #       hints
  186. #       copline
  187. my @extvars = qw(sv_undef sv_yes sv_no na dowarn
  188.                  curcop compiling 
  189.                  tainting tainted stack_base stack_sp sv_arenaroot
  190.          no_modify
  191.                  curstash DBsub DBsingle debstash
  192.                  rsfp 
  193.                  stdingv
  194.          defgv
  195.          errgv
  196.          rsfp_filters
  197.          perldb
  198.          diehook
  199.          dirty
  200.          perl_destruct_level
  201.                 );
  202.  
  203. sub readsyms (\%$) {
  204.     my ($syms, $file) = @_;
  205.     local (*FILE, $_);
  206.     open(FILE, "< $file")
  207.     or die "embed.pl: Can't open $file: $!\n";
  208.     while (<FILE>) {
  209.     s/[ \t]*#.*//;        # Delete comments.
  210.     if (/^\s*(\S+)\s*$/) {
  211.         my $sym = $1;
  212.         warn "duplicate symbol $sym while processing $file\n"
  213.         if exists $$syms{$sym};
  214.         $$syms{$sym} = 1;
  215.     }
  216.     }
  217.     close(FILE);
  218. }
  219.  
  220. # Perl_pp_* and Perl_ck_* are in pp.sym
  221. readsyms my %ppsym, 'pp.sym';
  222.  
  223. sub readvars(\%$$@) {
  224.     my ($syms, $file,$pre,$keep_pre) = @_;
  225.     local (*FILE, $_);
  226.     open(FILE, "< $file")
  227.     or die "embed.pl: Can't open $file: $!\n";
  228.     while (<FILE>) {
  229.     s/[ \t]*#.*//;        # Delete comments.
  230.     if (/PERLVARA?I?C?\($pre(\w+)/) {
  231.         my $sym = $1;
  232.         $sym = $pre . $sym if $keep_pre;
  233.         warn "duplicate symbol $sym while processing $file\n"
  234.         if exists $$syms{$sym};
  235.         $$syms{$sym} = $pre || 1;
  236.     }
  237.     }
  238.     close(FILE);
  239. }
  240.  
  241. my %intrp;
  242. my %thread;
  243.  
  244. readvars %intrp,  'intrpvar.h','I';
  245. readvars %thread, 'thrdvar.h','T';
  246. readvars %globvar, 'perlvars.h','G';
  247.  
  248. foreach my $sym (sort keys %thread) {
  249.   warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym};
  250. }
  251.  
  252. sub undefine ($) {
  253.     my ($sym) = @_;
  254.     "#undef  $sym\n";
  255. }
  256.  
  257. sub hide ($$) {
  258.     my ($from, $to) = @_;
  259.     my $t = int(length($from) / 8);
  260.     "#define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n";
  261. }
  262.  
  263. sub bincompat_var ($$) {
  264.     my ($pfx, $sym) = @_;
  265.     my $arg = ($pfx eq 'G' ? 'NULL' : 'aTHXo');
  266.     undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))");
  267. }
  268.  
  269. sub multon ($$$) {
  270.     my ($sym,$pre,$ptr) = @_;
  271.     hide("PL_$sym", "($ptr$pre$sym)");
  272. }
  273.  
  274. sub multoff ($$) {
  275.     my ($sym,$pre) = @_;
  276.     return hide("PL_$pre$sym", "PL_$sym");
  277. }
  278.  
  279. unlink 'embed.h';
  280. open(EM, '> embed.h') or die "Can't create embed.h: $!\n";
  281.  
  282. print EM <<'END';
  283. /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!! 
  284.    This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
  285.    perlvars.h and thrdvar.h.  Any changes made here will be lost!
  286. */
  287.  
  288. /* (Doing namespace management portably in C is really gross.) */
  289.  
  290. /* NO_EMBED is no longer supported. i.e. EMBED is always active. */
  291.  
  292. /* provide binary compatible (but inconsistent) names */
  293. #if defined(PERL_BINCOMPAT_5005)
  294. #  define  Perl_call_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.  
  333. END
  334.  
  335. walk_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.  
  355. for $sym (sort keys %ppsym) {
  356.     $sym =~ s/^Perl_//;
  357.     print EM hide($sym, "Perl_$sym");
  358. }
  359.  
  360. print EM <<'END';
  361.  
  362. #else    /* PERL_IMPLICIT_CONTEXT */
  363.  
  364. END
  365.  
  366. my @az = ('a'..'z');
  367.  
  368. walk_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.  
  408. for $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.  
  421. print EM <<'END';
  422.  
  423. #endif    /* PERL_IMPLICIT_CONTEXT */
  424. #else    /* PERL_OBJECT */
  425.  
  426. END
  427.  
  428. walk_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.  
  451. for $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.  
  457. print 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.  
  536. END
  537.  
  538. close(EM);
  539.  
  540. unlink 'embedvar.h';
  541. open(EM, '> embedvar.h')
  542.     or die "Can't create embedvar.h: $!\n";
  543.  
  544. print 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.  
  577. END
  578.  
  579. for $sym (sort keys %thread) {
  580.     print EM multon($sym,'T','vTHX->');
  581. }
  582.  
  583. print 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.  
  592. END
  593.  
  594. for $sym (sort keys %intrp) {
  595.     print EM multon($sym,'I','PERL_GET_INTERP->');
  596. }
  597.  
  598. print EM <<'END';
  599.  
  600. #  else        /* !USE_THREADS */
  601. /* cases 2 and 3 above */
  602.  
  603. END
  604.  
  605. for $sym (sort keys %intrp) {
  606.     print EM multon($sym,'I','vTHX->');
  607. }
  608.  
  609. print EM <<'END';
  610.  
  611. #  endif    /* USE_THREADS */
  612.  
  613. #else    /* !MULTIPLICITY */
  614.  
  615. #  if defined(PERL_OBJECT)
  616. /* case 6 above */
  617.  
  618. END
  619.  
  620. for $sym (sort keys %thread) {
  621.     print EM multon($sym,'T','aTHXo->interp.');
  622. }
  623.  
  624.  
  625. for $sym (sort keys %intrp) {
  626.     print EM multon($sym,'I','aTHXo->interp.');
  627. }
  628.  
  629. print EM <<'END';
  630.  
  631. #  else    /* !PERL_OBJECT */
  632.  
  633. /* cases 1 and 4 above */
  634.  
  635. END
  636.  
  637. for $sym (sort keys %intrp) {
  638.     print EM multoff($sym,'I');
  639. }
  640.  
  641. print EM <<'END';
  642.  
  643. #    if defined(USE_THREADS)
  644. /* case 4 above */
  645.  
  646. END
  647.  
  648. for $sym (sort keys %thread) {
  649.     print EM multon($sym,'T','aTHX->');
  650. }
  651.  
  652. print EM <<'END';
  653.  
  654. #    else    /* !USE_THREADS */
  655. /* case 1 above */
  656.  
  657. END
  658.  
  659. for $sym (sort keys %thread) {
  660.     print EM multoff($sym,'T');
  661. }
  662.  
  663. print EM <<'END';
  664.  
  665. #    endif    /* USE_THREADS */
  666. #  endif    /* PERL_OBJECT */
  667. #endif    /* MULTIPLICITY */
  668.  
  669. #if defined(PERL_GLOBAL_STRUCT)
  670.  
  671. END
  672.  
  673. for $sym (sort keys %globvar) {
  674.     print EM multon($sym,'G','PL_Vars.');
  675. }
  676.  
  677. print EM <<'END';
  678.  
  679. #else /* !PERL_GLOBAL_STRUCT */
  680.  
  681. END
  682.  
  683. for $sym (sort keys %globvar) {
  684.     print EM multoff($sym,'G');
  685. }
  686.  
  687. print EM <<'END';
  688.  
  689. #endif /* PERL_GLOBAL_STRUCT */
  690.  
  691. #ifdef PERL_POLLUTE        /* disabled by default in 5.6.0 */
  692.  
  693. END
  694.  
  695. for $sym (sort @extvars) {
  696.     print EM hide($sym,"PL_$sym");
  697. }
  698.  
  699. print EM <<'END';
  700.  
  701. #endif /* PERL_POLLUTE */
  702. END
  703.  
  704. close(EM);
  705.  
  706. unlink 'objXSUB.h';
  707. open(OBX, '> objXSUB.h')
  708.     or die "Can't create objXSUB.h: $!\n";
  709.  
  710. print 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.  
  725. EOT
  726.  
  727. walk_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.  
  755. print OBX <<'EOT';
  756.  
  757. #endif  /* PERL_CORE && PERL_OBJECT */
  758. #endif    /* __objXSUB_h__ */
  759. EOT
  760.  
  761. close(OBX);
  762.  
  763. unlink 'perlapi.h';
  764. unlink 'perlapi.c';
  765. open(CAPI, '> perlapi.c') or die "Can't create perlapi.c: $!\n";
  766. open(CAPIH, '> perlapi.h') or die "Can't create perlapi.h: $!\n";
  767.  
  768. print 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.  
  787. START_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.  
  808. END_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.  
  819. START_EXTERN_C
  820.  
  821. #ifndef DOINIT
  822. EXT void *PL_force_link_funcs[];
  823. #else
  824. EXT 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.  
  845. START_EXTERN_C
  846.  
  847. #endif    /* PERL_NO_FORCE_LINK */
  848.  
  849. #else    /* !PERL_CORE */
  850.  
  851. EOT
  852.  
  853. foreach my $sym (sort keys %intrp) {
  854.     print CAPIH bincompat_var('I',$sym);
  855. }
  856.  
  857. foreach my $sym (sort keys %thread) {
  858.     print CAPIH bincompat_var('T',$sym);
  859. }
  860.  
  861. foreach my $sym (sort keys %globvar) {
  862.     print CAPIH bincompat_var('G',$sym);
  863. }
  864.  
  865. print CAPIH <<'EOT';
  866.  
  867. #endif /* !PERL_CORE */
  868. #endif /* PERL_OBJECT || MULTIPLICITY */
  869.  
  870. #endif /* __perlapi_h__ */
  871.  
  872. EOT
  873. close CAPIH;
  874.  
  875. print 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) */
  888. START_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.  
  930. EOT
  931.  
  932. # functions that take va_list* for implementing vararg functions
  933. # NOTE: makedef.pl must be updated if you add symbols to %vfuncs
  934. my %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.  
  952. sub 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. }
  990. EOT
  991.     }
  992.     else {
  993.     $emitval .= <<EOT
  994. $rettype
  995. $func($ctxarg@args)
  996. {
  997. $decl    $return((CPerlObj*)pPerl)->$func(@aargs);
  998. }
  999. EOT
  1000.     }
  1001.     $emitval;
  1002. }
  1003.  
  1004. # XXXX temporary hack
  1005. my $sym;
  1006. for $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.  
  1017. walk_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.  
  1055. print CAPI <<'EOT';
  1056.  
  1057. #undef Perl_fprintf_nocontext
  1058. int
  1059. Perl_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.  
  1067. END_EXTERN_C
  1068.  
  1069. #endif /* PERL_OBJECT */
  1070. #endif /* PERL_OBJECT || MULTIPLICITY */
  1071. EOT
  1072.  
  1073. close(CAPI);
  1074.  
  1075. # autogenerate documentation from comments in source files
  1076.  
  1077. my %apidocs;
  1078. my %gutsdocs;
  1079. my %docfuncs;
  1080.  
  1081. sub autodoc ($) { # parse a file and extract documentation info
  1082.     my($fh) = @_;
  1083.     my($in, $doc);
  1084.  
  1085. FUNC:
  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 = "";
  1092. DOC:
  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.  
  1117. sub 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.  
  1139. my $file;
  1140. for $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.  
  1146. unlink "pod/perlapi.pod";
  1147. open (DOC, ">pod/perlapi.pod") or 
  1148.     die "Can't create pod/perlapi.pod: $!\n";
  1149.  
  1150. walk_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.  
  1168. for (sort keys %docfuncs) {
  1169.     warn "Unable to place $_!\n";
  1170. }
  1171.  
  1172. print DOC <<'_EOB_';
  1173. =head1 NAME
  1174.  
  1175. perlapi - autogenerated documentation for the perl public API
  1176.  
  1177. =head1 DESCRIPTION
  1178.  
  1179. This file contains the documentation of the perl public API generated by 
  1180. embed.pl, specifically a listing of functions, macros, flags, and variables 
  1181. that may be used by extension writers.  The interfaces of any functions that 
  1182. are not listed here are subject to change without notice.  For this reason,
  1183. blindly using functions listed in proto.h is to be avoided when writing
  1184. extensions.
  1185.  
  1186. Note that all Perl API global variables must be referenced with the C<PL_>
  1187. prefix.  Some macros are provided for compatibility with the older,
  1188. unadorned names, but this support may be disabled in a future release.
  1189.  
  1190. The listing is alphabetical, case insensitive.
  1191.  
  1192. =over 8
  1193.  
  1194. _EOB_
  1195.  
  1196. my $key;
  1197. for $key (sort { uc($a) cmp uc($b); } keys %apidocs) { # case insensitive sort
  1198.     docout(\*DOC, $key, $apidocs{$key});
  1199. }
  1200.  
  1201. print DOC <<'_EOE_';
  1202. =back
  1203.  
  1204. =head1 AUTHORS
  1205.  
  1206. Until May 1997, this document was maintained by Jeff Okamoto
  1207. <okamoto@corp.hp.com>.  It is now maintained as part of Perl itself.
  1208.  
  1209. With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
  1210. Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
  1211. Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
  1212. Stephen McCamant, and Gurusamy Sarathy.
  1213.  
  1214. API Listing originally by Dean Roehrich <roehrich@cray.com>.
  1215.  
  1216. Updated to be autogenerated from comments in the source by Benjamin Stuhl.
  1217.  
  1218. =head1 SEE ALSO
  1219.  
  1220. perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
  1221.  
  1222. _EOE_
  1223.  
  1224.  
  1225. close(DOC);
  1226.  
  1227. open(GUTS, ">pod/perlintern.pod") or 
  1228.         die "Unable to create pod/perlintern.pod: $!\n";
  1229. print GUTS <<'END';
  1230. =head1 NAME
  1231.  
  1232. perlintern - autogenerated documentation of purely B<internal> 
  1233.          Perl functions
  1234.  
  1235. =head1 DESCRIPTION
  1236.  
  1237. This file is the autogenerated documentation of functions in the 
  1238. Perl intrepreter that are documented using Perl's internal documentation
  1239. format but are not marked as part of the Perl API. In other words, 
  1240. B<they are not for use in extensions>!
  1241.  
  1242. =over 8
  1243.  
  1244. END
  1245.  
  1246. for $key (sort { uc($a) cmp uc($b); } keys %gutsdocs) {
  1247.     docout(\*GUTS, $key, $gutsdocs{$key});
  1248. }
  1249.  
  1250. print GUTS <<'END';
  1251. =back
  1252.  
  1253. =head1 AUTHORS
  1254.  
  1255. The autodocumentation system was orignally added to the Perl core by 
  1256. Benjamin Stuhl. Documentation is by whoever was kind enough to 
  1257. document their functions.
  1258.  
  1259. =head1 SEE ALSO
  1260.  
  1261. perlguts(1), perlapi(1)
  1262.  
  1263. END
  1264.  
  1265. close 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.  
  1294. START_EXTERN_C
  1295.  
  1296. #if defined(PERL_IMPLICIT_SYS)
  1297. Ajno    |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
  1304. Ajnod    |PerlInterpreter*    |perl_alloc
  1305. Ajnod    |void    |perl_construct    |PerlInterpreter* interp
  1306. Ajnod    |void    |perl_destruct    |PerlInterpreter* interp
  1307. Ajnod    |void    |perl_free    |PerlInterpreter* interp
  1308. Ajnod    |int    |perl_run    |PerlInterpreter* interp
  1309. Ajnod    |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
  1313. Ajno    |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags
  1314. #  if defined(PERL_IMPLICIT_SYS)
  1315. Ajno    |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)
  1325. Ajnop    |Malloc_t|malloc    |MEM_SIZE nbytes
  1326. Ajnop    |Malloc_t|calloc    |MEM_SIZE elements|MEM_SIZE size
  1327. Ajnop    |Malloc_t|realloc    |Malloc_t where|MEM_SIZE nbytes
  1328. Ajnop    |Free_t    |mfree        |Malloc_t where
  1329. jnp    |MEM_SIZE|malloced_size    |void *p
  1330. #endif
  1331.  
  1332. Ajnp    |void*    |get_context
  1333. Ajnp    |void    |set_context    |void *thx
  1334.  
  1335. END_EXTERN_C
  1336.  
  1337. /* functions with flag 'n' should come before here */
  1338. #if defined(PERL_OBJECT)
  1339. class CPerlObj {
  1340. public:
  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)
  1351. public:
  1352. #else
  1353. START_EXTERN_C
  1354. #endif
  1355. #  include "pp_proto.h"
  1356. Ap    |SV*    |amagic_call    |SV* left|SV* right|int method|int dir
  1357. Ap    |bool    |Gv_AMupdate    |HV* stash
  1358. p    |OP*    |append_elem    |I32 optype|OP* head|OP* tail
  1359. p    |OP*    |append_list    |I32 optype|LISTOP* first|LISTOP* last
  1360. p    |I32    |apply        |I32 type|SV** mark|SV** sp
  1361. Ap    |SV*    |avhv_delete_ent|AV *ar|SV* keysv|I32 flags|U32 hash
  1362. Ap    |bool    |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
  1363. Ap    |SV**    |avhv_fetch_ent    |AV *ar|SV* keysv|I32 lval|U32 hash
  1364. Ap    |SV**    |avhv_store_ent    |AV *ar|SV* keysv|SV* val|U32 hash
  1365. Ap    |HE*    |avhv_iternext    |AV *ar
  1366. Ap    |SV*    |avhv_iterval    |AV *ar|HE* entry
  1367. Ap    |HV*    |avhv_keys    |AV *ar
  1368. Apd    |void    |av_clear    |AV* ar
  1369. Ap    |SV*    |av_delete    |AV* ar|I32 key|I32 flags
  1370. Ap    |bool    |av_exists    |AV* ar|I32 key
  1371. Apd    |void    |av_extend    |AV* ar|I32 key
  1372. Ap    |AV*    |av_fake    |I32 size|SV** svp
  1373. Apd    |SV**    |av_fetch    |AV* ar|I32 key|I32 lval
  1374. Ap    |void    |av_fill    |AV* ar|I32 fill
  1375. Apd    |I32    |av_len        |AV* ar
  1376. Apd    |AV*    |av_make    |I32 size|SV** svp
  1377. Apd    |SV*    |av_pop        |AV* ar
  1378. Apd    |void    |av_push    |AV* ar|SV* val
  1379. Ap    |void    |av_reify    |AV* ar
  1380. Apd    |SV*    |av_shift    |AV* ar
  1381. Apd    |SV**    |av_store    |AV* ar|I32 key|SV* val
  1382. Apd    |void    |av_undef    |AV* ar
  1383. Apd    |void    |av_unshift    |AV* ar|I32 num
  1384. p    |OP*    |bind_match    |I32 type|OP* left|OP* pat
  1385. p    |OP*    |block_end    |I32 floor|OP* seq
  1386. Ap    |I32    |block_gimme
  1387. p    |int    |block_start    |int full
  1388. p    |void    |boot_core_UNIVERSAL
  1389. Ap    |void    |call_list    |I32 oldscope|AV* av_list
  1390. p    |bool    |cando        |Mode_t mode|Uid_t effective|Stat_t* statbufp
  1391. Ap    |U32    |cast_ulong    |NV f
  1392. Ap    |I32    |cast_i32    |NV f
  1393. Ap    |IV    |cast_iv    |NV f
  1394. Ap    |UV    |cast_uv    |NV f
  1395. #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
  1396. Ap    |I32    |my_chsize    |int fd|Off_t length
  1397. #endif
  1398. #if defined(USE_THREADS)
  1399. Ap    |MAGIC*    |condpair_magic    |SV *sv
  1400. #endif
  1401. p    |OP*    |convert    |I32 optype|I32 flags|OP* o
  1402. Afprd    |void    |croak        |const char* pat|...
  1403. Apr    |void    |vcroak        |const char* pat|va_list* args
  1404. #if defined(PERL_IMPLICIT_CONTEXT)
  1405. Afnrp    |void    |croak_nocontext|const char* pat|...
  1406. Afnp    |OP*    |die_nocontext    |const char* pat|...
  1407. Afnp    |void    |deb_nocontext    |const char* pat|...
  1408. Afnp    |char*    |form_nocontext    |const char* pat|...
  1409. Afnp    |void    |load_module_nocontext|U32 flags|SV* name|SV* ver|...
  1410. Afnp    |SV*    |mess_nocontext    |const char* pat|...
  1411. Afnp    |void    |warn_nocontext    |const char* pat|...
  1412. Afnp    |void    |warner_nocontext|U32 err|const char* pat|...
  1413. Afnp    |SV*    |newSVpvf_nocontext|const char* pat|...
  1414. Afnp    |void    |sv_catpvf_nocontext|SV* sv|const char* pat|...
  1415. Afnp    |void    |sv_setpvf_nocontext|SV* sv|const char* pat|...
  1416. Afnp    |void    |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
  1417. Afnp    |void    |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
  1418. Afnp    |int    |fprintf_nocontext|PerlIO* stream|const char* fmt|...
  1419. #endif
  1420. p    |void    |cv_ckproto    |CV* cv|GV* gv|char* p
  1421. p    |CV*    |cv_clone    |CV* proto
  1422. Ap    |SV*    |cv_const_sv    |CV* cv
  1423. p    |SV*    |op_const_sv    |OP* o|CV* cv
  1424. Ap    |void    |cv_undef    |CV* cv
  1425. Ap    |void    |cx_dump    |PERL_CONTEXT* cs
  1426. Ap    |SV*    |filter_add    |filter_t funcp|SV* datasv
  1427. Ap    |void    |filter_del    |filter_t funcp
  1428. Ap    |I32    |filter_read    |int idx|SV* buffer|int maxlen
  1429. Ap    |char**    |get_op_descs
  1430. Ap    |char**    |get_op_names
  1431. p    |char*    |get_no_modify
  1432. p    |U32*    |get_opargs
  1433. Ap    |PPADDR_t*|get_ppaddr
  1434. p    |I32    |cxinc
  1435. Afp    |void    |deb        |const char* pat|...
  1436. Ap    |void    |vdeb        |const char* pat|va_list* args
  1437. Ap    |void    |debprofdump
  1438. Ap    |I32    |debop        |OP* o
  1439. Ap    |I32    |debstack
  1440. Ap    |I32    |debstackptrs
  1441. Ap    |char*    |delimcpy    |char* to|char* toend|char* from \
  1442.                 |char* fromend|int delim|I32* retlen
  1443. p    |void    |deprecate    |char* s
  1444. Afp    |OP*    |die        |const char* pat|...
  1445. p    |OP*    |vdie        |const char* pat|va_list* args
  1446. p    |OP*    |die_where    |char* message|STRLEN msglen
  1447. Ap    |void    |dounwind    |I32 cxix
  1448. p    |bool    |do_aexec    |SV* really|SV** mark|SV** sp
  1449. p    |bool    |do_aexec5    |SV* really|SV** mark|SV** sp|int fd|int flag
  1450. Ap    |int    |do_binmode    |PerlIO *fp|int iotype|int flag
  1451. p    |void    |do_chop    |SV* asv|SV* sv
  1452. Ap    |bool    |do_close    |GV* gv|bool not_implicit
  1453. p    |bool    |do_eof        |GV* gv
  1454. p    |bool    |do_exec    |char* cmd
  1455. #if !defined(WIN32)
  1456. p    |bool    |do_exec3    |char* cmd|int fd|int flag
  1457. #endif
  1458. p    |void    |do_execfree
  1459. #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
  1460. p    |I32    |do_ipcctl    |I32 optype|SV** mark|SV** sp
  1461. p    |I32    |do_ipcget    |I32 optype|SV** mark|SV** sp
  1462. p    |I32    |do_msgrcv    |SV** mark|SV** sp
  1463. p    |I32    |do_msgsnd    |SV** mark|SV** sp
  1464. p    |I32    |do_semop    |SV** mark|SV** sp
  1465. p    |I32    |do_shmio    |I32 optype|SV** mark|SV** sp
  1466. #endif
  1467. p    |void    |do_join    |SV* sv|SV* del|SV** mark|SV** sp
  1468. p    |OP*    |do_kv
  1469. Ap    |bool    |do_open    |GV* gv|char* name|I32 len|int as_raw \
  1470.                 |int rawmode|int rawperm|PerlIO* supplied_fp
  1471. Ap    |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
  1474. p    |void    |do_pipe    |SV* sv|GV* rgv|GV* wgv
  1475. p    |bool    |do_print    |SV* sv|PerlIO* fp
  1476. p    |OP*    |do_readline
  1477. p    |I32    |do_chomp    |SV* sv
  1478. p    |bool    |do_seek    |GV* gv|Off_t pos|int whence
  1479. p    |void    |do_sprintf    |SV* sv|I32 len|SV** sarg
  1480. p    |Off_t    |do_sysseek    |GV* gv|Off_t pos|int whence
  1481. p    |Off_t    |do_tell    |GV* gv
  1482. p    |I32    |do_trans    |SV* sv
  1483. p    |UV    |do_vecget    |SV* sv|I32 offset|I32 size
  1484. p    |void    |do_vecset    |SV* sv
  1485. p    |void    |do_vop        |I32 optype|SV* sv|SV* left|SV* right
  1486. p    |OP*    |dofile        |OP* term
  1487. Ap    |I32    |dowantarray
  1488. Ap    |void    |dump_all
  1489. Ap    |void    |dump_eval
  1490. #if defined(DUMP_FDS)
  1491. Ap    |void    |dump_fds    |char* s
  1492. #endif
  1493. Ap    |void    |dump_form    |GV* gv
  1494. Ap    |void    |gv_dump    |GV* gv
  1495. Ap    |void    |op_dump    |OP* arg
  1496. Ap    |void    |pmop_dump    |PMOP* pm
  1497. Ap    |void    |dump_packsubs    |HV* stash
  1498. Ap    |void    |dump_sub    |GV* gv
  1499. Apd    |void    |fbm_compile    |SV* sv|U32 flags
  1500. Apd    |char*    |fbm_instr    |unsigned char* big|unsigned char* bigend \
  1501.                 |SV* littlesv|U32 flags
  1502. p    |char*    |find_script    |char *scriptname|bool dosearch \
  1503.                 |char **search_ext|I32 flags
  1504. #if defined(USE_THREADS)
  1505. p    |PADOFFSET|find_threadsv|const char *name
  1506. #endif
  1507. p    |OP*    |force_list    |OP* arg
  1508. p    |OP*    |fold_constants    |OP* arg
  1509. Afp    |char*    |form        |const char* pat|...
  1510. Ap    |char*    |vform        |const char* pat|va_list* args
  1511. Ap    |void    |free_tmps
  1512. p    |OP*    |gen_constant_list|OP* o
  1513. #if !defined(HAS_GETENV_LEN)
  1514. p    |char*    |getenv_len    |char* key|unsigned long *len
  1515. #endif
  1516. Ap    |void    |gp_free    |GV* gv
  1517. Ap    |GP*    |gp_ref        |GP* gp
  1518. Ap    |GV*    |gv_AVadd    |GV* gv
  1519. Ap    |GV*    |gv_HVadd    |GV* gv
  1520. Ap    |GV*    |gv_IOadd    |GV* gv
  1521. Ap    |GV*    |gv_autoload4    |HV* stash|const char* name|STRLEN len \
  1522.                 |I32 method
  1523. Ap    |void    |gv_check    |HV* stash
  1524. Ap    |void    |gv_efullname    |SV* sv|GV* gv
  1525. Ap    |void    |gv_efullname3    |SV* sv|GV* gv|const char* prefix
  1526. Ap    |GV*    |gv_fetchfile    |const char* name
  1527. Apd    |GV*    |gv_fetchmeth    |HV* stash|const char* name|STRLEN len \
  1528.                 |I32 level
  1529. Apd    |GV*    |gv_fetchmethod    |HV* stash|const char* name
  1530. Apd    |GV*    |gv_fetchmethod_autoload|HV* stash|const char* name \
  1531.                 |I32 autoload
  1532. Ap    |GV*    |gv_fetchpv    |const char* name|I32 add|I32 sv_type
  1533. Ap    |void    |gv_fullname    |SV* sv|GV* gv
  1534. Ap    |void    |gv_fullname3    |SV* sv|GV* gv|const char* prefix
  1535. Ap    |void    |gv_init    |GV* gv|HV* stash|const char* name \
  1536.                 |STRLEN len|int multi
  1537. Apd    |HV*    |gv_stashpv    |const char* name|I32 create
  1538. Ap    |HV*    |gv_stashpvn    |const char* name|U32 namelen|I32 create
  1539. Apd    |HV*    |gv_stashsv    |SV* sv|I32 create
  1540. Apd    |void    |hv_clear    |HV* tb
  1541. Ap    |void    |hv_delayfree_ent|HV* hv|HE* entry
  1542. Apd    |SV*    |hv_delete    |HV* tb|const char* key|U32 klen|I32 flags
  1543. Apd    |SV*    |hv_delete_ent    |HV* tb|SV* key|I32 flags|U32 hash
  1544. Apd    |bool    |hv_exists    |HV* tb|const char* key|U32 klen
  1545. Apd    |bool    |hv_exists_ent    |HV* tb|SV* key|U32 hash
  1546. Apd    |SV**    |hv_fetch    |HV* tb|const char* key|U32 klen|I32 lval
  1547. Apd    |HE*    |hv_fetch_ent    |HV* tb|SV* key|I32 lval|U32 hash
  1548. Ap    |void    |hv_free_ent    |HV* hv|HE* entry
  1549. Apd    |I32    |hv_iterinit    |HV* tb
  1550. Apd    |char*    |hv_iterkey    |HE* entry|I32* retlen
  1551. Apd    |SV*    |hv_iterkeysv    |HE* entry
  1552. Apd    |HE*    |hv_iternext    |HV* tb
  1553. Apd    |SV*    |hv_iternextsv    |HV* hv|char** key|I32* retlen
  1554. Apd    |SV*    |hv_iterval    |HV* tb|HE* entry
  1555. Ap    |void    |hv_ksplit    |HV* hv|IV newmax
  1556. Apd    |void    |hv_magic    |HV* hv|GV* gv|int how
  1557. Apd    |SV**    |hv_store    |HV* tb|const char* key|U32 klen|SV* val \
  1558.                 |U32 hash
  1559. Apd    |HE*    |hv_store_ent    |HV* tb|SV* key|SV* val|U32 hash
  1560. Apd    |void    |hv_undef    |HV* tb
  1561. Ap    |I32    |ibcmp        |const char* a|const char* b|I32 len
  1562. Ap    |I32    |ibcmp_locale    |const char* a|const char* b|I32 len
  1563. p    |bool    |ingroup    |Gid_t testgid|Uid_t effective
  1564. p    |void    |init_debugger
  1565. Ap    |void    |init_stacks
  1566. p    |U32    |intro_my
  1567. Ap    |char*    |instr        |const char* big|const char* little
  1568. p    |bool    |io_close    |IO* io|bool not_implicit
  1569. p    |OP*    |invert        |OP* cmd
  1570. Ap    |bool    |is_uni_alnum    |U32 c
  1571. Ap    |bool    |is_uni_alnumc    |U32 c
  1572. Ap    |bool    |is_uni_idfirst    |U32 c
  1573. Ap    |bool    |is_uni_alpha    |U32 c
  1574. Ap    |bool    |is_uni_ascii    |U32 c
  1575. Ap    |bool    |is_uni_space    |U32 c
  1576. Ap    |bool    |is_uni_cntrl    |U32 c
  1577. Ap    |bool    |is_uni_graph    |U32 c
  1578. Ap    |bool    |is_uni_digit    |U32 c
  1579. Ap    |bool    |is_uni_upper    |U32 c
  1580. Ap    |bool    |is_uni_lower    |U32 c
  1581. Ap    |bool    |is_uni_print    |U32 c
  1582. Ap    |bool    |is_uni_punct    |U32 c
  1583. Ap    |bool    |is_uni_xdigit    |U32 c
  1584. Ap    |U32    |to_uni_upper    |U32 c
  1585. Ap    |U32    |to_uni_title    |U32 c
  1586. Ap    |U32    |to_uni_lower    |U32 c
  1587. Ap    |bool    |is_uni_alnum_lc|U32 c
  1588. Ap    |bool    |is_uni_alnumc_lc|U32 c
  1589. Ap    |bool    |is_uni_idfirst_lc|U32 c
  1590. Ap    |bool    |is_uni_alpha_lc|U32 c
  1591. Ap    |bool    |is_uni_ascii_lc|U32 c
  1592. Ap    |bool    |is_uni_space_lc|U32 c
  1593. Ap    |bool    |is_uni_cntrl_lc|U32 c
  1594. Ap    |bool    |is_uni_graph_lc|U32 c
  1595. Ap    |bool    |is_uni_digit_lc|U32 c
  1596. Ap    |bool    |is_uni_upper_lc|U32 c
  1597. Ap    |bool    |is_uni_lower_lc|U32 c
  1598. Ap    |bool    |is_uni_print_lc|U32 c
  1599. Ap    |bool    |is_uni_punct_lc|U32 c
  1600. Ap    |bool    |is_uni_xdigit_lc|U32 c
  1601. Ap    |U32    |to_uni_upper_lc|U32 c
  1602. Ap    |U32    |to_uni_title_lc|U32 c
  1603. Ap    |U32    |to_uni_lower_lc|U32 c
  1604. Ap    |int    |is_utf8_char    |U8 *p
  1605. Ap    |bool    |is_utf8_alnum    |U8 *p
  1606. Ap    |bool    |is_utf8_alnumc    |U8 *p
  1607. Ap    |bool    |is_utf8_idfirst|U8 *p
  1608. Ap    |bool    |is_utf8_alpha    |U8 *p
  1609. Ap    |bool    |is_utf8_ascii    |U8 *p
  1610. Ap    |bool    |is_utf8_space    |U8 *p
  1611. Ap    |bool    |is_utf8_cntrl    |U8 *p
  1612. Ap    |bool    |is_utf8_digit    |U8 *p
  1613. Ap    |bool    |is_utf8_graph    |U8 *p
  1614. Ap    |bool    |is_utf8_upper    |U8 *p
  1615. Ap    |bool    |is_utf8_lower    |U8 *p
  1616. Ap    |bool    |is_utf8_print    |U8 *p
  1617. Ap    |bool    |is_utf8_punct    |U8 *p
  1618. Ap    |bool    |is_utf8_xdigit    |U8 *p
  1619. Ap    |bool    |is_utf8_mark    |U8 *p
  1620. p    |OP*    |jmaybe        |OP* arg
  1621. p    |I32    |keyword    |char* d|I32 len
  1622. Ap    |void    |leave_scope    |I32 base
  1623. p    |void    |lex_end
  1624. p    |void    |lex_start    |SV* line
  1625. p    |OP*    |linklist    |OP* o
  1626. p    |OP*    |list        |OP* o
  1627. p    |OP*    |listkids    |OP* o
  1628. Afp    |void    |load_module|U32 flags|SV* name|SV* ver|...
  1629. Ap    |void    |vload_module|U32 flags|SV* name|SV* ver|va_list* args
  1630. p    |OP*    |localize    |OP* arg|I32 lexical
  1631. Apd    |I32    |looks_like_number|SV* sv
  1632. p    |int    |magic_clearenv    |SV* sv|MAGIC* mg
  1633. p    |int    |magic_clear_all_env|SV* sv|MAGIC* mg
  1634. p    |int    |magic_clearpack|SV* sv|MAGIC* mg
  1635. p    |int    |magic_clearsig    |SV* sv|MAGIC* mg
  1636. p    |int    |magic_existspack|SV* sv|MAGIC* mg
  1637. p    |int    |magic_freeregexp|SV* sv|MAGIC* mg
  1638. p    |int    |magic_get    |SV* sv|MAGIC* mg
  1639. p    |int    |magic_getarylen|SV* sv|MAGIC* mg
  1640. p    |int    |magic_getdefelem|SV* sv|MAGIC* mg
  1641. p    |int    |magic_getglob    |SV* sv|MAGIC* mg
  1642. p    |int    |magic_getnkeys    |SV* sv|MAGIC* mg
  1643. p    |int    |magic_getpack    |SV* sv|MAGIC* mg
  1644. p    |int    |magic_getpos    |SV* sv|MAGIC* mg
  1645. p    |int    |magic_getsig    |SV* sv|MAGIC* mg
  1646. p    |int    |magic_getsubstr|SV* sv|MAGIC* mg
  1647. p    |int    |magic_gettaint    |SV* sv|MAGIC* mg
  1648. p    |int    |magic_getuvar    |SV* sv|MAGIC* mg
  1649. p    |int    |magic_getvec    |SV* sv|MAGIC* mg
  1650. p    |U32    |magic_len    |SV* sv|MAGIC* mg
  1651. #if defined(USE_THREADS)
  1652. p    |int    |magic_mutexfree|SV* sv|MAGIC* mg
  1653. #endif
  1654. p    |int    |magic_nextpack    |SV* sv|MAGIC* mg|SV* key
  1655. p    |U32    |magic_regdata_cnt|SV* sv|MAGIC* mg
  1656. p    |int    |magic_regdatum_get|SV* sv|MAGIC* mg
  1657. p    |int    |magic_set    |SV* sv|MAGIC* mg
  1658. p    |int    |magic_setamagic|SV* sv|MAGIC* mg
  1659. p    |int    |magic_setarylen|SV* sv|MAGIC* mg
  1660. p    |int    |magic_setbm    |SV* sv|MAGIC* mg
  1661. p    |int    |magic_setdbline|SV* sv|MAGIC* mg
  1662. #if defined(USE_LOCALE_COLLATE)
  1663. p    |int    |magic_setcollxfrm|SV* sv|MAGIC* mg
  1664. #endif
  1665. p    |int    |magic_setdefelem|SV* sv|MAGIC* mg
  1666. p    |int    |magic_setenv    |SV* sv|MAGIC* mg
  1667. p    |int    |magic_setfm    |SV* sv|MAGIC* mg
  1668. p    |int    |magic_setisa    |SV* sv|MAGIC* mg
  1669. p    |int    |magic_setglob    |SV* sv|MAGIC* mg
  1670. p    |int    |magic_setmglob    |SV* sv|MAGIC* mg
  1671. p    |int    |magic_setnkeys    |SV* sv|MAGIC* mg
  1672. p    |int    |magic_setpack    |SV* sv|MAGIC* mg
  1673. p    |int    |magic_setpos    |SV* sv|MAGIC* mg
  1674. p    |int    |magic_setsig    |SV* sv|MAGIC* mg
  1675. p    |int    |magic_setsubstr|SV* sv|MAGIC* mg
  1676. p    |int    |magic_settaint    |SV* sv|MAGIC* mg
  1677. p    |int    |magic_setuvar    |SV* sv|MAGIC* mg
  1678. p    |int    |magic_setvec    |SV* sv|MAGIC* mg
  1679. p    |int    |magic_set_all_env|SV* sv|MAGIC* mg
  1680. p    |U32    |magic_sizepack    |SV* sv|MAGIC* mg
  1681. p    |int    |magic_wipepack    |SV* sv|MAGIC* mg
  1682. p    |void    |magicname    |char* sym|char* name|I32 namlen
  1683. Ap    |void    |markstack_grow
  1684. #if defined(USE_LOCALE_COLLATE)
  1685. p    |char*    |mem_collxfrm    |const char* s|STRLEN len|STRLEN* xlen
  1686. #endif
  1687. Afp    |SV*    |mess        |const char* pat|...
  1688. Ap    |SV*    |vmess        |const char* pat|va_list* args
  1689. p    |void    |qerror        |SV* err
  1690. Apd    |int    |mg_clear    |SV* sv
  1691. Apd    |int    |mg_copy    |SV* sv|SV* nsv|const char* key|I32 klen
  1692. Apd    |MAGIC*    |mg_find    |SV* sv|int type
  1693. Apd    |int    |mg_free    |SV* sv
  1694. Apd    |int    |mg_get        |SV* sv
  1695. Apd    |U32    |mg_length    |SV* sv
  1696. Apd    |void    |mg_magical    |SV* sv
  1697. Apd    |int    |mg_set        |SV* sv
  1698. Ap    |I32    |mg_size    |SV* sv
  1699. p    |OP*    |mod        |OP* o|I32 type
  1700. p    |int    |mode_from_discipline|SV* discp
  1701. Ap    |char*    |moreswitches    |char* s
  1702. p    |OP*    |my        |OP* o
  1703. Ap    |NV    |my_atof    |const char *s
  1704. #if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
  1705. Anp    |char*    |my_bcopy    |const char* from|char* to|I32 len
  1706. #endif
  1707. #if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
  1708. Anp    |char*    |my_bzero    |char* loc|I32 len
  1709. #endif
  1710. Apr    |void    |my_exit    |U32 status
  1711. Apr    |void    |my_failure_exit
  1712. Ap    |I32    |my_fflush_all
  1713. Ap    |I32    |my_lstat
  1714. #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
  1715. Anp    |I32    |my_memcmp    |const char* s1|const char* s2|I32 len
  1716. #endif
  1717. #if !defined(HAS_MEMSET)
  1718. Anp    |void*    |my_memset    |char* loc|I32 ch|I32 len
  1719. #endif
  1720. #if !defined(PERL_OBJECT)
  1721. Ap    |I32    |my_pclose    |PerlIO* ptr
  1722. Ap    |PerlIO*|my_popen    |char* cmd|char* mode
  1723. #endif
  1724. Ap    |void    |my_setenv    |char* nam|char* val
  1725. Ap    |I32    |my_stat
  1726. #if defined(MYSWAP)
  1727. Ap    |short    |my_swap    |short s
  1728. Ap    |long    |my_htonl    |long l
  1729. Ap    |long    |my_ntohl    |long l
  1730. #endif
  1731. p    |void    |my_unexec
  1732. Ap    |OP*    |newANONLIST    |OP* o
  1733. Ap    |OP*    |newANONHASH    |OP* o
  1734. Ap    |OP*    |newANONSUB    |I32 floor|OP* proto|OP* block
  1735. Ap    |OP*    |newASSIGNOP    |I32 flags|OP* left|I32 optype|OP* right
  1736. Ap    |OP*    |newCONDOP    |I32 flags|OP* expr|OP* trueop|OP* falseop
  1737. Apd    |void    |newCONSTSUB    |HV* stash|char* name|SV* sv
  1738. Ap    |void    |newFORM    |I32 floor|OP* o|OP* block
  1739. Ap    |OP*    |newFOROP    |I32 flags|char* label|line_t forline \
  1740.                 |OP* sclr|OP* expr|OP*block|OP*cont
  1741. Ap    |OP*    |newLOGOP    |I32 optype|I32 flags|OP* left|OP* right
  1742. Ap    |OP*    |newLOOPEX    |I32 type|OP* label
  1743. Ap    |OP*    |newLOOPOP    |I32 flags|I32 debuggable|OP* expr|OP* block
  1744. Ap    |OP*    |newNULLLIST
  1745. Ap    |OP*    |newOP        |I32 optype|I32 flags
  1746. Ap    |void    |newPROG    |OP* o
  1747. Ap    |OP*    |newRANGE    |I32 flags|OP* left|OP* right
  1748. Ap    |OP*    |newSLICEOP    |I32 flags|OP* subscript|OP* listop
  1749. Ap    |OP*    |newSTATEOP    |I32 flags|char* label|OP* o
  1750. Ap    |CV*    |newSUB        |I32 floor|OP* o|OP* proto|OP* block
  1751. Apd    |CV*    |newXS        |char* name|XSUBADDR_t f|char* filename
  1752. Apd    |AV*    |newAV
  1753. Ap    |OP*    |newAVREF    |OP* o
  1754. Ap    |OP*    |newBINOP    |I32 type|I32 flags|OP* first|OP* last
  1755. Ap    |OP*    |newCVREF    |I32 flags|OP* o
  1756. Ap    |OP*    |newGVOP    |I32 type|I32 flags|GV* gv
  1757. Ap    |GV*    |newGVgen    |char* pack
  1758. Ap    |OP*    |newGVREF    |I32 type|OP* o
  1759. Ap    |OP*    |newHVREF    |OP* o
  1760. Apd    |HV*    |newHV
  1761. Ap    |HV*    |newHVhv    |HV* hv
  1762. Ap    |IO*    |newIO
  1763. Ap    |OP*    |newLISTOP    |I32 type|I32 flags|OP* first|OP* last
  1764. Ap    |OP*    |newPADOP    |I32 type|I32 flags|SV* sv
  1765. Ap    |OP*    |newPMOP    |I32 type|I32 flags
  1766. Ap    |OP*    |newPVOP    |I32 type|I32 flags|char* pv
  1767. Ap    |SV*    |newRV        |SV* pref
  1768. Apd    |SV*    |newRV_noinc    |SV *sv
  1769. Ap    |SV*    |newSV        |STRLEN len
  1770. Ap    |OP*    |newSVREF    |OP* o
  1771. Ap    |OP*    |newSVOP    |I32 type|I32 flags|SV* sv
  1772. Apd    |SV*    |newSViv    |IV i
  1773. Apd    |SV*    |newSVuv    |UV u
  1774. Apd    |SV*    |newSVnv    |NV n
  1775. Apd    |SV*    |newSVpv    |const char* s|STRLEN len
  1776. Apd    |SV*    |newSVpvn    |const char* s|STRLEN len
  1777. Afpd    |SV*    |newSVpvf    |const char* pat|...
  1778. Ap    |SV*    |vnewSVpvf    |const char* pat|va_list* args
  1779. Apd    |SV*    |newSVrv    |SV* rv|const char* classname
  1780. Apd    |SV*    |newSVsv    |SV* old
  1781. Ap    |OP*    |newUNOP    |I32 type|I32 flags|OP* first
  1782. Ap    |OP*    |newWHILEOP    |I32 flags|I32 debuggable|LOOP* loop \
  1783.                 |I32 whileline|OP* expr|OP* block|OP* cont
  1784.  
  1785. Ap    |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
  1786. p    |PerlIO*|nextargv    |GV* gv
  1787. Ap    |char*    |ninstr        |const char* big|const char* bigend \
  1788.                 |const char* little|const char* lend
  1789. p    |OP*    |oopsCV        |OP* o
  1790. Ap    |void    |op_free    |OP* arg
  1791. p    |void    |package    |OP* o
  1792. p    |PADOFFSET|pad_alloc    |I32 optype|U32 tmptype
  1793. p    |PADOFFSET|pad_allocmy    |char* name
  1794. p    |PADOFFSET|pad_findmy    |char* name
  1795. p    |OP*    |oopsAV        |OP* o
  1796. p    |OP*    |oopsHV        |OP* o
  1797. p    |void    |pad_leavemy    |I32 fill
  1798. Ap    |SV*    |pad_sv        |PADOFFSET po
  1799. p    |void    |pad_free    |PADOFFSET po
  1800. p    |void    |pad_reset
  1801. p    |void    |pad_swipe    |PADOFFSET po
  1802. p    |void    |peep        |OP* o
  1803. #if defined(PERL_OBJECT)
  1804. Aox    |void    |Perl_construct
  1805. Aox    |void    |Perl_destruct
  1806. Aox    |void    |Perl_free
  1807. Aox    |int    |Perl_run
  1808. Aox    |int    |Perl_parse    |XSINIT_t xsinit \
  1809.                 |int argc|char** argv|char** env
  1810. #endif
  1811. #if defined(USE_THREADS)
  1812. Ap    |struct perl_thread*    |new_struct_thread|struct perl_thread *t
  1813. #endif
  1814. Ap    |void    |call_atexit    |ATEXIT_t fn|void *ptr
  1815. Apd    |I32    |call_argv    |const char* sub_name|I32 flags|char** argv
  1816. Apd    |I32    |call_method    |const char* methname|I32 flags
  1817. Apd    |I32    |call_pv    |const char* sub_name|I32 flags
  1818. Apd    |I32    |call_sv    |SV* sv|I32 flags
  1819. Apd    |SV*    |eval_pv    |const char* p|I32 croak_on_error
  1820. Apd    |I32    |eval_sv    |SV* sv|I32 flags
  1821. Apd    |SV*    |get_sv        |const char* name|I32 create
  1822. Apd    |AV*    |get_av        |const char* name|I32 create
  1823. Apd    |HV*    |get_hv        |const char* name|I32 create
  1824. Apd    |CV*    |get_cv        |const char* name|I32 create
  1825. Ap    |int    |init_i18nl10n    |int printwarn
  1826. Ap    |int    |init_i18nl14n    |int printwarn
  1827. Ap    |void    |new_collate    |const char* newcoll
  1828. Ap    |void    |new_ctype    |const char* newctype
  1829. Ap    |void    |new_numeric    |const char* newcoll
  1830. Ap    |void    |set_numeric_local
  1831. Ap    |void    |set_numeric_radix
  1832. Ap    |void    |set_numeric_standard
  1833. Apd    |void    |require_pv    |const char* pv
  1834. p    |void    |pidgone    |Pid_t pid|int status
  1835. Ap    |void    |pmflag        |U16* pmfl|int ch
  1836. p    |OP*    |pmruntime    |OP* pm|OP* expr|OP* repl
  1837. p    |OP*    |pmtrans    |OP* o|OP* expr|OP* repl
  1838. p    |OP*    |pop_return
  1839. Ap    |void    |pop_scope
  1840. p    |OP*    |prepend_elem    |I32 optype|OP* head|OP* tail
  1841. p    |void    |push_return    |OP* o
  1842. Ap    |void    |push_scope
  1843. p    |OP*    |ref        |OP* o|I32 type
  1844. p    |OP*    |refkids    |OP* o|I32 type
  1845. Ap    |void    |regdump    |regexp* r
  1846. Ap    |I32    |pregexec    |regexp* prog|char* stringarg \
  1847.                 |char* strend|char* strbeg|I32 minend \
  1848.                 |SV* screamer|U32 nosave
  1849. Ap    |void    |pregfree    |struct regexp* r
  1850. Ap    |regexp*|pregcomp    |char* exp|char* xend|PMOP* pm
  1851. Ap    |char*    |re_intuit_start|regexp* prog|SV* sv|char* strpos \
  1852.                 |char* strend|U32 flags \
  1853.                 |struct re_scream_pos_data_s *data
  1854. Ap    |SV*    |re_intuit_string|regexp* prog
  1855. Ap    |I32    |regexec_flags    |regexp* prog|char* stringarg \
  1856.                 |char* strend|char* strbeg|I32 minend \
  1857.                 |SV* screamer|void* data|U32 flags
  1858. Ap    |regnode*|regnext    |regnode* p
  1859. p    |void    |regprop    |SV* sv|regnode* o
  1860. Ap    |void    |repeatcpy    |char* to|const char* from|I32 len|I32 count
  1861. Ap    |char*    |rninstr    |const char* big|const char* bigend \
  1862.                 |const char* little|const char* lend
  1863. p    |Sighandler_t|rsignal    |int i|Sighandler_t t
  1864. p    |int    |rsignal_restore|int i|Sigsave_t* t
  1865. p    |int    |rsignal_save    |int i|Sighandler_t t1|Sigsave_t* t2
  1866. p    |Sighandler_t|rsignal_state|int i
  1867. p    |void    |rxres_free    |void** rsp
  1868. p    |void    |rxres_restore    |void** rsp|REGEXP* prx
  1869. p    |void    |rxres_save    |void** rsp|REGEXP* prx
  1870. #if !defined(HAS_RENAME)
  1871. p    |I32    |same_dirent    |char* a|char* b
  1872. #endif
  1873. Apd    |char*    |savepv        |const char* sv
  1874. Apd    |char*    |savepvn    |const char* sv|I32 len
  1875. Ap    |void    |savestack_grow
  1876. Ap    |void    |save_aelem    |AV* av|I32 idx|SV **sptr
  1877. Ap    |I32    |save_alloc    |I32 size|I32 pad
  1878. Ap    |void    |save_aptr    |AV** aptr
  1879. Ap    |AV*    |save_ary    |GV* gv
  1880. Ap    |void    |save_clearsv    |SV** svp
  1881. Ap    |void    |save_delete    |HV* hv|char* key|I32 klen
  1882. Ap    |void    |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|void* p
  1883. Ap    |void    |save_destructor_x|DESTRUCTORFUNC_t f|void* p
  1884. Ap    |void    |save_freesv    |SV* sv
  1885. p    |void    |save_freeop    |OP* o
  1886. Ap    |void    |save_freepv    |char* pv
  1887. Ap    |void    |save_generic_svref|SV** sptr
  1888. Ap    |void    |save_gp    |GV* gv|I32 empty
  1889. Ap    |HV*    |save_hash    |GV* gv
  1890. Ap    |void    |save_helem    |HV* hv|SV *key|SV **sptr
  1891. Ap    |void    |save_hints
  1892. Ap    |void    |save_hptr    |HV** hptr
  1893. Ap    |void    |save_I16    |I16* intp
  1894. Ap    |void    |save_I32    |I32* intp
  1895. Ap    |void    |save_I8    |I8* bytep
  1896. Ap    |void    |save_int    |int* intp
  1897. Ap    |void    |save_item    |SV* item
  1898. Ap    |void    |save_iv    |IV* iv
  1899. Ap    |void    |save_list    |SV** sarg|I32 maxsarg
  1900. Ap    |void    |save_long    |long* longp
  1901. Ap    |void    |save_nogv    |GV* gv
  1902. p    |void    |save_op
  1903. Ap    |SV*    |save_scalar    |GV* gv
  1904. Ap    |void    |save_pptr    |char** pptr
  1905. Ap    |void    |save_vptr    |void* pptr
  1906. Ap    |void    |save_re_context
  1907. Ap    |void    |save_sptr    |SV** sptr
  1908. Ap    |SV*    |save_svref    |SV** sptr
  1909. Ap    |SV**    |save_threadsv    |PADOFFSET i
  1910. p    |OP*    |sawparens    |OP* o
  1911. p    |OP*    |scalar        |OP* o
  1912. p    |OP*    |scalarkids    |OP* o
  1913. p    |OP*    |scalarseq    |OP* o
  1914. p    |OP*    |scalarvoid    |OP* o
  1915. Ap    |NV    |scan_bin    |char* start|I32 len|I32* retlen
  1916. Ap    |NV    |scan_hex    |char* start|I32 len|I32* retlen
  1917. Ap    |char*    |scan_num    |char* s
  1918. Ap    |NV    |scan_oct    |char* start|I32 len|I32* retlen
  1919. p    |OP*    |scope        |OP* o
  1920. Ap    |char*    |screaminstr    |SV* bigsv|SV* littlesv|I32 start_shift \
  1921.                 |I32 end_shift|I32 *state|I32 last
  1922. #if !defined(VMS)
  1923. p    |I32    |setenv_getix    |char* nam
  1924. #endif
  1925. p    |void    |setdefout    |GV* gv
  1926. Ap    |char*    |sharepvn    |const char* sv|I32 len|U32 hash
  1927. p    |HEK*    |share_hek    |const char* sv|I32 len|U32 hash
  1928. np    |Signal_t |sighandler    |int sig
  1929. Ap    |SV**    |stack_grow    |SV** sp|SV**p|int n
  1930. Ap    |I32    |start_subparse    |I32 is_format|U32 flags
  1931. p    |void    |sub_crush_depth|CV* cv
  1932. Ap    |bool    |sv_2bool    |SV* sv
  1933. Ap    |CV*    |sv_2cv        |SV* sv|HV** st|GV** gvp|I32 lref
  1934. Ap    |IO*    |sv_2io        |SV* sv
  1935. Ap    |IV    |sv_2iv        |SV* sv
  1936. Apd    |SV*    |sv_2mortal    |SV* sv
  1937. Ap    |NV    |sv_2nv        |SV* sv
  1938. Ap    |char*    |sv_2pv        |SV* sv|STRLEN* lp
  1939. Ap    |char*    |sv_2pvutf8    |SV* sv|STRLEN* lp
  1940. Ap    |char*    |sv_2pvbyte    |SV* sv|STRLEN* lp
  1941. Ap    |UV    |sv_2uv        |SV* sv
  1942. Ap    |IV    |sv_iv        |SV* sv
  1943. Ap    |UV    |sv_uv        |SV* sv
  1944. Ap    |NV    |sv_nv        |SV* sv
  1945. Ap    |char*    |sv_pvn        |SV *sv|STRLEN *len
  1946. Ap    |char*    |sv_pvutf8n    |SV *sv|STRLEN *len
  1947. Ap    |char*    |sv_pvbyten    |SV *sv|STRLEN *len
  1948. Ap    |I32    |sv_true    |SV *sv
  1949. p    |void    |sv_add_arena    |char* ptr|U32 size|U32 flags
  1950. Ap    |int    |sv_backoff    |SV* sv
  1951. Apd    |SV*    |sv_bless    |SV* sv|HV* stash
  1952. Afpd    |void    |sv_catpvf    |SV* sv|const char* pat|...
  1953. Ap    |void    |sv_vcatpvf    |SV* sv|const char* pat|va_list* args
  1954. Apd    |void    |sv_catpv    |SV* sv|const char* ptr
  1955. Apd    |void    |sv_catpvn    |SV* sv|const char* ptr|STRLEN len
  1956. Apd    |void    |sv_catsv    |SV* dsv|SV* ssv
  1957. Apd    |void    |sv_chop    |SV* sv|char* ptr
  1958. p    |void    |sv_clean_all
  1959. p    |void    |sv_clean_objs
  1960. Ap    |void    |sv_clear    |SV* sv
  1961. Apd    |I32    |sv_cmp        |SV* sv1|SV* sv2
  1962. Ap    |I32    |sv_cmp_locale    |SV* sv1|SV* sv2
  1963. #if defined(USE_LOCALE_COLLATE)
  1964. Ap    |char*    |sv_collxfrm    |SV* sv|STRLEN* nxp
  1965. #endif
  1966. Ap    |OP*    |sv_compile_2op    |SV* sv|OP** startp|char* code|AV** avp
  1967. Apd    |void    |sv_dec        |SV* sv
  1968. Ap    |void    |sv_dump    |SV* sv
  1969. Apd    |bool    |sv_derived_from|SV* sv|const char* name
  1970. Apd    |I32    |sv_eq        |SV* sv1|SV* sv2
  1971. Ap    |void    |sv_free    |SV* sv
  1972. p    |void    |sv_free_arenas
  1973. Ap    |char*    |sv_gets    |SV* sv|PerlIO* fp|I32 append
  1974. Apd    |char*    |sv_grow    |SV* sv|STRLEN newlen
  1975. Apd    |void    |sv_inc        |SV* sv
  1976. Apd    |void    |sv_insert    |SV* bigsv|STRLEN offset|STRLEN len \
  1977.                 |char* little|STRLEN littlelen
  1978. Apd    |int    |sv_isa        |SV* sv|const char* name
  1979. Apd    |int    |sv_isobject    |SV* sv
  1980. Apd    |STRLEN    |sv_len        |SV* sv
  1981. Ap    |STRLEN    |sv_len_utf8    |SV* sv
  1982. Apd    |void    |sv_magic    |SV* sv|SV* obj|int how|const char* name \
  1983.                 |I32 namlen
  1984. Apd    |SV*    |sv_mortalcopy    |SV* oldsv
  1985. Apd    |SV*    |sv_newmortal
  1986. Ap    |SV*    |sv_newref    |SV* sv
  1987. Ap    |char*    |sv_peek    |SV* sv
  1988. Ap    |void    |sv_pos_u2b    |SV* sv|I32* offsetp|I32* lenp
  1989. Ap    |void    |sv_pos_b2u    |SV* sv|I32* offsetp
  1990. Ap    |char*    |sv_pvn_force    |SV* sv|STRLEN* lp
  1991. Ap    |char*    |sv_pvutf8n_force|SV* sv|STRLEN* lp
  1992. Ap    |char*    |sv_pvbyten_force|SV* sv|STRLEN* lp
  1993. Ap    |char*    |sv_reftype    |SV* sv|int ob
  1994. Ap    |void    |sv_replace    |SV* sv|SV* nsv
  1995. Ap    |void    |sv_report_used
  1996. Ap    |void    |sv_reset    |char* s|HV* stash
  1997. Afpd    |void    |sv_setpvf    |SV* sv|const char* pat|...
  1998. Ap    |void    |sv_vsetpvf    |SV* sv|const char* pat|va_list* args
  1999. Apd    |void    |sv_setiv    |SV* sv|IV num
  2000. Apd    |void    |sv_setpviv    |SV* sv|IV num
  2001. Apd    |void    |sv_setuv    |SV* sv|UV num
  2002. Apd    |void    |sv_setnv    |SV* sv|NV num
  2003. Apd    |SV*    |sv_setref_iv    |SV* rv|const char* classname|IV iv
  2004. Apd    |SV*    |sv_setref_nv    |SV* rv|const char* classname|NV nv
  2005. Apd    |SV*    |sv_setref_pv    |SV* rv|const char* classname|void* pv
  2006. Apd    |SV*    |sv_setref_pvn    |SV* rv|const char* classname|char* pv \
  2007.                 |STRLEN n
  2008. Apd    |void    |sv_setpv    |SV* sv|const char* ptr
  2009. Apd    |void    |sv_setpvn    |SV* sv|const char* ptr|STRLEN len
  2010. Apd    |void    |sv_setsv    |SV* dsv|SV* ssv
  2011. Ap    |void    |sv_taint    |SV* sv
  2012. Ap    |bool    |sv_tainted    |SV* sv
  2013. Ap    |int    |sv_unmagic    |SV* sv|int type
  2014. Apd    |void    |sv_unref    |SV* sv
  2015. Ap    |void    |sv_untaint    |SV* sv
  2016. Apd    |bool    |sv_upgrade    |SV* sv|U32 mt
  2017. Apd    |void    |sv_usepvn    |SV* sv|char* ptr|STRLEN len
  2018. Apd    |void    |sv_vcatpvfn    |SV* sv|const char* pat|STRLEN patlen \
  2019.                 |va_list* args|SV** svargs|I32 svmax \
  2020.                 |bool *maybe_tainted
  2021. Apd    |void    |sv_vsetpvfn    |SV* sv|const char* pat|STRLEN patlen \
  2022.                 |va_list* args|SV** svargs|I32 svmax \
  2023.                 |bool *maybe_tainted
  2024. Ap    |NV    |str_to_version    |SV *sv
  2025. Ap    |SV*    |swash_init    |char* pkg|char* name|SV* listsv \
  2026.                 |I32 minbits|I32 none
  2027. Ap    |UV    |swash_fetch    |SV *sv|U8 *ptr
  2028. Ap    |void    |taint_env
  2029. Ap    |void    |taint_proper    |const char* f|const char* s
  2030. Ap    |UV    |to_utf8_lower    |U8 *p
  2031. Ap    |UV    |to_utf8_upper    |U8 *p
  2032. Ap    |UV    |to_utf8_title    |U8 *p
  2033. #if defined(UNLINK_ALL_VERSIONS)
  2034. Ap    |I32    |unlnk        |char* f
  2035. #endif
  2036. #if defined(USE_THREADS)
  2037. Ap    |void    |unlock_condpair|void* svv
  2038. #endif
  2039. Ap    |void    |unsharepvn    |const char* sv|I32 len|U32 hash
  2040. p    |void    |unshare_hek    |HEK* hek
  2041. p    |void    |utilize    |int aver|I32 floor|OP* version|OP* id|OP* arg
  2042. Ap    |U8*    |utf16_to_utf8    |U16* p|U8 *d|I32 bytelen
  2043. Ap    |U8*    |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
  2044. Ap    |I32    |utf8_distance    |U8 *a|U8 *b
  2045. Ap    |U8*    |utf8_hop    |U8 *s|I32 off
  2046. Ap    |UV    |utf8_to_uv    |U8 *s|I32* retlen
  2047. Ap    |U8*    |uv_to_utf8    |U8 *d|UV uv
  2048. p    |void    |vivify_defelem    |SV* sv
  2049. p    |void    |vivify_ref    |SV* sv|U32 to_what
  2050. p    |I32    |wait4pid    |Pid_t pid|int* statusp|int flags
  2051. p    |void    |report_closed_fh|GV *gv|IO *io|const char *func|const char *obj
  2052. p    |void    |report_uninit
  2053. Afpd    |void    |warn        |const char* pat|...
  2054. Ap    |void    |vwarn        |const char* pat|va_list* args
  2055. Afp    |void    |warner        |U32 err|const char* pat|...
  2056. Ap    |void    |vwarner    |U32 err|const char* pat|va_list* args
  2057. p    |void    |watch        |char** addr
  2058. p    |I32    |whichsig    |char* sig
  2059. p    |int    |yyerror    |char* s
  2060. #if defined(USE_PURE_BISON)
  2061. p    |int    |yylex        |YYSTYPE *lvalp|int *lcharp
  2062. #else
  2063. p    |int    |yylex
  2064. #endif
  2065. p    |int    |yyparse
  2066. p    |int    |yywarn        |char* s
  2067. #if defined(MYMALLOC)
  2068. Ap    |void    |dump_mstats    |char* s
  2069. Ap    |int    |get_mstats    |perl_mstats_t *buf|int buflen|int level
  2070. #endif
  2071. Anp    |Malloc_t|safesysmalloc    |MEM_SIZE nbytes
  2072. Anp    |Malloc_t|safesyscalloc    |MEM_SIZE elements|MEM_SIZE size
  2073. Anp    |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
  2074. Anp    |Free_t    |safesysfree    |Malloc_t where
  2075. #if defined(LEAKTEST)
  2076. Anp    |Malloc_t|safexmalloc    |I32 x|MEM_SIZE size
  2077. Anp    |Malloc_t|safexcalloc    |I32 x|MEM_SIZE elements|MEM_SIZE size
  2078. Anp    |Malloc_t|safexrealloc    |Malloc_t where|MEM_SIZE size
  2079. Anp    |void    |safexfree    |Malloc_t where
  2080. #endif
  2081. #if defined(PERL_GLOBAL_STRUCT)
  2082. Ap    |struct perl_vars *|GetVars
  2083. #endif
  2084. Ap    |int    |runops_standard
  2085. Ap    |int    |runops_debug
  2086. Afpd    |void    |sv_catpvf_mg    |SV *sv|const char* pat|...
  2087. Ap    |void    |sv_vcatpvf_mg    |SV* sv|const char* pat|va_list* args
  2088. Apd    |void    |sv_catpv_mg    |SV *sv|const char *ptr
  2089. Apd    |void    |sv_catpvn_mg    |SV *sv|const char *ptr|STRLEN len
  2090. Apd    |void    |sv_catsv_mg    |SV *dstr|SV *sstr
  2091. Afpd    |void    |sv_setpvf_mg    |SV *sv|const char* pat|...
  2092. Ap    |void    |sv_vsetpvf_mg    |SV* sv|const char* pat|va_list* args
  2093. Apd    |void    |sv_setiv_mg    |SV *sv|IV i
  2094. Apd    |void    |sv_setpviv_mg    |SV *sv|IV iv
  2095. Apd    |void    |sv_setuv_mg    |SV *sv|UV u
  2096. Apd    |void    |sv_setnv_mg    |SV *sv|NV num
  2097. Apd    |void    |sv_setpv_mg    |SV *sv|const char *ptr
  2098. Apd    |void    |sv_setpvn_mg    |SV *sv|const char *ptr|STRLEN len
  2099. Apd    |void    |sv_setsv_mg    |SV *dstr|SV *sstr
  2100. Apd    |void    |sv_usepvn_mg    |SV *sv|char *ptr|STRLEN len
  2101. Ap    |MGVTBL*|get_vtbl    |int vtbl_id
  2102. p    |char*    |pv_display    |SV *sv|char *pv|STRLEN cur|STRLEN len \
  2103.                 |STRLEN pvlim
  2104. Afp    |void    |dump_indent    |I32 level|PerlIO *file|const char* pat|...
  2105. Ap    |void    |dump_vindent    |I32 level|PerlIO *file|const char* pat \
  2106.                 |va_list *args
  2107. Ap    |void    |do_gv_dump    |I32 level|PerlIO *file|char *name|GV *sv
  2108. Ap    |void    |do_gvgv_dump    |I32 level|PerlIO *file|char *name|GV *sv
  2109. Ap    |void    |do_hv_dump    |I32 level|PerlIO *file|char *name|HV *sv
  2110. Ap    |void    |do_magic_dump    |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
  2111.                 |I32 maxnest|bool dumpops|STRLEN pvlim
  2112. Ap    |void    |do_op_dump    |I32 level|PerlIO *file|OP *o
  2113. Ap    |void    |do_pmop_dump    |I32 level|PerlIO *file|PMOP *pm
  2114. Ap    |void    |do_sv_dump    |I32 level|PerlIO *file|SV *sv|I32 nest \
  2115.                 |I32 maxnest|bool dumpops|STRLEN pvlim
  2116. Ap    |void    |magic_dump    |MAGIC *mg
  2117. #if defined(PERL_FLEXIBLE_EXCEPTIONS)
  2118. Ap    |void*    |default_protect|volatile JMPENV *je|int *excpt \
  2119.                 |protect_body_t body|...
  2120. Ap    |void*    |vdefault_protect|volatile JMPENV *je|int *excpt \
  2121.                 |protect_body_t body|va_list *args
  2122. #endif
  2123. Ap    |void    |reginitcolors
  2124. Ap    |char*    |sv_2pv_nolen    |SV* sv
  2125. Ap    |char*    |sv_2pvutf8_nolen|SV* sv
  2126. Ap    |char*    |sv_2pvbyte_nolen|SV* sv
  2127. Ap    |char*    |sv_pv        |SV *sv
  2128. Ap    |char*    |sv_pvutf8    |SV *sv
  2129. Ap    |char*    |sv_pvbyte    |SV *sv
  2130. Ap      |void   |sv_utf8_upgrade|SV *sv
  2131. Ap      |bool   |sv_utf8_downgrade|SV *sv|bool fail_ok
  2132. Ap      |void   |sv_utf8_encode |SV *sv
  2133. Ap      |bool   |sv_utf8_decode |SV *sv
  2134. Ap    |void    |sv_force_normal|SV *sv
  2135. Ap    |void    |tmps_grow    |I32 n
  2136. Ap    |SV*    |sv_rvweaken    |SV *sv
  2137. p    |int    |magic_killbackrefs|SV *sv|MAGIC *mg
  2138. Ap    |OP*    |newANONATTRSUB    |I32 floor|OP *proto|OP *attrs|OP *block
  2139. Ap    |CV*    |newATTRSUB    |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
  2140. Ap    |void    |newMYSUB    |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
  2141. p    |OP *    |my_attrs    |OP *o|OP *attrs
  2142. p    |void    |boot_core_xsutils
  2143. #if defined(USE_ITHREADS)
  2144. Ap    |PERL_CONTEXT*|cx_dup    |PERL_CONTEXT* cx|I32 ix|I32 max
  2145. Ap    |PERL_SI*|si_dup    |PERL_SI* si
  2146. Ap    |ANY*    |ss_dup        |PerlInterpreter* proto_perl
  2147. Ap    |void*    |any_dup    |void* v|PerlInterpreter* proto_perl
  2148. Ap    |HE*    |he_dup        |HE* e|bool shared
  2149. Ap    |REGEXP*|re_dup        |REGEXP* r
  2150. Ap    |PerlIO*|fp_dup        |PerlIO* fp|char type
  2151. Ap    |DIR*    |dirp_dup    |DIR* dp
  2152. Ap    |GP*    |gp_dup        |GP* gp
  2153. Ap    |MAGIC*    |mg_dup        |MAGIC* mg
  2154. Ap    |SV*    |sv_dup        |SV* sstr
  2155. #if defined(HAVE_INTERP_INTERN)
  2156. Ap    |void    |sys_intern_dup    |struct interp_intern* src \
  2157.                 |struct interp_intern* dst
  2158. #endif
  2159. Ap    |PTR_TBL_t*|ptr_table_new
  2160. Ap    |void*    |ptr_table_fetch|PTR_TBL_t *tbl|void *sv
  2161. Ap    |void    |ptr_table_store|PTR_TBL_t *tbl|void *oldsv|void *newsv
  2162. Ap    |void    |ptr_table_split|PTR_TBL_t *tbl
  2163. #endif
  2164.  
  2165. #if defined(PERL_OBJECT)
  2166. protected:
  2167. #else
  2168. END_EXTERN_C
  2169. #endif
  2170.  
  2171. #if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
  2172. s    |I32    |avhv_index_sv    |SV* sv
  2173. s    |I32    |avhv_index    |AV* av|SV* sv|U32 hash
  2174. #endif
  2175.  
  2176. #if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
  2177. s    |I32    |do_trans_CC_simple    |SV *sv
  2178. s    |I32    |do_trans_CC_count    |SV *sv
  2179. s    |I32    |do_trans_CC_complex    |SV *sv
  2180. s    |I32    |do_trans_UU_simple    |SV *sv
  2181. s    |I32    |do_trans_UU_count    |SV *sv
  2182. s    |I32    |do_trans_UU_complex    |SV *sv
  2183. s    |I32    |do_trans_UC_simple    |SV *sv
  2184. s    |I32    |do_trans_CU_simple    |SV *sv
  2185. s    |I32    |do_trans_UC_trivial    |SV *sv
  2186. s    |I32    |do_trans_CU_trivial    |SV *sv
  2187. #endif
  2188.  
  2189. #if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
  2190. s    |void    |gv_init_sv    |GV *gv|I32 sv_type
  2191. #endif
  2192.  
  2193. #if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
  2194. s    |void    |hsplit        |HV *hv
  2195. s    |void    |hfreeentries    |HV *hv
  2196. s    |void    |more_he
  2197. s    |HE*    |new_he
  2198. s    |void    |del_he        |HE *p
  2199. s    |HEK*    |save_hek    |const char *str|I32 len|U32 hash
  2200. s    |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)
  2204. s    |void    |save_magic    |I32 mgs_ix|SV *sv
  2205. s    |int    |magic_methpack    |SV *sv|MAGIC *mg|char *meth
  2206. s    |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)
  2211. s    |I32    |list_assignment|OP *o
  2212. s    |void    |bad_type    |I32 n|char *t|char *name|OP *kid
  2213. s    |void    |cop_free    |COP *cop
  2214. s    |OP*    |modkids    |OP *o|I32 type
  2215. s    |void    |no_bareword_allowed|OP *o
  2216. s    |OP*    |no_fh_allowed    |OP *o
  2217. s    |OP*    |scalarboolean    |OP *o
  2218. s    |OP*    |too_few_arguments|OP *o|char* name
  2219. s    |OP*    |too_many_arguments|OP *o|char* name
  2220. s    |void    |op_clear    |OP* o
  2221. s    |void    |null        |OP* o
  2222. s    |PADOFFSET|pad_addlex    |SV* name
  2223. s    |PADOFFSET|pad_findlex    |char* name|PADOFFSET newoff|U32 seq \
  2224.                 |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
  2225. s    |OP*    |newDEFSVOP
  2226. s    |OP*    |new_logop    |I32 type|I32 flags|OP **firstp|OP **otherp
  2227. s    |void    |simplify_sort    |OP *o
  2228. s    |bool    |is_handle_constructor    |OP *o|I32 argnum
  2229. s    |char*    |gv_ename    |GV *gv
  2230. s    |void    |cv_dump    |CV *cv
  2231. s    |CV*    |cv_clone2    |CV *proto|CV *outside
  2232. s    |bool    |scalar_mod_type|OP *o|I32 type
  2233. s    |OP *    |my_kid        |OP *o|OP *attrs
  2234. s    |OP *    |dup_attrlist    |OP *o
  2235. s    |void    |apply_attrs    |HV *stash|SV *target|OP *attrs
  2236. #  if defined(PL_OP_SLAB_ALLOC)
  2237. s    |void*    |Slab_Alloc    |int m|size_t sz
  2238. #  endif
  2239. #endif
  2240.  
  2241. #if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
  2242. s    |void    |find_beginning
  2243. s    |void    |forbid_setid    |char *
  2244. s    |void    |incpush    |char *|int|int
  2245. s    |void    |init_interp
  2246. s    |void    |init_ids
  2247. s    |void    |init_lexer
  2248. s    |void    |init_main_stash
  2249. s    |void    |init_perllib
  2250. s    |void    |init_postdump_symbols|int|char **|char **
  2251. s    |void    |init_predump_symbols
  2252. rs    |void    |my_exit_jump
  2253. s    |void    |nuke_stacks
  2254. s    |void    |open_script    |char *|bool|SV *|int *fd
  2255. s    |void    |usage        |char *
  2256. s    |void    |validate_suid    |char *|char*|int
  2257. #  if defined(IAMSUID)
  2258. s    |int    |fd_on_nosuid_fs|int fd
  2259. #  endif
  2260. s    |void*    |parse_body    |char **env|XSINIT_t xsinit
  2261. s    |void*    |run_body    |I32 oldscope
  2262. s    |void    |call_body    |OP *myop|int is_eval
  2263. s    |void*    |call_list_body    |CV *cv
  2264. #if defined(PERL_FLEXIBLE_EXCEPTIONS)
  2265. s    |void*    |vparse_body    |va_list args
  2266. s    |void*    |vrun_body    |va_list args
  2267. s    |void*    |vcall_body    |va_list args
  2268. s    |void*    |vcall_list_body|va_list args
  2269. #endif
  2270. #  if defined(USE_THREADS)
  2271. s    |struct perl_thread *    |init_main_thread
  2272. #  endif
  2273. #endif
  2274.  
  2275. #if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
  2276. s    |void    |doencodes    |SV* sv|char* s|I32 len
  2277. s    |SV*    |refto        |SV* sv
  2278. s    |U32    |seed
  2279. s    |SV*    |mul128        |SV *sv|U8 m
  2280. s    |SV*    |is_an_int    |char *s|STRLEN l
  2281. s    |int    |div128        |SV *pnum|bool *done
  2282. #endif
  2283.  
  2284. #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
  2285. s    |OP*    |docatch    |OP *o
  2286. s    |void*    |docatch_body
  2287. #if defined(PERL_FLEXIBLE_EXCEPTIONS)
  2288. s    |void*    |vdocatch_body    |va_list args
  2289. #endif
  2290. s    |OP*    |dofindlabel    |OP *o|char *label|OP **opstack|OP **oplimit
  2291. s    |void    |doparseform    |SV *sv
  2292. s    |I32    |dopoptoeval    |I32 startingblock
  2293. s    |I32    |dopoptolabel    |char *label
  2294. s    |I32    |dopoptoloop    |I32 startingblock
  2295. s    |I32    |dopoptosub    |I32 startingblock
  2296. s    |I32    |dopoptosub_at    |PERL_CONTEXT* cxstk|I32 startingblock
  2297. s    |void    |free_closures
  2298. s    |void    |save_lines    |AV *array|SV *sv
  2299. s    |OP*    |doeval        |int gimme|OP** startop
  2300. s    |PerlIO *|doopen_pmc    |const char *name|const char *mode
  2301. s    |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)
  2305. s    |int    |do_maybe_phash    |AV *ary|SV **lelem|SV **firstlelem \
  2306.                 |SV **relem|SV **lastrelem
  2307. s    |void    |do_oddball    |HV *hash|SV **relem|SV **firstrelem
  2308. s    |CV*    |get_db_sub    |SV **svp|CV *cv
  2309. s    |SV*    |method_common    |SV* meth|U32* hashp
  2310. #endif
  2311.  
  2312. #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
  2313. s    |OP*    |doform        |CV *cv|GV *gv|OP *retop
  2314. s    |int    |emulate_eaccess|const char* path|Mode_t mode
  2315. #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
  2316. s    |int    |dooneliner    |char *cmd|char *filename
  2317. #  endif
  2318. #endif
  2319.  
  2320. #if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
  2321. s    |regnode*|reg        |I32|I32 *
  2322. s    |regnode*|reganode    |U8|U32
  2323. s    |regnode*|regatom    |I32 *
  2324. s    |regnode*|regbranch    |I32 *|I32
  2325. s    |void    |reguni        |UV|char *|I32*
  2326. s    |regnode*|regclass
  2327. s    |regnode*|regclassutf8
  2328. s    |I32    |regcurly    |char *
  2329. s    |regnode*|reg_node    |U8
  2330. s    |regnode*|regpiece    |I32 *
  2331. s    |void    |reginsert    |U8|regnode *
  2332. s    |void    |regoptail    |regnode *|regnode *
  2333. s    |void    |regtail    |regnode *|regnode *
  2334. s    |char*|regwhite    |char *|char *
  2335. s    |char*|nextchar
  2336. s    |regnode*|dumpuntil    |regnode *start|regnode *node \
  2337.                 |regnode *last|SV* sv|I32 l
  2338. s    |void    |put_byte    |SV* sv|int c
  2339. s    |void    |scan_commit    |struct scan_data_t *data
  2340. s    |void    |cl_anything    |struct regnode_charclass_class *cl
  2341. s    |int    |cl_is_anything    |struct regnode_charclass_class *cl
  2342. s    |void    |cl_init    |struct regnode_charclass_class *cl
  2343. s    |void    |cl_init_zero    |struct regnode_charclass_class *cl
  2344. s    |void    |cl_and        |struct regnode_charclass_class *cl \
  2345.                 |struct regnode_charclass_class *and_with
  2346. s    |void    |cl_or        |struct regnode_charclass_class *cl \
  2347.                 |struct regnode_charclass_class *or_with
  2348. s    |I32    |study_chunk    |regnode **scanp|I32 *deltap \
  2349.                 |regnode *last|struct scan_data_t *data \
  2350.                 |U32 flags
  2351. s    |I32    |add_data    |I32 n|char *s
  2352. rs    |void|re_croak2    |const char* pat1|const char* pat2|...
  2353. s    |I32    |regpposixcc    |I32 value
  2354. s    |void    |checkposixcc
  2355. #endif
  2356.  
  2357. #if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
  2358. s    |I32    |regmatch    |regnode *prog
  2359. s    |I32    |regrepeat    |regnode *p|I32 max
  2360. s    |I32    |regrepeat_hard    |regnode *p|I32 max|I32 *lp
  2361. s    |I32    |regtry        |regexp *prog|char *startpos
  2362. s    |bool    |reginclass    |regnode *p|I32 c
  2363. s    |bool    |reginclassutf8    |regnode *f|U8* p
  2364. s    |CHECKPOINT|regcppush    |I32 parenfloor
  2365. s    |char*|regcppop
  2366. s    |char*|regcp_set_to    |I32 ss
  2367. s    |void    |cache_re    |regexp *prog
  2368. s    |U8*    |reghop        |U8 *pos|I32 off
  2369. s    |U8*    |reghopmaybe    |U8 *pos|I32 off
  2370. s    |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)
  2374. s    |void    |debprof    |OP *o
  2375. #endif
  2376.  
  2377. #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
  2378. s    |SV*    |save_scalar_at    |SV **sptr
  2379. #endif
  2380.  
  2381. #if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
  2382. s    |IV    |asIV        |SV* sv
  2383. s    |UV    |asUV        |SV* sv
  2384. s    |SV*    |more_sv
  2385. s    |void    |more_xiv
  2386. s    |void    |more_xnv
  2387. s    |void    |more_xpv
  2388. s    |void    |more_xpviv
  2389. s    |void    |more_xpvnv
  2390. s    |void    |more_xpvcv
  2391. s    |void    |more_xpvav
  2392. s    |void    |more_xpvhv
  2393. s    |void    |more_xpvmg
  2394. s    |void    |more_xpvlv
  2395. s    |void    |more_xpvbm
  2396. s    |void    |more_xrv
  2397. s    |XPVIV*    |new_xiv
  2398. s    |XPVNV*    |new_xnv
  2399. s    |XPV*    |new_xpv
  2400. s    |XPVIV*    |new_xpviv
  2401. s    |XPVNV*    |new_xpvnv
  2402. s    |XPVCV*    |new_xpvcv
  2403. s    |XPVAV*    |new_xpvav
  2404. s    |XPVHV*    |new_xpvhv
  2405. s    |XPVMG*    |new_xpvmg
  2406. s    |XPVLV*    |new_xpvlv
  2407. s    |XPVBM*    |new_xpvbm
  2408. s    |XRV*    |new_xrv
  2409. s    |void    |del_xiv    |XPVIV* p
  2410. s    |void    |del_xnv    |XPVNV* p
  2411. s    |void    |del_xpv    |XPV* p
  2412. s    |void    |del_xpviv    |XPVIV* p
  2413. s    |void    |del_xpvnv    |XPVNV* p
  2414. s    |void    |del_xpvcv    |XPVCV* p
  2415. s    |void    |del_xpvav    |XPVAV* p
  2416. s    |void    |del_xpvhv    |XPVHV* p
  2417. s    |void    |del_xpvmg    |XPVMG* p
  2418. s    |void    |del_xpvlv    |XPVLV* p
  2419. s    |void    |del_xpvbm    |XPVBM* p
  2420. s    |void    |del_xrv    |XRV* p
  2421. s    |void    |sv_unglob    |SV* sv
  2422. s    |void    |not_a_number    |SV *sv
  2423. s    |void    |visit        |SVFUNC_t f
  2424. s    |void    |sv_add_backref    |SV *tsv|SV *sv
  2425. s    |void    |sv_del_backref    |SV *sv
  2426. #  if defined(DEBUGGING)
  2427. s    |void    |del_sv    |SV *p
  2428. #  endif
  2429. #endif
  2430.  
  2431. #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
  2432. s    |void    |check_uni
  2433. s    |void    |force_next    |I32 type
  2434. s    |char*    |force_version    |char *start
  2435. s    |char*    |force_word    |char *start|int token|int check_keyword \
  2436.                 |int allow_pack|int allow_tick
  2437. s    |SV*    |tokeq        |SV *sv
  2438. s    |char*    |scan_const    |char *start
  2439. s    |char*    |scan_formline    |char *s
  2440. s    |char*    |scan_heredoc    |char *s
  2441. s    |char*    |scan_ident    |char *s|char *send|char *dest \
  2442.                 |STRLEN destlen|I32 ck_uni
  2443. s    |char*    |scan_inputsymbol|char *start
  2444. s    |char*    |scan_pat    |char *start|I32 type
  2445. s    |char*    |scan_str    |char *start|int keep_quoted|int keep_delims
  2446. s    |char*    |scan_subst    |char *start
  2447. s    |char*    |scan_trans    |char *start
  2448. s    |char*    |scan_word    |char *s|char *dest|STRLEN destlen \
  2449.                 |int allow_package|STRLEN *slp
  2450. s    |char*    |skipspace    |char *s
  2451. s    |void    |checkcomma    |char *s|char *name|char *what
  2452. s    |void    |force_ident    |char *s|int kind
  2453. s    |void    |incline    |char *s
  2454. s    |int    |intuit_method    |char *s|GV *gv
  2455. s    |int    |intuit_more    |char *s
  2456. s    |I32    |lop        |I32 f|int x|char *s
  2457. s    |void    |missingterm    |char *s
  2458. s    |void    |no_op        |char *what|char *s
  2459. s    |void    |set_csh
  2460. s    |I32    |sublex_done
  2461. s    |I32    |sublex_push
  2462. s    |I32    |sublex_start
  2463. s    |char *    |filter_gets    |SV *sv|PerlIO *fp|STRLEN append
  2464. s    |SV*    |new_constant    |char *s|STRLEN len|const char *key|SV *sv \
  2465.                 |SV *pv|const char *type
  2466. s    |int    |ao        |int toketype
  2467. s    |void    |depcom
  2468. s    |char*    |incl_perldb
  2469. #if 0
  2470. s    |I32    |utf16_textfilter|int idx|SV *sv|int maxlen
  2471. s    |I32    |utf16rev_textfilter|int idx|SV *sv|int maxlen
  2472. #endif
  2473. #  if defined(CRIPPLED_CC)
  2474. s    |int    |uni        |I32 f|char *s
  2475. #  endif
  2476. #  if defined(PERL_CR_FILTER)
  2477. s    |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)
  2482. s    |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)
  2486. s    |SV*    |mess_alloc
  2487. #  if defined(LEAKTEST)
  2488. s    |void    |xstat        |int
  2489. #  endif
  2490. #endif
  2491.  
  2492. #if defined(PERL_OBJECT)
  2493. };
  2494. #endif
  2495.