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