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