applied suggested patch; added missing prototype changes to
[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
6170680b 1105p |bool |do_open9 |GV *gv|char *name|I32 len|int as_raw \
1106 |int rawmode|int rawperm|PerlIO *supplied_fp \
1107 |SV *svs|I32 num
cea2e8a9 1108p |void |do_pipe |SV* sv|GV* rgv|GV* wgv
1109p |bool |do_print |SV* sv|PerlIO* fp
1110p |OP* |do_readline
1111p |I32 |do_chomp |SV* sv
1112p |bool |do_seek |GV* gv|Off_t pos|int whence
1113p |void |do_sprintf |SV* sv|I32 len|SV** sarg
1114p |Off_t |do_sysseek |GV* gv|Off_t pos|int whence
1115p |Off_t |do_tell |GV* gv
1116p |I32 |do_trans |SV* sv
1117p |void |do_vecset |SV* sv
1118p |void |do_vop |I32 optype|SV* sv|SV* left|SV* right
1119p |OP* |dofile |OP* term
1120p |I32 |dowantarray
1121p |void |dump_all
1122p |void |dump_eval
1123#if defined(DUMP_FDS)
1124p |void |dump_fds |char* s
1125#endif
1126p |void |dump_form |GV* gv
1127p |void |gv_dump |GV* gv
1128p |void |op_dump |OP* arg
1129p |void |pmop_dump |PMOP* pm
1130p |void |dump_packsubs |HV* stash
1131p |void |dump_sub |GV* gv
1132p |void |fbm_compile |SV* sv|U32 flags
1133p |char* |fbm_instr |unsigned char* big|unsigned char* bigend \
1134 |SV* littlesv|U32 flags
1135p |char* |find_script |char *scriptname|bool dosearch \
1136 |char **search_ext|I32 flags
1137#if defined(USE_THREADS)
1138p |PADOFFSET|find_threadsv|const char *name
1139#endif
1140p |OP* |force_list |OP* arg
1141p |OP* |fold_constants |OP* arg
1142p |char* |form |const char* pat|...
c5be433b 1143p |char* |vform |const char* pat|va_list* args
cea2e8a9 1144p |void |free_tmps
1145p |OP* |gen_constant_list|OP* o
1146#if !defined(HAS_GETENV_LEN)
1147p |char* |getenv_len |char* key|unsigned long *len
1148#endif
1149p |void |gp_free |GV* gv
1150p |GP* |gp_ref |GP* gp
1151p |GV* |gv_AVadd |GV* gv
1152p |GV* |gv_HVadd |GV* gv
1153p |GV* |gv_IOadd |GV* gv
1154p |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \
1155 |I32 method
1156p |void |gv_check |HV* stash
1157p |void |gv_efullname |SV* sv|GV* gv
1158p |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
1159p |GV* |gv_fetchfile |const char* name
1160p |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
1161 |I32 level
1162p |GV* |gv_fetchmethod |HV* stash|const char* name
1163p |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \
1164 |I32 autoload
1165p |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
1166p |void |gv_fullname |SV* sv|GV* gv
1167p |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
1168p |void |gv_init |GV* gv|HV* stash|const char* name \
1169 |STRLEN len|int multi
1170p |HV* |gv_stashpv |const char* name|I32 create
1171p |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
1172p |HV* |gv_stashsv |SV* sv|I32 create
1173p |void |hv_clear |HV* tb
1174p |void |hv_delayfree_ent|HV* hv|HE* entry
1175p |SV* |hv_delete |HV* tb|const char* key|U32 klen|I32 flags
1176p |SV* |hv_delete_ent |HV* tb|SV* key|I32 flags|U32 hash
1177p |bool |hv_exists |HV* tb|const char* key|U32 klen
1178p |bool |hv_exists_ent |HV* tb|SV* key|U32 hash
1179p |SV** |hv_fetch |HV* tb|const char* key|U32 klen|I32 lval
1180p |HE* |hv_fetch_ent |HV* tb|SV* key|I32 lval|U32 hash
1181p |void |hv_free_ent |HV* hv|HE* entry
1182p |I32 |hv_iterinit |HV* tb
1183p |char* |hv_iterkey |HE* entry|I32* retlen
1184p |SV* |hv_iterkeysv |HE* entry
1185p |HE* |hv_iternext |HV* tb
1186p |SV* |hv_iternextsv |HV* hv|char** key|I32* retlen
1187p |SV* |hv_iterval |HV* tb|HE* entry
1188p |void |hv_ksplit |HV* hv|IV newmax
1189p |void |hv_magic |HV* hv|GV* gv|int how
1190p |SV** |hv_store |HV* tb|const char* key|U32 klen|SV* val \
1191 |U32 hash
1192p |HE* |hv_store_ent |HV* tb|SV* key|SV* val|U32 hash
1193p |void |hv_undef |HV* tb
1194p |I32 |ibcmp |const char* a|const char* b|I32 len
1195p |I32 |ibcmp_locale |const char* a|const char* b|I32 len
1196p |I32 |ingroup |I32 testgid|I32 effective
1ee4443e 1197p |void |init_debugger
cea2e8a9 1198p |void |init_stacks
1199p |U32 |intro_my
1200p |char* |instr |const char* big|const char* little
f2b5be74 1201p |bool |io_close |IO* io|bool not_implicit
cea2e8a9 1202p |OP* |invert |OP* cmd
1203p |bool |is_uni_alnum |U32 c
b8c5462f 1204p |bool |is_uni_alnumc |U32 c
cea2e8a9 1205p |bool |is_uni_idfirst |U32 c
1206p |bool |is_uni_alpha |U32 c
b8c5462f 1207p |bool |is_uni_ascii |U32 c
cea2e8a9 1208p |bool |is_uni_space |U32 c
b8c5462f 1209p |bool |is_uni_cntrl |U32 c
1210p |bool |is_uni_graph |U32 c
cea2e8a9 1211p |bool |is_uni_digit |U32 c
1212p |bool |is_uni_upper |U32 c
1213p |bool |is_uni_lower |U32 c
1214p |bool |is_uni_print |U32 c
b8c5462f 1215p |bool |is_uni_punct |U32 c
1216p |bool |is_uni_xdigit |U32 c
cea2e8a9 1217p |U32 |to_uni_upper |U32 c
1218p |U32 |to_uni_title |U32 c
1219p |U32 |to_uni_lower |U32 c
1220p |bool |is_uni_alnum_lc|U32 c
b8c5462f 1221p |bool |is_uni_alnumc_lc|U32 c
cea2e8a9 1222p |bool |is_uni_idfirst_lc|U32 c
1223p |bool |is_uni_alpha_lc|U32 c
b8c5462f 1224p |bool |is_uni_ascii_lc|U32 c
cea2e8a9 1225p |bool |is_uni_space_lc|U32 c
b8c5462f 1226p |bool |is_uni_cntrl_lc|U32 c
1227p |bool |is_uni_graph_lc|U32 c
cea2e8a9 1228p |bool |is_uni_digit_lc|U32 c
1229p |bool |is_uni_upper_lc|U32 c
1230p |bool |is_uni_lower_lc|U32 c
1231p |bool |is_uni_print_lc|U32 c
b8c5462f 1232p |bool |is_uni_punct_lc|U32 c
1233p |bool |is_uni_xdigit_lc|U32 c
cea2e8a9 1234p |U32 |to_uni_upper_lc|U32 c
1235p |U32 |to_uni_title_lc|U32 c
1236p |U32 |to_uni_lower_lc|U32 c
1237p |bool |is_utf8_alnum |U8 *p
b8c5462f 1238p |bool |is_utf8_alnumc |U8 *p
cea2e8a9 1239p |bool |is_utf8_idfirst|U8 *p
1240p |bool |is_utf8_alpha |U8 *p
b8c5462f 1241p |bool |is_utf8_ascii |U8 *p
cea2e8a9 1242p |bool |is_utf8_space |U8 *p
b8c5462f 1243p |bool |is_utf8_cntrl |U8 *p
cea2e8a9 1244p |bool |is_utf8_digit |U8 *p
b8c5462f 1245p |bool |is_utf8_graph |U8 *p
cea2e8a9 1246p |bool |is_utf8_upper |U8 *p
1247p |bool |is_utf8_lower |U8 *p
1248p |bool |is_utf8_print |U8 *p
b8c5462f 1249p |bool |is_utf8_punct |U8 *p
1250p |bool |is_utf8_xdigit |U8 *p
cea2e8a9 1251p |bool |is_utf8_mark |U8 *p
1252p |OP* |jmaybe |OP* arg
1253p |I32 |keyword |char* d|I32 len
1254p |void |leave_scope |I32 base
1255p |void |lex_end
1256p |void |lex_start |SV* line
1257p |OP* |linklist |OP* o
1258p |OP* |list |OP* o
1259p |OP* |listkids |OP* o
1260p |OP* |localize |OP* arg|I32 lexical
1261p |I32 |looks_like_number|SV* sv
1262p |int |magic_clearenv |SV* sv|MAGIC* mg
1263p |int |magic_clear_all_env|SV* sv|MAGIC* mg
1264p |int |magic_clearpack|SV* sv|MAGIC* mg
1265p |int |magic_clearsig |SV* sv|MAGIC* mg
1266p |int |magic_existspack|SV* sv|MAGIC* mg
1267p |int |magic_freeregexp|SV* sv|MAGIC* mg
1268p |int |magic_get |SV* sv|MAGIC* mg
1269p |int |magic_getarylen|SV* sv|MAGIC* mg
1270p |int |magic_getdefelem|SV* sv|MAGIC* mg
1271p |int |magic_getglob |SV* sv|MAGIC* mg
1272p |int |magic_getnkeys |SV* sv|MAGIC* mg
1273p |int |magic_getpack |SV* sv|MAGIC* mg
1274p |int |magic_getpos |SV* sv|MAGIC* mg
1275p |int |magic_getsig |SV* sv|MAGIC* mg
1276p |int |magic_getsubstr|SV* sv|MAGIC* mg
1277p |int |magic_gettaint |SV* sv|MAGIC* mg
1278p |int |magic_getuvar |SV* sv|MAGIC* mg
1279p |int |magic_getvec |SV* sv|MAGIC* mg
1280p |U32 |magic_len |SV* sv|MAGIC* mg
1281#if defined(USE_THREADS)
1282p |int |magic_mutexfree|SV* sv|MAGIC* mg
1283#endif
1284p |int |magic_nextpack |SV* sv|MAGIC* mg|SV* key
1285p |U32 |magic_regdata_cnt|SV* sv|MAGIC* mg
1286p |int |magic_regdatum_get|SV* sv|MAGIC* mg
1287p |int |magic_set |SV* sv|MAGIC* mg
1288p |int |magic_setamagic|SV* sv|MAGIC* mg
1289p |int |magic_setarylen|SV* sv|MAGIC* mg
1290p |int |magic_setbm |SV* sv|MAGIC* mg
1291p |int |magic_setdbline|SV* sv|MAGIC* mg
1292#if defined(USE_LOCALE_COLLATE)
1293p |int |magic_setcollxfrm|SV* sv|MAGIC* mg
1294#endif
1295p |int |magic_setdefelem|SV* sv|MAGIC* mg
1296p |int |magic_setenv |SV* sv|MAGIC* mg
1297p |int |magic_setfm |SV* sv|MAGIC* mg
1298p |int |magic_setisa |SV* sv|MAGIC* mg
1299p |int |magic_setglob |SV* sv|MAGIC* mg
1300p |int |magic_setmglob |SV* sv|MAGIC* mg
1301p |int |magic_setnkeys |SV* sv|MAGIC* mg
1302p |int |magic_setpack |SV* sv|MAGIC* mg
1303p |int |magic_setpos |SV* sv|MAGIC* mg
1304p |int |magic_setsig |SV* sv|MAGIC* mg
1305p |int |magic_setsubstr|SV* sv|MAGIC* mg
1306p |int |magic_settaint |SV* sv|MAGIC* mg
1307p |int |magic_setuvar |SV* sv|MAGIC* mg
1308p |int |magic_setvec |SV* sv|MAGIC* mg
1309p |int |magic_set_all_env|SV* sv|MAGIC* mg
1310p |U32 |magic_sizepack |SV* sv|MAGIC* mg
1311p |int |magic_wipepack |SV* sv|MAGIC* mg
1312p |void |magicname |char* sym|char* name|I32 namlen
cea2e8a9 1313#if defined(MYMALLOC)
1314np |MEM_SIZE|malloced_size |void *p
1315#endif
1316p |void |markstack_grow
1317#if defined(USE_LOCALE_COLLATE)
1318p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen
1319#endif
1320p |SV* |mess |const char* pat|va_list* args
1321p |int |mg_clear |SV* sv
1322p |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen
1323p |MAGIC* |mg_find |SV* sv|int type
1324p |int |mg_free |SV* sv
1325p |int |mg_get |SV* sv
1326p |U32 |mg_length |SV* sv
1327p |void |mg_magical |SV* sv
1328p |int |mg_set |SV* sv
1329p |I32 |mg_size |SV* sv
1330p |OP* |mod |OP* o|I32 type
1331p |char* |moreswitches |char* s
1332p |OP* |my |OP* o
cad2e5aa 1333p |NV |my_atof |const char *s
cea2e8a9 1334#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
1335p |char* |my_bcopy |const char* from|char* to|I32 len
1336#endif
1337#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
1338p |char* |my_bzero |char* loc|I32 len
1339#endif
1340pr |void |my_exit |U32 status
1341pr |void |my_failure_exit
1342p |I32 |my_fflush_all
1343p |I32 |my_lstat
1344#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
1345p |I32 |my_memcmp |const char* s1|const char* s2|I32 len
1346#endif
1347#if !defined(HAS_MEMSET)
1348p |void* |my_memset |char* loc|I32 ch|I32 len
1349#endif
1350#if !defined(PERL_OBJECT)
1351p |I32 |my_pclose |PerlIO* ptr
1352p |PerlIO*|my_popen |char* cmd|char* mode
1353#endif
1354p |void |my_setenv |char* nam|char* val
1355p |I32 |my_stat
1356#if defined(MYSWAP)
1357p |short |my_swap |short s
1358p |long |my_htonl |long l
1359p |long |my_ntohl |long l
1360#endif
1361p |void |my_unexec
1362p |OP* |newANONLIST |OP* o
1363p |OP* |newANONHASH |OP* o
1364p |OP* |newANONSUB |I32 floor|OP* proto|OP* block
1365p |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right
1366p |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop
1367p |void |newCONSTSUB |HV* stash|char* name|SV* sv
1368p |void |newFORM |I32 floor|OP* o|OP* block
1369p |OP* |newFOROP |I32 flags|char* label|line_t forline \
1370 |OP* sclr|OP* expr|OP*block|OP*cont
1371p |OP* |newLOGOP |I32 optype|I32 flags|OP* left|OP* right
1372p |OP* |newLOOPEX |I32 type|OP* label
1373p |OP* |newLOOPOP |I32 flags|I32 debuggable|OP* expr|OP* block
1374p |OP* |newNULLLIST
1375p |OP* |newOP |I32 optype|I32 flags
1376p |void |newPROG |OP* o
1377p |OP* |newRANGE |I32 flags|OP* left|OP* right
1378p |OP* |newSLICEOP |I32 flags|OP* subscript|OP* listop
1379p |OP* |newSTATEOP |I32 flags|char* label|OP* o
1380p |CV* |newSUB |I32 floor|OP* o|OP* proto|OP* block
1381p |CV* |newXS |char* name|XSUBADDR_t f|char* filename
1382p |AV* |newAV
1383p |OP* |newAVREF |OP* o
1384p |OP* |newBINOP |I32 type|I32 flags|OP* first|OP* last
1385p |OP* |newCVREF |I32 flags|OP* o
1386p |OP* |newGVOP |I32 type|I32 flags|GV* gv
1387p |GV* |newGVgen |char* pack
1388p |OP* |newGVREF |I32 type|OP* o
1389p |OP* |newHVREF |OP* o
1390p |HV* |newHV
1391p |HV* |newHVhv |HV* hv
1392p |IO* |newIO
1393p |OP* |newLISTOP |I32 type|I32 flags|OP* first|OP* last
1394p |OP* |newPMOP |I32 type|I32 flags
1395p |OP* |newPVOP |I32 type|I32 flags|char* pv
1396p |SV* |newRV |SV* pref
1397p |SV* |newRV_noinc |SV *sv
1398p |SV* |newSV |STRLEN len
1399p |OP* |newSVREF |OP* o
1400p |OP* |newSVOP |I32 type|I32 flags|SV* sv
1401p |SV* |newSViv |IV i
cad2e5aa 1402p |SV* |newSVnv |NV n
cea2e8a9 1403p |SV* |newSVpv |const char* s|STRLEN len
1404p |SV* |newSVpvn |const char* s|STRLEN len
1405p |SV* |newSVpvf |const char* pat|...
c5be433b 1406p |SV* |vnewSVpvf |const char* pat|va_list* args
cea2e8a9 1407p |SV* |newSVrv |SV* rv|const char* classname
1408p |SV* |newSVsv |SV* old
1409p |OP* |newUNOP |I32 type|I32 flags|OP* first
1410p |OP* |newWHILEOP |I32 flags|I32 debuggable|LOOP* loop \
1411 |I32 whileline|OP* expr|OP* block|OP* cont
c5be433b 1412
cea2e8a9 1413p |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
1414p |PerlIO*|nextargv |GV* gv
1415p |char* |ninstr |const char* big|const char* bigend \
1416 |const char* little|const char* lend
1417p |OP* |oopsCV |OP* o
1418p |void |op_free |OP* arg
1419p |void |package |OP* o
1420p |PADOFFSET|pad_alloc |I32 optype|U32 tmptype
1421p |PADOFFSET|pad_allocmy |char* name
1422p |PADOFFSET|pad_findmy |char* name
1423p |OP* |oopsAV |OP* o
1424p |OP* |oopsHV |OP* o
1425p |void |pad_leavemy |I32 fill
1426p |SV* |pad_sv |PADOFFSET po
1427p |void |pad_free |PADOFFSET po
1428p |void |pad_reset
1429p |void |pad_swipe |PADOFFSET po
1430p |void |peep |OP* o
0cb96387 1431#if defined(PERL_OBJECT)
1432no |void |perl_construct
1433no |void |perl_destruct
1434no |void |perl_free
1435no |int |perl_run
1436no |int |perl_parse |XSINIT_t xsinit \
1437 |int argc|char** argv|char** env
1438#else
cea2e8a9 1439no |PerlInterpreter* |perl_alloc
0cb96387 1440no |void |perl_construct |PerlInterpreter* sv_interp
1441no |void |perl_destruct |PerlInterpreter* sv_interp
1442no |void |perl_free |PerlInterpreter* sv_interp
1443no |int |perl_run |PerlInterpreter* sv_interp
1444no |int |perl_parse |PerlInterpreter* sv_interp|XSINIT_t xsinit \
1445 |int argc|char** argv|char** env
c5be433b 1446#if defined(USE_THREADS)
1447p |struct perl_thread* |new_struct_thread|struct perl_thread *t
1448#endif
0cb96387 1449#endif
cea2e8a9 1450p |void |call_atexit |ATEXIT_t fn|void *ptr
1451p |I32 |call_argv |const char* sub_name|I32 flags|char** argv
1452p |I32 |call_method |const char* methname|I32 flags
1453p |I32 |call_pv |const char* sub_name|I32 flags
1454p |I32 |call_sv |SV* sv|I32 flags
cea2e8a9 1455p |SV* |eval_pv |const char* p|I32 croak_on_error
1456p |I32 |eval_sv |SV* sv|I32 flags
cea2e8a9 1457p |SV* |get_sv |const char* name|I32 create
1458p |AV* |get_av |const char* name|I32 create
1459p |HV* |get_hv |const char* name|I32 create
1460p |CV* |get_cv |const char* name|I32 create
1461p |int |init_i18nl10n |int printwarn
1462p |int |init_i18nl14n |int printwarn
1463p |void |new_collate |const char* newcoll
1464p |void |new_ctype |const char* newctype
1465p |void |new_numeric |const char* newcoll
1466p |void |set_numeric_local
097ee67d 1467p |void |set_numeric_radix
cea2e8a9 1468p |void |set_numeric_standard
cea2e8a9 1469p |void |require_pv |const char* pv
cea2e8a9 1470p |void |pidgone |int pid|int status
1471p |void |pmflag |U16* pmfl|int ch
1472p |OP* |pmruntime |OP* pm|OP* expr|OP* repl
1473p |OP* |pmtrans |OP* o|OP* expr|OP* repl
1474p |OP* |pop_return
1475p |void |pop_scope
1476p |OP* |prepend_elem |I32 optype|OP* head|OP* tail
1477p |void |push_return |OP* o
1478p |void |push_scope
1479p |OP* |ref |OP* o|I32 type
1480p |OP* |refkids |OP* o|I32 type
1481p |void |regdump |regexp* r
1482p |I32 |pregexec |regexp* prog|char* stringarg \
1483 |char* strend|char* strbeg|I32 minend \
1484 |SV* screamer|U32 nosave
1485p |void |pregfree |struct regexp* r
1486p |regexp*|pregcomp |char* exp|char* xend|PMOP* pm
cad2e5aa 1487p |char* |re_intuit_start|regexp* prog|SV* sv|char* strpos \
1488 |char* strend|U32 flags \
1489 |struct re_scream_pos_data_s *data
1490p |SV* |re_intuit_string|regexp* prog
cea2e8a9 1491p |I32 |regexec_flags |regexp* prog|char* stringarg \
1492 |char* strend|char* strbeg|I32 minend \
1493 |SV* screamer|void* data|U32 flags
1494p |regnode*|regnext |regnode* p
1495p |void |regprop |SV* sv|regnode* o
1496p |void |repeatcpy |char* to|const char* from|I32 len|I32 count
1497p |char* |rninstr |const char* big|const char* bigend \
1498 |const char* little|const char* lend
1499p |Sighandler_t|rsignal |int i|Sighandler_t t
1500p |int |rsignal_restore|int i|Sigsave_t* t
1501p |int |rsignal_save |int i|Sighandler_t t1|Sigsave_t* t2
1502p |Sighandler_t|rsignal_state|int i
1503p |void |rxres_free |void** rsp
1504p |void |rxres_restore |void** rsp|REGEXP* prx
1505p |void |rxres_save |void** rsp|REGEXP* prx
1506#if !defined(HAS_RENAME)
1507p |I32 |same_dirent |char* a|char* b
1508#endif
1509p |char* |savepv |const char* sv
1510p |char* |savepvn |const char* sv|I32 len
1511p |void |savestack_grow
1512p |void |save_aelem |AV* av|I32 idx|SV **sptr
1513p |I32 |save_alloc |I32 size|I32 pad
1514p |void |save_aptr |AV** aptr
1515p |AV* |save_ary |GV* gv
1516p |void |save_clearsv |SV** svp
1517p |void |save_delete |HV* hv|char* key|I32 klen
1518p |void |save_destructor|DESTRUCTORFUNC_t f|void* p
1519p |void |save_freesv |SV* sv
1520p |void |save_freeop |OP* o
1521p |void |save_freepv |char* pv
1522p |void |save_generic_svref|SV** sptr
1523p |void |save_gp |GV* gv|I32 empty
1524p |HV* |save_hash |GV* gv
1525p |void |save_helem |HV* hv|SV *key|SV **sptr
1526p |void |save_hints
1527p |void |save_hptr |HV** hptr
1528p |void |save_I16 |I16* intp
1529p |void |save_I32 |I32* intp
1530p |void |save_int |int* intp
1531p |void |save_item |SV* item
1532p |void |save_iv |IV* iv
1533p |void |save_list |SV** sarg|I32 maxsarg
1534p |void |save_long |long* longp
1535p |void |save_nogv |GV* gv
1536p |void |save_op
1537p |SV* |save_scalar |GV* gv
1538p |void |save_pptr |char** pptr
1539p |void |save_re_context
1540p |void |save_sptr |SV** sptr
1541p |SV* |save_svref |SV** sptr
1542p |SV** |save_threadsv |PADOFFSET i
1543p |OP* |sawparens |OP* o
1544p |OP* |scalar |OP* o
1545p |OP* |scalarkids |OP* o
1546p |OP* |scalarseq |OP* o
1547p |OP* |scalarvoid |OP* o
1548p |UV |scan_bin |char* start|I32 len|I32* retlen
1549p |UV |scan_hex |char* start|I32 len|I32* retlen
1550p |char* |scan_num |char* s
1551p |UV |scan_oct |char* start|I32 len|I32* retlen
1552p |OP* |scope |OP* o
1553p |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \
1554 |I32 end_shift|I32 *state|I32 last
1555#if !defined(VMS)
1556p |I32 |setenv_getix |char* nam
1557#endif
1558p |void |setdefout |GV* gv
1559p |char* |sharepvn |const char* sv|I32 len|U32 hash
1560p |HEK* |share_hek |const char* sv|I32 len|U32 hash
1561np |Signal_t |sighandler |int sig
1562p |SV** |stack_grow |SV** sp|SV**p|int n
1563p |I32 |start_subparse |I32 is_format|U32 flags
1564p |void |sub_crush_depth|CV* cv
1565p |bool |sv_2bool |SV* sv
1566p |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref
1567p |IO* |sv_2io |SV* sv
1568p |IV |sv_2iv |SV* sv
1569p |SV* |sv_2mortal |SV* sv
cad2e5aa 1570p |NV |sv_2nv |SV* sv
cea2e8a9 1571p |char* |sv_2pv |SV* sv|STRLEN* lp
1572p |UV |sv_2uv |SV* sv
1573p |IV |sv_iv |SV* sv
1574p |UV |sv_uv |SV* sv
cad2e5aa 1575p |NV |sv_nv |SV* sv
cea2e8a9 1576p |char* |sv_pvn |SV *sv|STRLEN *len
1577p |I32 |sv_true |SV *sv
1578p |void |sv_add_arena |char* ptr|U32 size|U32 flags
1579p |int |sv_backoff |SV* sv
1580p |SV* |sv_bless |SV* sv|HV* stash
1581p |void |sv_catpvf |SV* sv|const char* pat|...
c5be433b 1582p |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
cea2e8a9 1583p |void |sv_catpv |SV* sv|const char* ptr
1584p |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
1585p |void |sv_catsv |SV* dsv|SV* ssv
1586p |void |sv_chop |SV* sv|char* ptr
1587p |void |sv_clean_all
1588p |void |sv_clean_objs
1589p |void |sv_clear |SV* sv
1590p |I32 |sv_cmp |SV* sv1|SV* sv2
1591p |I32 |sv_cmp_locale |SV* sv1|SV* sv2
1592#if defined(USE_LOCALE_COLLATE)
1593p |char* |sv_collxfrm |SV* sv|STRLEN* nxp
1594#endif
1595p |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
1596p |void |sv_dec |SV* sv
1597p |void |sv_dump |SV* sv
1598p |bool |sv_derived_from|SV* sv|const char* name
1599p |I32 |sv_eq |SV* sv1|SV* sv2
1600p |void |sv_free |SV* sv
1601p |void |sv_free_arenas
1602p |char* |sv_gets |SV* sv|PerlIO* fp|I32 append
1603p |char* |sv_grow |SV* sv|STRLEN newlen
1604p |void |sv_inc |SV* sv
1605p |void |sv_insert |SV* bigsv|STRLEN offset|STRLEN len \
1606 |char* little|STRLEN littlelen
1607p |int |sv_isa |SV* sv|const char* name
1608p |int |sv_isobject |SV* sv
1609p |STRLEN |sv_len |SV* sv
1610p |STRLEN |sv_len_utf8 |SV* sv
1611p |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
1612 |I32 namlen
1613p |SV* |sv_mortalcopy |SV* oldsv
1614p |SV* |sv_newmortal
1615p |SV* |sv_newref |SV* sv
1616p |char* |sv_peek |SV* sv
1617p |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp
1618p |void |sv_pos_b2u |SV* sv|I32* offsetp
1619p |char* |sv_pvn_force |SV* sv|STRLEN* lp
1620p |char* |sv_reftype |SV* sv|int ob
1621p |void |sv_replace |SV* sv|SV* nsv
1622p |void |sv_report_used
1623p |void |sv_reset |char* s|HV* stash
1624p |void |sv_setpvf |SV* sv|const char* pat|...
c5be433b 1625p |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
cea2e8a9 1626p |void |sv_setiv |SV* sv|IV num
1627p |void |sv_setpviv |SV* sv|IV num
1628p |void |sv_setuv |SV* sv|UV num
cad2e5aa 1629p |void |sv_setnv |SV* sv|NV num
cea2e8a9 1630p |SV* |sv_setref_iv |SV* rv|const char* classname|IV iv
cad2e5aa 1631p |SV* |sv_setref_nv |SV* rv|const char* classname|NV nv
cea2e8a9 1632p |SV* |sv_setref_pv |SV* rv|const char* classname|void* pv
1633p |SV* |sv_setref_pvn |SV* rv|const char* classname|char* pv \
1634 |STRLEN n
1635p |void |sv_setpv |SV* sv|const char* ptr
1636p |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len
1637p |void |sv_setsv |SV* dsv|SV* ssv
1638p |void |sv_taint |SV* sv
1639p |bool |sv_tainted |SV* sv
1640p |int |sv_unmagic |SV* sv|int type
1641p |void |sv_unref |SV* sv
1642p |void |sv_untaint |SV* sv
1643p |bool |sv_upgrade |SV* sv|U32 mt
1644p |void |sv_usepvn |SV* sv|char* ptr|STRLEN len
1645p |void |sv_vcatpvfn |SV* sv|const char* pat|STRLEN patlen \
1646 |va_list* args|SV** svargs|I32 svmax \
1647 |bool *used_locale
1648p |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \
1649 |va_list* args|SV** svargs|I32 svmax \
1650 |bool *used_locale
1651p |SV* |swash_init |char* pkg|char* name|SV* listsv \
1652 |I32 minbits|I32 none
1653p |UV |swash_fetch |SV *sv|U8 *ptr
1654p |void |taint_env
1655p |void |taint_proper |const char* f|char* s
1656p |UV |to_utf8_lower |U8 *p
1657p |UV |to_utf8_upper |U8 *p
1658p |UV |to_utf8_title |U8 *p
1659#if defined(UNLINK_ALL_VERSIONS)
1660p |I32 |unlnk |char* f
1661#endif
1662#if defined(USE_THREADS)
1663p |void |unlock_condpair|void* svv
1664#endif
1665p |void |unsharepvn |const char* sv|I32 len|U32 hash
1666p |void |unshare_hek |HEK* hek
1667p |void |utilize |int aver|I32 floor|OP* version|OP* id|OP* arg
1668p |U8* |utf16_to_utf8 |U16* p|U8 *d|I32 bytelen
1669p |U8* |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
1670p |I32 |utf8_distance |U8 *a|U8 *b
1671p |U8* |utf8_hop |U8 *s|I32 off
1672p |UV |utf8_to_uv |U8 *s|I32* retlen
1673p |U8* |uv_to_utf8 |U8 *d|UV uv
1674p |void |vivify_defelem |SV* sv
1675p |void |vivify_ref |SV* sv|U32 to_what
1676p |I32 |wait4pid |int pid|int* statusp|int flags
1677p |void |warn |const char* pat|...
c5be433b 1678p |void |vwarn |const char* pat|va_list* args
cea2e8a9 1679p |void |warner |U32 err|const char* pat|...
c5be433b 1680p |void |vwarner |U32 err|const char* pat|va_list* args
cea2e8a9 1681p |void |watch |char** addr
1682p |I32 |whichsig |char* sig
1683p |int |yyerror |char* s
1684#if defined(USE_PURE_BISON)
1685p |int |yylex |YYSTYPE *lvalp|int *lcharp
1686#else
1687p |int |yylex
1688#endif
1689p |int |yyparse
1690p |int |yywarn |char* s
1691#if defined(MYMALLOC)
1692p |void |dump_mstats |char* s
1693pno |Malloc_t|malloc |MEM_SIZE nbytes
1694pno |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size
1695pno |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes
1696pno |Free_t |mfree |Malloc_t where
1697#endif
4f63d024 1698pn |Malloc_t|safesysmalloc |MEM_SIZE nbytes
1699pn |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
1700pn |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
1701pn |Free_t |safesysfree |Malloc_t where
cea2e8a9 1702#if defined(LEAKTEST)
4f63d024 1703pn |Malloc_t|safexmalloc |I32 x|MEM_SIZE size
1704pn |Malloc_t|safexcalloc |I32 x|MEM_SIZE elements|MEM_SIZE size
1705pn |Malloc_t|safexrealloc |Malloc_t where|MEM_SIZE size
1706pn |void |safexfree |Malloc_t where
cea2e8a9 1707#endif
1708#if defined(PERL_GLOBAL_STRUCT)
1709p |struct perl_vars *|GetVars
1710#endif
cea2e8a9 1711p |int |runops_standard
1712p |int |runops_debug
cea2e8a9 1713p |void |sv_catpvf_mg |SV *sv|const char* pat|...
c5be433b 1714p |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
cea2e8a9 1715p |void |sv_catpv_mg |SV *sv|const char *ptr
1716p |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
1717p |void |sv_catsv_mg |SV *dstr|SV *sstr
1718p |void |sv_setpvf_mg |SV *sv|const char* pat|...
c5be433b 1719p |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
cea2e8a9 1720p |void |sv_setiv_mg |SV *sv|IV i
1721p |void |sv_setpviv_mg |SV *sv|IV iv
1722p |void |sv_setuv_mg |SV *sv|UV u
cad2e5aa 1723p |void |sv_setnv_mg |SV *sv|NV num
cea2e8a9 1724p |void |sv_setpv_mg |SV *sv|const char *ptr
1725p |void |sv_setpvn_mg |SV *sv|const char *ptr|STRLEN len
1726p |void |sv_setsv_mg |SV *dstr|SV *sstr
1727p |void |sv_usepvn_mg |SV *sv|char *ptr|STRLEN len
1728p |MGVTBL*|get_vtbl |int vtbl_id
1729p |char* |pv_display |SV *sv|char *pv|STRLEN cur|STRLEN len \
1730 |STRLEN pvlim
1731p |void |dump_indent |I32 level|PerlIO *file|const char* pat|...
c5be433b 1732p |void |dump_vindent |I32 level|PerlIO *file|const char* pat \
1733 |va_list *args
cea2e8a9 1734p |void |do_gv_dump |I32 level|PerlIO *file|char *name|GV *sv
1735p |void |do_gvgv_dump |I32 level|PerlIO *file|char *name|GV *sv
1736p |void |do_hv_dump |I32 level|PerlIO *file|char *name|HV *sv
1737p |void |do_magic_dump |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
1738 |I32 maxnest|bool dumpops|STRLEN pvlim
1739p |void |do_op_dump |I32 level|PerlIO *file|OP *o
1740p |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm
1741p |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
1742 |I32 maxnest|bool dumpops|STRLEN pvlim
1743p |void |magic_dump |MAGIC *mg
1744p |void* |default_protect|int *excpt|protect_body_t body|...
c5be433b 1745p |void* |vdefault_protect|int *excpt|protect_body_t body|va_list *args
cea2e8a9 1746p |void |reginitcolors
1747p |char* |sv_2pv_nolen |SV* sv
1748p |char* |sv_pv |SV *sv
1749p |void |sv_force_normal|SV *sv
1750p |void |tmps_grow |I32 n
1751p |SV* |sv_rvweaken |SV *sv
1752p |int |magic_killbackrefs|SV *sv|MAGIC *mg
1753
0cb96387 1754#if defined(PERL_OBJECT)
1755protected:
1756#endif
1757#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1758s |I32 |avhv_index_sv |SV* sv
1759#endif
1760
0cb96387 1761#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1762s |I32 |do_trans_CC_simple |SV *sv
1763s |I32 |do_trans_CC_count |SV *sv
1764s |I32 |do_trans_CC_complex |SV *sv
1765s |I32 |do_trans_UU_simple |SV *sv
1766s |I32 |do_trans_UU_count |SV *sv
1767s |I32 |do_trans_UU_complex |SV *sv
1768s |I32 |do_trans_UC_simple |SV *sv
1769s |I32 |do_trans_CU_simple |SV *sv
1770s |I32 |do_trans_UC_trivial |SV *sv
1771s |I32 |do_trans_CU_trivial |SV *sv
1772#endif
1773
0cb96387 1774#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1775s |void |gv_init_sv |GV *gv|I32 sv_type
1776#endif
1777
0cb96387 1778#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1779s |void |hsplit |HV *hv
1780s |void |hfreeentries |HV *hv
1781s |void |more_he
1782s |HE* |new_he
1783s |void |del_he |HE *p
1784s |HEK* |save_hek |const char *str|I32 len|U32 hash
1785s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
1786#endif
1787
0cb96387 1788#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
cea2e8a9 1789s |void |save_magic |I32 mgs_ix|SV *sv
1790s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth
1791s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
1792 |int n|SV *val
cea2e8a9 1793#endif
1794
0cb96387 1795#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1796s |I32 |list_assignment|OP *o
1797s |void |bad_type |I32 n|char *t|char *name|OP *kid
3eb57f73 1798s |void |cop_free |COP *cop
cea2e8a9 1799s |OP* |modkids |OP *o|I32 type
1800s |void |no_bareword_allowed|OP *o
1801s |OP* |no_fh_allowed |OP *o
1802s |OP* |scalarboolean |OP *o
1803s |OP* |too_few_arguments|OP *o|char* name
1804s |OP* |too_many_arguments|OP *o|char* name
acb36ea4 1805s |void |op_clear |OP* o
cea2e8a9 1806s |void |null |OP* o
1807s |PADOFFSET|pad_findlex |char* name|PADOFFSET newoff|U32 seq \
1808 |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
1809s |OP* |newDEFSVOP
1810s |OP* |new_logop |I32 type|I32 flags|OP **firstp|OP **otherp
1811s |void |simplify_sort |OP *o
1812s |bool |is_handle_constructor |OP *o|I32 argnum
1813s |char* |gv_ename |GV *gv
1814s |CV* |cv_clone2 |CV *proto|CV *outside
1815s |bool |scalar_mod_type|OP *o|I32 type
1816# if defined(PL_OP_SLAB_ALLOC)
1817s |void* |Slab_Alloc |int m|size_t sz
1818# endif
1819#endif
1820
0cb96387 1821#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
cea2e8a9 1822s |void |find_beginning
1823s |void |forbid_setid |char *
1824s |void |incpush |char *|int
1825s |void |init_interp
1826s |void |init_ids
cea2e8a9 1827s |void |init_lexer
1828s |void |init_main_stash
1829s |void |init_perllib
1830s |void |init_postdump_symbols|int|char **|char **
1831s |void |init_predump_symbols
1832rs |void |my_exit_jump
1833s |void |nuke_stacks
1834s |void |open_script |char *|bool|SV *|int *fd
1835s |void |usage |char *
1836s |void |validate_suid |char *|char*|int
cea2e8a9 1837# if defined(IAMSUID)
1838s |int |fd_on_nosuid_fs|int fd
1839# endif
1840s |void* |parse_body |va_list args
1841s |void* |run_body |va_list args
1842s |void* |call_body |va_list args
1843s |void |call_xbody |OP *myop|int is_eval
1844s |void* |call_list_body |va_list args
1845# if defined(USE_THREADS)
1846s |struct perl_thread * |init_main_thread
1847# endif
1848#endif
1849
0cb96387 1850#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1851s |void |doencodes |SV* sv|char* s|I32 len
1852s |SV* |refto |SV* sv
1853s |U32 |seed
1854s |SV* |mul128 |SV *sv|U8 m
1855s |SV* |is_an_int |char *s|STRLEN l
1856s |int |div128 |SV *pnum|bool *done
1857#endif
1858
0cb96387 1859#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
cea2e8a9 1860s |OP* |docatch |OP *o
1861s |void* |docatch_body |va_list args
1862s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit
1863s |void |doparseform |SV *sv
1864s |I32 |dopoptoeval |I32 startingblock
1865s |I32 |dopoptolabel |char *label
1866s |I32 |dopoptoloop |I32 startingblock
1867s |I32 |dopoptosub |I32 startingblock
1868s |I32 |dopoptosub_at |PERL_CONTEXT* cxstk|I32 startingblock
1869s |void |free_closures
1870s |void |save_lines |AV *array|SV *sv
1871s |OP* |doeval |int gimme|OP** startop
1872s |PerlIO *|doopen_pmc |const char *name|const char *mode
1873s |void |qsortsv |SV ** array|size_t num_elts|SVCOMPARE_t f
cea2e8a9 1874#endif
1875
0cb96387 1876#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
cea2e8a9 1877s |CV* |get_db_sub |SV **svp|CV *cv
f5d5a27c 1878s |SV* |method_common |SV* meth|U32* hashp
cea2e8a9 1879#endif
1880
0cb96387 1881#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
cea2e8a9 1882s |OP* |doform |CV *cv|GV *gv|OP *retop
1883s |int |emulate_eaccess|const char* path|int mode
1884# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
1885s |int |dooneliner |char *cmd|char *filename
1886# endif
1887#endif
1888
0cb96387 1889#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
cea2e8a9 1890s |regnode*|reg |I32|I32 *
1891s |regnode*|reganode |U8|U32
1892s |regnode*|regatom |I32 *
1893s |regnode*|regbranch |I32 *|I32
1894s |void |regc |U8|char *
1895s |void |reguni |UV|char *|I32*
1896s |regnode*|regclass
1897s |regnode*|regclassutf8
1898s |I32 |regcurly |char *
1899s |regnode*|reg_node |U8
1900s |regnode*|regpiece |I32 *
1901s |void |reginsert |U8|regnode *
1902s |void |regoptail |regnode *|regnode *
1903s |void |regtail |regnode *|regnode *
1904s |char*|regwhite |char *|char *
1905s |char*|nextchar
1906s |regnode*|dumpuntil |regnode *start|regnode *node \
1907 |regnode *last|SV* sv|I32 l
1908s |void |scan_commit |scan_data_t *data
1909s |I32 |study_chunk |regnode **scanp|I32 *deltap \
1910 |regnode *last|scan_data_t *data|U32 flags
1911s |I32 |add_data |I32 n|char *s
1912rs |void|re_croak2 |const char* pat1|const char* pat2|...
b8c5462f 1913s |I32 |regpposixcc |I32 value
1914s |void |checkposixcc
cea2e8a9 1915#endif
1916
0cb96387 1917#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
cea2e8a9 1918s |I32 |regmatch |regnode *prog
1919s |I32 |regrepeat |regnode *p|I32 max
1920s |I32 |regrepeat_hard |regnode *p|I32 max|I32 *lp
1921s |I32 |regtry |regexp *prog|char *startpos
1922s |bool |reginclass |char *p|I32 c
1923s |bool |reginclassutf8 |regnode *f|U8* p
1924s |CHECKPOINT|regcppush |I32 parenfloor
1925s |char*|regcppop
1926s |char*|regcp_set_to |I32 ss
1927s |void |cache_re |regexp *prog
cea2e8a9 1928s |U8* |reghop |U8 *pos|I32 off
1929s |U8* |reghopmaybe |U8 *pos|I32 off
1930#endif
1931
0cb96387 1932#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
cea2e8a9 1933s |void |debprof |OP *o
1934#endif
1935
0cb96387 1936#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
cea2e8a9 1937s |SV* |save_scalar_at |SV **sptr
1938#endif
1939
0cb96387 1940#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1941s |IV |asIV |SV* sv
1942s |UV |asUV |SV* sv
1943s |SV* |more_sv
1944s |void |more_xiv
1945s |void |more_xnv
1946s |void |more_xpv
1947s |void |more_xrv
1948s |XPVIV* |new_xiv
1949s |XPVNV* |new_xnv
1950s |XPV* |new_xpv
1951s |XRV* |new_xrv
1952s |void |del_xiv |XPVIV* p
1953s |void |del_xnv |XPVNV* p
1954s |void |del_xpv |XPV* p
1955s |void |del_xrv |XRV* p
1956s |void |sv_unglob |SV* sv
cea2e8a9 1957s |void |not_a_number |SV *sv
1958s |void |visit |SVFUNC_t f
1959# if defined(PURIFY)
1960s |void |reg_add |SV *sv
1961s |void |reg_remove |SV *sv
1962# else
4f63d024 1963ns |void* |my_safemalloc |MEM_SIZE size
cea2e8a9 1964# endif
1965s |void |sv_add_backref |SV *tsv|SV *sv
1966s |void |sv_del_backref |SV *sv
1967# if defined(DEBUGGING)
1968s |void |del_sv |SV *p
1969# endif
1970#endif
1971
0cb96387 1972#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
cea2e8a9 1973s |void |check_uni
1974s |void |force_next |I32 type
1975s |char* |force_version |char *start
1976s |char* |force_word |char *start|int token|int check_keyword \
1977 |int allow_pack|int allow_tick
1978s |SV* |tokeq |SV *sv
1979s |char* |scan_const |char *start
1980s |char* |scan_formline |char *s
1981s |char* |scan_heredoc |char *s
1982s |char* |scan_ident |char *s|char *send|char *dest \
1983 |STRLEN destlen|I32 ck_uni
1984s |char* |scan_inputsymbol|char *start
1985s |char* |scan_pat |char *start|I32 type
1986s |char* |scan_str |char *start
1987s |char* |scan_subst |char *start
1988s |char* |scan_trans |char *start
1989s |char* |scan_word |char *s|char *dest|STRLEN destlen \
1990 |int allow_package|STRLEN *slp
1991s |char* |skipspace |char *s
1992s |void |checkcomma |char *s|char *name|char *what
1993s |void |force_ident |char *s|int kind
1994s |void |incline |char *s
1995s |int |intuit_method |char *s|GV *gv
1996s |int |intuit_more |char *s
1997s |I32 |lop |I32 f|expectation x|char *s
1998s |void |missingterm |char *s
1999s |void |no_op |char *what|char *s
2000s |void |set_csh
2001s |I32 |sublex_done
2002s |I32 |sublex_push
2003s |I32 |sublex_start
2004s |char * |filter_gets |SV *sv|PerlIO *fp|STRLEN append
2005s |SV* |new_constant |char *s|STRLEN len|char *key|SV *sv \
2006 |SV *pv|char *type
2007s |int |ao |int toketype
2008s |void |depcom
2009s |char* |incl_perldb
2010s |I32 |utf16_textfilter|int idx|SV *sv|int maxlen
2011s |I32 |utf16rev_textfilter|int idx|SV *sv|int maxlen
cea2e8a9 2012# if defined(CRIPPLED_CC)
2013s |int |uni |I32 f|char *s
2014# endif
2015# if defined(WIN32)
2016s |I32 |win32_textfilter |int idx|SV *sv|int maxlen
2017# endif
2018#endif
2019
0cb96387 2020#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
cea2e8a9 2021s |SV*|isa_lookup |HV *stash|const char *name|int len|int level
2022#endif
2023
0cb96387 2024#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
cea2e8a9 2025s |SV* |mess_alloc
cea2e8a9 2026# if defined(LEAKTEST)
2027s |void |xstat |int
2028# endif
2029#endif