don't quit if =head* wasn't found (suggested by Roland Bauer
[p5sagit/p5-mst-13.2.git] / embed.pl
CommitLineData
5f05dabc 1#!/usr/bin/perl -w
e50aee73 2
5f05dabc 3require 5.003;
4
cea2e8a9 5#
6# See database of global and static function prototypes at the __END__.
7# This is used to generate prototype headers under various configurations,
8# export symbols lists for different platforms, and macros to provide an
9# implicit interpreter context argument.
10#
11
12my $END = tell DATA;
13
14# walk table providing an array of components in each line to
15# subroutine, printing the result
16sub walk_table (&@) {
17 my $function = shift;
18 my $filename = shift || '-';
19 my $leader = shift;
20 my $trailer = shift;
21 my $F;
22 local *F;
23 if (ref $filename) { # filehandle
24 $F = $filename;
25 }
26 else {
27 open F, ">$filename" or die "Can't open $filename: $!";
28 $F = \*F;
29 }
30 print $F $leader if $leader;
31 seek DATA, $END, 0; # so we may restart
32 while (<DATA>) {
33 chomp;
34 while (s|\\$||) {
35 $_ .= <DATA>;
36 chomp;
37 }
38 my @args;
39 if (/^\s*(#|$)/) {
40 @args = $_;
41 }
42 else {
43 @args = split /\s*\|\s*/, $_;
44 }
45 print $F $function->(@args);
46 }
47 print $F $trailer if $trailer;
48 close $F unless ref $filename;
49}
50
51sub munge_c_files () {
52 my $functions = {};
53 unless (@ARGV) {
54 warn "\@ARGV empty, nothing to do\n";
55 return;
56 }
57 walk_table {
58 if (@_ > 1) {
59 $functions->{$_[2]} = \@_ if $_[@_-1] =~ /\.\.\./;
60 }
61 } '/dev/null';
62 local $^I = '.bak';
63 while (<>) {
64# if (/^#\s*include\s+"perl.h"/) {
65# my $file = uc $ARGV;
66# $file =~ s/\./_/g;
67# print "#define PERL_IN_$file\n";
68# }
69# s{^(\w+)\s*\(}
70# {
71# my $f = $1;
72# my $repl = "$f(";
73# if (exists $functions->{$f}) {
74# my $flags = $functions->{$f}[0];
75# $repl = "Perl_$repl" if $flags =~ /p/;
76# unless ($flags =~ /n/) {
77# $repl .= "pTHX";
78# $repl .= "_ " if @{$functions->{$f}} > 3;
79# }
80# warn("$ARGV:$.:$repl\n");
81# }
82# $repl;
83# }e;
84 s{(\b(\w+)[ \t]*\([ \t]*(?!aTHX))}
85 {
86 my $repl = $1;
87 my $f = $2;
88 if (exists $functions->{$f}) {
89 $repl .= "aTHX_ ";
90 warn("$ARGV:$.:$`#$repl#$'");
91 }
92 $repl;
93 }eg;
94 print;
95 close ARGV if eof; # restart $.
96 }
97 exit;
98}
99
100#munge_c_files();
101
102# generate proto.h
0cb96387 103my $wrote_protected = 0;
104
cea2e8a9 105sub write_protos {
106 my $ret = "";
107 if (@_ == 1) {
108 my $arg = shift;
0cb96387 109 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/
110 or $arg =~ /^\s*(public|protected|private):/;
cea2e8a9 111 }
112 else {
113 my ($flags,$retval,$func,@args) = @_;
114 if ($flags =~ /s/) {
115 $retval = "STATIC $retval";
116 $func = "S_$func";
117 }
0cb96387 118 else {
119 $retval = "VIRTUAL $retval";
120 if ($flags =~ /p/) {
121 $func = "Perl_$func";
122 }
cea2e8a9 123 }
124 $ret .= "$retval\t$func(";
125 unless ($flags =~ /n/) {
126 $ret .= "pTHX";
127 $ret .= "_ " if @args;
128 }
129 if (@args) {
130 $ret .= join ", ", @args;
131 }
132 else {
133 $ret .= "void" if $flags =~ /n/;
134 }
135 $ret .= ")";
136 $ret .= " __attribute__((noreturn))" if $flags =~ /r/;
137 $ret .= ";\n";
138 }
139 $ret;
140}
141
142# generates global.sym, and populates %global with global symbols
143sub write_global_sym {
144 my $ret = "";
145 if (@_ > 1) {
146 my ($flags,$retval,$func,@args) = @_;
147 unless ($flags =~ /s/) {
148 $func = "Perl_$func" if $flags =~ /p/;
149 $ret = "$func\n";
150 }
151 }
152 $ret;
153}
154
155
156walk_table(\&write_protos, 'proto.h', <<'EOT');
157/*
158 * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
159 * This file is autogenerated from data in embed.pl. Edit that file
160 * and run 'make regen_headers' to effect changes.
161 */
162
163EOT
164
165walk_table(\&write_global_sym, 'global.sym', <<'EOT');
166#
167# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
168# This file is autogenerated from data in embed.pl. Edit that file
169# and run 'make regen_headers' to effect changes.
170#
171
172EOT
173
709f4e38 174# XXX others that may need adding
175# warnhook
176# hints
177# copline
84fee439 178my @extvars = qw(sv_undef sv_yes sv_no na dowarn
179 curcop compiling
180 tainting tainted stack_base stack_sp sv_arenaroot
256a4781 181 no_modify
84fee439 182 curstash DBsub DBsingle debstash
183 rsfp
184 stdingv
6b88bc9c 185 defgv
186 errgv
3070f6ec 187 rsfp_filters
188 perldb
709f4e38 189 diehook
190 dirty
191 perl_destruct_level
84fee439 192 );
193
5f05dabc 194sub readsyms (\%$) {
195 my ($syms, $file) = @_;
5f05dabc 196 local (*FILE, $_);
197 open(FILE, "< $file")
198 or die "embed.pl: Can't open $file: $!\n";
199 while (<FILE>) {
200 s/[ \t]*#.*//; # Delete comments.
201 if (/^\s*(\S+)\s*$/) {
22c35a8c 202 my $sym = $1;
203 warn "duplicate symbol $sym while processing $file\n"
204 if exists $$syms{$sym};
205 $$syms{$sym} = 1;
5f05dabc 206 }
207 }
208 close(FILE);
209}
210
cea2e8a9 211# Perl_pp_* and Perl_ck_* are in pp.sym
212readsyms my %ppsym, 'pp.sym';
5f05dabc 213
c6af7a1a 214sub readvars(\%$$@) {
215 my ($syms, $file,$pre,$keep_pre) = @_;
d4cce5f1 216 local (*FILE, $_);
217 open(FILE, "< $file")
218 or die "embed.pl: Can't open $file: $!\n";
219 while (<FILE>) {
220 s/[ \t]*#.*//; # Delete comments.
51371543 221 if (/PERLVARA?I?C?\($pre(\w+)/) {
22c35a8c 222 my $sym = $1;
c6af7a1a 223 $sym = $pre . $sym if $keep_pre;
22c35a8c 224 warn "duplicate symbol $sym while processing $file\n"
225 if exists $$syms{$sym};
51371543 226 $$syms{$sym} = $pre || 1;
d4cce5f1 227 }
228 }
229 close(FILE);
230}
231
232my %intrp;
233my %thread;
234
235readvars %intrp, 'intrpvar.h','I';
236readvars %thread, 'thrdvar.h','T';
22239a37 237readvars %globvar, 'perlvars.h','G';
d4cce5f1 238
51371543 239foreach my $sym (sort keys %thread) {
34b58025 240 warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym};
51371543 241}
d4cce5f1 242
c6af7a1a 243sub undefine ($) {
244 my ($sym) = @_;
245 "#undef $sym\n";
246}
247
5f05dabc 248sub hide ($$) {
249 my ($from, $to) = @_;
250 my $t = int(length($from) / 8);
251 "#define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n";
252}
c6af7a1a 253
51371543 254sub objxsub_var ($$) {
255 my ($pfx, $sym) = @_;
c5be433b 256 my $arg = ($pfx eq 'G' ? 'NULL' : 'aTHXo');
257 undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))");
c6af7a1a 258}
259
3280af22 260sub embedvar ($) {
261 my ($sym) = @_;
262# hide($sym, "Perl_$sym");
263 return '';
264}
265
d4cce5f1 266sub multon ($$$) {
267 my ($sym,$pre,$ptr) = @_;
3280af22 268 hide("PL_$sym", "($ptr$pre$sym)");
5f05dabc 269}
d4cce5f1 270sub multoff ($$) {
271 my ($sym,$pre) = @_;
533c011a 272 return hide("PL_$pre$sym", "PL_$sym");
5f05dabc 273}
274
275unlink 'embed.h';
cea2e8a9 276open(EM, '> embed.h') or die "Can't create embed.h: $!\n";
e50aee73 277
278print EM <<'END';
76b72cf1 279/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
cea2e8a9 280 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
c6af7a1a 281 perlvars.h and thrdvar.h. Any changes made here will be lost!
76b72cf1 282*/
e50aee73 283
284/* (Doing namespace management portably in C is really gross.) */
285
22c35a8c 286/* NO_EMBED is no longer supported. i.e. EMBED is always active. */
820c3be9 287
22c35a8c 288/* Hide global symbols */
5f05dabc 289
22c35a8c 290#if !defined(PERL_OBJECT)
cea2e8a9 291#if !defined(PERL_IMPLICIT_CONTEXT)
e50aee73 292
e50aee73 293END
294
cea2e8a9 295walk_table {
296 my $ret = "";
297 if (@_ == 1) {
298 my $arg = shift;
299 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
300 }
301 else {
302 my ($flags,$retval,$func,@args) = @_;
303 unless ($flags =~ /o/) {
304 if ($flags =~ /s/) {
305 $ret .= hide($func,"S_$func");
306 }
307 elsif ($flags =~ /p/) {
308 $ret .= hide($func,"Perl_$func");
309 }
310 }
311 }
312 $ret;
313} \*EM;
314
315for $sym (sort keys %ppsym) {
316 $sym =~ s/^Perl_//;
317 print EM hide($sym, "Perl_$sym");
318}
319
320print EM <<'END';
321
322#else /* PERL_IMPLICIT_CONTEXT */
323
324END
325
326my @az = ('a'..'z');
327
328walk_table {
329 my $ret = "";
330 if (@_ == 1) {
331 my $arg = shift;
332 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
333 }
334 else {
335 my ($flags,$retval,$func,@args) = @_;
336 unless ($flags =~ /o/) {
337 my $args = scalar @args;
338 if ($args and $args[$args-1] =~ /\.\.\./) {
339 # we're out of luck for varargs functions under CPP
340 }
341 elsif ($flags =~ /n/) {
342 if ($flags =~ /s/) {
343 $ret .= hide($func,"S_$func");
344 }
345 elsif ($flags =~ /p/) {
346 $ret .= hide($func,"Perl_$func");
347 }
348 }
349 else {
350 my $alist = join(",", @az[0..$args-1]);
351 $ret = "#define $func($alist)";
352 my $t = int(length($ret) / 8);
353 $ret .= "\t" x ($t < 4 ? 4 - $t : 1);
354 if ($flags =~ /s/) {
355 $ret .= "S_$func(aTHX";
356 }
357 elsif ($flags =~ /p/) {
358 $ret .= "Perl_$func(aTHX";
359 }
360 $ret .= "_ " if $alist;
361 $ret .= $alist . ")\n";
362 }
363 }
364 }
365 $ret;
366} \*EM;
367
368for $sym (sort keys %ppsym) {
369 $sym =~ s/^Perl_//;
370 if ($sym =~ /^ck_/) {
371 print EM hide("$sym(a)", "Perl_$sym(aTHX_ a)");
372 }
373 elsif ($sym =~ /^pp_/) {
374 print EM hide("$sym()", "Perl_$sym(aTHX)");
375 }
376 else {
377 warn "Illegal symbol '$sym' in pp.sym";
378 }
e50aee73 379}
380
e50aee73 381print EM <<'END';
382
cea2e8a9 383#endif /* PERL_IMPLICIT_CONTEXT */
22c35a8c 384#else /* PERL_OBJECT */
385
386END
387
cea2e8a9 388walk_table {
389 my $ret = "";
390 if (@_ == 1) {
391 my $arg = shift;
392 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
393 }
394 else {
395 my ($flags,$retval,$func,@args) = @_;
0cb96387 396 if ($flags =~ /s/) {
397 $ret .= hide("S_$func","CPerlObj::S_$func");
398 $ret .= hide($func,"S_$func");
399 }
400 elsif ($flags =~ /p/) {
401 $ret .= hide("Perl_$func","CPerlObj::Perl_$func");
402 $ret .= hide($func,"Perl_$func");
403 }
404 else {
405 $ret .= hide($func,"CPerlObj::$func");
cea2e8a9 406 }
407 }
408 $ret;
409} \*EM;
410
411for $sym (sort keys %ppsym) {
412 $sym =~ s/^Perl_//;
0cb96387 413 print EM hide("Perl_$sym", "CPerlObj::Perl_$sym");
414 print EM hide($sym, "Perl_$sym");
22c35a8c 415}
416
417print EM <<'END';
418
419#endif /* PERL_OBJECT */
e50aee73 420
cea2e8a9 421/* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to
422 disable them.
423 */
424
425#if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT)
426
427# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,(IV)ptr)
428# define sv_setptrref(rv,ptr) sv_setref_iv(rv,Nullch,(IV)ptr)
429
430
431/* Compatibility for various misnamed functions. All functions
432 in the API that begin with "perl_" (not "Perl_") take an explicit
433 interpreter context pointer.
434 The following are not like that, but since they had a "perl_"
435 prefix in previous versions, we provide compatibility macros.
436 */
437# define perl_atexit call_atexit
438# define perl_call_argv call_argv
439# define perl_call_pv call_pv
440# define perl_call_method call_method
441# define perl_call_sv call_sv
442# define perl_eval_sv eval_sv
443# define perl_eval_pv eval_pv
444# define perl_require_pv require_pv
445# define perl_get_sv get_sv
446# define perl_get_av get_av
447# define perl_get_hv get_hv
448# define perl_get_cv get_cv
449# define perl_init_i18nl10n init_i18nl10n
450# define perl_init_i18nl14n init_i18nl14n
451# define perl_new_ctype new_ctype
452# define perl_new_collate new_collate
453# define perl_new_numeric new_numeric
454
455/* varargs functions can't be handled with CPP macros. :-(
456 This provides a set of compatibility functions that don't take
457 an extra argument but grab the context pointer using the macro
458 dTHX.
459 */
c5be433b 460#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_OBJECT)
cea2e8a9 461# define croak Perl_croak_nocontext
c5be433b 462# define deb Perl_deb_nocontext
cea2e8a9 463# define die Perl_die_nocontext
464# define form Perl_form_nocontext
465# define newSVpvf Perl_newSVpvf_nocontext
466# define sv_catpvf Perl_sv_catpvf_nocontext
467# define sv_setpvf Perl_sv_setpvf_nocontext
468# define warn Perl_warn_nocontext
c5be433b 469# define warner Perl_warner_nocontext
cea2e8a9 470# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext
471# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext
472#endif
473
474#endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */
475
476#if !defined(PERL_IMPLICIT_CONTEXT)
477/* undefined symbols, point them back at the usual ones */
478# define Perl_croak_nocontext Perl_croak
479# define Perl_die_nocontext Perl_die
c5be433b 480# define Perl_deb_nocontext Perl_deb
cea2e8a9 481# define Perl_form_nocontext Perl_form
c5be433b 482# define Perl_newSVpvf_nocontext Perl_newSVpvf
483# define Perl_sv_catpvf_nocontext Perl_sv_catpvf
484# define Perl_sv_setpvf_nocontext Perl_sv_setpvf
cea2e8a9 485# define Perl_warn_nocontext Perl_warn
c5be433b 486# define Perl_warner_nocontext Perl_warner
cea2e8a9 487# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg
488# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg
489#endif
db5cf5a9 490
d4cce5f1 491END
492
493close(EM);
494
495unlink 'embedvar.h';
496open(EM, '> embedvar.h')
497 or die "Can't create embedvar.h: $!\n";
498
499print EM <<'END';
500/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
cea2e8a9 501 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
c6af7a1a 502 perlvars.h and thrdvar.h. Any changes made here will be lost!
d4cce5f1 503*/
504
505/* (Doing namespace management portably in C is really gross.) */
506
5f05dabc 507/* Put interpreter-specific symbols into a struct? */
e50aee73 508
509#ifdef MULTIPLICITY
510
d4cce5f1 511#ifndef USE_THREADS
512/* If we do not have threads then per-thread vars are per-interpreter */
513
cea2e8a9 514#ifdef PERL_IMPLICIT_CONTEXT
515
516/* everything has an implicit context pointer */
517
518END
519
520for $sym (sort keys %thread) {
521 print EM multon($sym,'T','my_perl->');
522}
523
524print EM <<'END';
525
526#else /* !PERL_IMPLICIT_CONTEXT */
527
528/* traditional MULTIPLICITY (intepreter is in a global) */
529
e50aee73 530END
531
cea2e8a9 532
d4cce5f1 533for $sym (sort keys %thread) {
c5be433b 534 print EM multon($sym,'T','PERL_GET_INTERP->');
d4cce5f1 535}
536
537print EM <<'END';
538
cea2e8a9 539#endif /* !PERL_IMPLICIT_CONTEXT */
d4cce5f1 540#endif /* !USE_THREADS */
541
542/* These are always per-interpreter if there is more than one */
543
544END
545
546for $sym (sort keys %intrp) {
c5be433b 547 print EM multon($sym,'I','PERL_GET_INTERP->');
760ac839 548}
760ac839 549
55497cff 550print EM <<'END';
551
5f05dabc 552#else /* !MULTIPLICITY */
55497cff 553
554END
760ac839 555
d4cce5f1 556for $sym (sort keys %intrp) {
557 print EM multoff($sym,'I');
e50aee73 558}
e50aee73 559
56d28764 560print EM <<'END';
561
d4cce5f1 562#ifndef USE_THREADS
563
564END
565
566for $sym (sort keys %thread) {
567 print EM multoff($sym,'T');
568}
569
570print EM <<'END';
571
572#endif /* USE_THREADS */
573
574/* Hide what would have been interpreter-specific symbols? */
5f05dabc 575
56d28764 576END
e50aee73 577
d4cce5f1 578for $sym (sort keys %intrp) {
3280af22 579 print EM embedvar($sym);
d4cce5f1 580}
581
582print EM <<'END';
583
584#ifndef USE_THREADS
585
586END
587
588for $sym (sort keys %thread) {
3280af22 589 print EM embedvar($sym);
5f05dabc 590}
591
592print EM <<'END';
593
d4cce5f1 594#endif /* USE_THREADS */
e50aee73 595#endif /* MULTIPLICITY */
d4cce5f1 596
597/* Now same trickey for per-thread variables */
598
599#ifdef USE_THREADS
600
601END
602
603for $sym (sort keys %thread) {
22239a37 604 print EM multon($sym,'T','thr->');
d4cce5f1 605}
606
607print EM <<'END';
608
609#endif /* USE_THREADS */
610
22239a37 611#ifdef PERL_GLOBAL_STRUCT
612
613END
614
615for $sym (sort keys %globvar) {
533c011a 616 print EM multon($sym,'G','PL_Vars.');
22239a37 617}
618
619print EM <<'END';
620
621#else /* !PERL_GLOBAL_STRUCT */
622
623END
624
625for $sym (sort keys %globvar) {
626 print EM multoff($sym,'G');
627}
628
629print EM <<'END';
630
22239a37 631END
632
633for $sym (sort keys %globvar) {
3280af22 634 print EM embedvar($sym);
22239a37 635}
636
637print EM <<'END';
638
22239a37 639#endif /* PERL_GLOBAL_STRUCT */
640
e50aee73 641END
642
84fee439 643print EM <<'END';
644
db5cf5a9 645#ifdef PERL_POLLUTE /* disabled by default in 5.006 */
84fee439 646
647END
648
649for $sym (sort @extvars) {
650 print EM hide($sym,"PL_$sym");
651}
652
653print EM <<'END';
654
db5cf5a9 655#endif /* PERL_POLLUTE */
84fee439 656END
657
658
3fe35a81 659close(EM);
c6af7a1a 660
661unlink 'objXSUB.h';
662open(OBX, '> objXSUB.h')
663 or die "Can't create objXSUB.h: $!\n";
664
665print OBX <<'EOT';
666/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
cea2e8a9 667 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
c6af7a1a 668 perlvars.h and thrdvar.h. Any changes made here will be lost!
669*/
670
671#ifndef __objXSUB_h__
672#define __objXSUB_h__
673
674/* Variables */
675
676EOT
677
51371543 678foreach my $sym (sort keys %intrp) {
679 print OBX objxsub_var('I',$sym);
680}
681
682foreach my $sym (sort keys %thread) {
683 print OBX objxsub_var('T',$sym);
684}
685
686foreach my $sym (sort keys %globvar) {
687 print OBX objxsub_var('G',$sym);
c6af7a1a 688}
689
690print OBX <<'EOT';
691
692/* Functions */
693
c5be433b 694#if defined(PERL_OBJECT)
695
696/* XXX soon to be eliminated, only a few things in PERLCORE need these now */
697
c6af7a1a 698EOT
699
cea2e8a9 700walk_table {
701 my $ret = "";
702 if (@_ == 1) {
703 my $arg = shift;
704 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
705 }
706 else {
707 my ($flags,$retval,$func,@args) = @_;
0cb96387 708 unless ($flags =~ /s/) {
cea2e8a9 709 if ($flags =~ /p/) {
0cb96387 710 $ret .= undefine("Perl_$func") . hide("Perl_$func","pPerl->Perl_$func");
711 $ret .= undefine($func) . hide($func,"Perl_$func");
712 }
713 else {
cea2e8a9 714 $ret .= undefine($func) . hide($func,"pPerl->$func");
715 }
716 }
717 }
718 $ret;
719} \*OBX;
c6af7a1a 720
cea2e8a9 721for $sym (sort keys %ppsym) {
722 $sym =~ s/^Perl_//;
0cb96387 723 print OBX undefine("Perl_$sym") . hide("Perl_$sym", "pPerl->Perl_$sym");
724 print OBX undefine($sym) . hide($sym, "Perl_$sym");
c6af7a1a 725}
726
c6af7a1a 727print OBX <<'EOT';
728
c5be433b 729#endif /* PERL_OBJECT */
c6af7a1a 730#endif /* __objXSUB_h__ */
731EOT
732
733close(OBX);
cea2e8a9 734
51371543 735unlink 'perlapi.h';
736unlink 'perlapi.c';
737open(CAPI, '> perlapi.c') or die "Can't create perlapi.c: $!\n";
738open(CAPIH, '> perlapi.h') or die "Can't create perlapi.h: $!\n";
739
740print CAPIH <<'EOT';
741/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
742 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
743 perlvars.h and thrdvar.h. Any changes made here will be lost!
744*/
745
51371543 746/* declare accessor functions for Perl variables */
747
c5be433b 748#if defined(PERL_OBJECT) || defined (PERL_CAPI)
749
750#if defined(PERL_OBJECT)
751# undef aTHXo
752# define aTHXo pPerl
753# undef aTHXo_
754# define aTHXo_ aTHXo,
755# undef _aTHXo
756# define _aTHXo ,aTHXo
757#endif /* PERL_OBJECT */
758
51371543 759START_EXTERN_C
760
761#undef PERLVAR
762#undef PERLVARA
763#undef PERLVARI
764#undef PERLVARIC
c5be433b 765#define PERLVAR(v,t) EXTERN_C t* Perl_##v##_ptr(pTHXo);
51371543 766#define PERLVARA(v,n,t) typedef t PL_##v##_t[n]; \
c5be433b 767 EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHXo);
51371543 768#define PERLVARI(v,t,i) PERLVAR(v,t)
c5be433b 769#define PERLVARIC(v,t,i) PERLVAR(v, const t)
51371543 770
771#include "thrdvar.h"
772#include "intrpvar.h"
773#include "perlvars.h"
774
775#undef PERLVAR
776#undef PERLVARA
777#undef PERLVARI
778#undef PERLVARIC
779
780END_EXTERN_C
781
c5be433b 782#endif /* PERL_OBJECT || PERL_CAPI */
51371543 783
784EOT
785
786
787print CAPI <<'EOT';
788/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
789 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
790 perlvars.h and thrdvar.h. Any changes made here will be lost!
791*/
792
793#include "EXTERN.h"
794#include "perl.h"
795#include "perlapi.h"
796
797#if defined(PERL_OBJECT)
798
799/* accessor functions for Perl variables (provides binary compatibility) */
800START_EXTERN_C
801
802#undef PERLVAR
803#undef PERLVARA
804#undef PERLVARI
805#undef PERLVARIC
c5be433b 806#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHXo) \
807 { return &(aTHXo->PL_##v); }
808#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHXo) \
809 { return &(aTHXo->PL_##v); }
51371543 810#define PERLVARI(v,t,i) PERLVAR(v,t)
c5be433b 811#define PERLVARIC(v,t,i) PERLVAR(v, const t)
51371543 812
813#include "thrdvar.h"
814#include "intrpvar.h"
c5be433b 815
816#undef PERLVAR
817#undef PERLVARA
818#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHXo) \
819 { return &(PL_##v); }
820#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHXo) \
821 { return &(PL_##v); }
51371543 822#include "perlvars.h"
823
824#undef PERLVAR
825#undef PERLVARA
826#undef PERLVARI
827#undef PERLVARIC
828
829EOT
830
c5be433b 831# functions that take va_list* for implementing vararg functions
832my %vfuncs = qw(
833 Perl_croak Perl_vcroak
834 Perl_warn Perl_vwarn
835 Perl_warner Perl_vwarner
836 Perl_die Perl_vdie
837 Perl_form Perl_vform
838 Perl_deb Perl_vdeb
839 Perl_newSVpvf Perl_vnewSVpvf
840 Perl_sv_setpvf Perl_sv_vsetpvf
841 Perl_sv_setpvf_mg Perl_sv_vsetpvf_mg
842 Perl_sv_catpvf Perl_sv_vcatpvf
843 Perl_sv_catpvf_mg Perl_sv_vcatpvf_mg
844 Perl_dump_indent Perl_dump_vindent
845 Perl_default_protect Perl_vdefault_protect
846);
847
51371543 848sub emit_func {
c5be433b 849 my ($addcontext, $rettype,$func,@args) = @_;
51371543 850 my @aargs = @args;
851 for my $a (@aargs) { $a =~ s/^.*\b(\w+)$/$1/ }
c5be433b 852 my $ctxarg = '';
853 if (not $addcontext) {
854 $ctxarg = 'pTHXo';
855 $ctxarg .= '_ ' if @args;
856 }
857 my $decl = '';
858 if ($addcontext) {
859 $decl .= " dTHXo;\n";
860 }
51371543 861 local $" = ', ';
c5be433b 862 my $return = ($rettype =~ /^\s*(void|Free_t|Signal_t)\s*$/
863 ? '' : 'return ');
864 my $emitval = '';
865 if (@args and $args[$#args] =~ /\.\.\./) {
866 pop @args;
867 pop @aargs;
868 my $retarg = '';
869 my $ctxfunc = $func;
870 $ctxfunc =~ s/_nocontext$//;
871 return $emitval unless exists $vfuncs{$ctxfunc};
872 if (length $return) {
873 $decl .= " $rettype retval;\n";
874 $retarg .= "retval = ";
875 $return = "\n ${return}retval;\n";
876 }
877 $emitval .= <<EOT
878$rettype
879$func($ctxarg@args)
51371543 880{
c5be433b 881$decl va_list args;
882 va_start(args, $aargs[$#aargs]);
883 $retarg((CPerlObj*)pPerl)->$vfuncs{$ctxfunc}(@aargs, &args);
884 va_end(args);$return
51371543 885}
886EOT
c5be433b 887 }
888 else {
889 $emitval .= <<EOT
890$rettype
891$func($ctxarg@args)
892{
893$decl $return((CPerlObj*)pPerl)->$func(@aargs);
894}
895EOT
896 }
897 $emitval;
51371543 898}
899
900# XXXX temporary hack
901for my $sym (qw(
902 perl_construct
903 perl_destruct
904 perl_free
905 perl_run
906 perl_parse
907 ))
908{
909 $skipapi_funcs{$sym}++;
910}
911
912walk_table {
913 my $ret = "";
914 if (@_ == 1) {
915 my $arg = shift;
916 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifdef|else|endif)\b/;
917 }
918 else {
919 my ($flags,$retval,$func,@args) = @_;
920 return $ret if exists $skipapi_funcs{$func};
c5be433b 921 unless ($flags =~ /s/) {
922 $ret .= "\n";
923 my $addctx = 1 if $flags =~ /n/;
924 if ($flags =~ /p/) {
925 $ret .= undefine("Perl_$func");
926 $ret .= emit_func($addctx,$retval,"Perl_$func",@args);
927 }
928 else {
929 $ret .= undefine($func);
930 $ret .= emit_func($addctx,$retval,$func,@args);
51371543 931 }
932 }
933 }
934 $ret;
935} \*CAPI;
936
937for $sym (sort keys %ppsym) {
938 $sym =~ s/^Perl_//;
939 print CAPI "\n";
940 print CAPI undefine("Perl_$sym");
941 if ($sym =~ /^ck_/) {
c5be433b 942 print CAPI emit_func(0, 'OP *',"Perl_$sym",'OP *o');
51371543 943 }
944 else { # pp_foo
c5be433b 945 print CAPI emit_func(0, 'OP *',"Perl_$sym");
51371543 946 }
947}
948
949print CAPI <<'EOT';
950
c5be433b 951#undef Perl_fprintf_nocontext
952int
953Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
954{
955 dTHXo;
956 va_list(arglist);
957 va_start(arglist, format);
958 return (*pPerl->PL_StdIO->pVprintf)(pPerl->PL_StdIO, stream, format, arglist);
959}
960
51371543 961END_EXTERN_C
962
963#endif /* PERL_OBJECT */
964EOT
965
cea2e8a9 966__END__
967
968# Lines are of the form:
969# flags|return_type|function_name|return_type|arg1|arg2|...|argN
970#
971# They may continue on multiple lines when \w| begins the next line.
972# Leading and trailing whitespace will be ignored in each component.
973#
974# flags are single letters with following meanings:
975# s static function, should have an S_ prefix in source
976# file
977# n has no implicit interpreter/thread context argument
978# p function has a Perl_ prefix
979# r function never returns
980# o has no compatibility macro (#define foo Perl_foo)
981#
982# Individual flags may be separated by whitespace.
983#
984# New global functions should be added at the end for binary compatibility
985# in some configurations.
986#
987# TODO: 1) Add a flag to mark the functions that are part of the public API.
988# 2) Add a field for documentation, so that L<perlguts/"API LISTING">
989# may be autogenerated.
990#
991
0cb96387 992#if defined(PERL_OBJECT)
993public:
994#endif
cea2e8a9 995p |SV* |amagic_call |SV* left|SV* right|int method|int dir
996p |bool |Gv_AMupdate |HV* stash
997p |OP* |append_elem |I32 optype|OP* head|OP* tail
998p |OP* |append_list |I32 optype|LISTOP* first|LISTOP* last
999p |I32 |apply |I32 type|SV** mark|SV** sp
cea2e8a9 1000p |bool |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
1001p |SV** |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
1002p |HE* |avhv_iternext |AV *ar
1003p |SV* |avhv_iterval |AV *ar|HE* entry
1004p |HV* |avhv_keys |AV *ar
1005p |void |av_clear |AV* ar
1006p |void |av_extend |AV* ar|I32 key
1007p |AV* |av_fake |I32 size|SV** svp
1008p |SV** |av_fetch |AV* ar|I32 key|I32 lval
1009p |void |av_fill |AV* ar|I32 fill
1010p |I32 |av_len |AV* ar
1011p |AV* |av_make |I32 size|SV** svp
1012p |SV* |av_pop |AV* ar
1013p |void |av_push |AV* ar|SV* val
1014p |void |av_reify |AV* ar
1015p |SV* |av_shift |AV* ar
1016p |SV** |av_store |AV* ar|I32 key|SV* val
1017p |void |av_undef |AV* ar
1018p |void |av_unshift |AV* ar|I32 num
1019p |OP* |bind_match |I32 type|OP* left|OP* pat
1020p |OP* |block_end |I32 floor|OP* seq
1021p |I32 |block_gimme
1022p |int |block_start |int full
1023p |void |boot_core_UNIVERSAL
1024p |void |call_list |I32 oldscope|AV* av_list
1025p |I32 |cando |I32 bit|I32 effective|Stat_t* statbufp
cad2e5aa 1026p |U32 |cast_ulong |NV f
1027p |I32 |cast_i32 |NV f
1028p |IV |cast_iv |NV f
1029p |UV |cast_uv |NV f
cea2e8a9 1030#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
1031p |I32 |my_chsize |int fd|Off_t length
1032#endif
1033#if defined(USE_THREADS)
1034p |MAGIC* |condpair_magic |SV *sv
1035#endif
1036p |OP* |convert |I32 optype|I32 flags|OP* o
1037pr |void |croak |const char* pat|...
c5be433b 1038pr |void |vcroak |const char* pat|va_list* args
cea2e8a9 1039#if defined(PERL_IMPLICIT_CONTEXT)
1040npr |void |croak_nocontext|const char* pat|...
1041np |OP* |die_nocontext |const char* pat|...
c5be433b 1042np |void |deb_nocontext |const char* pat|...
cea2e8a9 1043np |char* |form_nocontext |const char* pat|...
1044np |void |warn_nocontext |const char* pat|...
c5be433b 1045np |void |warner_nocontext|U32 err|const char* pat|...
cea2e8a9 1046np |SV* |newSVpvf_nocontext|const char* pat|...
1047np |void |sv_catpvf_nocontext|SV* sv|const char* pat|...
1048np |void |sv_setpvf_nocontext|SV* sv|const char* pat|...
1049np |void |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
1050np |void |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
c5be433b 1051np |int |fprintf_nocontext|PerlIO* stream|const char* fmt|...
cea2e8a9 1052#endif
1053p |void |cv_ckproto |CV* cv|GV* gv|char* p
1054p |CV* |cv_clone |CV* proto
1055p |SV* |cv_const_sv |CV* cv
1056p |SV* |op_const_sv |OP* o|CV* cv
1057p |void |cv_undef |CV* cv
1058p |void |cx_dump |PERL_CONTEXT* cs
1059p |SV* |filter_add |filter_t funcp|SV* datasv
1060p |void |filter_del |filter_t funcp
1061p |I32 |filter_read |int idx|SV* buffer|int maxlen
1062p |char** |get_op_descs
1063p |char** |get_op_names
1064p |char* |get_no_modify
1065p |U32* |get_opargs
0cb96387 1066p |PPADDR_t*|get_ppaddr
cea2e8a9 1067p |I32 |cxinc
1068p |void |deb |const char* pat|...
c5be433b 1069p |void |vdeb |const char* pat|va_list* args
cea2e8a9 1070p |void |deb_growlevel
1071p |void |debprofdump
1072p |I32 |debop |OP* o
1073p |I32 |debstack
1074p |I32 |debstackptrs
1075p |char* |delimcpy |char* to|char* toend|char* from \
1076 |char* fromend|int delim|I32* retlen
1077p |void |deprecate |char* s
1078p |OP* |die |const char* pat|...
c5be433b 1079p |OP* |vdie |const char* pat|va_list* args
cea2e8a9 1080p |OP* |die_where |char* message|STRLEN msglen
1081p |void |dounwind |I32 cxix
1082p |bool |do_aexec |SV* really|SV** mark|SV** sp
d5a9bfb0 1083p |bool |do_aexec5 |SV* really|SV** mark|SV** sp|int fd|int flag
cea2e8a9 1084p |int |do_binmode |PerlIO *fp|int iotype|int flag
1085p |void |do_chop |SV* asv|SV* sv
1086p |bool |do_close |GV* gv|bool not_implicit
1087p |bool |do_eof |GV* gv
1088p |bool |do_exec |char* cmd
1089#if !defined(WIN32)
1090p |bool |do_exec3 |char* cmd|int fd|int flag
1091#endif
1092p |void |do_execfree
1093#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
1094p |I32 |do_ipcctl |I32 optype|SV** mark|SV** sp
1095p |I32 |do_ipcget |I32 optype|SV** mark|SV** sp
1096p |I32 |do_msgrcv |SV** mark|SV** sp
1097p |I32 |do_msgsnd |SV** mark|SV** sp
1098p |I32 |do_semop |SV** mark|SV** sp
1099p |I32 |do_shmio |I32 optype|SV** mark|SV** sp
1100#endif
1101p |void |do_join |SV* sv|SV* del|SV** mark|SV** sp
1102p |OP* |do_kv
1103p |bool |do_open |GV* gv|char* name|I32 len|int as_raw \
1104 |int rawmode|int rawperm|PerlIO* supplied_fp
1105p |void |do_pipe |SV* sv|GV* rgv|GV* wgv
1106p |bool |do_print |SV* sv|PerlIO* fp
1107p |OP* |do_readline
1108p |I32 |do_chomp |SV* sv
1109p |bool |do_seek |GV* gv|Off_t pos|int whence
1110p |void |do_sprintf |SV* sv|I32 len|SV** sarg
1111p |Off_t |do_sysseek |GV* gv|Off_t pos|int whence
1112p |Off_t |do_tell |GV* gv
1113p |I32 |do_trans |SV* sv
1114p |void |do_vecset |SV* sv
1115p |void |do_vop |I32 optype|SV* sv|SV* left|SV* right
1116p |OP* |dofile |OP* term
1117p |I32 |dowantarray
1118p |void |dump_all
1119p |void |dump_eval
1120#if defined(DUMP_FDS)
1121p |void |dump_fds |char* s
1122#endif
1123p |void |dump_form |GV* gv
1124p |void |gv_dump |GV* gv
1125p |void |op_dump |OP* arg
1126p |void |pmop_dump |PMOP* pm
1127p |void |dump_packsubs |HV* stash
1128p |void |dump_sub |GV* gv
1129p |void |fbm_compile |SV* sv|U32 flags
1130p |char* |fbm_instr |unsigned char* big|unsigned char* bigend \
1131 |SV* littlesv|U32 flags
1132p |char* |find_script |char *scriptname|bool dosearch \
1133 |char **search_ext|I32 flags
1134#if defined(USE_THREADS)
1135p |PADOFFSET|find_threadsv|const char *name
1136#endif
1137p |OP* |force_list |OP* arg
1138p |OP* |fold_constants |OP* arg
1139p |char* |form |const char* pat|...
c5be433b 1140p |char* |vform |const char* pat|va_list* args
cea2e8a9 1141p |void |free_tmps
1142p |OP* |gen_constant_list|OP* o
1143#if !defined(HAS_GETENV_LEN)
1144p |char* |getenv_len |char* key|unsigned long *len
1145#endif
1146p |void |gp_free |GV* gv
1147p |GP* |gp_ref |GP* gp
1148p |GV* |gv_AVadd |GV* gv
1149p |GV* |gv_HVadd |GV* gv
1150p |GV* |gv_IOadd |GV* gv
1151p |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \
1152 |I32 method
1153p |void |gv_check |HV* stash
1154p |void |gv_efullname |SV* sv|GV* gv
1155p |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
1156p |GV* |gv_fetchfile |const char* name
1157p |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
1158 |I32 level
1159p |GV* |gv_fetchmethod |HV* stash|const char* name
1160p |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \
1161 |I32 autoload
1162p |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
1163p |void |gv_fullname |SV* sv|GV* gv
1164p |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
1165p |void |gv_init |GV* gv|HV* stash|const char* name \
1166 |STRLEN len|int multi
1167p |HV* |gv_stashpv |const char* name|I32 create
1168p |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
1169p |HV* |gv_stashsv |SV* sv|I32 create
1170p |void |hv_clear |HV* tb
1171p |void |hv_delayfree_ent|HV* hv|HE* entry
1172p |SV* |hv_delete |HV* tb|const char* key|U32 klen|I32 flags
1173p |SV* |hv_delete_ent |HV* tb|SV* key|I32 flags|U32 hash
1174p |bool |hv_exists |HV* tb|const char* key|U32 klen
1175p |bool |hv_exists_ent |HV* tb|SV* key|U32 hash
1176p |SV** |hv_fetch |HV* tb|const char* key|U32 klen|I32 lval
1177p |HE* |hv_fetch_ent |HV* tb|SV* key|I32 lval|U32 hash
1178p |void |hv_free_ent |HV* hv|HE* entry
1179p |I32 |hv_iterinit |HV* tb
1180p |char* |hv_iterkey |HE* entry|I32* retlen
1181p |SV* |hv_iterkeysv |HE* entry
1182p |HE* |hv_iternext |HV* tb
1183p |SV* |hv_iternextsv |HV* hv|char** key|I32* retlen
1184p |SV* |hv_iterval |HV* tb|HE* entry
1185p |void |hv_ksplit |HV* hv|IV newmax
1186p |void |hv_magic |HV* hv|GV* gv|int how
1187p |SV** |hv_store |HV* tb|const char* key|U32 klen|SV* val \
1188 |U32 hash
1189p |HE* |hv_store_ent |HV* tb|SV* key|SV* val|U32 hash
1190p |void |hv_undef |HV* tb
1191p |I32 |ibcmp |const char* a|const char* b|I32 len
1192p |I32 |ibcmp_locale |const char* a|const char* b|I32 len
1193p |I32 |ingroup |I32 testgid|I32 effective
1ee4443e 1194p |void |init_debugger
cea2e8a9 1195p |void |init_stacks
1196p |U32 |intro_my
1197p |char* |instr |const char* big|const char* little
f2b5be74 1198p |bool |io_close |IO* io|bool not_implicit
cea2e8a9 1199p |OP* |invert |OP* cmd
1200p |bool |is_uni_alnum |U32 c
b8c5462f 1201p |bool |is_uni_alnumc |U32 c
cea2e8a9 1202p |bool |is_uni_idfirst |U32 c
1203p |bool |is_uni_alpha |U32 c
b8c5462f 1204p |bool |is_uni_ascii |U32 c
cea2e8a9 1205p |bool |is_uni_space |U32 c
b8c5462f 1206p |bool |is_uni_cntrl |U32 c
1207p |bool |is_uni_graph |U32 c
cea2e8a9 1208p |bool |is_uni_digit |U32 c
1209p |bool |is_uni_upper |U32 c
1210p |bool |is_uni_lower |U32 c
1211p |bool |is_uni_print |U32 c
b8c5462f 1212p |bool |is_uni_punct |U32 c
1213p |bool |is_uni_xdigit |U32 c
cea2e8a9 1214p |U32 |to_uni_upper |U32 c
1215p |U32 |to_uni_title |U32 c
1216p |U32 |to_uni_lower |U32 c
1217p |bool |is_uni_alnum_lc|U32 c
b8c5462f 1218p |bool |is_uni_alnumc_lc|U32 c
cea2e8a9 1219p |bool |is_uni_idfirst_lc|U32 c
1220p |bool |is_uni_alpha_lc|U32 c
b8c5462f 1221p |bool |is_uni_ascii_lc|U32 c
cea2e8a9 1222p |bool |is_uni_space_lc|U32 c
b8c5462f 1223p |bool |is_uni_cntrl_lc|U32 c
1224p |bool |is_uni_graph_lc|U32 c
cea2e8a9 1225p |bool |is_uni_digit_lc|U32 c
1226p |bool |is_uni_upper_lc|U32 c
1227p |bool |is_uni_lower_lc|U32 c
1228p |bool |is_uni_print_lc|U32 c
b8c5462f 1229p |bool |is_uni_punct_lc|U32 c
1230p |bool |is_uni_xdigit_lc|U32 c
cea2e8a9 1231p |U32 |to_uni_upper_lc|U32 c
1232p |U32 |to_uni_title_lc|U32 c
1233p |U32 |to_uni_lower_lc|U32 c
1234p |bool |is_utf8_alnum |U8 *p
b8c5462f 1235p |bool |is_utf8_alnumc |U8 *p
cea2e8a9 1236p |bool |is_utf8_idfirst|U8 *p
1237p |bool |is_utf8_alpha |U8 *p
b8c5462f 1238p |bool |is_utf8_ascii |U8 *p
cea2e8a9 1239p |bool |is_utf8_space |U8 *p
b8c5462f 1240p |bool |is_utf8_cntrl |U8 *p
cea2e8a9 1241p |bool |is_utf8_digit |U8 *p
b8c5462f 1242p |bool |is_utf8_graph |U8 *p
cea2e8a9 1243p |bool |is_utf8_upper |U8 *p
1244p |bool |is_utf8_lower |U8 *p
1245p |bool |is_utf8_print |U8 *p
b8c5462f 1246p |bool |is_utf8_punct |U8 *p
1247p |bool |is_utf8_xdigit |U8 *p
cea2e8a9 1248p |bool |is_utf8_mark |U8 *p
1249p |OP* |jmaybe |OP* arg
1250p |I32 |keyword |char* d|I32 len
1251p |void |leave_scope |I32 base
1252p |void |lex_end
1253p |void |lex_start |SV* line
1254p |OP* |linklist |OP* o
1255p |OP* |list |OP* o
1256p |OP* |listkids |OP* o
1257p |OP* |localize |OP* arg|I32 lexical
1258p |I32 |looks_like_number|SV* sv
1259p |int |magic_clearenv |SV* sv|MAGIC* mg
1260p |int |magic_clear_all_env|SV* sv|MAGIC* mg
1261p |int |magic_clearpack|SV* sv|MAGIC* mg
1262p |int |magic_clearsig |SV* sv|MAGIC* mg
1263p |int |magic_existspack|SV* sv|MAGIC* mg
1264p |int |magic_freeregexp|SV* sv|MAGIC* mg
1265p |int |magic_get |SV* sv|MAGIC* mg
1266p |int |magic_getarylen|SV* sv|MAGIC* mg
1267p |int |magic_getdefelem|SV* sv|MAGIC* mg
1268p |int |magic_getglob |SV* sv|MAGIC* mg
1269p |int |magic_getnkeys |SV* sv|MAGIC* mg
1270p |int |magic_getpack |SV* sv|MAGIC* mg
1271p |int |magic_getpos |SV* sv|MAGIC* mg
1272p |int |magic_getsig |SV* sv|MAGIC* mg
1273p |int |magic_getsubstr|SV* sv|MAGIC* mg
1274p |int |magic_gettaint |SV* sv|MAGIC* mg
1275p |int |magic_getuvar |SV* sv|MAGIC* mg
1276p |int |magic_getvec |SV* sv|MAGIC* mg
1277p |U32 |magic_len |SV* sv|MAGIC* mg
1278#if defined(USE_THREADS)
1279p |int |magic_mutexfree|SV* sv|MAGIC* mg
1280#endif
1281p |int |magic_nextpack |SV* sv|MAGIC* mg|SV* key
1282p |U32 |magic_regdata_cnt|SV* sv|MAGIC* mg
1283p |int |magic_regdatum_get|SV* sv|MAGIC* mg
1284p |int |magic_set |SV* sv|MAGIC* mg
1285p |int |magic_setamagic|SV* sv|MAGIC* mg
1286p |int |magic_setarylen|SV* sv|MAGIC* mg
1287p |int |magic_setbm |SV* sv|MAGIC* mg
1288p |int |magic_setdbline|SV* sv|MAGIC* mg
1289#if defined(USE_LOCALE_COLLATE)
1290p |int |magic_setcollxfrm|SV* sv|MAGIC* mg
1291#endif
1292p |int |magic_setdefelem|SV* sv|MAGIC* mg
1293p |int |magic_setenv |SV* sv|MAGIC* mg
1294p |int |magic_setfm |SV* sv|MAGIC* mg
1295p |int |magic_setisa |SV* sv|MAGIC* mg
1296p |int |magic_setglob |SV* sv|MAGIC* mg
1297p |int |magic_setmglob |SV* sv|MAGIC* mg
1298p |int |magic_setnkeys |SV* sv|MAGIC* mg
1299p |int |magic_setpack |SV* sv|MAGIC* mg
1300p |int |magic_setpos |SV* sv|MAGIC* mg
1301p |int |magic_setsig |SV* sv|MAGIC* mg
1302p |int |magic_setsubstr|SV* sv|MAGIC* mg
1303p |int |magic_settaint |SV* sv|MAGIC* mg
1304p |int |magic_setuvar |SV* sv|MAGIC* mg
1305p |int |magic_setvec |SV* sv|MAGIC* mg
1306p |int |magic_set_all_env|SV* sv|MAGIC* mg
1307p |U32 |magic_sizepack |SV* sv|MAGIC* mg
1308p |int |magic_wipepack |SV* sv|MAGIC* mg
1309p |void |magicname |char* sym|char* name|I32 namlen
cea2e8a9 1310#if defined(MYMALLOC)
1311np |MEM_SIZE|malloced_size |void *p
1312#endif
1313p |void |markstack_grow
1314#if defined(USE_LOCALE_COLLATE)
1315p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen
1316#endif
1317p |SV* |mess |const char* pat|va_list* args
1318p |int |mg_clear |SV* sv
1319p |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen
1320p |MAGIC* |mg_find |SV* sv|int type
1321p |int |mg_free |SV* sv
1322p |int |mg_get |SV* sv
1323p |U32 |mg_length |SV* sv
1324p |void |mg_magical |SV* sv
1325p |int |mg_set |SV* sv
1326p |I32 |mg_size |SV* sv
1327p |OP* |mod |OP* o|I32 type
1328p |char* |moreswitches |char* s
1329p |OP* |my |OP* o
cad2e5aa 1330p |NV |my_atof |const char *s
cea2e8a9 1331#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
1332p |char* |my_bcopy |const char* from|char* to|I32 len
1333#endif
1334#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
1335p |char* |my_bzero |char* loc|I32 len
1336#endif
1337pr |void |my_exit |U32 status
1338pr |void |my_failure_exit
1339p |I32 |my_fflush_all
1340p |I32 |my_lstat
1341#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
1342p |I32 |my_memcmp |const char* s1|const char* s2|I32 len
1343#endif
1344#if !defined(HAS_MEMSET)
1345p |void* |my_memset |char* loc|I32 ch|I32 len
1346#endif
1347#if !defined(PERL_OBJECT)
1348p |I32 |my_pclose |PerlIO* ptr
1349p |PerlIO*|my_popen |char* cmd|char* mode
1350#endif
1351p |void |my_setenv |char* nam|char* val
1352p |I32 |my_stat
1353#if defined(MYSWAP)
1354p |short |my_swap |short s
1355p |long |my_htonl |long l
1356p |long |my_ntohl |long l
1357#endif
1358p |void |my_unexec
1359p |OP* |newANONLIST |OP* o
1360p |OP* |newANONHASH |OP* o
1361p |OP* |newANONSUB |I32 floor|OP* proto|OP* block
1362p |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right
1363p |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop
1364p |void |newCONSTSUB |HV* stash|char* name|SV* sv
1365p |void |newFORM |I32 floor|OP* o|OP* block
1366p |OP* |newFOROP |I32 flags|char* label|line_t forline \
1367 |OP* sclr|OP* expr|OP*block|OP*cont
1368p |OP* |newLOGOP |I32 optype|I32 flags|OP* left|OP* right
1369p |OP* |newLOOPEX |I32 type|OP* label
1370p |OP* |newLOOPOP |I32 flags|I32 debuggable|OP* expr|OP* block
1371p |OP* |newNULLLIST
1372p |OP* |newOP |I32 optype|I32 flags
1373p |void |newPROG |OP* o
1374p |OP* |newRANGE |I32 flags|OP* left|OP* right
1375p |OP* |newSLICEOP |I32 flags|OP* subscript|OP* listop
1376p |OP* |newSTATEOP |I32 flags|char* label|OP* o
1377p |CV* |newSUB |I32 floor|OP* o|OP* proto|OP* block
1378p |CV* |newXS |char* name|XSUBADDR_t f|char* filename
1379p |AV* |newAV
1380p |OP* |newAVREF |OP* o
1381p |OP* |newBINOP |I32 type|I32 flags|OP* first|OP* last
1382p |OP* |newCVREF |I32 flags|OP* o
1383p |OP* |newGVOP |I32 type|I32 flags|GV* gv
1384p |GV* |newGVgen |char* pack
1385p |OP* |newGVREF |I32 type|OP* o
1386p |OP* |newHVREF |OP* o
1387p |HV* |newHV
1388p |HV* |newHVhv |HV* hv
1389p |IO* |newIO
1390p |OP* |newLISTOP |I32 type|I32 flags|OP* first|OP* last
1391p |OP* |newPMOP |I32 type|I32 flags
1392p |OP* |newPVOP |I32 type|I32 flags|char* pv
1393p |SV* |newRV |SV* pref
1394p |SV* |newRV_noinc |SV *sv
1395p |SV* |newSV |STRLEN len
1396p |OP* |newSVREF |OP* o
1397p |OP* |newSVOP |I32 type|I32 flags|SV* sv
1398p |SV* |newSViv |IV i
cad2e5aa 1399p |SV* |newSVnv |NV n
cea2e8a9 1400p |SV* |newSVpv |const char* s|STRLEN len
1401p |SV* |newSVpvn |const char* s|STRLEN len
1402p |SV* |newSVpvf |const char* pat|...
c5be433b 1403p |SV* |vnewSVpvf |const char* pat|va_list* args
cea2e8a9 1404p |SV* |newSVrv |SV* rv|const char* classname
1405p |SV* |newSVsv |SV* old
1406p |OP* |newUNOP |I32 type|I32 flags|OP* first
1407p |OP* |newWHILEOP |I32 flags|I32 debuggable|LOOP* loop \
1408 |I32 whileline|OP* expr|OP* block|OP* cont
c5be433b 1409
cea2e8a9 1410p |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
1411p |PerlIO*|nextargv |GV* gv
1412p |char* |ninstr |const char* big|const char* bigend \
1413 |const char* little|const char* lend
1414p |OP* |oopsCV |OP* o
1415p |void |op_free |OP* arg
1416p |void |package |OP* o
1417p |PADOFFSET|pad_alloc |I32 optype|U32 tmptype
1418p |PADOFFSET|pad_allocmy |char* name
1419p |PADOFFSET|pad_findmy |char* name
1420p |OP* |oopsAV |OP* o
1421p |OP* |oopsHV |OP* o
1422p |void |pad_leavemy |I32 fill
1423p |SV* |pad_sv |PADOFFSET po
1424p |void |pad_free |PADOFFSET po
1425p |void |pad_reset
1426p |void |pad_swipe |PADOFFSET po
1427p |void |peep |OP* o
0cb96387 1428#if defined(PERL_OBJECT)
1429no |void |perl_construct
1430no |void |perl_destruct
1431no |void |perl_free
1432no |int |perl_run
1433no |int |perl_parse |XSINIT_t xsinit \
1434 |int argc|char** argv|char** env
1435#else
cea2e8a9 1436no |PerlInterpreter* |perl_alloc
0cb96387 1437no |void |perl_construct |PerlInterpreter* sv_interp
1438no |void |perl_destruct |PerlInterpreter* sv_interp
1439no |void |perl_free |PerlInterpreter* sv_interp
1440no |int |perl_run |PerlInterpreter* sv_interp
1441no |int |perl_parse |PerlInterpreter* sv_interp|XSINIT_t xsinit \
1442 |int argc|char** argv|char** env
c5be433b 1443#if defined(USE_THREADS)
1444p |struct perl_thread* |new_struct_thread|struct perl_thread *t
1445#endif
0cb96387 1446#endif
cea2e8a9 1447p |void |call_atexit |ATEXIT_t fn|void *ptr
1448p |I32 |call_argv |const char* sub_name|I32 flags|char** argv
1449p |I32 |call_method |const char* methname|I32 flags
1450p |I32 |call_pv |const char* sub_name|I32 flags
1451p |I32 |call_sv |SV* sv|I32 flags
cea2e8a9 1452p |SV* |eval_pv |const char* p|I32 croak_on_error
1453p |I32 |eval_sv |SV* sv|I32 flags
cea2e8a9 1454p |SV* |get_sv |const char* name|I32 create
1455p |AV* |get_av |const char* name|I32 create
1456p |HV* |get_hv |const char* name|I32 create
1457p |CV* |get_cv |const char* name|I32 create
1458p |int |init_i18nl10n |int printwarn
1459p |int |init_i18nl14n |int printwarn
1460p |void |new_collate |const char* newcoll
1461p |void |new_ctype |const char* newctype
1462p |void |new_numeric |const char* newcoll
1463p |void |set_numeric_local
097ee67d 1464p |void |set_numeric_radix
cea2e8a9 1465p |void |set_numeric_standard
cea2e8a9 1466p |void |require_pv |const char* pv
cea2e8a9 1467p |void |pidgone |int pid|int status
1468p |void |pmflag |U16* pmfl|int ch
1469p |OP* |pmruntime |OP* pm|OP* expr|OP* repl
1470p |OP* |pmtrans |OP* o|OP* expr|OP* repl
1471p |OP* |pop_return
1472p |void |pop_scope
1473p |OP* |prepend_elem |I32 optype|OP* head|OP* tail
1474p |void |push_return |OP* o
1475p |void |push_scope
1476p |OP* |ref |OP* o|I32 type
1477p |OP* |refkids |OP* o|I32 type
1478p |void |regdump |regexp* r
1479p |I32 |pregexec |regexp* prog|char* stringarg \
1480 |char* strend|char* strbeg|I32 minend \
1481 |SV* screamer|U32 nosave
1482p |void |pregfree |struct regexp* r
1483p |regexp*|pregcomp |char* exp|char* xend|PMOP* pm
cad2e5aa 1484p |char* |re_intuit_start|regexp* prog|SV* sv|char* strpos \
1485 |char* strend|U32 flags \
1486 |struct re_scream_pos_data_s *data
1487p |SV* |re_intuit_string|regexp* prog
cea2e8a9 1488p |I32 |regexec_flags |regexp* prog|char* stringarg \
1489 |char* strend|char* strbeg|I32 minend \
1490 |SV* screamer|void* data|U32 flags
1491p |regnode*|regnext |regnode* p
1492p |void |regprop |SV* sv|regnode* o
1493p |void |repeatcpy |char* to|const char* from|I32 len|I32 count
1494p |char* |rninstr |const char* big|const char* bigend \
1495 |const char* little|const char* lend
1496p |Sighandler_t|rsignal |int i|Sighandler_t t
1497p |int |rsignal_restore|int i|Sigsave_t* t
1498p |int |rsignal_save |int i|Sighandler_t t1|Sigsave_t* t2
1499p |Sighandler_t|rsignal_state|int i
1500p |void |rxres_free |void** rsp
1501p |void |rxres_restore |void** rsp|REGEXP* prx
1502p |void |rxres_save |void** rsp|REGEXP* prx
1503#if !defined(HAS_RENAME)
1504p |I32 |same_dirent |char* a|char* b
1505#endif
1506p |char* |savepv |const char* sv
1507p |char* |savepvn |const char* sv|I32 len
1508p |void |savestack_grow
1509p |void |save_aelem |AV* av|I32 idx|SV **sptr
1510p |I32 |save_alloc |I32 size|I32 pad
1511p |void |save_aptr |AV** aptr
1512p |AV* |save_ary |GV* gv
1513p |void |save_clearsv |SV** svp
1514p |void |save_delete |HV* hv|char* key|I32 klen
1515p |void |save_destructor|DESTRUCTORFUNC_t f|void* p
1516p |void |save_freesv |SV* sv
1517p |void |save_freeop |OP* o
1518p |void |save_freepv |char* pv
1519p |void |save_generic_svref|SV** sptr
1520p |void |save_gp |GV* gv|I32 empty
1521p |HV* |save_hash |GV* gv
1522p |void |save_helem |HV* hv|SV *key|SV **sptr
1523p |void |save_hints
1524p |void |save_hptr |HV** hptr
1525p |void |save_I16 |I16* intp
1526p |void |save_I32 |I32* intp
1527p |void |save_int |int* intp
1528p |void |save_item |SV* item
1529p |void |save_iv |IV* iv
1530p |void |save_list |SV** sarg|I32 maxsarg
1531p |void |save_long |long* longp
1532p |void |save_nogv |GV* gv
1533p |void |save_op
1534p |SV* |save_scalar |GV* gv
1535p |void |save_pptr |char** pptr
1536p |void |save_re_context
1537p |void |save_sptr |SV** sptr
1538p |SV* |save_svref |SV** sptr
1539p |SV** |save_threadsv |PADOFFSET i
1540p |OP* |sawparens |OP* o
1541p |OP* |scalar |OP* o
1542p |OP* |scalarkids |OP* o
1543p |OP* |scalarseq |OP* o
1544p |OP* |scalarvoid |OP* o
1545p |UV |scan_bin |char* start|I32 len|I32* retlen
1546p |UV |scan_hex |char* start|I32 len|I32* retlen
1547p |char* |scan_num |char* s
1548p |UV |scan_oct |char* start|I32 len|I32* retlen
1549p |OP* |scope |OP* o
1550p |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \
1551 |I32 end_shift|I32 *state|I32 last
1552#if !defined(VMS)
1553p |I32 |setenv_getix |char* nam
1554#endif
1555p |void |setdefout |GV* gv
1556p |char* |sharepvn |const char* sv|I32 len|U32 hash
1557p |HEK* |share_hek |const char* sv|I32 len|U32 hash
1558np |Signal_t |sighandler |int sig
1559p |SV** |stack_grow |SV** sp|SV**p|int n
1560p |I32 |start_subparse |I32 is_format|U32 flags
1561p |void |sub_crush_depth|CV* cv
1562p |bool |sv_2bool |SV* sv
1563p |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref
1564p |IO* |sv_2io |SV* sv
1565p |IV |sv_2iv |SV* sv
1566p |SV* |sv_2mortal |SV* sv
cad2e5aa 1567p |NV |sv_2nv |SV* sv
cea2e8a9 1568p |char* |sv_2pv |SV* sv|STRLEN* lp
1569p |UV |sv_2uv |SV* sv
1570p |IV |sv_iv |SV* sv
1571p |UV |sv_uv |SV* sv
cad2e5aa 1572p |NV |sv_nv |SV* sv
cea2e8a9 1573p |char* |sv_pvn |SV *sv|STRLEN *len
1574p |I32 |sv_true |SV *sv
1575p |void |sv_add_arena |char* ptr|U32 size|U32 flags
1576p |int |sv_backoff |SV* sv
1577p |SV* |sv_bless |SV* sv|HV* stash
1578p |void |sv_catpvf |SV* sv|const char* pat|...
c5be433b 1579p |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
cea2e8a9 1580p |void |sv_catpv |SV* sv|const char* ptr
1581p |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
1582p |void |sv_catsv |SV* dsv|SV* ssv
1583p |void |sv_chop |SV* sv|char* ptr
1584p |void |sv_clean_all
1585p |void |sv_clean_objs
1586p |void |sv_clear |SV* sv
1587p |I32 |sv_cmp |SV* sv1|SV* sv2
1588p |I32 |sv_cmp_locale |SV* sv1|SV* sv2
1589#if defined(USE_LOCALE_COLLATE)
1590p |char* |sv_collxfrm |SV* sv|STRLEN* nxp
1591#endif
1592p |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
1593p |void |sv_dec |SV* sv
1594p |void |sv_dump |SV* sv
1595p |bool |sv_derived_from|SV* sv|const char* name
1596p |I32 |sv_eq |SV* sv1|SV* sv2
1597p |void |sv_free |SV* sv
1598p |void |sv_free_arenas
1599p |char* |sv_gets |SV* sv|PerlIO* fp|I32 append
1600p |char* |sv_grow |SV* sv|STRLEN newlen
1601p |void |sv_inc |SV* sv
1602p |void |sv_insert |SV* bigsv|STRLEN offset|STRLEN len \
1603 |char* little|STRLEN littlelen
1604p |int |sv_isa |SV* sv|const char* name
1605p |int |sv_isobject |SV* sv
1606p |STRLEN |sv_len |SV* sv
1607p |STRLEN |sv_len_utf8 |SV* sv
1608p |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
1609 |I32 namlen
1610p |SV* |sv_mortalcopy |SV* oldsv
1611p |SV* |sv_newmortal
1612p |SV* |sv_newref |SV* sv
1613p |char* |sv_peek |SV* sv
1614p |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp
1615p |void |sv_pos_b2u |SV* sv|I32* offsetp
1616p |char* |sv_pvn_force |SV* sv|STRLEN* lp
1617p |char* |sv_reftype |SV* sv|int ob
1618p |void |sv_replace |SV* sv|SV* nsv
1619p |void |sv_report_used
1620p |void |sv_reset |char* s|HV* stash
1621p |void |sv_setpvf |SV* sv|const char* pat|...
c5be433b 1622p |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
cea2e8a9 1623p |void |sv_setiv |SV* sv|IV num
1624p |void |sv_setpviv |SV* sv|IV num
1625p |void |sv_setuv |SV* sv|UV num
cad2e5aa 1626p |void |sv_setnv |SV* sv|NV num
cea2e8a9 1627p |SV* |sv_setref_iv |SV* rv|const char* classname|IV iv
cad2e5aa 1628p |SV* |sv_setref_nv |SV* rv|const char* classname|NV nv
cea2e8a9 1629p |SV* |sv_setref_pv |SV* rv|const char* classname|void* pv
1630p |SV* |sv_setref_pvn |SV* rv|const char* classname|char* pv \
1631 |STRLEN n
1632p |void |sv_setpv |SV* sv|const char* ptr
1633p |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len
1634p |void |sv_setsv |SV* dsv|SV* ssv
1635p |void |sv_taint |SV* sv
1636p |bool |sv_tainted |SV* sv
1637p |int |sv_unmagic |SV* sv|int type
1638p |void |sv_unref |SV* sv
1639p |void |sv_untaint |SV* sv
1640p |bool |sv_upgrade |SV* sv|U32 mt
1641p |void |sv_usepvn |SV* sv|char* ptr|STRLEN len
1642p |void |sv_vcatpvfn |SV* sv|const char* pat|STRLEN patlen \
1643 |va_list* args|SV** svargs|I32 svmax \
1644 |bool *used_locale
1645p |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \
1646 |va_list* args|SV** svargs|I32 svmax \
1647 |bool *used_locale
1648p |SV* |swash_init |char* pkg|char* name|SV* listsv \
1649 |I32 minbits|I32 none
1650p |UV |swash_fetch |SV *sv|U8 *ptr
1651p |void |taint_env
1652p |void |taint_proper |const char* f|char* s
1653p |UV |to_utf8_lower |U8 *p
1654p |UV |to_utf8_upper |U8 *p
1655p |UV |to_utf8_title |U8 *p
1656#if defined(UNLINK_ALL_VERSIONS)
1657p |I32 |unlnk |char* f
1658#endif
1659#if defined(USE_THREADS)
1660p |void |unlock_condpair|void* svv
1661#endif
1662p |void |unsharepvn |const char* sv|I32 len|U32 hash
1663p |void |unshare_hek |HEK* hek
1664p |void |utilize |int aver|I32 floor|OP* version|OP* id|OP* arg
1665p |U8* |utf16_to_utf8 |U16* p|U8 *d|I32 bytelen
1666p |U8* |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
1667p |I32 |utf8_distance |U8 *a|U8 *b
1668p |U8* |utf8_hop |U8 *s|I32 off
1669p |UV |utf8_to_uv |U8 *s|I32* retlen
1670p |U8* |uv_to_utf8 |U8 *d|UV uv
1671p |void |vivify_defelem |SV* sv
1672p |void |vivify_ref |SV* sv|U32 to_what
1673p |I32 |wait4pid |int pid|int* statusp|int flags
1674p |void |warn |const char* pat|...
c5be433b 1675p |void |vwarn |const char* pat|va_list* args
cea2e8a9 1676p |void |warner |U32 err|const char* pat|...
c5be433b 1677p |void |vwarner |U32 err|const char* pat|va_list* args
cea2e8a9 1678p |void |watch |char** addr
1679p |I32 |whichsig |char* sig
1680p |int |yyerror |char* s
1681#if defined(USE_PURE_BISON)
1682p |int |yylex |YYSTYPE *lvalp|int *lcharp
1683#else
1684p |int |yylex
1685#endif
1686p |int |yyparse
1687p |int |yywarn |char* s
1688#if defined(MYMALLOC)
1689p |void |dump_mstats |char* s
1690pno |Malloc_t|malloc |MEM_SIZE nbytes
1691pno |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size
1692pno |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes
1693pno |Free_t |mfree |Malloc_t where
1694#endif
4f63d024 1695pn |Malloc_t|safesysmalloc |MEM_SIZE nbytes
1696pn |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
1697pn |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
1698pn |Free_t |safesysfree |Malloc_t where
cea2e8a9 1699#if defined(LEAKTEST)
4f63d024 1700pn |Malloc_t|safexmalloc |I32 x|MEM_SIZE size
1701pn |Malloc_t|safexcalloc |I32 x|MEM_SIZE elements|MEM_SIZE size
1702pn |Malloc_t|safexrealloc |Malloc_t where|MEM_SIZE size
1703pn |void |safexfree |Malloc_t where
cea2e8a9 1704#endif
1705#if defined(PERL_GLOBAL_STRUCT)
1706p |struct perl_vars *|GetVars
1707#endif
cea2e8a9 1708p |int |runops_standard
1709p |int |runops_debug
cea2e8a9 1710p |void |sv_catpvf_mg |SV *sv|const char* pat|...
c5be433b 1711p |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
cea2e8a9 1712p |void |sv_catpv_mg |SV *sv|const char *ptr
1713p |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
1714p |void |sv_catsv_mg |SV *dstr|SV *sstr
1715p |void |sv_setpvf_mg |SV *sv|const char* pat|...
c5be433b 1716p |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
cea2e8a9 1717p |void |sv_setiv_mg |SV *sv|IV i
1718p |void |sv_setpviv_mg |SV *sv|IV iv
1719p |void |sv_setuv_mg |SV *sv|UV u
cad2e5aa 1720p |void |sv_setnv_mg |SV *sv|NV num
cea2e8a9 1721p |void |sv_setpv_mg |SV *sv|const char *ptr
1722p |void |sv_setpvn_mg |SV *sv|const char *ptr|STRLEN len
1723p |void |sv_setsv_mg |SV *dstr|SV *sstr
1724p |void |sv_usepvn_mg |SV *sv|char *ptr|STRLEN len
1725p |MGVTBL*|get_vtbl |int vtbl_id
1726p |char* |pv_display |SV *sv|char *pv|STRLEN cur|STRLEN len \
1727 |STRLEN pvlim
1728p |void |dump_indent |I32 level|PerlIO *file|const char* pat|...
c5be433b 1729p |void |dump_vindent |I32 level|PerlIO *file|const char* pat \
1730 |va_list *args
cea2e8a9 1731p |void |do_gv_dump |I32 level|PerlIO *file|char *name|GV *sv
1732p |void |do_gvgv_dump |I32 level|PerlIO *file|char *name|GV *sv
1733p |void |do_hv_dump |I32 level|PerlIO *file|char *name|HV *sv
1734p |void |do_magic_dump |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
1735 |I32 maxnest|bool dumpops|STRLEN pvlim
1736p |void |do_op_dump |I32 level|PerlIO *file|OP *o
1737p |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm
1738p |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
1739 |I32 maxnest|bool dumpops|STRLEN pvlim
1740p |void |magic_dump |MAGIC *mg
1741p |void* |default_protect|int *excpt|protect_body_t body|...
c5be433b 1742p |void* |vdefault_protect|int *excpt|protect_body_t body|va_list *args
cea2e8a9 1743p |void |reginitcolors
1744p |char* |sv_2pv_nolen |SV* sv
1745p |char* |sv_pv |SV *sv
1746p |void |sv_force_normal|SV *sv
1747p |void |tmps_grow |I32 n
1748p |SV* |sv_rvweaken |SV *sv
1749p |int |magic_killbackrefs|SV *sv|MAGIC *mg
1750
0cb96387 1751#if defined(PERL_OBJECT)
1752protected:
1753#endif
1754#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1755s |I32 |avhv_index_sv |SV* sv
1756#endif
1757
0cb96387 1758#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1759s |I32 |do_trans_CC_simple |SV *sv
1760s |I32 |do_trans_CC_count |SV *sv
1761s |I32 |do_trans_CC_complex |SV *sv
1762s |I32 |do_trans_UU_simple |SV *sv
1763s |I32 |do_trans_UU_count |SV *sv
1764s |I32 |do_trans_UU_complex |SV *sv
1765s |I32 |do_trans_UC_simple |SV *sv
1766s |I32 |do_trans_CU_simple |SV *sv
1767s |I32 |do_trans_UC_trivial |SV *sv
1768s |I32 |do_trans_CU_trivial |SV *sv
1769#endif
1770
0cb96387 1771#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1772s |void |gv_init_sv |GV *gv|I32 sv_type
1773#endif
1774
0cb96387 1775#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1776s |void |hsplit |HV *hv
1777s |void |hfreeentries |HV *hv
1778s |void |more_he
1779s |HE* |new_he
1780s |void |del_he |HE *p
1781s |HEK* |save_hek |const char *str|I32 len|U32 hash
1782s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
1783#endif
1784
0cb96387 1785#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
cea2e8a9 1786s |void |save_magic |I32 mgs_ix|SV *sv
1787s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth
1788s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
1789 |int n|SV *val
cea2e8a9 1790#endif
1791
0cb96387 1792#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1793s |I32 |list_assignment|OP *o
1794s |void |bad_type |I32 n|char *t|char *name|OP *kid
3eb57f73 1795s |void |cop_free |COP *cop
cea2e8a9 1796s |OP* |modkids |OP *o|I32 type
1797s |void |no_bareword_allowed|OP *o
1798s |OP* |no_fh_allowed |OP *o
1799s |OP* |scalarboolean |OP *o
1800s |OP* |too_few_arguments|OP *o|char* name
1801s |OP* |too_many_arguments|OP *o|char* name
acb36ea4 1802s |void |op_clear |OP* o
cea2e8a9 1803s |void |null |OP* o
1804s |PADOFFSET|pad_findlex |char* name|PADOFFSET newoff|U32 seq \
1805 |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
1806s |OP* |newDEFSVOP
1807s |OP* |new_logop |I32 type|I32 flags|OP **firstp|OP **otherp
1808s |void |simplify_sort |OP *o
1809s |bool |is_handle_constructor |OP *o|I32 argnum
1810s |char* |gv_ename |GV *gv
1811s |CV* |cv_clone2 |CV *proto|CV *outside
1812s |bool |scalar_mod_type|OP *o|I32 type
1813# if defined(PL_OP_SLAB_ALLOC)
1814s |void* |Slab_Alloc |int m|size_t sz
1815# endif
1816#endif
1817
0cb96387 1818#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
cea2e8a9 1819s |void |find_beginning
1820s |void |forbid_setid |char *
1821s |void |incpush |char *|int
1822s |void |init_interp
1823s |void |init_ids
cea2e8a9 1824s |void |init_lexer
1825s |void |init_main_stash
1826s |void |init_perllib
1827s |void |init_postdump_symbols|int|char **|char **
1828s |void |init_predump_symbols
1829rs |void |my_exit_jump
1830s |void |nuke_stacks
1831s |void |open_script |char *|bool|SV *|int *fd
1832s |void |usage |char *
1833s |void |validate_suid |char *|char*|int
cea2e8a9 1834# if defined(IAMSUID)
1835s |int |fd_on_nosuid_fs|int fd
1836# endif
1837s |void* |parse_body |va_list args
1838s |void* |run_body |va_list args
1839s |void* |call_body |va_list args
1840s |void |call_xbody |OP *myop|int is_eval
1841s |void* |call_list_body |va_list args
1842# if defined(USE_THREADS)
1843s |struct perl_thread * |init_main_thread
1844# endif
1845#endif
1846
0cb96387 1847#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1848s |void |doencodes |SV* sv|char* s|I32 len
1849s |SV* |refto |SV* sv
1850s |U32 |seed
1851s |SV* |mul128 |SV *sv|U8 m
1852s |SV* |is_an_int |char *s|STRLEN l
1853s |int |div128 |SV *pnum|bool *done
1854#endif
1855
0cb96387 1856#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
cea2e8a9 1857s |OP* |docatch |OP *o
1858s |void* |docatch_body |va_list args
1859s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit
1860s |void |doparseform |SV *sv
1861s |I32 |dopoptoeval |I32 startingblock
1862s |I32 |dopoptolabel |char *label
1863s |I32 |dopoptoloop |I32 startingblock
1864s |I32 |dopoptosub |I32 startingblock
1865s |I32 |dopoptosub_at |PERL_CONTEXT* cxstk|I32 startingblock
1866s |void |free_closures
1867s |void |save_lines |AV *array|SV *sv
1868s |OP* |doeval |int gimme|OP** startop
1869s |PerlIO *|doopen_pmc |const char *name|const char *mode
1870s |void |qsortsv |SV ** array|size_t num_elts|SVCOMPARE_t f
cea2e8a9 1871#endif
1872
0cb96387 1873#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
cea2e8a9 1874s |CV* |get_db_sub |SV **svp|CV *cv
f5d5a27c 1875s |SV* |method_common |SV* meth|U32* hashp
cea2e8a9 1876#endif
1877
0cb96387 1878#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
cea2e8a9 1879s |OP* |doform |CV *cv|GV *gv|OP *retop
1880s |int |emulate_eaccess|const char* path|int mode
1881# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
1882s |int |dooneliner |char *cmd|char *filename
1883# endif
1884#endif
1885
0cb96387 1886#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1887s |regnode*|reg |I32|I32 *
1888s |regnode*|reganode |U8|U32
1889s |regnode*|regatom |I32 *
1890s |regnode*|regbranch |I32 *|I32
1891s |void |regc |U8|char *
1892s |void |reguni |UV|char *|I32*
1893s |regnode*|regclass
1894s |regnode*|regclassutf8
1895s |I32 |regcurly |char *
1896s |regnode*|reg_node |U8
1897s |regnode*|regpiece |I32 *
1898s |void |reginsert |U8|regnode *
1899s |void |regoptail |regnode *|regnode *
1900s |void |regtail |regnode *|regnode *
1901s |char*|regwhite |char *|char *
1902s |char*|nextchar
1903s |regnode*|dumpuntil |regnode *start|regnode *node \
1904 |regnode *last|SV* sv|I32 l
1905s |void |scan_commit |scan_data_t *data
1906s |I32 |study_chunk |regnode **scanp|I32 *deltap \
1907 |regnode *last|scan_data_t *data|U32 flags
1908s |I32 |add_data |I32 n|char *s
1909rs |void|re_croak2 |const char* pat1|const char* pat2|...
b8c5462f 1910s |I32 |regpposixcc |I32 value
1911s |void |checkposixcc
cea2e8a9 1912#endif
1913
0cb96387 1914#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
cea2e8a9 1915s |I32 |regmatch |regnode *prog
1916s |I32 |regrepeat |regnode *p|I32 max
1917s |I32 |regrepeat_hard |regnode *p|I32 max|I32 *lp
1918s |I32 |regtry |regexp *prog|char *startpos
1919s |bool |reginclass |char *p|I32 c
1920s |bool |reginclassutf8 |regnode *f|U8* p
1921s |CHECKPOINT|regcppush |I32 parenfloor
1922s |char*|regcppop
1923s |char*|regcp_set_to |I32 ss
1924s |void |cache_re |regexp *prog
cea2e8a9 1925s |U8* |reghop |U8 *pos|I32 off
1926s |U8* |reghopmaybe |U8 *pos|I32 off
1927#endif
1928
0cb96387 1929#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
cea2e8a9 1930s |void |debprof |OP *o
1931#endif
1932
0cb96387 1933#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
cea2e8a9 1934s |SV* |save_scalar_at |SV **sptr
1935#endif
1936
0cb96387 1937#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1938s |IV |asIV |SV* sv
1939s |UV |asUV |SV* sv
1940s |SV* |more_sv
1941s |void |more_xiv
1942s |void |more_xnv
1943s |void |more_xpv
1944s |void |more_xrv
1945s |XPVIV* |new_xiv
1946s |XPVNV* |new_xnv
1947s |XPV* |new_xpv
1948s |XRV* |new_xrv
1949s |void |del_xiv |XPVIV* p
1950s |void |del_xnv |XPVNV* p
1951s |void |del_xpv |XPV* p
1952s |void |del_xrv |XRV* p
1953s |void |sv_unglob |SV* sv
cea2e8a9 1954s |void |not_a_number |SV *sv
1955s |void |visit |SVFUNC_t f
1956# if defined(PURIFY)
1957s |void |reg_add |SV *sv
1958s |void |reg_remove |SV *sv
1959# else
4f63d024 1960ns |void* |my_safemalloc |MEM_SIZE size
cea2e8a9 1961# endif
1962s |void |sv_add_backref |SV *tsv|SV *sv
1963s |void |sv_del_backref |SV *sv
1964# if defined(DEBUGGING)
1965s |void |del_sv |SV *p
1966# endif
1967#endif
1968
0cb96387 1969#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
cea2e8a9 1970s |void |check_uni
1971s |void |force_next |I32 type
1972s |char* |force_version |char *start
1973s |char* |force_word |char *start|int token|int check_keyword \
1974 |int allow_pack|int allow_tick
1975s |SV* |tokeq |SV *sv
1976s |char* |scan_const |char *start
1977s |char* |scan_formline |char *s
1978s |char* |scan_heredoc |char *s
1979s |char* |scan_ident |char *s|char *send|char *dest \
1980 |STRLEN destlen|I32 ck_uni
1981s |char* |scan_inputsymbol|char *start
1982s |char* |scan_pat |char *start|I32 type
1983s |char* |scan_str |char *start
1984s |char* |scan_subst |char *start
1985s |char* |scan_trans |char *start
1986s |char* |scan_word |char *s|char *dest|STRLEN destlen \
1987 |int allow_package|STRLEN *slp
1988s |char* |skipspace |char *s
1989s |void |checkcomma |char *s|char *name|char *what
1990s |void |force_ident |char *s|int kind
1991s |void |incline |char *s
1992s |int |intuit_method |char *s|GV *gv
1993s |int |intuit_more |char *s
1994s |I32 |lop |I32 f|expectation x|char *s
1995s |void |missingterm |char *s
1996s |void |no_op |char *what|char *s
1997s |void |set_csh
1998s |I32 |sublex_done
1999s |I32 |sublex_push
2000s |I32 |sublex_start
2001s |char * |filter_gets |SV *sv|PerlIO *fp|STRLEN append
2002s |SV* |new_constant |char *s|STRLEN len|char *key|SV *sv \
2003 |SV *pv|char *type
2004s |int |ao |int toketype
2005s |void |depcom
2006s |char* |incl_perldb
2007s |I32 |utf16_textfilter|int idx|SV *sv|int maxlen
2008s |I32 |utf16rev_textfilter|int idx|SV *sv|int maxlen
cea2e8a9 2009# if defined(CRIPPLED_CC)
2010s |int |uni |I32 f|char *s
2011# endif
2012# if defined(WIN32)
2013s |I32 |win32_textfilter |int idx|SV *sv|int maxlen
2014# endif
2015#endif
2016
0cb96387 2017#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
cea2e8a9 2018s |SV*|isa_lookup |HV *stash|const char *name|int len|int level
2019#endif
2020
0cb96387 2021#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
cea2e8a9 2022s |SV* |mess_alloc
cea2e8a9 2023# if defined(LEAKTEST)
2024s |void |xstat |int
2025# endif
2026#endif