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