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