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