change#3534 didn't preserve undef return values from caller()
[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
1000p |void |assertref |OP* o
1001p |bool |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
1002p |SV** |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
1003p |HE* |avhv_iternext |AV *ar
1004p |SV* |avhv_iterval |AV *ar|HE* entry
1005p |HV* |avhv_keys |AV *ar
1006p |void |av_clear |AV* ar
1007p |void |av_extend |AV* ar|I32 key
1008p |AV* |av_fake |I32 size|SV** svp
1009p |SV** |av_fetch |AV* ar|I32 key|I32 lval
1010p |void |av_fill |AV* ar|I32 fill
1011p |I32 |av_len |AV* ar
1012p |AV* |av_make |I32 size|SV** svp
1013p |SV* |av_pop |AV* ar
1014p |void |av_push |AV* ar|SV* val
1015p |void |av_reify |AV* ar
1016p |SV* |av_shift |AV* ar
1017p |SV** |av_store |AV* ar|I32 key|SV* val
1018p |void |av_undef |AV* ar
1019p |void |av_unshift |AV* ar|I32 num
1020p |OP* |bind_match |I32 type|OP* left|OP* pat
1021p |OP* |block_end |I32 floor|OP* seq
1022p |I32 |block_gimme
1023p |int |block_start |int full
1024p |void |boot_core_UNIVERSAL
1025p |void |call_list |I32 oldscope|AV* av_list
1026p |I32 |cando |I32 bit|I32 effective|Stat_t* statbufp
cad2e5aa 1027p |U32 |cast_ulong |NV f
1028p |I32 |cast_i32 |NV f
1029p |IV |cast_iv |NV f
1030p |UV |cast_uv |NV f
cea2e8a9 1031#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
1032p |I32 |my_chsize |int fd|Off_t length
1033#endif
1034#if defined(USE_THREADS)
1035p |MAGIC* |condpair_magic |SV *sv
1036#endif
1037p |OP* |convert |I32 optype|I32 flags|OP* o
1038pr |void |croak |const char* pat|...
c5be433b 1039pr |void |vcroak |const char* pat|va_list* args
cea2e8a9 1040#if defined(PERL_IMPLICIT_CONTEXT)
1041npr |void |croak_nocontext|const char* pat|...
1042np |OP* |die_nocontext |const char* pat|...
c5be433b 1043np |void |deb_nocontext |const char* pat|...
cea2e8a9 1044np |char* |form_nocontext |const char* pat|...
1045np |void |warn_nocontext |const char* pat|...
c5be433b 1046np |void |warner_nocontext|U32 err|const char* pat|...
cea2e8a9 1047np |SV* |newSVpvf_nocontext|const char* pat|...
1048np |void |sv_catpvf_nocontext|SV* sv|const char* pat|...
1049np |void |sv_setpvf_nocontext|SV* sv|const char* pat|...
1050np |void |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
1051np |void |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
c5be433b 1052np |int |fprintf_nocontext|PerlIO* stream|const char* fmt|...
cea2e8a9 1053#endif
1054p |void |cv_ckproto |CV* cv|GV* gv|char* p
1055p |CV* |cv_clone |CV* proto
1056p |SV* |cv_const_sv |CV* cv
1057p |SV* |op_const_sv |OP* o|CV* cv
1058p |void |cv_undef |CV* cv
1059p |void |cx_dump |PERL_CONTEXT* cs
1060p |SV* |filter_add |filter_t funcp|SV* datasv
1061p |void |filter_del |filter_t funcp
1062p |I32 |filter_read |int idx|SV* buffer|int maxlen
1063p |char** |get_op_descs
1064p |char** |get_op_names
1065p |char* |get_no_modify
1066p |U32* |get_opargs
0cb96387 1067p |PPADDR_t*|get_ppaddr
cea2e8a9 1068p |I32 |cxinc
1069p |void |deb |const char* pat|...
c5be433b 1070p |void |vdeb |const char* pat|va_list* args
cea2e8a9 1071p |void |deb_growlevel
1072p |void |debprofdump
1073p |I32 |debop |OP* o
1074p |I32 |debstack
1075p |I32 |debstackptrs
1076p |char* |delimcpy |char* to|char* toend|char* from \
1077 |char* fromend|int delim|I32* retlen
1078p |void |deprecate |char* s
1079p |OP* |die |const char* pat|...
c5be433b 1080p |OP* |vdie |const char* pat|va_list* args
cea2e8a9 1081p |OP* |die_where |char* message|STRLEN msglen
1082p |void |dounwind |I32 cxix
1083p |bool |do_aexec |SV* really|SV** mark|SV** sp
d5a9bfb0 1084p |bool |do_aexec5 |SV* really|SV** mark|SV** sp|int fd|int flag
cea2e8a9 1085p |int |do_binmode |PerlIO *fp|int iotype|int flag
1086p |void |do_chop |SV* asv|SV* sv
1087p |bool |do_close |GV* gv|bool not_implicit
1088p |bool |do_eof |GV* gv
1089p |bool |do_exec |char* cmd
1090#if !defined(WIN32)
1091p |bool |do_exec3 |char* cmd|int fd|int flag
1092#endif
1093p |void |do_execfree
1094#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
1095p |I32 |do_ipcctl |I32 optype|SV** mark|SV** sp
1096p |I32 |do_ipcget |I32 optype|SV** mark|SV** sp
1097p |I32 |do_msgrcv |SV** mark|SV** sp
1098p |I32 |do_msgsnd |SV** mark|SV** sp
1099p |I32 |do_semop |SV** mark|SV** sp
1100p |I32 |do_shmio |I32 optype|SV** mark|SV** sp
1101#endif
1102p |void |do_join |SV* sv|SV* del|SV** mark|SV** sp
1103p |OP* |do_kv
1104p |bool |do_open |GV* gv|char* name|I32 len|int as_raw \
1105 |int rawmode|int rawperm|PerlIO* supplied_fp
1106p |void |do_pipe |SV* sv|GV* rgv|GV* wgv
1107p |bool |do_print |SV* sv|PerlIO* fp
1108p |OP* |do_readline
1109p |I32 |do_chomp |SV* sv
1110p |bool |do_seek |GV* gv|Off_t pos|int whence
1111p |void |do_sprintf |SV* sv|I32 len|SV** sarg
1112p |Off_t |do_sysseek |GV* gv|Off_t pos|int whence
1113p |Off_t |do_tell |GV* gv
1114p |I32 |do_trans |SV* sv
1115p |void |do_vecset |SV* sv
1116p |void |do_vop |I32 optype|SV* sv|SV* left|SV* right
1117p |OP* |dofile |OP* term
1118p |I32 |dowantarray
1119p |void |dump_all
1120p |void |dump_eval
1121#if defined(DUMP_FDS)
1122p |void |dump_fds |char* s
1123#endif
1124p |void |dump_form |GV* gv
1125p |void |gv_dump |GV* gv
1126p |void |op_dump |OP* arg
1127p |void |pmop_dump |PMOP* pm
1128p |void |dump_packsubs |HV* stash
1129p |void |dump_sub |GV* gv
1130p |void |fbm_compile |SV* sv|U32 flags
1131p |char* |fbm_instr |unsigned char* big|unsigned char* bigend \
1132 |SV* littlesv|U32 flags
1133p |char* |find_script |char *scriptname|bool dosearch \
1134 |char **search_ext|I32 flags
1135#if defined(USE_THREADS)
1136p |PADOFFSET|find_threadsv|const char *name
1137#endif
1138p |OP* |force_list |OP* arg
1139p |OP* |fold_constants |OP* arg
1140p |char* |form |const char* pat|...
c5be433b 1141p |char* |vform |const char* pat|va_list* args
cea2e8a9 1142p |void |free_tmps
1143p |OP* |gen_constant_list|OP* o
1144#if !defined(HAS_GETENV_LEN)
1145p |char* |getenv_len |char* key|unsigned long *len
1146#endif
1147p |void |gp_free |GV* gv
1148p |GP* |gp_ref |GP* gp
1149p |GV* |gv_AVadd |GV* gv
1150p |GV* |gv_HVadd |GV* gv
1151p |GV* |gv_IOadd |GV* gv
1152p |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \
1153 |I32 method
1154p |void |gv_check |HV* stash
1155p |void |gv_efullname |SV* sv|GV* gv
1156p |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
1157p |GV* |gv_fetchfile |const char* name
1158p |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
1159 |I32 level
1160p |GV* |gv_fetchmethod |HV* stash|const char* name
1161p |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \
1162 |I32 autoload
1163p |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
1164p |void |gv_fullname |SV* sv|GV* gv
1165p |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
1166p |void |gv_init |GV* gv|HV* stash|const char* name \
1167 |STRLEN len|int multi
1168p |HV* |gv_stashpv |const char* name|I32 create
1169p |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
1170p |HV* |gv_stashsv |SV* sv|I32 create
1171p |void |hv_clear |HV* tb
1172p |void |hv_delayfree_ent|HV* hv|HE* entry
1173p |SV* |hv_delete |HV* tb|const char* key|U32 klen|I32 flags
1174p |SV* |hv_delete_ent |HV* tb|SV* key|I32 flags|U32 hash
1175p |bool |hv_exists |HV* tb|const char* key|U32 klen
1176p |bool |hv_exists_ent |HV* tb|SV* key|U32 hash
1177p |SV** |hv_fetch |HV* tb|const char* key|U32 klen|I32 lval
1178p |HE* |hv_fetch_ent |HV* tb|SV* key|I32 lval|U32 hash
1179p |void |hv_free_ent |HV* hv|HE* entry
1180p |I32 |hv_iterinit |HV* tb
1181p |char* |hv_iterkey |HE* entry|I32* retlen
1182p |SV* |hv_iterkeysv |HE* entry
1183p |HE* |hv_iternext |HV* tb
1184p |SV* |hv_iternextsv |HV* hv|char** key|I32* retlen
1185p |SV* |hv_iterval |HV* tb|HE* entry
1186p |void |hv_ksplit |HV* hv|IV newmax
1187p |void |hv_magic |HV* hv|GV* gv|int how
1188p |SV** |hv_store |HV* tb|const char* key|U32 klen|SV* val \
1189 |U32 hash
1190p |HE* |hv_store_ent |HV* tb|SV* key|SV* val|U32 hash
1191p |void |hv_undef |HV* tb
1192p |I32 |ibcmp |const char* a|const char* b|I32 len
1193p |I32 |ibcmp_locale |const char* a|const char* b|I32 len
1194p |I32 |ingroup |I32 testgid|I32 effective
1ee4443e 1195p |void |init_debugger
cea2e8a9 1196p |void |init_stacks
1197p |U32 |intro_my
1198p |char* |instr |const char* big|const char* little
1199p |bool |io_close |IO* io
1200p |OP* |invert |OP* cmd
1201p |bool |is_uni_alnum |U32 c
b8c5462f 1202p |bool |is_uni_alnumc |U32 c
cea2e8a9 1203p |bool |is_uni_idfirst |U32 c
1204p |bool |is_uni_alpha |U32 c
b8c5462f 1205p |bool |is_uni_ascii |U32 c
cea2e8a9 1206p |bool |is_uni_space |U32 c
b8c5462f 1207p |bool |is_uni_cntrl |U32 c
1208p |bool |is_uni_graph |U32 c
cea2e8a9 1209p |bool |is_uni_digit |U32 c
1210p |bool |is_uni_upper |U32 c
1211p |bool |is_uni_lower |U32 c
1212p |bool |is_uni_print |U32 c
b8c5462f 1213p |bool |is_uni_punct |U32 c
1214p |bool |is_uni_xdigit |U32 c
cea2e8a9 1215p |U32 |to_uni_upper |U32 c
1216p |U32 |to_uni_title |U32 c
1217p |U32 |to_uni_lower |U32 c
1218p |bool |is_uni_alnum_lc|U32 c
b8c5462f 1219p |bool |is_uni_alnumc_lc|U32 c
cea2e8a9 1220p |bool |is_uni_idfirst_lc|U32 c
1221p |bool |is_uni_alpha_lc|U32 c
b8c5462f 1222p |bool |is_uni_ascii_lc|U32 c
cea2e8a9 1223p |bool |is_uni_space_lc|U32 c
b8c5462f 1224p |bool |is_uni_cntrl_lc|U32 c
1225p |bool |is_uni_graph_lc|U32 c
cea2e8a9 1226p |bool |is_uni_digit_lc|U32 c
1227p |bool |is_uni_upper_lc|U32 c
1228p |bool |is_uni_lower_lc|U32 c
1229p |bool |is_uni_print_lc|U32 c
b8c5462f 1230p |bool |is_uni_punct_lc|U32 c
1231p |bool |is_uni_xdigit_lc|U32 c
cea2e8a9 1232p |U32 |to_uni_upper_lc|U32 c
1233p |U32 |to_uni_title_lc|U32 c
1234p |U32 |to_uni_lower_lc|U32 c
1235p |bool |is_utf8_alnum |U8 *p
b8c5462f 1236p |bool |is_utf8_alnumc |U8 *p
cea2e8a9 1237p |bool |is_utf8_idfirst|U8 *p
1238p |bool |is_utf8_alpha |U8 *p
b8c5462f 1239p |bool |is_utf8_ascii |U8 *p
cea2e8a9 1240p |bool |is_utf8_space |U8 *p
b8c5462f 1241p |bool |is_utf8_cntrl |U8 *p
cea2e8a9 1242p |bool |is_utf8_digit |U8 *p
b8c5462f 1243p |bool |is_utf8_graph |U8 *p
cea2e8a9 1244p |bool |is_utf8_upper |U8 *p
1245p |bool |is_utf8_lower |U8 *p
1246p |bool |is_utf8_print |U8 *p
b8c5462f 1247p |bool |is_utf8_punct |U8 *p
1248p |bool |is_utf8_xdigit |U8 *p
cea2e8a9 1249p |bool |is_utf8_mark |U8 *p
1250p |OP* |jmaybe |OP* arg
1251p |I32 |keyword |char* d|I32 len
1252p |void |leave_scope |I32 base
1253p |void |lex_end
1254p |void |lex_start |SV* line
1255p |OP* |linklist |OP* o
1256p |OP* |list |OP* o
1257p |OP* |listkids |OP* o
1258p |OP* |localize |OP* arg|I32 lexical
1259p |I32 |looks_like_number|SV* sv
1260p |int |magic_clearenv |SV* sv|MAGIC* mg
1261p |int |magic_clear_all_env|SV* sv|MAGIC* mg
1262p |int |magic_clearpack|SV* sv|MAGIC* mg
1263p |int |magic_clearsig |SV* sv|MAGIC* mg
1264p |int |magic_existspack|SV* sv|MAGIC* mg
1265p |int |magic_freeregexp|SV* sv|MAGIC* mg
1266p |int |magic_get |SV* sv|MAGIC* mg
1267p |int |magic_getarylen|SV* sv|MAGIC* mg
1268p |int |magic_getdefelem|SV* sv|MAGIC* mg
1269p |int |magic_getglob |SV* sv|MAGIC* mg
1270p |int |magic_getnkeys |SV* sv|MAGIC* mg
1271p |int |magic_getpack |SV* sv|MAGIC* mg
1272p |int |magic_getpos |SV* sv|MAGIC* mg
1273p |int |magic_getsig |SV* sv|MAGIC* mg
1274p |int |magic_getsubstr|SV* sv|MAGIC* mg
1275p |int |magic_gettaint |SV* sv|MAGIC* mg
1276p |int |magic_getuvar |SV* sv|MAGIC* mg
1277p |int |magic_getvec |SV* sv|MAGIC* mg
1278p |U32 |magic_len |SV* sv|MAGIC* mg
1279#if defined(USE_THREADS)
1280p |int |magic_mutexfree|SV* sv|MAGIC* mg
1281#endif
1282p |int |magic_nextpack |SV* sv|MAGIC* mg|SV* key
1283p |U32 |magic_regdata_cnt|SV* sv|MAGIC* mg
1284p |int |magic_regdatum_get|SV* sv|MAGIC* mg
1285p |int |magic_set |SV* sv|MAGIC* mg
1286p |int |magic_setamagic|SV* sv|MAGIC* mg
1287p |int |magic_setarylen|SV* sv|MAGIC* mg
1288p |int |magic_setbm |SV* sv|MAGIC* mg
1289p |int |magic_setdbline|SV* sv|MAGIC* mg
1290#if defined(USE_LOCALE_COLLATE)
1291p |int |magic_setcollxfrm|SV* sv|MAGIC* mg
1292#endif
1293p |int |magic_setdefelem|SV* sv|MAGIC* mg
1294p |int |magic_setenv |SV* sv|MAGIC* mg
1295p |int |magic_setfm |SV* sv|MAGIC* mg
1296p |int |magic_setisa |SV* sv|MAGIC* mg
1297p |int |magic_setglob |SV* sv|MAGIC* mg
1298p |int |magic_setmglob |SV* sv|MAGIC* mg
1299p |int |magic_setnkeys |SV* sv|MAGIC* mg
1300p |int |magic_setpack |SV* sv|MAGIC* mg
1301p |int |magic_setpos |SV* sv|MAGIC* mg
1302p |int |magic_setsig |SV* sv|MAGIC* mg
1303p |int |magic_setsubstr|SV* sv|MAGIC* mg
1304p |int |magic_settaint |SV* sv|MAGIC* mg
1305p |int |magic_setuvar |SV* sv|MAGIC* mg
1306p |int |magic_setvec |SV* sv|MAGIC* mg
1307p |int |magic_set_all_env|SV* sv|MAGIC* mg
1308p |U32 |magic_sizepack |SV* sv|MAGIC* mg
1309p |int |magic_wipepack |SV* sv|MAGIC* mg
1310p |void |magicname |char* sym|char* name|I32 namlen
cea2e8a9 1311#if defined(MYMALLOC)
1312np |MEM_SIZE|malloced_size |void *p
1313#endif
1314p |void |markstack_grow
1315#if defined(USE_LOCALE_COLLATE)
1316p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen
1317#endif
1318p |SV* |mess |const char* pat|va_list* args
1319p |int |mg_clear |SV* sv
1320p |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen
1321p |MAGIC* |mg_find |SV* sv|int type
1322p |int |mg_free |SV* sv
1323p |int |mg_get |SV* sv
1324p |U32 |mg_length |SV* sv
1325p |void |mg_magical |SV* sv
1326p |int |mg_set |SV* sv
1327p |I32 |mg_size |SV* sv
1328p |OP* |mod |OP* o|I32 type
1329p |char* |moreswitches |char* s
1330p |OP* |my |OP* o
cad2e5aa 1331p |NV |my_atof |const char *s
cea2e8a9 1332#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
1333p |char* |my_bcopy |const char* from|char* to|I32 len
1334#endif
1335#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
1336p |char* |my_bzero |char* loc|I32 len
1337#endif
1338pr |void |my_exit |U32 status
1339pr |void |my_failure_exit
1340p |I32 |my_fflush_all
1341p |I32 |my_lstat
1342#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
1343p |I32 |my_memcmp |const char* s1|const char* s2|I32 len
1344#endif
1345#if !defined(HAS_MEMSET)
1346p |void* |my_memset |char* loc|I32 ch|I32 len
1347#endif
1348#if !defined(PERL_OBJECT)
1349p |I32 |my_pclose |PerlIO* ptr
1350p |PerlIO*|my_popen |char* cmd|char* mode
1351#endif
1352p |void |my_setenv |char* nam|char* val
1353p |I32 |my_stat
1354#if defined(MYSWAP)
1355p |short |my_swap |short s
1356p |long |my_htonl |long l
1357p |long |my_ntohl |long l
1358#endif
1359p |void |my_unexec
1360p |OP* |newANONLIST |OP* o
1361p |OP* |newANONHASH |OP* o
1362p |OP* |newANONSUB |I32 floor|OP* proto|OP* block
1363p |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right
1364p |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop
1365p |void |newCONSTSUB |HV* stash|char* name|SV* sv
1366p |void |newFORM |I32 floor|OP* o|OP* block
1367p |OP* |newFOROP |I32 flags|char* label|line_t forline \
1368 |OP* sclr|OP* expr|OP*block|OP*cont
1369p |OP* |newLOGOP |I32 optype|I32 flags|OP* left|OP* right
1370p |OP* |newLOOPEX |I32 type|OP* label
1371p |OP* |newLOOPOP |I32 flags|I32 debuggable|OP* expr|OP* block
1372p |OP* |newNULLLIST
1373p |OP* |newOP |I32 optype|I32 flags
1374p |void |newPROG |OP* o
1375p |OP* |newRANGE |I32 flags|OP* left|OP* right
1376p |OP* |newSLICEOP |I32 flags|OP* subscript|OP* listop
1377p |OP* |newSTATEOP |I32 flags|char* label|OP* o
1378p |CV* |newSUB |I32 floor|OP* o|OP* proto|OP* block
1379p |CV* |newXS |char* name|XSUBADDR_t f|char* filename
1380p |AV* |newAV
1381p |OP* |newAVREF |OP* o
1382p |OP* |newBINOP |I32 type|I32 flags|OP* first|OP* last
1383p |OP* |newCVREF |I32 flags|OP* o
1384p |OP* |newGVOP |I32 type|I32 flags|GV* gv
1385p |GV* |newGVgen |char* pack
1386p |OP* |newGVREF |I32 type|OP* o
1387p |OP* |newHVREF |OP* o
1388p |HV* |newHV
1389p |HV* |newHVhv |HV* hv
1390p |IO* |newIO
1391p |OP* |newLISTOP |I32 type|I32 flags|OP* first|OP* last
1392p |OP* |newPMOP |I32 type|I32 flags
1393p |OP* |newPVOP |I32 type|I32 flags|char* pv
1394p |SV* |newRV |SV* pref
1395p |SV* |newRV_noinc |SV *sv
1396p |SV* |newSV |STRLEN len
1397p |OP* |newSVREF |OP* o
1398p |OP* |newSVOP |I32 type|I32 flags|SV* sv
1399p |SV* |newSViv |IV i
cad2e5aa 1400p |SV* |newSVnv |NV n
cea2e8a9 1401p |SV* |newSVpv |const char* s|STRLEN len
1402p |SV* |newSVpvn |const char* s|STRLEN len
1403p |SV* |newSVpvf |const char* pat|...
c5be433b 1404p |SV* |vnewSVpvf |const char* pat|va_list* args
cea2e8a9 1405p |SV* |newSVrv |SV* rv|const char* classname
1406p |SV* |newSVsv |SV* old
1407p |OP* |newUNOP |I32 type|I32 flags|OP* first
1408p |OP* |newWHILEOP |I32 flags|I32 debuggable|LOOP* loop \
1409 |I32 whileline|OP* expr|OP* block|OP* cont
c5be433b 1410
cea2e8a9 1411p |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
1412p |PerlIO*|nextargv |GV* gv
1413p |char* |ninstr |const char* big|const char* bigend \
1414 |const char* little|const char* lend
1415p |OP* |oopsCV |OP* o
1416p |void |op_free |OP* arg
1417p |void |package |OP* o
1418p |PADOFFSET|pad_alloc |I32 optype|U32 tmptype
1419p |PADOFFSET|pad_allocmy |char* name
1420p |PADOFFSET|pad_findmy |char* name
1421p |OP* |oopsAV |OP* o
1422p |OP* |oopsHV |OP* o
1423p |void |pad_leavemy |I32 fill
1424p |SV* |pad_sv |PADOFFSET po
1425p |void |pad_free |PADOFFSET po
1426p |void |pad_reset
1427p |void |pad_swipe |PADOFFSET po
1428p |void |peep |OP* o
0cb96387 1429#if defined(PERL_OBJECT)
1430no |void |perl_construct
1431no |void |perl_destruct
1432no |void |perl_free
1433no |int |perl_run
1434no |int |perl_parse |XSINIT_t xsinit \
1435 |int argc|char** argv|char** env
1436#else
cea2e8a9 1437no |PerlInterpreter* |perl_alloc
0cb96387 1438no |void |perl_construct |PerlInterpreter* sv_interp
1439no |void |perl_destruct |PerlInterpreter* sv_interp
1440no |void |perl_free |PerlInterpreter* sv_interp
1441no |int |perl_run |PerlInterpreter* sv_interp
1442no |int |perl_parse |PerlInterpreter* sv_interp|XSINIT_t xsinit \
1443 |int argc|char** argv|char** env
c5be433b 1444#if defined(USE_THREADS)
1445p |struct perl_thread* |new_struct_thread|struct perl_thread *t
1446#endif
0cb96387 1447#endif
cea2e8a9 1448p |void |call_atexit |ATEXIT_t fn|void *ptr
1449p |I32 |call_argv |const char* sub_name|I32 flags|char** argv
1450p |I32 |call_method |const char* methname|I32 flags
1451p |I32 |call_pv |const char* sub_name|I32 flags
1452p |I32 |call_sv |SV* sv|I32 flags
cea2e8a9 1453p |SV* |eval_pv |const char* p|I32 croak_on_error
1454p |I32 |eval_sv |SV* sv|I32 flags
cea2e8a9 1455p |SV* |get_sv |const char* name|I32 create
1456p |AV* |get_av |const char* name|I32 create
1457p |HV* |get_hv |const char* name|I32 create
1458p |CV* |get_cv |const char* name|I32 create
1459p |int |init_i18nl10n |int printwarn
1460p |int |init_i18nl14n |int printwarn
1461p |void |new_collate |const char* newcoll
1462p |void |new_ctype |const char* newctype
1463p |void |new_numeric |const char* newcoll
1464p |void |set_numeric_local
097ee67d 1465p |void |set_numeric_radix
cea2e8a9 1466p |void |set_numeric_standard
cea2e8a9 1467p |void |require_pv |const char* pv
cea2e8a9 1468p |void |pidgone |int pid|int status
1469p |void |pmflag |U16* pmfl|int ch
1470p |OP* |pmruntime |OP* pm|OP* expr|OP* repl
1471p |OP* |pmtrans |OP* o|OP* expr|OP* repl
1472p |OP* |pop_return
1473p |void |pop_scope
1474p |OP* |prepend_elem |I32 optype|OP* head|OP* tail
1475p |void |push_return |OP* o
1476p |void |push_scope
1477p |OP* |ref |OP* o|I32 type
1478p |OP* |refkids |OP* o|I32 type
1479p |void |regdump |regexp* r
1480p |I32 |pregexec |regexp* prog|char* stringarg \
1481 |char* strend|char* strbeg|I32 minend \
1482 |SV* screamer|U32 nosave
1483p |void |pregfree |struct regexp* r
1484p |regexp*|pregcomp |char* exp|char* xend|PMOP* pm
cad2e5aa 1485p |char* |re_intuit_start|regexp* prog|SV* sv|char* strpos \
1486 |char* strend|U32 flags \
1487 |struct re_scream_pos_data_s *data
1488p |SV* |re_intuit_string|regexp* prog
cea2e8a9 1489p |I32 |regexec_flags |regexp* prog|char* stringarg \
1490 |char* strend|char* strbeg|I32 minend \
1491 |SV* screamer|void* data|U32 flags
1492p |regnode*|regnext |regnode* p
1493p |void |regprop |SV* sv|regnode* o
1494p |void |repeatcpy |char* to|const char* from|I32 len|I32 count
1495p |char* |rninstr |const char* big|const char* bigend \
1496 |const char* little|const char* lend
1497p |Sighandler_t|rsignal |int i|Sighandler_t t
1498p |int |rsignal_restore|int i|Sigsave_t* t
1499p |int |rsignal_save |int i|Sighandler_t t1|Sigsave_t* t2
1500p |Sighandler_t|rsignal_state|int i
1501p |void |rxres_free |void** rsp
1502p |void |rxres_restore |void** rsp|REGEXP* prx
1503p |void |rxres_save |void** rsp|REGEXP* prx
1504#if !defined(HAS_RENAME)
1505p |I32 |same_dirent |char* a|char* b
1506#endif
1507p |char* |savepv |const char* sv
1508p |char* |savepvn |const char* sv|I32 len
1509p |void |savestack_grow
1510p |void |save_aelem |AV* av|I32 idx|SV **sptr
1511p |I32 |save_alloc |I32 size|I32 pad
1512p |void |save_aptr |AV** aptr
1513p |AV* |save_ary |GV* gv
1514p |void |save_clearsv |SV** svp
1515p |void |save_delete |HV* hv|char* key|I32 klen
1516p |void |save_destructor|DESTRUCTORFUNC_t f|void* p
1517p |void |save_freesv |SV* sv
1518p |void |save_freeop |OP* o
1519p |void |save_freepv |char* pv
1520p |void |save_generic_svref|SV** sptr
1521p |void |save_gp |GV* gv|I32 empty
1522p |HV* |save_hash |GV* gv
1523p |void |save_helem |HV* hv|SV *key|SV **sptr
1524p |void |save_hints
1525p |void |save_hptr |HV** hptr
1526p |void |save_I16 |I16* intp
1527p |void |save_I32 |I32* intp
1528p |void |save_int |int* intp
1529p |void |save_item |SV* item
1530p |void |save_iv |IV* iv
1531p |void |save_list |SV** sarg|I32 maxsarg
1532p |void |save_long |long* longp
1533p |void |save_nogv |GV* gv
1534p |void |save_op
1535p |SV* |save_scalar |GV* gv
1536p |void |save_pptr |char** pptr
1537p |void |save_re_context
1538p |void |save_sptr |SV** sptr
1539p |SV* |save_svref |SV** sptr
1540p |SV** |save_threadsv |PADOFFSET i
1541p |OP* |sawparens |OP* o
1542p |OP* |scalar |OP* o
1543p |OP* |scalarkids |OP* o
1544p |OP* |scalarseq |OP* o
1545p |OP* |scalarvoid |OP* o
1546p |UV |scan_bin |char* start|I32 len|I32* retlen
1547p |UV |scan_hex |char* start|I32 len|I32* retlen
1548p |char* |scan_num |char* s
1549p |UV |scan_oct |char* start|I32 len|I32* retlen
1550p |OP* |scope |OP* o
1551p |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \
1552 |I32 end_shift|I32 *state|I32 last
1553#if !defined(VMS)
1554p |I32 |setenv_getix |char* nam
1555#endif
1556p |void |setdefout |GV* gv
1557p |char* |sharepvn |const char* sv|I32 len|U32 hash
1558p |HEK* |share_hek |const char* sv|I32 len|U32 hash
1559np |Signal_t |sighandler |int sig
1560p |SV** |stack_grow |SV** sp|SV**p|int n
1561p |I32 |start_subparse |I32 is_format|U32 flags
1562p |void |sub_crush_depth|CV* cv
1563p |bool |sv_2bool |SV* sv
1564p |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref
1565p |IO* |sv_2io |SV* sv
1566p |IV |sv_2iv |SV* sv
1567p |SV* |sv_2mortal |SV* sv
cad2e5aa 1568p |NV |sv_2nv |SV* sv
cea2e8a9 1569p |char* |sv_2pv |SV* sv|STRLEN* lp
1570p |UV |sv_2uv |SV* sv
1571p |IV |sv_iv |SV* sv
1572p |UV |sv_uv |SV* sv
cad2e5aa 1573p |NV |sv_nv |SV* sv
cea2e8a9 1574p |char* |sv_pvn |SV *sv|STRLEN *len
1575p |I32 |sv_true |SV *sv
1576p |void |sv_add_arena |char* ptr|U32 size|U32 flags
1577p |int |sv_backoff |SV* sv
1578p |SV* |sv_bless |SV* sv|HV* stash
1579p |void |sv_catpvf |SV* sv|const char* pat|...
c5be433b 1580p |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
cea2e8a9 1581p |void |sv_catpv |SV* sv|const char* ptr
1582p |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
1583p |void |sv_catsv |SV* dsv|SV* ssv
1584p |void |sv_chop |SV* sv|char* ptr
1585p |void |sv_clean_all
1586p |void |sv_clean_objs
1587p |void |sv_clear |SV* sv
1588p |I32 |sv_cmp |SV* sv1|SV* sv2
1589p |I32 |sv_cmp_locale |SV* sv1|SV* sv2
1590#if defined(USE_LOCALE_COLLATE)
1591p |char* |sv_collxfrm |SV* sv|STRLEN* nxp
1592#endif
1593p |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
1594p |void |sv_dec |SV* sv
1595p |void |sv_dump |SV* sv
1596p |bool |sv_derived_from|SV* sv|const char* name
1597p |I32 |sv_eq |SV* sv1|SV* sv2
1598p |void |sv_free |SV* sv
1599p |void |sv_free_arenas
1600p |char* |sv_gets |SV* sv|PerlIO* fp|I32 append
1601p |char* |sv_grow |SV* sv|STRLEN newlen
1602p |void |sv_inc |SV* sv
1603p |void |sv_insert |SV* bigsv|STRLEN offset|STRLEN len \
1604 |char* little|STRLEN littlelen
1605p |int |sv_isa |SV* sv|const char* name
1606p |int |sv_isobject |SV* sv
1607p |STRLEN |sv_len |SV* sv
1608p |STRLEN |sv_len_utf8 |SV* sv
1609p |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
1610 |I32 namlen
1611p |SV* |sv_mortalcopy |SV* oldsv
1612p |SV* |sv_newmortal
1613p |SV* |sv_newref |SV* sv
1614p |char* |sv_peek |SV* sv
1615p |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp
1616p |void |sv_pos_b2u |SV* sv|I32* offsetp
1617p |char* |sv_pvn_force |SV* sv|STRLEN* lp
1618p |char* |sv_reftype |SV* sv|int ob
1619p |void |sv_replace |SV* sv|SV* nsv
1620p |void |sv_report_used
1621p |void |sv_reset |char* s|HV* stash
1622p |void |sv_setpvf |SV* sv|const char* pat|...
c5be433b 1623p |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
cea2e8a9 1624p |void |sv_setiv |SV* sv|IV num
1625p |void |sv_setpviv |SV* sv|IV num
1626p |void |sv_setuv |SV* sv|UV num
cad2e5aa 1627p |void |sv_setnv |SV* sv|NV num
cea2e8a9 1628p |SV* |sv_setref_iv |SV* rv|const char* classname|IV iv
cad2e5aa 1629p |SV* |sv_setref_nv |SV* rv|const char* classname|NV nv
cea2e8a9 1630p |SV* |sv_setref_pv |SV* rv|const char* classname|void* pv
1631p |SV* |sv_setref_pvn |SV* rv|const char* classname|char* pv \
1632 |STRLEN n
1633p |void |sv_setpv |SV* sv|const char* ptr
1634p |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len
1635p |void |sv_setsv |SV* dsv|SV* ssv
1636p |void |sv_taint |SV* sv
1637p |bool |sv_tainted |SV* sv
1638p |int |sv_unmagic |SV* sv|int type
1639p |void |sv_unref |SV* sv
1640p |void |sv_untaint |SV* sv
1641p |bool |sv_upgrade |SV* sv|U32 mt
1642p |void |sv_usepvn |SV* sv|char* ptr|STRLEN len
1643p |void |sv_vcatpvfn |SV* sv|const char* pat|STRLEN patlen \
1644 |va_list* args|SV** svargs|I32 svmax \
1645 |bool *used_locale
1646p |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \
1647 |va_list* args|SV** svargs|I32 svmax \
1648 |bool *used_locale
1649p |SV* |swash_init |char* pkg|char* name|SV* listsv \
1650 |I32 minbits|I32 none
1651p |UV |swash_fetch |SV *sv|U8 *ptr
1652p |void |taint_env
1653p |void |taint_proper |const char* f|char* s
1654p |UV |to_utf8_lower |U8 *p
1655p |UV |to_utf8_upper |U8 *p
1656p |UV |to_utf8_title |U8 *p
1657#if defined(UNLINK_ALL_VERSIONS)
1658p |I32 |unlnk |char* f
1659#endif
1660#if defined(USE_THREADS)
1661p |void |unlock_condpair|void* svv
1662#endif
1663p |void |unsharepvn |const char* sv|I32 len|U32 hash
1664p |void |unshare_hek |HEK* hek
1665p |void |utilize |int aver|I32 floor|OP* version|OP* id|OP* arg
1666p |U8* |utf16_to_utf8 |U16* p|U8 *d|I32 bytelen
1667p |U8* |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
1668p |I32 |utf8_distance |U8 *a|U8 *b
1669p |U8* |utf8_hop |U8 *s|I32 off
1670p |UV |utf8_to_uv |U8 *s|I32* retlen
1671p |U8* |uv_to_utf8 |U8 *d|UV uv
1672p |void |vivify_defelem |SV* sv
1673p |void |vivify_ref |SV* sv|U32 to_what
1674p |I32 |wait4pid |int pid|int* statusp|int flags
1675p |void |warn |const char* pat|...
c5be433b 1676p |void |vwarn |const char* pat|va_list* args
cea2e8a9 1677p |void |warner |U32 err|const char* pat|...
c5be433b 1678p |void |vwarner |U32 err|const char* pat|va_list* args
cea2e8a9 1679p |void |watch |char** addr
1680p |I32 |whichsig |char* sig
1681p |int |yyerror |char* s
1682#if defined(USE_PURE_BISON)
1683p |int |yylex |YYSTYPE *lvalp|int *lcharp
1684#else
1685p |int |yylex
1686#endif
1687p |int |yyparse
1688p |int |yywarn |char* s
1689#if defined(MYMALLOC)
1690p |void |dump_mstats |char* s
1691pno |Malloc_t|malloc |MEM_SIZE nbytes
1692pno |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size
1693pno |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes
1694pno |Free_t |mfree |Malloc_t where
1695#endif
4f63d024 1696pn |Malloc_t|safesysmalloc |MEM_SIZE nbytes
1697pn |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
1698pn |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
1699pn |Free_t |safesysfree |Malloc_t where
cea2e8a9 1700#if defined(LEAKTEST)
4f63d024 1701pn |Malloc_t|safexmalloc |I32 x|MEM_SIZE size
1702pn |Malloc_t|safexcalloc |I32 x|MEM_SIZE elements|MEM_SIZE size
1703pn |Malloc_t|safexrealloc |Malloc_t where|MEM_SIZE size
1704pn |void |safexfree |Malloc_t where
cea2e8a9 1705#endif
1706#if defined(PERL_GLOBAL_STRUCT)
1707p |struct perl_vars *|GetVars
1708#endif
cea2e8a9 1709p |int |runops_standard
1710p |int |runops_debug
cea2e8a9 1711p |void |sv_catpvf_mg |SV *sv|const char* pat|...
c5be433b 1712p |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
cea2e8a9 1713p |void |sv_catpv_mg |SV *sv|const char *ptr
1714p |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
1715p |void |sv_catsv_mg |SV *dstr|SV *sstr
1716p |void |sv_setpvf_mg |SV *sv|const char* pat|...
c5be433b 1717p |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
cea2e8a9 1718p |void |sv_setiv_mg |SV *sv|IV i
1719p |void |sv_setpviv_mg |SV *sv|IV iv
1720p |void |sv_setuv_mg |SV *sv|UV u
cad2e5aa 1721p |void |sv_setnv_mg |SV *sv|NV num
cea2e8a9 1722p |void |sv_setpv_mg |SV *sv|const char *ptr
1723p |void |sv_setpvn_mg |SV *sv|const char *ptr|STRLEN len
1724p |void |sv_setsv_mg |SV *dstr|SV *sstr
1725p |void |sv_usepvn_mg |SV *sv|char *ptr|STRLEN len
1726p |MGVTBL*|get_vtbl |int vtbl_id
1727p |char* |pv_display |SV *sv|char *pv|STRLEN cur|STRLEN len \
1728 |STRLEN pvlim
1729p |void |dump_indent |I32 level|PerlIO *file|const char* pat|...
c5be433b 1730p |void |dump_vindent |I32 level|PerlIO *file|const char* pat \
1731 |va_list *args
cea2e8a9 1732p |void |do_gv_dump |I32 level|PerlIO *file|char *name|GV *sv
1733p |void |do_gvgv_dump |I32 level|PerlIO *file|char *name|GV *sv
1734p |void |do_hv_dump |I32 level|PerlIO *file|char *name|HV *sv
1735p |void |do_magic_dump |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
1736 |I32 maxnest|bool dumpops|STRLEN pvlim
1737p |void |do_op_dump |I32 level|PerlIO *file|OP *o
1738p |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm
1739p |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
1740 |I32 maxnest|bool dumpops|STRLEN pvlim
1741p |void |magic_dump |MAGIC *mg
1742p |void* |default_protect|int *excpt|protect_body_t body|...
c5be433b 1743p |void* |vdefault_protect|int *excpt|protect_body_t body|va_list *args
cea2e8a9 1744p |void |reginitcolors
1745p |char* |sv_2pv_nolen |SV* sv
1746p |char* |sv_pv |SV *sv
1747p |void |sv_force_normal|SV *sv
1748p |void |tmps_grow |I32 n
1749p |SV* |sv_rvweaken |SV *sv
1750p |int |magic_killbackrefs|SV *sv|MAGIC *mg
1751
0cb96387 1752#if defined(PERL_OBJECT)
1753protected:
1754#endif
1755#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1756s |I32 |avhv_index_sv |SV* sv
1757#endif
1758
0cb96387 1759#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1760s |I32 |do_trans_CC_simple |SV *sv
1761s |I32 |do_trans_CC_count |SV *sv
1762s |I32 |do_trans_CC_complex |SV *sv
1763s |I32 |do_trans_UU_simple |SV *sv
1764s |I32 |do_trans_UU_count |SV *sv
1765s |I32 |do_trans_UU_complex |SV *sv
1766s |I32 |do_trans_UC_simple |SV *sv
1767s |I32 |do_trans_CU_simple |SV *sv
1768s |I32 |do_trans_UC_trivial |SV *sv
1769s |I32 |do_trans_CU_trivial |SV *sv
1770#endif
1771
0cb96387 1772#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1773s |void |gv_init_sv |GV *gv|I32 sv_type
1774#endif
1775
0cb96387 1776#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1777s |void |hsplit |HV *hv
1778s |void |hfreeentries |HV *hv
1779s |void |more_he
1780s |HE* |new_he
1781s |void |del_he |HE *p
1782s |HEK* |save_hek |const char *str|I32 len|U32 hash
1783s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
1784#endif
1785
0cb96387 1786#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
cea2e8a9 1787s |void |save_magic |I32 mgs_ix|SV *sv
1788s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth
1789s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
1790 |int n|SV *val
cea2e8a9 1791#endif
1792
0cb96387 1793#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1794s |I32 |list_assignment|OP *o
1795s |void |bad_type |I32 n|char *t|char *name|OP *kid
3eb57f73 1796s |void |cop_free |COP *cop
cea2e8a9 1797s |OP* |modkids |OP *o|I32 type
1798s |void |no_bareword_allowed|OP *o
1799s |OP* |no_fh_allowed |OP *o
1800s |OP* |scalarboolean |OP *o
1801s |OP* |too_few_arguments|OP *o|char* name
1802s |OP* |too_many_arguments|OP *o|char* name
acb36ea4 1803s |void |op_clear |OP* o
cea2e8a9 1804s |void |null |OP* o
1805s |PADOFFSET|pad_findlex |char* name|PADOFFSET newoff|U32 seq \
1806 |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
1807s |OP* |newDEFSVOP
1808s |OP* |new_logop |I32 type|I32 flags|OP **firstp|OP **otherp
1809s |void |simplify_sort |OP *o
1810s |bool |is_handle_constructor |OP *o|I32 argnum
1811s |char* |gv_ename |GV *gv
1812s |CV* |cv_clone2 |CV *proto|CV *outside
1813s |bool |scalar_mod_type|OP *o|I32 type
1814# if defined(PL_OP_SLAB_ALLOC)
1815s |void* |Slab_Alloc |int m|size_t sz
1816# endif
1817#endif
1818
0cb96387 1819#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
cea2e8a9 1820s |void |find_beginning
1821s |void |forbid_setid |char *
1822s |void |incpush |char *|int
1823s |void |init_interp
1824s |void |init_ids
cea2e8a9 1825s |void |init_lexer
1826s |void |init_main_stash
1827s |void |init_perllib
1828s |void |init_postdump_symbols|int|char **|char **
1829s |void |init_predump_symbols
1830rs |void |my_exit_jump
1831s |void |nuke_stacks
1832s |void |open_script |char *|bool|SV *|int *fd
1833s |void |usage |char *
1834s |void |validate_suid |char *|char*|int
cea2e8a9 1835# if defined(IAMSUID)
1836s |int |fd_on_nosuid_fs|int fd
1837# endif
1838s |void* |parse_body |va_list args
1839s |void* |run_body |va_list args
1840s |void* |call_body |va_list args
1841s |void |call_xbody |OP *myop|int is_eval
1842s |void* |call_list_body |va_list args
1843# if defined(USE_THREADS)
1844s |struct perl_thread * |init_main_thread
1845# endif
1846#endif
1847
0cb96387 1848#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1849s |void |doencodes |SV* sv|char* s|I32 len
1850s |SV* |refto |SV* sv
1851s |U32 |seed
1852s |SV* |mul128 |SV *sv|U8 m
1853s |SV* |is_an_int |char *s|STRLEN l
1854s |int |div128 |SV *pnum|bool *done
1855#endif
1856
0cb96387 1857#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
cea2e8a9 1858s |OP* |docatch |OP *o
1859s |void* |docatch_body |va_list args
1860s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit
1861s |void |doparseform |SV *sv
1862s |I32 |dopoptoeval |I32 startingblock
1863s |I32 |dopoptolabel |char *label
1864s |I32 |dopoptoloop |I32 startingblock
1865s |I32 |dopoptosub |I32 startingblock
1866s |I32 |dopoptosub_at |PERL_CONTEXT* cxstk|I32 startingblock
1867s |void |free_closures
1868s |void |save_lines |AV *array|SV *sv
1869s |OP* |doeval |int gimme|OP** startop
1870s |PerlIO *|doopen_pmc |const char *name|const char *mode
1871s |void |qsortsv |SV ** array|size_t num_elts|SVCOMPARE_t f
cea2e8a9 1872#endif
1873
0cb96387 1874#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
cea2e8a9 1875s |CV* |get_db_sub |SV **svp|CV *cv
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