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