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