oct and hex in glorious 64 bit (with less bugs) (was Re: hex and oct again (was Re...
[p5sagit/p5-mst-13.2.git] / embed.pl
CommitLineData
5f05dabc 1#!/usr/bin/perl -w
e50aee73 2
954c1994 3require 5.003; # keep this compatible, an old perl is all we may have before
4 # we build the new one
5f05dabc 5
cea2e8a9 6#
7# See database of global and static function prototypes at the __END__.
8# This is used to generate prototype headers under various configurations,
9# export symbols lists for different platforms, and macros to provide an
10# implicit interpreter context argument.
11#
12
13my $END = tell DATA;
14
15# walk table providing an array of components in each line to
16# subroutine, printing the result
17sub walk_table (&@) {
18 my $function = shift;
19 my $filename = shift || '-';
20 my $leader = shift;
21 my $trailer = shift;
22 my $F;
23 local *F;
24 if (ref $filename) { # filehandle
25 $F = $filename;
26 }
27 else {
918426be 28 unlink $filename;
cea2e8a9 29 open F, ">$filename" or die "Can't open $filename: $!";
30 $F = \*F;
31 }
32 print $F $leader if $leader;
33 seek DATA, $END, 0; # so we may restart
34 while (<DATA>) {
35 chomp;
1d7c1841 36 next if /^:/;
cea2e8a9 37 while (s|\\$||) {
38 $_ .= <DATA>;
39 chomp;
40 }
41 my @args;
42 if (/^\s*(#|$)/) {
43 @args = $_;
44 }
45 else {
46 @args = split /\s*\|\s*/, $_;
47 }
4543f4c0 48 my @outs = &{$function}(@args);
49 print $F @outs; # $function->(@args) is not 5.003
cea2e8a9 50 }
51 print $F $trailer if $trailer;
52 close $F unless ref $filename;
53}
54
55sub munge_c_files () {
56 my $functions = {};
57 unless (@ARGV) {
58 warn "\@ARGV empty, nothing to do\n";
59 return;
60 }
61 walk_table {
62 if (@_ > 1) {
63 $functions->{$_[2]} = \@_ if $_[@_-1] =~ /\.\.\./;
64 }
65 } '/dev/null';
66 local $^I = '.bak';
67 while (<>) {
68# if (/^#\s*include\s+"perl.h"/) {
69# my $file = uc $ARGV;
70# $file =~ s/\./_/g;
71# print "#define PERL_IN_$file\n";
72# }
73# s{^(\w+)\s*\(}
74# {
75# my $f = $1;
76# my $repl = "$f(";
77# if (exists $functions->{$f}) {
78# my $flags = $functions->{$f}[0];
79# $repl = "Perl_$repl" if $flags =~ /p/;
80# unless ($flags =~ /n/) {
81# $repl .= "pTHX";
82# $repl .= "_ " if @{$functions->{$f}} > 3;
83# }
84# warn("$ARGV:$.:$repl\n");
85# }
86# $repl;
87# }e;
88 s{(\b(\w+)[ \t]*\([ \t]*(?!aTHX))}
89 {
90 my $repl = $1;
91 my $f = $2;
92 if (exists $functions->{$f}) {
93 $repl .= "aTHX_ ";
94 warn("$ARGV:$.:$`#$repl#$'");
95 }
96 $repl;
97 }eg;
98 print;
99 close ARGV if eof; # restart $.
100 }
101 exit;
102}
103
104#munge_c_files();
105
106# generate proto.h
0cb96387 107my $wrote_protected = 0;
108
cea2e8a9 109sub write_protos {
110 my $ret = "";
111 if (@_ == 1) {
112 my $arg = shift;
1d7c1841 113 $ret .= "$arg\n";
cea2e8a9 114 }
115 else {
116 my ($flags,$retval,$func,@args) = @_;
117 if ($flags =~ /s/) {
118 $retval = "STATIC $retval";
119 $func = "S_$func";
120 }
0cb96387 121 else {
1d7c1841 122 $retval = "PERL_CALLCONV $retval";
0cb96387 123 if ($flags =~ /p/) {
124 $func = "Perl_$func";
125 }
cea2e8a9 126 }
127 $ret .= "$retval\t$func(";
128 unless ($flags =~ /n/) {
129 $ret .= "pTHX";
130 $ret .= "_ " if @args;
131 }
132 if (@args) {
133 $ret .= join ", ", @args;
134 }
135 else {
136 $ret .= "void" if $flags =~ /n/;
137 }
138 $ret .= ")";
139 $ret .= " __attribute__((noreturn))" if $flags =~ /r/;
1c846c1f 140 if( $flags =~ /f/ ) {
894356b3 141 my $prefix = $flags =~ /n/ ? '' : 'pTHX_';
1c846c1f 142 my $args = scalar @args;
d5b3b440 143 $ret .= "\n#ifdef CHECK_FORMAT\n";
894356b3 144 $ret .= sprintf " __attribute__((format(printf,%s%d,%s%d)))",
1c846c1f 145 $prefix, $args - 1, $prefix, $args;
894356b3 146 $ret .= "\n#endif\n";
147 }
cea2e8a9 148 $ret .= ";\n";
149 }
150 $ret;
151}
152
954c1994 153# generates global.sym (API export list), and populates %global with global symbols
cea2e8a9 154sub write_global_sym {
155 my $ret = "";
156 if (@_ > 1) {
157 my ($flags,$retval,$func,@args) = @_;
954c1994 158 if ($flags =~ /A/ && $flags !~ /x/) { # public API, so export
cea2e8a9 159 $func = "Perl_$func" if $flags =~ /p/;
160 $ret = "$func\n";
161 }
162 }
163 $ret;
164}
165
166
167walk_table(\&write_protos, 'proto.h', <<'EOT');
168/*
169 * !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
170 * This file is autogenerated from data in embed.pl. Edit that file
171 * and run 'make regen_headers' to effect changes.
172 */
173
174EOT
175
176walk_table(\&write_global_sym, 'global.sym', <<'EOT');
177#
178# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
179# This file is autogenerated from data in embed.pl. Edit that file
180# and run 'make regen_headers' to effect changes.
181#
182
183EOT
184
709f4e38 185# XXX others that may need adding
186# warnhook
187# hints
188# copline
84fee439 189my @extvars = qw(sv_undef sv_yes sv_no na dowarn
1c846c1f 190 curcop compiling
84fee439 191 tainting tainted stack_base stack_sp sv_arenaroot
256a4781 192 no_modify
84fee439 193 curstash DBsub DBsingle debstash
1c846c1f 194 rsfp
84fee439 195 stdingv
6b88bc9c 196 defgv
197 errgv
3070f6ec 198 rsfp_filters
199 perldb
709f4e38 200 diehook
201 dirty
202 perl_destruct_level
ac634a9a 203 ppaddr
84fee439 204 );
205
5f05dabc 206sub readsyms (\%$) {
207 my ($syms, $file) = @_;
5f05dabc 208 local (*FILE, $_);
209 open(FILE, "< $file")
210 or die "embed.pl: Can't open $file: $!\n";
211 while (<FILE>) {
212 s/[ \t]*#.*//; # Delete comments.
213 if (/^\s*(\S+)\s*$/) {
22c35a8c 214 my $sym = $1;
215 warn "duplicate symbol $sym while processing $file\n"
216 if exists $$syms{$sym};
217 $$syms{$sym} = 1;
5f05dabc 218 }
219 }
220 close(FILE);
221}
222
cea2e8a9 223# Perl_pp_* and Perl_ck_* are in pp.sym
224readsyms my %ppsym, 'pp.sym';
5f05dabc 225
c6af7a1a 226sub readvars(\%$$@) {
227 my ($syms, $file,$pre,$keep_pre) = @_;
d4cce5f1 228 local (*FILE, $_);
229 open(FILE, "< $file")
230 or die "embed.pl: Can't open $file: $!\n";
231 while (<FILE>) {
232 s/[ \t]*#.*//; # Delete comments.
51371543 233 if (/PERLVARA?I?C?\($pre(\w+)/) {
22c35a8c 234 my $sym = $1;
c6af7a1a 235 $sym = $pre . $sym if $keep_pre;
22c35a8c 236 warn "duplicate symbol $sym while processing $file\n"
237 if exists $$syms{$sym};
51371543 238 $$syms{$sym} = $pre || 1;
d4cce5f1 239 }
240 }
241 close(FILE);
242}
243
244my %intrp;
245my %thread;
246
247readvars %intrp, 'intrpvar.h','I';
248readvars %thread, 'thrdvar.h','T';
22239a37 249readvars %globvar, 'perlvars.h','G';
d4cce5f1 250
4543f4c0 251my $sym;
252foreach $sym (sort keys %thread) {
34b58025 253 warn "$sym in intrpvar.h as well as thrdvar.h\n" if exists $intrp{$sym};
51371543 254}
d4cce5f1 255
c6af7a1a 256sub undefine ($) {
257 my ($sym) = @_;
258 "#undef $sym\n";
259}
260
5f05dabc 261sub hide ($$) {
262 my ($from, $to) = @_;
263 my $t = int(length($from) / 8);
264 "#define $from" . "\t" x ($t < 3 ? 3 - $t : 1) . "$to\n";
265}
c6af7a1a 266
6f4183fe 267sub bincompat_var ($$) {
51371543 268 my ($pfx, $sym) = @_;
acfe0abc 269 my $arg = ($pfx eq 'G' ? 'NULL' : 'aTHX');
c5be433b 270 undefine("PL_$sym") . hide("PL_$sym", "(*Perl_${pfx}${sym}_ptr($arg))");
c6af7a1a 271}
272
d4cce5f1 273sub multon ($$$) {
274 my ($sym,$pre,$ptr) = @_;
3280af22 275 hide("PL_$sym", "($ptr$pre$sym)");
5f05dabc 276}
54aff467 277
d4cce5f1 278sub multoff ($$) {
279 my ($sym,$pre) = @_;
533c011a 280 return hide("PL_$pre$sym", "PL_$sym");
5f05dabc 281}
282
283unlink 'embed.h';
cea2e8a9 284open(EM, '> embed.h') or die "Can't create embed.h: $!\n";
e50aee73 285
286print EM <<'END';
1c846c1f 287/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
cea2e8a9 288 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
c6af7a1a 289 perlvars.h and thrdvar.h. Any changes made here will be lost!
76b72cf1 290*/
e50aee73 291
292/* (Doing namespace management portably in C is really gross.) */
293
22c35a8c 294/* NO_EMBED is no longer supported. i.e. EMBED is always active. */
820c3be9 295
538feb02 296/* provide binary compatible (but inconsistent) names */
297#if defined(PERL_BINCOMPAT_5005)
c0e79ee6 298# define Perl_call_atexit perl_atexit
299# define Perl_eval_sv perl_eval_sv
300# define Perl_eval_pv perl_eval_pv
538feb02 301# define Perl_call_argv perl_call_argv
302# define Perl_call_method perl_call_method
303# define Perl_call_pv perl_call_pv
304# define Perl_call_sv perl_call_sv
305# define Perl_get_av perl_get_av
306# define Perl_get_cv perl_get_cv
307# define Perl_get_hv perl_get_hv
308# define Perl_get_sv perl_get_sv
309# define Perl_init_i18nl10n perl_init_i18nl10n
310# define Perl_init_i18nl14n perl_init_i18nl14n
311# define Perl_new_collate perl_new_collate
312# define Perl_new_ctype perl_new_ctype
313# define Perl_new_numeric perl_new_numeric
314# define Perl_require_pv perl_require_pv
315# define Perl_safesyscalloc Perl_safecalloc
316# define Perl_safesysfree Perl_safefree
317# define Perl_safesysmalloc Perl_safemalloc
318# define Perl_safesysrealloc Perl_saferealloc
319# define Perl_set_numeric_local perl_set_numeric_local
320# define Perl_set_numeric_standard perl_set_numeric_standard
37bd1396 321/* malloc() pollution was the default in earlier versions, so enable
322 * it for bincompat; but not for systems that used to do prevent that,
323 * or when they ask for {HIDE,EMBED}MYMALLOC */
324# if !defined(EMBEDMYMALLOC) && !defined(HIDEMYMALLOC)
325# if !defined(NeXT) && !defined(__NeXT) && !defined(__MACHTEN__) && \
326 !defined(__QNX__)
327# define PERL_POLLUTE_MALLOC
328# endif
3d3b6b6a 329# endif
538feb02 330#endif
331
22c35a8c 332/* Hide global symbols */
5f05dabc 333
cea2e8a9 334#if !defined(PERL_IMPLICIT_CONTEXT)
e50aee73 335
e50aee73 336END
337
cea2e8a9 338walk_table {
339 my $ret = "";
340 if (@_ == 1) {
341 my $arg = shift;
12a98ad5 342 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/;
cea2e8a9 343 }
344 else {
345 my ($flags,$retval,$func,@args) = @_;
346 unless ($flags =~ /o/) {
347 if ($flags =~ /s/) {
348 $ret .= hide($func,"S_$func");
349 }
350 elsif ($flags =~ /p/) {
351 $ret .= hide($func,"Perl_$func");
352 }
353 }
354 }
355 $ret;
356} \*EM;
357
358for $sym (sort keys %ppsym) {
359 $sym =~ s/^Perl_//;
360 print EM hide($sym, "Perl_$sym");
361}
362
363print EM <<'END';
364
365#else /* PERL_IMPLICIT_CONTEXT */
366
367END
368
369my @az = ('a'..'z');
370
371walk_table {
372 my $ret = "";
373 if (@_ == 1) {
374 my $arg = shift;
12a98ad5 375 $ret .= "$arg\n" if $arg =~ /^#\s*(if|ifn?def|else|endif)\b/;
cea2e8a9 376 }
377 else {
378 my ($flags,$retval,$func,@args) = @_;
379 unless ($flags =~ /o/) {
380 my $args = scalar @args;
381 if ($args and $args[$args-1] =~ /\.\.\./) {
382 # we're out of luck for varargs functions under CPP
383 }
384 elsif ($flags =~ /n/) {
385 if ($flags =~ /s/) {
386 $ret .= hide($func,"S_$func");
387 }
388 elsif ($flags =~ /p/) {
389 $ret .= hide($func,"Perl_$func");
390 }
391 }
392 else {
393 my $alist = join(",", @az[0..$args-1]);
394 $ret = "#define $func($alist)";
395 my $t = int(length($ret) / 8);
396 $ret .= "\t" x ($t < 4 ? 4 - $t : 1);
397 if ($flags =~ /s/) {
398 $ret .= "S_$func(aTHX";
399 }
400 elsif ($flags =~ /p/) {
401 $ret .= "Perl_$func(aTHX";
402 }
403 $ret .= "_ " if $alist;
404 $ret .= $alist . ")\n";
405 }
406 }
407 }
408 $ret;
409} \*EM;
410
411for $sym (sort keys %ppsym) {
412 $sym =~ s/^Perl_//;
413 if ($sym =~ /^ck_/) {
414 print EM hide("$sym(a)", "Perl_$sym(aTHX_ a)");
415 }
416 elsif ($sym =~ /^pp_/) {
417 print EM hide("$sym()", "Perl_$sym(aTHX)");
418 }
419 else {
420 warn "Illegal symbol '$sym' in pp.sym";
421 }
e50aee73 422}
423
e50aee73 424print EM <<'END';
425
cea2e8a9 426#endif /* PERL_IMPLICIT_CONTEXT */
22c35a8c 427
428END
429
22c35a8c 430print EM <<'END';
431
cea2e8a9 432/* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to
433 disable them.
434 */
435
538feb02 436#if !defined(PERL_CORE)
5bc28da9 437# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr))
438# define sv_setptrref(rv,ptr) sv_setref_iv(rv,Nullch,PTR2IV(ptr))
538feb02 439#endif
cea2e8a9 440
538feb02 441#if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) && !defined(PERL_BINCOMPAT_5005)
cea2e8a9 442
443/* Compatibility for various misnamed functions. All functions
444 in the API that begin with "perl_" (not "Perl_") take an explicit
445 interpreter context pointer.
446 The following are not like that, but since they had a "perl_"
447 prefix in previous versions, we provide compatibility macros.
448 */
65cec589 449# define perl_atexit(a,b) call_atexit(a,b)
450# define perl_call_argv(a,b,c) call_argv(a,b,c)
451# define perl_call_pv(a,b) call_pv(a,b)
452# define perl_call_method(a,b) call_method(a,b)
453# define perl_call_sv(a,b) call_sv(a,b)
454# define perl_eval_sv(a,b) eval_sv(a,b)
455# define perl_eval_pv(a,b) eval_pv(a,b)
456# define perl_require_pv(a) require_pv(a)
457# define perl_get_sv(a,b) get_sv(a,b)
458# define perl_get_av(a,b) get_av(a,b)
459# define perl_get_hv(a,b) get_hv(a,b)
460# define perl_get_cv(a,b) get_cv(a,b)
461# define perl_init_i18nl10n(a) init_i18nl10n(a)
462# define perl_init_i18nl14n(a) init_i18nl14n(a)
463# define perl_new_ctype(a) new_ctype(a)
464# define perl_new_collate(a) new_collate(a)
465# define perl_new_numeric(a) new_numeric(a)
cea2e8a9 466
467/* varargs functions can't be handled with CPP macros. :-(
468 This provides a set of compatibility functions that don't take
469 an extra argument but grab the context pointer using the macro
470 dTHX.
471 */
acfe0abc 472#if defined(PERL_IMPLICIT_CONTEXT)
cea2e8a9 473# define croak Perl_croak_nocontext
c5be433b 474# define deb Perl_deb_nocontext
cea2e8a9 475# define die Perl_die_nocontext
476# define form Perl_form_nocontext
e4783991 477# define load_module Perl_load_module_nocontext
5a844595 478# define mess Perl_mess_nocontext
cea2e8a9 479# define newSVpvf Perl_newSVpvf_nocontext
480# define sv_catpvf Perl_sv_catpvf_nocontext
481# define sv_setpvf Perl_sv_setpvf_nocontext
482# define warn Perl_warn_nocontext
c5be433b 483# define warner Perl_warner_nocontext
cea2e8a9 484# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext
485# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext
486#endif
487
488#endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */
489
490#if !defined(PERL_IMPLICIT_CONTEXT)
491/* undefined symbols, point them back at the usual ones */
492# define Perl_croak_nocontext Perl_croak
493# define Perl_die_nocontext Perl_die
c5be433b 494# define Perl_deb_nocontext Perl_deb
cea2e8a9 495# define Perl_form_nocontext Perl_form
e4783991 496# define Perl_load_module_nocontext Perl_load_module
5a844595 497# define Perl_mess_nocontext Perl_mess
c5be433b 498# define Perl_newSVpvf_nocontext Perl_newSVpvf
499# define Perl_sv_catpvf_nocontext Perl_sv_catpvf
500# define Perl_sv_setpvf_nocontext Perl_sv_setpvf
cea2e8a9 501# define Perl_warn_nocontext Perl_warn
c5be433b 502# define Perl_warner_nocontext Perl_warner
cea2e8a9 503# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg
504# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg
505#endif
db5cf5a9 506
d4cce5f1 507END
508
509close(EM);
510
511unlink 'embedvar.h';
512open(EM, '> embedvar.h')
513 or die "Can't create embedvar.h: $!\n";
514
515print EM <<'END';
1c846c1f 516/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
cea2e8a9 517 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
c6af7a1a 518 perlvars.h and thrdvar.h. Any changes made here will be lost!
d4cce5f1 519*/
520
521/* (Doing namespace management portably in C is really gross.) */
522
54aff467 523/*
acfe0abc 524 The following combinations of MULTIPLICITY, USE_5005THREADS
54aff467 525 and PERL_IMPLICIT_CONTEXT are supported:
526 1) none
527 2) MULTIPLICITY # supported for compatibility
528 3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT
4d1ff10f 529 4) USE_5005THREADS && PERL_IMPLICIT_CONTEXT
530 5) MULTIPLICITY && USE_5005THREADS && PERL_IMPLICIT_CONTEXT
54aff467 531
532 All other combinations of these flags are errors.
533
534 #3, #4, #5, and #6 are supported directly, while #2 is a special
535 case of #3 (supported by redefining vTHX appropriately).
536*/
cea2e8a9 537
54aff467 538#if defined(MULTIPLICITY)
539/* cases 2, 3 and 5 above */
cea2e8a9 540
54aff467 541# if defined(PERL_IMPLICIT_CONTEXT)
542# define vTHX aTHX
543# else
544# define vTHX PERL_GET_INTERP
545# endif
cea2e8a9 546
e50aee73 547END
548
d4cce5f1 549for $sym (sort keys %thread) {
54aff467 550 print EM multon($sym,'T','vTHX->');
d4cce5f1 551}
552
553print EM <<'END';
554
4d1ff10f 555# if defined(USE_5005THREADS)
54aff467 556/* case 5 above */
d4cce5f1 557
558END
559
560for $sym (sort keys %intrp) {
c5be433b 561 print EM multon($sym,'I','PERL_GET_INTERP->');
760ac839 562}
760ac839 563
55497cff 564print EM <<'END';
565
4d1ff10f 566# else /* !USE_5005THREADS */
54aff467 567/* cases 2 and 3 above */
55497cff 568
569END
760ac839 570
d4cce5f1 571for $sym (sort keys %intrp) {
54aff467 572 print EM multon($sym,'I','vTHX->');
d4cce5f1 573}
574
575print EM <<'END';
576
4d1ff10f 577# endif /* USE_5005THREADS */
d4cce5f1 578
54aff467 579#else /* !MULTIPLICITY */
1d7c1841 580
1d7c1841 581/* cases 1 and 4 above */
5f05dabc 582
56d28764 583END
e50aee73 584
d4cce5f1 585for $sym (sort keys %intrp) {
54aff467 586 print EM multoff($sym,'I');
d4cce5f1 587}
588
589print EM <<'END';
590
acfe0abc 591# if defined(USE_5005THREADS)
54aff467 592/* case 4 above */
d4cce5f1 593
594END
595
596for $sym (sort keys %thread) {
54aff467 597 print EM multon($sym,'T','aTHX->');
5f05dabc 598}
599
600print EM <<'END';
601
acfe0abc 602# else /* !USE_5005THREADS */
1d7c1841 603/* case 1 above */
d4cce5f1 604
605END
606
607for $sym (sort keys %thread) {
54aff467 608 print EM multoff($sym,'T');
d4cce5f1 609}
610
611print EM <<'END';
612
acfe0abc 613# endif /* USE_5005THREADS */
54aff467 614#endif /* MULTIPLICITY */
d4cce5f1 615
54aff467 616#if defined(PERL_GLOBAL_STRUCT)
22239a37 617
618END
619
620for $sym (sort keys %globvar) {
533c011a 621 print EM multon($sym,'G','PL_Vars.');
22239a37 622}
623
624print EM <<'END';
625
626#else /* !PERL_GLOBAL_STRUCT */
627
628END
629
630for $sym (sort keys %globvar) {
631 print EM multoff($sym,'G');
632}
633
634print EM <<'END';
635
22239a37 636#endif /* PERL_GLOBAL_STRUCT */
637
85add8c2 638#ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */
84fee439 639
640END
641
642for $sym (sort @extvars) {
643 print EM hide($sym,"PL_$sym");
644}
645
646print EM <<'END';
647
db5cf5a9 648#endif /* PERL_POLLUTE */
84fee439 649END
650
3fe35a81 651close(EM);
c6af7a1a 652
51371543 653unlink 'perlapi.h';
654unlink 'perlapi.c';
655open(CAPI, '> perlapi.c') or die "Can't create perlapi.c: $!\n";
656open(CAPIH, '> perlapi.h') or die "Can't create perlapi.h: $!\n";
657
658print CAPIH <<'EOT';
1c846c1f 659/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
51371543 660 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
661 perlvars.h and thrdvar.h. Any changes made here will be lost!
662*/
663
51371543 664/* declare accessor functions for Perl variables */
6f4183fe 665#ifndef __perlapi_h__
666#define __perlapi_h__
51371543 667
acfe0abc 668#if defined (MULTIPLICITY)
c5be433b 669
51371543 670START_EXTERN_C
671
672#undef PERLVAR
673#undef PERLVARA
674#undef PERLVARI
675#undef PERLVARIC
acfe0abc 676#define PERLVAR(v,t) EXTERN_C t* Perl_##v##_ptr(pTHX);
51371543 677#define PERLVARA(v,n,t) typedef t PL_##v##_t[n]; \
acfe0abc 678 EXTERN_C PL_##v##_t* Perl_##v##_ptr(pTHX);
51371543 679#define PERLVARI(v,t,i) PERLVAR(v,t)
c5be433b 680#define PERLVARIC(v,t,i) PERLVAR(v, const t)
51371543 681
682#include "thrdvar.h"
683#include "intrpvar.h"
684#include "perlvars.h"
685
686#undef PERLVAR
687#undef PERLVARA
688#undef PERLVARI
689#undef PERLVARIC
690
691END_EXTERN_C
692
682fc664 693#if defined(PERL_CORE)
6f4183fe 694
682fc664 695/* accessor functions for Perl variables (provide binary compatibility) */
696
697/* these need to be mentioned here, or most linkers won't put them in
698 the perl executable */
699
700#ifndef PERL_NO_FORCE_LINK
701
702START_EXTERN_C
703
704#ifndef DOINIT
705EXT void *PL_force_link_funcs[];
706#else
707EXT void *PL_force_link_funcs[] = {
708#undef PERLVAR
709#undef PERLVARA
710#undef PERLVARI
711#undef PERLVARIC
ea1f607c 712#define PERLVAR(v,t) (void*)Perl_##v##_ptr,
682fc664 713#define PERLVARA(v,n,t) PERLVAR(v,t)
714#define PERLVARI(v,t,i) PERLVAR(v,t)
715#define PERLVARIC(v,t,i) PERLVAR(v,t)
716
717#include "thrdvar.h"
718#include "intrpvar.h"
719#include "perlvars.h"
720
721#undef PERLVAR
722#undef PERLVARA
723#undef PERLVARI
724#undef PERLVARIC
725};
726#endif /* DOINIT */
727
acfe0abc 728END_EXTERN_C
682fc664 729
730#endif /* PERL_NO_FORCE_LINK */
731
732#else /* !PERL_CORE */
51371543 733
734EOT
735
4543f4c0 736foreach $sym (sort keys %intrp) {
6f4183fe 737 print CAPIH bincompat_var('I',$sym);
738}
739
4543f4c0 740foreach $sym (sort keys %thread) {
6f4183fe 741 print CAPIH bincompat_var('T',$sym);
742}
743
4543f4c0 744foreach $sym (sort keys %globvar) {
6f4183fe 745 print CAPIH bincompat_var('G',$sym);
746}
747
748print CAPIH <<'EOT';
749
750#endif /* !PERL_CORE */
acfe0abc 751#endif /* MULTIPLICITY */
6f4183fe 752
753#endif /* __perlapi_h__ */
754
755EOT
d98f61e7 756close CAPIH;
51371543 757
758print CAPI <<'EOT';
1c846c1f 759/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
51371543 760 This file is built by embed.pl from data in embed.pl, pp.sym, intrpvar.h,
761 perlvars.h and thrdvar.h. Any changes made here will be lost!
762*/
763
764#include "EXTERN.h"
765#include "perl.h"
766#include "perlapi.h"
767
acfe0abc 768#if defined (MULTIPLICITY)
51371543 769
770/* accessor functions for Perl variables (provides binary compatibility) */
771START_EXTERN_C
772
773#undef PERLVAR
774#undef PERLVARA
775#undef PERLVARI
776#undef PERLVARIC
6f4183fe 777
6f4183fe 778#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHX) \
779 { return &(aTHX->v); }
780#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHX) \
781 { return &(aTHX->v); }
6f4183fe 782
51371543 783#define PERLVARI(v,t,i) PERLVAR(v,t)
c5be433b 784#define PERLVARIC(v,t,i) PERLVAR(v, const t)
51371543 785
786#include "thrdvar.h"
787#include "intrpvar.h"
c5be433b 788
789#undef PERLVAR
790#undef PERLVARA
acfe0abc 791#define PERLVAR(v,t) t* Perl_##v##_ptr(pTHX) \
c5be433b 792 { return &(PL_##v); }
acfe0abc 793#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHX) \
c5be433b 794 { return &(PL_##v); }
34f7a5fe 795#undef PERLVARIC
acfe0abc 796#define PERLVARIC(v,t,i) const t* Perl_##v##_ptr(pTHX) \
34f7a5fe 797 { return (const t *)&(PL_##v); }
51371543 798#include "perlvars.h"
799
800#undef PERLVAR
801#undef PERLVARA
802#undef PERLVARI
803#undef PERLVARIC
804
acfe0abc 805END_EXTERN_C
6f4183fe 806
acfe0abc 807#endif /* MULTIPLICITY */
51371543 808EOT
809
acfe0abc 810close(CAPI);
811
c5be433b 812# functions that take va_list* for implementing vararg functions
08cd8952 813# NOTE: makedef.pl must be updated if you add symbols to %vfuncs
acfe0abc 814# XXX %vfuncs currently unused
c5be433b 815my %vfuncs = qw(
816 Perl_croak Perl_vcroak
817 Perl_warn Perl_vwarn
818 Perl_warner Perl_vwarner
819 Perl_die Perl_vdie
820 Perl_form Perl_vform
e4783991 821 Perl_load_module Perl_vload_module
5a844595 822 Perl_mess Perl_vmess
c5be433b 823 Perl_deb Perl_vdeb
824 Perl_newSVpvf Perl_vnewSVpvf
825 Perl_sv_setpvf Perl_sv_vsetpvf
826 Perl_sv_setpvf_mg Perl_sv_vsetpvf_mg
827 Perl_sv_catpvf Perl_sv_vcatpvf
828 Perl_sv_catpvf_mg Perl_sv_vcatpvf_mg
829 Perl_dump_indent Perl_dump_vindent
830 Perl_default_protect Perl_vdefault_protect
831);
832
954c1994 833# autogenerate documentation from comments in source files
834
835my %apidocs;
836my %gutsdocs;
837my %docfuncs;
838
60ed1d8c 839sub autodoc ($$) { # parse a file and extract documentation info
840 my($fh,$file) = @_;
497711e7 841 my($in, $doc, $line);
954c1994 842FUNC:
843 while (defined($in = <$fh>)) {
497711e7 844 $line++;
954c1994 845 if ($in =~ /^=for\s+apidoc\s+(.*)\n/) {
846 my $proto = $1;
847 $proto = "||$proto" unless $proto =~ /\|/;
848 my($flags, $ret, $name, @args) = split /\|/, $proto;
849 my $docs = "";
850DOC:
851 while (defined($doc = <$fh>)) {
497711e7 852 $line++;
954c1994 853 last DOC if $doc =~ /^=\w+/;
497711e7 854 if ($doc =~ m:^\*/$:) {
855 warn "=cut missing? $file:$line:$doc";;
856 last DOC;
857 }
954c1994 858 $docs .= $doc;
859 }
860 $docs = "\n$docs" if $docs and $docs !~ /^\n/;
861 if ($flags =~ /m/) {
862 if ($flags =~ /A/) {
60ed1d8c 863 $apidocs{$name} = [$flags, $docs, $ret, $file, @args];
954c1994 864 }
865 else {
60ed1d8c 866 $gutsdocs{$name} = [$flags, $docs, $ret, $file, @args];
954c1994 867 }
868 }
869 else {
60ed1d8c 870 $docfuncs{$name} = [$flags, $docs, $ret, $file, @args];
954c1994 871 }
497711e7 872 if (defined $doc) {
873 if ($doc =~ /^=for/) {
874 $in = $doc;
875 redo FUNC;
876 }
877 } else {
f22d8e4b 878 warn "$file:$line:$in (=cut missing?)";
954c1994 879 }
880 }
881 }
882}
883
884sub docout ($$$) { # output the docs for one function
885 my($fh, $name, $docref) = @_;
60ed1d8c 886 my($flags, $docs, $ret, $file, @args) = @$docref;
954c1994 887
c461cf8f 888 $docs .= "NOTE: this function is experimental and may change or be
889removed without notice.\n\n" if $flags =~ /x/;
1c846c1f 890 $docs .= "NOTE: the perl_ form of this function is deprecated.\n\n"
954c1994 891 if $flags =~ /p/;
892
893 print $fh "=item $name\n$docs";
894
895 if ($flags =~ /U/) { # no usage
896 # nothing
897 } elsif ($flags =~ /s/) { # semicolon ("dTHR;")
898 print $fh "\t\t$name;\n\n";
899 } elsif ($flags =~ /n/) { # no args
900 print $fh "\t$ret\t$name\n\n";
901 } else { # full usage
902 print $fh "\t$ret\t$name";
903 print $fh "(" . join(", ", @args) . ")";
904 print $fh "\n\n";
905 }
60ed1d8c 906 print $fh "=for hackers\nFound in file $file\n\n";
954c1994 907}
908
909my $file;
910for $file (glob('*.c'), glob('*.h')) {
911 open F, "< $file" or die "Cannot open $file for docs: $!\n";
60ed1d8c 912 autodoc(\*F,$file);
954c1994 913 close F or die "Error closing $file: $!\n";
914}
915
916unlink "pod/perlapi.pod";
1c846c1f 917open (DOC, ">pod/perlapi.pod") or
954c1994 918 die "Can't create pod/perlapi.pod: $!\n";
919
920walk_table { # load documented functions into approriate hash
921 if (@_ > 1) {
922 my($flags, $retval, $func, @args) = @_;
923 return "" unless $flags =~ /d/;
924 $func =~ s/\t//g; $flags =~ s/p//; # clean up fields from embed.pl
925 $retval =~ s/\t//;
926 if ($flags =~ /A/) {
927 my $docref = delete $docfuncs{$func};
928 warn "no docs for $func\n" unless $docref and @$docref;
c461cf8f 929 $docref->[0].="x" if $flags =~ /M/;
60ed1d8c 930 $apidocs{$func} = [$docref->[0] . 'A', $docref->[1], $retval,
931 $docref->[3], @args];
954c1994 932 } else {
933 my $docref = delete $docfuncs{$func};
60ed1d8c 934 $gutsdocs{$func} = [$docref->[0], $docref->[1], $retval,
935 $docref->[3], @args];
954c1994 936 }
937 }
938 return "";
939} \*DOC;
940
941for (sort keys %docfuncs) {
1c846c1f 942 # Have you used a full for apidoc or just a func name?
497711e7 943 # Have you used Ap instead of Am in the for apidoc?
954c1994 944 warn "Unable to place $_!\n";
945}
946
947print DOC <<'_EOB_';
948=head1 NAME
949
950perlapi - autogenerated documentation for the perl public API
951
952=head1 DESCRIPTION
953
1c846c1f 954This file contains the documentation of the perl public API generated by
955embed.pl, specifically a listing of functions, macros, flags, and variables
956that may be used by extension writers. The interfaces of any functions that
954c1994 957are not listed here are subject to change without notice. For this reason,
958blindly using functions listed in proto.h is to be avoided when writing
959extensions.
960
961Note that all Perl API global variables must be referenced with the C<PL_>
962prefix. Some macros are provided for compatibility with the older,
963unadorned names, but this support may be disabled in a future release.
964
965The listing is alphabetical, case insensitive.
966
967=over 8
968
969_EOB_
970
971my $key;
972for $key (sort { uc($a) cmp uc($b); } keys %apidocs) { # case insensitive sort
973 docout(\*DOC, $key, $apidocs{$key});
974}
975
976print DOC <<'_EOE_';
977=back
978
979=head1 AUTHORS
980
981Until May 1997, this document was maintained by Jeff Okamoto
982<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
983
984With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
985Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
986Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
987Stephen McCamant, and Gurusamy Sarathy.
988
989API Listing originally by Dean Roehrich <roehrich@cray.com>.
990
991Updated to be autogenerated from comments in the source by Benjamin Stuhl.
992
993=head1 SEE ALSO
994
995perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
996
997_EOE_
998
999
1000close(DOC);
1001
2b9d42f0 1002unlink "pod/perlintern.pod";
1003
1c846c1f 1004open(GUTS, ">pod/perlintern.pod") or
954c1994 1005 die "Unable to create pod/perlintern.pod: $!\n";
1006print GUTS <<'END';
1007=head1 NAME
1008
1c846c1f 1009perlintern - autogenerated documentation of purely B<internal>
954c1994 1010 Perl functions
1011
1012=head1 DESCRIPTION
1013
1c846c1f 1014This file is the autogenerated documentation of functions in the
4375e838 1015Perl interpreter that are documented using Perl's internal documentation
1c846c1f 1016format but are not marked as part of the Perl API. In other words,
954c1994 1017B<they are not for use in extensions>!
1018
1019=over 8
1020
1021END
1022
1023for $key (sort { uc($a) cmp uc($b); } keys %gutsdocs) {
1024 docout(\*GUTS, $key, $gutsdocs{$key});
1025}
1026
1027print GUTS <<'END';
1028=back
1029
1030=head1 AUTHORS
1031
1c846c1f 1032The autodocumentation system was originally added to the Perl core by
1033Benjamin Stuhl. Documentation is by whoever was kind enough to
954c1994 1034document their functions.
1035
1036=head1 SEE ALSO
1037
1038perlguts(1), perlapi(1)
1039
1040END
1041
1042close GUTS;
1043
1044
cea2e8a9 1045__END__
1046
1d7c1841 1047: Lines are of the form:
1048: flags|return_type|function_name|arg1|arg2|...|argN
1049:
1050: A line may be continued on another by ending it with a backslash.
1051: Leading and trailing whitespace will be ignored in each component.
1052:
1053: flags are single letters with following meanings:
954c1994 1054: A member of public API
1055: d function has documentation with its source
1d7c1841 1056: s static function, should have an S_ prefix in source
954c1994 1057: file
1d7c1841 1058: n has no implicit interpreter/thread context argument
1059: p function has a Perl_ prefix
894356b3 1060: f function takes printf style format string, varargs
1d7c1841 1061: r function never returns
1062: o has no compatibility macro (#define foo Perl_foo)
1d7c1841 1063: x not exported
c461cf8f 1064: M may change
1d7c1841 1065:
1066: Individual flags may be separated by whitespace.
1067:
1068: New global functions should be added at the end for binary compatibility
1069: in some configurations.
1d7c1841 1070
1071START_EXTERN_C
1072
1073#if defined(PERL_IMPLICIT_SYS)
acfe0abc 1074Ano |PerlInterpreter* |perl_alloc_using \
1d7c1841 1075 |struct IPerlMem* m|struct IPerlMem* ms \
1076 |struct IPerlMem* mp|struct IPerlEnv* e \
1077 |struct IPerlStdIO* io|struct IPerlLIO* lio \
1078 |struct IPerlDir* d|struct IPerlSock* s \
1079 |struct IPerlProc* p
1d7c1841 1080#endif
acfe0abc 1081Anod |PerlInterpreter* |perl_alloc
1082Anod |void |perl_construct |PerlInterpreter* interp
1083Anod |int |perl_destruct |PerlInterpreter* interp
1084Anod |void |perl_free |PerlInterpreter* interp
1085Anod |int |perl_run |PerlInterpreter* interp
1086Anod |int |perl_parse |PerlInterpreter* interp|XSINIT_t xsinit \
1d7c1841 1087 |int argc|char** argv|char** env
1088#if defined(USE_ITHREADS)
acfe0abc 1089Anod |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags
1d7c1841 1090# if defined(PERL_IMPLICIT_SYS)
acfe0abc 1091Ano |PerlInterpreter*|perl_clone_using|PerlInterpreter *interp|UV flags \
1d7c1841 1092 |struct IPerlMem* m|struct IPerlMem* ms \
1093 |struct IPerlMem* mp|struct IPerlEnv* e \
1094 |struct IPerlStdIO* io|struct IPerlLIO* lio \
1095 |struct IPerlDir* d|struct IPerlSock* s \
1096 |struct IPerlProc* p
1097# endif
1098#endif
1099
acfe0abc 1100Anop |Malloc_t|malloc |MEM_SIZE nbytes
1101Anop |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size
1102Anop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes
1103Anop |Free_t |mfree |Malloc_t where
cae6d0e5 1104#if defined(MYMALLOC)
acfe0abc 1105np |MEM_SIZE|malloced_size |void *p
1d7c1841 1106#endif
cea2e8a9 1107
acfe0abc 1108Anp |void* |get_context
1109Anp |void |set_context |void *thx
ba869deb 1110
1d7c1841 1111END_EXTERN_C
1112
1113/* functions with flag 'n' should come before here */
1d7c1841 1114START_EXTERN_C
1d7c1841 1115# include "pp_proto.h"
954c1994 1116Ap |SV* |amagic_call |SV* left|SV* right|int method|int dir
1117Ap |bool |Gv_AMupdate |HV* stash
32251b26 1118Ap |CV* |gv_handler |HV* stash|I32 id
cea2e8a9 1119p |OP* |append_elem |I32 optype|OP* head|OP* tail
1120p |OP* |append_list |I32 optype|LISTOP* first|LISTOP* last
1121p |I32 |apply |I32 type|SV** mark|SV** sp
01ec43d0 1122Ap |void |apply_attrs_string|char *stashpv|CV *cv|char *attrstr|STRLEN len
954c1994 1123Ap |SV* |avhv_delete_ent|AV *ar|SV* keysv|I32 flags|U32 hash
1124Ap |bool |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
1125Ap |SV** |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
10c8fecd 1126Ap |SV** |avhv_store_ent |AV *ar|SV* keysv|SV* val|U32 hash
954c1994 1127Ap |HE* |avhv_iternext |AV *ar
1128Ap |SV* |avhv_iterval |AV *ar|HE* entry
1129Ap |HV* |avhv_keys |AV *ar
1130Apd |void |av_clear |AV* ar
f3b76584 1131Apd |SV* |av_delete |AV* ar|I32 key|I32 flags
1132Apd |bool |av_exists |AV* ar|I32 key
954c1994 1133Apd |void |av_extend |AV* ar|I32 key
f3b76584 1134p |AV* |av_fake |I32 size|SV** svp
954c1994 1135Apd |SV** |av_fetch |AV* ar|I32 key|I32 lval
f3b76584 1136Apd |void |av_fill |AV* ar|I32 fill
954c1994 1137Apd |I32 |av_len |AV* ar
1138Apd |AV* |av_make |I32 size|SV** svp
1139Apd |SV* |av_pop |AV* ar
1140Apd |void |av_push |AV* ar|SV* val
f3b76584 1141p |void |av_reify |AV* ar
954c1994 1142Apd |SV* |av_shift |AV* ar
1143Apd |SV** |av_store |AV* ar|I32 key|SV* val
1144Apd |void |av_undef |AV* ar
1145Apd |void |av_unshift |AV* ar|I32 num
cea2e8a9 1146p |OP* |bind_match |I32 type|OP* left|OP* pat
1147p |OP* |block_end |I32 floor|OP* seq
954c1994 1148Ap |I32 |block_gimme
cea2e8a9 1149p |int |block_start |int full
1150p |void |boot_core_UNIVERSAL
0c4f7ff0 1151p |void |boot_core_PerlIO
1be9d9c6 1152Ap |void |call_list |I32 oldscope|AV* av_list
7f4774ae 1153p |bool |cando |Mode_t mode|Uid_t effective|Stat_t* statbufp
954c1994 1154Ap |U32 |cast_ulong |NV f
1155Ap |I32 |cast_i32 |NV f
1156Ap |IV |cast_iv |NV f
1157Ap |UV |cast_uv |NV f
cea2e8a9 1158#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
954c1994 1159Ap |I32 |my_chsize |int fd|Off_t length
cea2e8a9 1160#endif
4d1ff10f 1161#if defined(USE_5005THREADS)
1be9d9c6 1162Ap |MAGIC* |condpair_magic |SV *sv
cea2e8a9 1163#endif
1164p |OP* |convert |I32 optype|I32 flags|OP* o
954c1994 1165Afprd |void |croak |const char* pat|...
1166Apr |void |vcroak |const char* pat|va_list* args
cea2e8a9 1167#if defined(PERL_IMPLICIT_CONTEXT)
954c1994 1168Afnrp |void |croak_nocontext|const char* pat|...
1169Afnp |OP* |die_nocontext |const char* pat|...
1170Afnp |void |deb_nocontext |const char* pat|...
1171Afnp |char* |form_nocontext |const char* pat|...
d2560b70 1172Anp |void |load_module_nocontext|U32 flags|SV* name|SV* ver|...
954c1994 1173Afnp |SV* |mess_nocontext |const char* pat|...
1174Afnp |void |warn_nocontext |const char* pat|...
1175Afnp |void |warner_nocontext|U32 err|const char* pat|...
1176Afnp |SV* |newSVpvf_nocontext|const char* pat|...
1177Afnp |void |sv_catpvf_nocontext|SV* sv|const char* pat|...
1178Afnp |void |sv_setpvf_nocontext|SV* sv|const char* pat|...
1179Afnp |void |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
1180Afnp |void |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
1181Afnp |int |fprintf_nocontext|PerlIO* stream|const char* fmt|...
b0316773 1182Afnp |int |printf_nocontext|const char* fmt|...
cea2e8a9 1183#endif
1184p |void |cv_ckproto |CV* cv|GV* gv|char* p
1185p |CV* |cv_clone |CV* proto
beab0874 1186Apd |SV* |cv_const_sv |CV* cv
cea2e8a9 1187p |SV* |op_const_sv |OP* o|CV* cv
d0674b55 1188Ap |void |cv_undef |CV* cv
954c1994 1189Ap |void |cx_dump |PERL_CONTEXT* cs
1190Ap |SV* |filter_add |filter_t funcp|SV* datasv
1191Ap |void |filter_del |filter_t funcp
1192Ap |I32 |filter_read |int idx|SV* buffer|int maxlen
1193Ap |char** |get_op_descs
1194Ap |char** |get_op_names
cea2e8a9 1195p |char* |get_no_modify
1196p |U32* |get_opargs
954c1994 1197Ap |PPADDR_t*|get_ppaddr
cea2e8a9 1198p |I32 |cxinc
954c1994 1199Afp |void |deb |const char* pat|...
1200Ap |void |vdeb |const char* pat|va_list* args
1201Ap |void |debprofdump
1202Ap |I32 |debop |OP* o
1203Ap |I32 |debstack
1204Ap |I32 |debstackptrs
1205Ap |char* |delimcpy |char* to|char* toend|char* from \
cea2e8a9 1206 |char* fromend|int delim|I32* retlen
1207p |void |deprecate |char* s
1be9d9c6 1208Afp |OP* |die |const char* pat|...
c5be433b 1209p |OP* |vdie |const char* pat|va_list* args
cea2e8a9 1210p |OP* |die_where |char* message|STRLEN msglen
1be9d9c6 1211Ap |void |dounwind |I32 cxix
cea2e8a9 1212p |bool |do_aexec |SV* really|SV** mark|SV** sp
d5a9bfb0 1213p |bool |do_aexec5 |SV* really|SV** mark|SV** sp|int fd|int flag
412d7f2a 1214Ap |int |do_binmode |PerlIO *fp|int iotype|int mode
cea2e8a9 1215p |void |do_chop |SV* asv|SV* sv
1c0ca838 1216Ap |bool |do_close |GV* gv|bool not_implicit
cea2e8a9 1217p |bool |do_eof |GV* gv
1218p |bool |do_exec |char* cmd
1219#if !defined(WIN32)
1220p |bool |do_exec3 |char* cmd|int fd|int flag
1221#endif
1222p |void |do_execfree
1223#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
1224p |I32 |do_ipcctl |I32 optype|SV** mark|SV** sp
1225p |I32 |do_ipcget |I32 optype|SV** mark|SV** sp
1226p |I32 |do_msgrcv |SV** mark|SV** sp
1227p |I32 |do_msgsnd |SV** mark|SV** sp
1228p |I32 |do_semop |SV** mark|SV** sp
1229p |I32 |do_shmio |I32 optype|SV** mark|SV** sp
1230#endif
412d7f2a 1231Ap |void |do_join |SV* sv|SV* del|SV** mark|SV** sp
cea2e8a9 1232p |OP* |do_kv
954c1994 1233Ap |bool |do_open |GV* gv|char* name|I32 len|int as_raw \
cea2e8a9 1234 |int rawmode|int rawperm|PerlIO* supplied_fp
954c1994 1235Ap |bool |do_open9 |GV *gv|char *name|I32 len|int as_raw \
6170680b 1236 |int rawmode|int rawperm|PerlIO *supplied_fp \
1237 |SV *svs|I32 num
a567e93b 1238Ap |bool |do_openn |GV *gv|char *name|I32 len|int as_raw \
1239 |int rawmode|int rawperm|PerlIO *supplied_fp \
1240 |SV **svp|I32 num
cea2e8a9 1241p |void |do_pipe |SV* sv|GV* rgv|GV* wgv
1242p |bool |do_print |SV* sv|PerlIO* fp
1243p |OP* |do_readline
1244p |I32 |do_chomp |SV* sv
1245p |bool |do_seek |GV* gv|Off_t pos|int whence
1246p |void |do_sprintf |SV* sv|I32 len|SV** sarg
1247p |Off_t |do_sysseek |GV* gv|Off_t pos|int whence
1248p |Off_t |do_tell |GV* gv
1249p |I32 |do_trans |SV* sv
81e118e0 1250p |UV |do_vecget |SV* sv|I32 offset|I32 size
cea2e8a9 1251p |void |do_vecset |SV* sv
1252p |void |do_vop |I32 optype|SV* sv|SV* left|SV* right
1253p |OP* |dofile |OP* term
954c1994 1254Ap |I32 |dowantarray
1255Ap |void |dump_all
1256Ap |void |dump_eval
cea2e8a9 1257#if defined(DUMP_FDS)
954c1994 1258Ap |void |dump_fds |char* s
cea2e8a9 1259#endif
954c1994 1260Ap |void |dump_form |GV* gv
1261Ap |void |gv_dump |GV* gv
1262Ap |void |op_dump |OP* arg
1263Ap |void |pmop_dump |PMOP* pm
1264Ap |void |dump_packsubs |HV* stash
1265Ap |void |dump_sub |GV* gv
1266Apd |void |fbm_compile |SV* sv|U32 flags
1267Apd |char* |fbm_instr |unsigned char* big|unsigned char* bigend \
cea2e8a9 1268 |SV* littlesv|U32 flags
1269p |char* |find_script |char *scriptname|bool dosearch \
1270 |char **search_ext|I32 flags
4d1ff10f 1271#if defined(USE_5005THREADS)
cea2e8a9 1272p |PADOFFSET|find_threadsv|const char *name
1273#endif
1274p |OP* |force_list |OP* arg
1275p |OP* |fold_constants |OP* arg
954c1994 1276Afp |char* |form |const char* pat|...
1277Ap |char* |vform |const char* pat|va_list* args
1278Ap |void |free_tmps
cea2e8a9 1279p |OP* |gen_constant_list|OP* o
1280#if !defined(HAS_GETENV_LEN)
c0c883f4 1281p |char* |getenv_len |const char* key|unsigned long *len
cea2e8a9 1282#endif
954c1994 1283Ap |void |gp_free |GV* gv
1284Ap |GP* |gp_ref |GP* gp
1285Ap |GV* |gv_AVadd |GV* gv
1286Ap |GV* |gv_HVadd |GV* gv
1287Ap |GV* |gv_IOadd |GV* gv
1288Ap |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \
cea2e8a9 1289 |I32 method
954c1994 1290Ap |void |gv_check |HV* stash
1291Ap |void |gv_efullname |SV* sv|GV* gv
1292Ap |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
43693395 1293Ap |void |gv_efullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain
954c1994 1294Ap |GV* |gv_fetchfile |const char* name
1295Apd |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
cea2e8a9 1296 |I32 level
954c1994 1297Apd |GV* |gv_fetchmethod |HV* stash|const char* name
1298Apd |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \
cea2e8a9 1299 |I32 autoload
954c1994 1300Ap |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
1301Ap |void |gv_fullname |SV* sv|GV* gv
1302Ap |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
43693395 1303Ap |void |gv_fullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain
954c1994 1304Ap |void |gv_init |GV* gv|HV* stash|const char* name \
cea2e8a9 1305 |STRLEN len|int multi
954c1994 1306Apd |HV* |gv_stashpv |const char* name|I32 create
1307Ap |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
1308Apd |HV* |gv_stashsv |SV* sv|I32 create
1309Apd |void |hv_clear |HV* tb
1310Ap |void |hv_delayfree_ent|HV* hv|HE* entry
da58a35d 1311Apd |SV* |hv_delete |HV* tb|const char* key|I32 klen|I32 flags
954c1994 1312Apd |SV* |hv_delete_ent |HV* tb|SV* key|I32 flags|U32 hash
da58a35d 1313Apd |bool |hv_exists |HV* tb|const char* key|I32 klen
954c1994 1314Apd |bool |hv_exists_ent |HV* tb|SV* key|U32 hash
da58a35d 1315Apd |SV** |hv_fetch |HV* tb|const char* key|I32 klen|I32 lval
954c1994 1316Apd |HE* |hv_fetch_ent |HV* tb|SV* key|I32 lval|U32 hash
1317Ap |void |hv_free_ent |HV* hv|HE* entry
1318Apd |I32 |hv_iterinit |HV* tb
1319Apd |char* |hv_iterkey |HE* entry|I32* retlen
1320Apd |SV* |hv_iterkeysv |HE* entry
1321Apd |HE* |hv_iternext |HV* tb
1322Apd |SV* |hv_iternextsv |HV* hv|char** key|I32* retlen
1323Apd |SV* |hv_iterval |HV* tb|HE* entry
1324Ap |void |hv_ksplit |HV* hv|IV newmax
1325Apd |void |hv_magic |HV* hv|GV* gv|int how
da58a35d 1326Apd |SV** |hv_store |HV* tb|const char* key|I32 klen|SV* val \
cea2e8a9 1327 |U32 hash
954c1994 1328Apd |HE* |hv_store_ent |HV* tb|SV* key|SV* val|U32 hash
1329Apd |void |hv_undef |HV* tb
1330Ap |I32 |ibcmp |const char* a|const char* b|I32 len
1331Ap |I32 |ibcmp_locale |const char* a|const char* b|I32 len
d8eceb89 1332p |bool |ingroup |Gid_t testgid|Uid_t effective
1ee4443e 1333p |void |init_debugger
1be9d9c6 1334Ap |void |init_stacks
b93ec261 1335Ap |void |init_tm |struct tm *ptm
cea2e8a9 1336p |U32 |intro_my
954c1994 1337Ap |char* |instr |const char* big|const char* little
f2b5be74 1338p |bool |io_close |IO* io|bool not_implicit
cea2e8a9 1339p |OP* |invert |OP* cmd
c9d5ac95 1340dp |bool |is_gv_magical |char *name|STRLEN len|U32 flags
78f9721b 1341p |I32 |is_lvalue_sub
954c1994 1342Ap |bool |is_uni_alnum |U32 c
1343Ap |bool |is_uni_alnumc |U32 c
1344Ap |bool |is_uni_idfirst |U32 c
1345Ap |bool |is_uni_alpha |U32 c
1346Ap |bool |is_uni_ascii |U32 c
1347Ap |bool |is_uni_space |U32 c
1348Ap |bool |is_uni_cntrl |U32 c
1349Ap |bool |is_uni_graph |U32 c
1350Ap |bool |is_uni_digit |U32 c
1351Ap |bool |is_uni_upper |U32 c
1352Ap |bool |is_uni_lower |U32 c
1353Ap |bool |is_uni_print |U32 c
1354Ap |bool |is_uni_punct |U32 c
1355Ap |bool |is_uni_xdigit |U32 c
1356Ap |U32 |to_uni_upper |U32 c
1357Ap |U32 |to_uni_title |U32 c
1358Ap |U32 |to_uni_lower |U32 c
1359Ap |bool |is_uni_alnum_lc|U32 c
1360Ap |bool |is_uni_alnumc_lc|U32 c
1361Ap |bool |is_uni_idfirst_lc|U32 c
1362Ap |bool |is_uni_alpha_lc|U32 c
1363Ap |bool |is_uni_ascii_lc|U32 c
1364Ap |bool |is_uni_space_lc|U32 c
1365Ap |bool |is_uni_cntrl_lc|U32 c
1366Ap |bool |is_uni_graph_lc|U32 c
1367Ap |bool |is_uni_digit_lc|U32 c
1368Ap |bool |is_uni_upper_lc|U32 c
1369Ap |bool |is_uni_lower_lc|U32 c
1370Ap |bool |is_uni_print_lc|U32 c
1371Ap |bool |is_uni_punct_lc|U32 c
1372Ap |bool |is_uni_xdigit_lc|U32 c
1373Ap |U32 |to_uni_upper_lc|U32 c
1374Ap |U32 |to_uni_title_lc|U32 c
1375Ap |U32 |to_uni_lower_lc|U32 c
eebe1485 1376Apd |STRLEN |is_utf8_char |U8 *p
1377Apd |bool |is_utf8_string |U8 *s|STRLEN len
954c1994 1378Ap |bool |is_utf8_alnum |U8 *p
1379Ap |bool |is_utf8_alnumc |U8 *p
1380Ap |bool |is_utf8_idfirst|U8 *p
1381Ap |bool |is_utf8_alpha |U8 *p
1382Ap |bool |is_utf8_ascii |U8 *p
1383Ap |bool |is_utf8_space |U8 *p
1384Ap |bool |is_utf8_cntrl |U8 *p
1385Ap |bool |is_utf8_digit |U8 *p
1386Ap |bool |is_utf8_graph |U8 *p
1387Ap |bool |is_utf8_upper |U8 *p
1388Ap |bool |is_utf8_lower |U8 *p
1389Ap |bool |is_utf8_print |U8 *p
1390Ap |bool |is_utf8_punct |U8 *p
1391Ap |bool |is_utf8_xdigit |U8 *p
1392Ap |bool |is_utf8_mark |U8 *p
cea2e8a9 1393p |OP* |jmaybe |OP* arg
1394p |I32 |keyword |char* d|I32 len
1be9d9c6 1395Ap |void |leave_scope |I32 base
cea2e8a9 1396p |void |lex_end
1397p |void |lex_start |SV* line
1cadc447 1398Ap |void |op_null |OP* o
93c66552 1399p |void |op_clear |OP* o
cea2e8a9 1400p |OP* |linklist |OP* o
1401p |OP* |list |OP* o
1402p |OP* |listkids |OP* o
7d3fb230 1403Apd |void |load_module|U32 flags|SV* name|SV* ver|...
e4783991 1404Ap |void |vload_module|U32 flags|SV* name|SV* ver|va_list* args
cea2e8a9 1405p |OP* |localize |OP* arg|I32 lexical
954c1994 1406Apd |I32 |looks_like_number|SV* sv
53305cf1 1407Apd |UV |grok_bin |char* start|STRLEN* len|I32* flags|NV *result
1408Apd |UV |grok_hex |char* start|STRLEN* len|I32* flags|NV *result
dd5dc04f 1409Apd |int |grok_number |const char *pv|STRLEN len|UV *valuep
1410Apd |bool |grok_numeric_radix|const char **sp|const char *send
53305cf1 1411Apd |UV |grok_oct |char* start|STRLEN* len|I32* flags|NV *result
cea2e8a9 1412p |int |magic_clearenv |SV* sv|MAGIC* mg
1413p |int |magic_clear_all_env|SV* sv|MAGIC* mg
1414p |int |magic_clearpack|SV* sv|MAGIC* mg
1415p |int |magic_clearsig |SV* sv|MAGIC* mg
1416p |int |magic_existspack|SV* sv|MAGIC* mg
1417p |int |magic_freeregexp|SV* sv|MAGIC* mg
d460ef45 1418p |int |magic_freeovrld|SV* sv|MAGIC* mg
cea2e8a9 1419p |int |magic_get |SV* sv|MAGIC* mg
1420p |int |magic_getarylen|SV* sv|MAGIC* mg
1421p |int |magic_getdefelem|SV* sv|MAGIC* mg
1422p |int |magic_getglob |SV* sv|MAGIC* mg
1423p |int |magic_getnkeys |SV* sv|MAGIC* mg
1424p |int |magic_getpack |SV* sv|MAGIC* mg
1425p |int |magic_getpos |SV* sv|MAGIC* mg
1426p |int |magic_getsig |SV* sv|MAGIC* mg
1427p |int |magic_getsubstr|SV* sv|MAGIC* mg
1428p |int |magic_gettaint |SV* sv|MAGIC* mg
1429p |int |magic_getuvar |SV* sv|MAGIC* mg
1430p |int |magic_getvec |SV* sv|MAGIC* mg
1431p |U32 |magic_len |SV* sv|MAGIC* mg
4d1ff10f 1432#if defined(USE_5005THREADS)
cea2e8a9 1433p |int |magic_mutexfree|SV* sv|MAGIC* mg
1434#endif
1435p |int |magic_nextpack |SV* sv|MAGIC* mg|SV* key
1436p |U32 |magic_regdata_cnt|SV* sv|MAGIC* mg
1437p |int |magic_regdatum_get|SV* sv|MAGIC* mg
e4b89193 1438p |int |magic_regdatum_set|SV* sv|MAGIC* mg
cea2e8a9 1439p |int |magic_set |SV* sv|MAGIC* mg
1440p |int |magic_setamagic|SV* sv|MAGIC* mg
1441p |int |magic_setarylen|SV* sv|MAGIC* mg
1442p |int |magic_setbm |SV* sv|MAGIC* mg
1443p |int |magic_setdbline|SV* sv|MAGIC* mg
1444#if defined(USE_LOCALE_COLLATE)
1445p |int |magic_setcollxfrm|SV* sv|MAGIC* mg
1446#endif
1447p |int |magic_setdefelem|SV* sv|MAGIC* mg
1448p |int |magic_setenv |SV* sv|MAGIC* mg
1449p |int |magic_setfm |SV* sv|MAGIC* mg
1450p |int |magic_setisa |SV* sv|MAGIC* mg
1451p |int |magic_setglob |SV* sv|MAGIC* mg
1452p |int |magic_setmglob |SV* sv|MAGIC* mg
1453p |int |magic_setnkeys |SV* sv|MAGIC* mg
1454p |int |magic_setpack |SV* sv|MAGIC* mg
1455p |int |magic_setpos |SV* sv|MAGIC* mg
1456p |int |magic_setsig |SV* sv|MAGIC* mg
1457p |int |magic_setsubstr|SV* sv|MAGIC* mg
1458p |int |magic_settaint |SV* sv|MAGIC* mg
1459p |int |magic_setuvar |SV* sv|MAGIC* mg
1460p |int |magic_setvec |SV* sv|MAGIC* mg
1461p |int |magic_set_all_env|SV* sv|MAGIC* mg
1462p |U32 |magic_sizepack |SV* sv|MAGIC* mg
1463p |int |magic_wipepack |SV* sv|MAGIC* mg
1464p |void |magicname |char* sym|char* name|I32 namlen
954c1994 1465Ap |void |markstack_grow
cea2e8a9 1466#if defined(USE_LOCALE_COLLATE)
1467p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen
1468#endif
954c1994 1469Afp |SV* |mess |const char* pat|...
1470Ap |SV* |vmess |const char* pat|va_list* args
5a844595 1471p |void |qerror |SV* err
954c1994 1472Apd |int |mg_clear |SV* sv
1473Apd |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen
1474Apd |MAGIC* |mg_find |SV* sv|int type
1475Apd |int |mg_free |SV* sv
1476Apd |int |mg_get |SV* sv
1477Apd |U32 |mg_length |SV* sv
1478Apd |void |mg_magical |SV* sv
1479Apd |int |mg_set |SV* sv
8fb26106 1480Ap |I32 |mg_size |SV* sv
b93ec261 1481Ap |void |mini_mktime |struct tm *pm
cea2e8a9 1482p |OP* |mod |OP* o|I32 type
16fe6d59 1483p |int |mode_from_discipline|SV* discp
1be9d9c6 1484Ap |char* |moreswitches |char* s
cea2e8a9 1485p |OP* |my |OP* o
954c1994 1486Ap |NV |my_atof |const char *s
2253333f 1487#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY))
954c1994 1488Anp |char* |my_bcopy |const char* from|char* to|I32 len
cea2e8a9 1489#endif
1490#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
954c1994 1491Anp |char* |my_bzero |char* loc|I32 len
cea2e8a9 1492#endif
954c1994 1493Apr |void |my_exit |U32 status
1494Apr |void |my_failure_exit
1495Ap |I32 |my_fflush_all
52e18b1f 1496Anp |Pid_t |my_fork
1497Anp |void |atfork_lock
1498Anp |void |atfork_unlock
954c1994 1499Ap |I32 |my_lstat
cea2e8a9 1500#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
954c1994 1501Anp |I32 |my_memcmp |const char* s1|const char* s2|I32 len
cea2e8a9 1502#endif
1503#if !defined(HAS_MEMSET)
954c1994 1504Anp |void* |my_memset |char* loc|I32 ch|I32 len
cea2e8a9 1505#endif
954c1994 1506Ap |I32 |my_pclose |PerlIO* ptr
1507Ap |PerlIO*|my_popen |char* cmd|char* mode
4a7d1889 1508Ap |PerlIO*|my_popen_list |char* mode|int n|SV ** args
954c1994 1509Ap |void |my_setenv |char* nam|char* val
1510Ap |I32 |my_stat
b93ec261 1511Ap |char * |my_strftime |char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst
cea2e8a9 1512#if defined(MYSWAP)
954c1994 1513Ap |short |my_swap |short s
1514Ap |long |my_htonl |long l
1515Ap |long |my_ntohl |long l
cea2e8a9 1516#endif
1517p |void |my_unexec
954c1994 1518Ap |OP* |newANONLIST |OP* o
1519Ap |OP* |newANONHASH |OP* o
1520Ap |OP* |newANONSUB |I32 floor|OP* proto|OP* block
1521Ap |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right
1522Ap |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop
beab0874 1523Apd |CV* |newCONSTSUB |HV* stash|char* name|SV* sv
954c1994 1524Ap |void |newFORM |I32 floor|OP* o|OP* block
1525Ap |OP* |newFOROP |I32 flags|char* label|line_t forline \
cea2e8a9 1526 |OP* sclr|OP* expr|OP*block|OP*cont
954c1994 1527Ap |OP* |newLOGOP |I32 optype|I32 flags|OP* left|OP* right
1528Ap |OP* |newLOOPEX |I32 type|OP* label
1529Ap |OP* |newLOOPOP |I32 flags|I32 debuggable|OP* expr|OP* block
1530Ap |OP* |newNULLLIST
1531Ap |OP* |newOP |I32 optype|I32 flags
1532Ap |void |newPROG |OP* o
1533Ap |OP* |newRANGE |I32 flags|OP* left|OP* right
1534Ap |OP* |newSLICEOP |I32 flags|OP* subscript|OP* listop
1535Ap |OP* |newSTATEOP |I32 flags|char* label|OP* o
1536Ap |CV* |newSUB |I32 floor|OP* o|OP* proto|OP* block
1537Apd |CV* |newXS |char* name|XSUBADDR_t f|char* filename
1538Apd |AV* |newAV
1539Ap |OP* |newAVREF |OP* o
1540Ap |OP* |newBINOP |I32 type|I32 flags|OP* first|OP* last
1541Ap |OP* |newCVREF |I32 flags|OP* o
1542Ap |OP* |newGVOP |I32 type|I32 flags|GV* gv
1543Ap |GV* |newGVgen |char* pack
1544Ap |OP* |newGVREF |I32 type|OP* o
1545Ap |OP* |newHVREF |OP* o
1546Apd |HV* |newHV
1547Ap |HV* |newHVhv |HV* hv
1548Ap |IO* |newIO
1549Ap |OP* |newLISTOP |I32 type|I32 flags|OP* first|OP* last
1550Ap |OP* |newPADOP |I32 type|I32 flags|SV* sv
1551Ap |OP* |newPMOP |I32 type|I32 flags
1552Ap |OP* |newPVOP |I32 type|I32 flags|char* pv
1553Ap |SV* |newRV |SV* pref
1554Apd |SV* |newRV_noinc |SV *sv
451be7b1 1555Apd |SV* |newSV |STRLEN len
954c1994 1556Ap |OP* |newSVREF |OP* o
1557Ap |OP* |newSVOP |I32 type|I32 flags|SV* sv
1558Apd |SV* |newSViv |IV i
1a3327fb 1559Apd |SV* |newSVuv |UV u
954c1994 1560Apd |SV* |newSVnv |NV n
1561Apd |SV* |newSVpv |const char* s|STRLEN len
1562Apd |SV* |newSVpvn |const char* s|STRLEN len
c3654f1a 1563Apd |SV* |newSVpvn_share |const char* s|I32 len|U32 hash
954c1994 1564Afpd |SV* |newSVpvf |const char* pat|...
1565Ap |SV* |vnewSVpvf |const char* pat|va_list* args
1566Apd |SV* |newSVrv |SV* rv|const char* classname
1567Apd |SV* |newSVsv |SV* old
1568Ap |OP* |newUNOP |I32 type|I32 flags|OP* first
1569Ap |OP* |newWHILEOP |I32 flags|I32 debuggable|LOOP* loop \
cea2e8a9 1570 |I32 whileline|OP* expr|OP* block|OP* cont
c5be433b 1571
1be9d9c6 1572Ap |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
cea2e8a9 1573p |PerlIO*|nextargv |GV* gv
954c1994 1574Ap |char* |ninstr |const char* big|const char* bigend \
cea2e8a9 1575 |const char* little|const char* lend
1576p |OP* |oopsCV |OP* o
1be9d9c6 1577Ap |void |op_free |OP* arg
cea2e8a9 1578p |void |package |OP* o
1579p |PADOFFSET|pad_alloc |I32 optype|U32 tmptype
1580p |PADOFFSET|pad_allocmy |char* name
1581p |PADOFFSET|pad_findmy |char* name
1582p |OP* |oopsAV |OP* o
1583p |OP* |oopsHV |OP* o
1584p |void |pad_leavemy |I32 fill
1be9d9c6 1585Ap |SV* |pad_sv |PADOFFSET po
cea2e8a9 1586p |void |pad_free |PADOFFSET po
1587p |void |pad_reset
1588p |void |pad_swipe |PADOFFSET po
1589p |void |peep |OP* o
ae154d6d 1590dopM |PerlIO*|start_glob |SV* pattern|IO *io
4d1ff10f 1591#if defined(USE_5005THREADS)
954c1994 1592Ap |struct perl_thread* |new_struct_thread|struct perl_thread *t
c5be433b 1593#endif
954c1994 1594Ap |void |call_atexit |ATEXIT_t fn|void *ptr
1595Apd |I32 |call_argv |const char* sub_name|I32 flags|char** argv
1596Apd |I32 |call_method |const char* methname|I32 flags
1597Apd |I32 |call_pv |const char* sub_name|I32 flags
1598Apd |I32 |call_sv |SV* sv|I32 flags
ce08f86c 1599p |void |despatch_signals
954c1994 1600Apd |SV* |eval_pv |const char* p|I32 croak_on_error
1601Apd |I32 |eval_sv |SV* sv|I32 flags
1602Apd |SV* |get_sv |const char* name|I32 create
1603Apd |AV* |get_av |const char* name|I32 create
1604Apd |HV* |get_hv |const char* name|I32 create
1605Apd |CV* |get_cv |const char* name|I32 create
1be9d9c6 1606Ap |int |init_i18nl10n |int printwarn
1607Ap |int |init_i18nl14n |int printwarn
ff4fed7c 1608Ap |void |new_collate |char* newcoll
1609Ap |void |new_ctype |char* newctype
1610Ap |void |new_numeric |char* newcoll
954c1994 1611Ap |void |set_numeric_local
1612Ap |void |set_numeric_radix
1613Ap |void |set_numeric_standard
1614Apd |void |require_pv |const char* pv
d8a83dd3 1615p |void |pidgone |Pid_t pid|int status
1be9d9c6 1616Ap |void |pmflag |U16* pmfl|int ch
cea2e8a9 1617p |OP* |pmruntime |OP* pm|OP* expr|OP* repl
1618p |OP* |pmtrans |OP* o|OP* expr|OP* repl
1619p |OP* |pop_return
954c1994 1620Ap |void |pop_scope
cea2e8a9 1621p |OP* |prepend_elem |I32 optype|OP* head|OP* tail
1622p |void |push_return |OP* o
954c1994 1623Ap |void |push_scope
cea2e8a9 1624p |OP* |ref |OP* o|I32 type
1625p |OP* |refkids |OP* o|I32 type
954c1994 1626Ap |void |regdump |regexp* r
7ea3cd40 1627Ap |SV* |regclass_swash |struct regnode *n|bool doinit|SV **initsvp
a86f0dc9 1628Ap |I32 |pregexec |regexp* prog|char* stringarg \
cea2e8a9 1629 |char* strend|char* strbeg|I32 minend \
1630 |SV* screamer|U32 nosave
1be9d9c6 1631Ap |void |pregfree |struct regexp* r
1632Ap |regexp*|pregcomp |char* exp|char* xend|PMOP* pm
1633Ap |char* |re_intuit_start|regexp* prog|SV* sv|char* strpos \
cad2e5aa 1634 |char* strend|U32 flags \
1635 |struct re_scream_pos_data_s *data
1be9d9c6 1636Ap |SV* |re_intuit_string|regexp* prog
1637Ap |I32 |regexec_flags |regexp* prog|char* stringarg \
cea2e8a9 1638 |char* strend|char* strbeg|I32 minend \
1639 |SV* screamer|void* data|U32 flags
1be9d9c6 1640Ap |regnode*|regnext |regnode* p
cea2e8a9 1641p |void |regprop |SV* sv|regnode* o
1be9d9c6 1642Ap |void |repeatcpy |char* to|const char* from|I32 len|I32 count
954c1994 1643Ap |char* |rninstr |const char* big|const char* bigend \
cea2e8a9 1644 |const char* little|const char* lend
412d7f2a 1645Ap |Sighandler_t|rsignal |int i|Sighandler_t t
cea2e8a9 1646p |int |rsignal_restore|int i|Sigsave_t* t
1647p |int |rsignal_save |int i|Sighandler_t t1|Sigsave_t* t2
76d48558 1648Ap |Sighandler_t|rsignal_state|int i
cea2e8a9 1649p |void |rxres_free |void** rsp
1650p |void |rxres_restore |void** rsp|REGEXP* prx
1651p |void |rxres_save |void** rsp|REGEXP* prx
1652#if !defined(HAS_RENAME)
1653p |I32 |same_dirent |char* a|char* b
1654#endif
954c1994 1655Apd |char* |savepv |const char* sv
1656Apd |char* |savepvn |const char* sv|I32 len
1657Ap |void |savestack_grow
1658Ap |void |save_aelem |AV* av|I32 idx|SV **sptr
1659Ap |I32 |save_alloc |I32 size|I32 pad
1660Ap |void |save_aptr |AV** aptr
1661Ap |AV* |save_ary |GV* gv
1662Ap |void |save_clearsv |SV** svp
1663Ap |void |save_delete |HV* hv|char* key|I32 klen
1664Ap |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|void* p
1665Ap |void |save_destructor_x|DESTRUCTORFUNC_t f|void* p
1666Ap |void |save_freesv |SV* sv
cea2e8a9 1667p |void |save_freeop |OP* o
954c1994 1668Ap |void |save_freepv |char* pv
1669Ap |void |save_generic_svref|SV** sptr
f4dd75d9 1670Ap |void |save_generic_pvref|char** str
954c1994 1671Ap |void |save_gp |GV* gv|I32 empty
1672Ap |HV* |save_hash |GV* gv
1673Ap |void |save_helem |HV* hv|SV *key|SV **sptr
1674Ap |void |save_hints
1675Ap |void |save_hptr |HV** hptr
1676Ap |void |save_I16 |I16* intp
1677Ap |void |save_I32 |I32* intp
1678Ap |void |save_I8 |I8* bytep
1679Ap |void |save_int |int* intp
1680Ap |void |save_item |SV* item
1681Ap |void |save_iv |IV* iv
1682Ap |void |save_list |SV** sarg|I32 maxsarg
1683Ap |void |save_long |long* longp
26d9b02f 1684Ap |void |save_mortalizesv|SV* sv
954c1994 1685Ap |void |save_nogv |GV* gv
cea2e8a9 1686p |void |save_op
954c1994 1687Ap |SV* |save_scalar |GV* gv
1688Ap |void |save_pptr |char** pptr
1689Ap |void |save_vptr |void* pptr
1690Ap |void |save_re_context
c3564e5c 1691Ap |void |save_padsv |PADOFFSET off
954c1994 1692Ap |void |save_sptr |SV** sptr
1693Ap |SV* |save_svref |SV** sptr
1694Ap |SV** |save_threadsv |PADOFFSET i
cea2e8a9 1695p |OP* |sawparens |OP* o
1696p |OP* |scalar |OP* o
1697p |OP* |scalarkids |OP* o
1698p |OP* |scalarseq |OP* o
1699p |OP* |scalarvoid |OP* o
53305cf1 1700Apd |NV |scan_bin |char* start|STRLEN len|STRLEN* retlen
1701Apd |NV |scan_hex |char* start|STRLEN len|STRLEN* retlen
b73d6f50 1702Ap |char* |scan_num |char* s|YYSTYPE *lvalp
53305cf1 1703Apd |NV |scan_oct |char* start|STRLEN len|STRLEN* retlen
cea2e8a9 1704p |OP* |scope |OP* o
1be9d9c6 1705Ap |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \
cea2e8a9 1706 |I32 end_shift|I32 *state|I32 last
1707#if !defined(VMS)
1708p |I32 |setenv_getix |char* nam
1709#endif
1710p |void |setdefout |GV* gv
1be9d9c6 1711Ap |char* |sharepvn |const char* sv|I32 len|U32 hash
cea2e8a9 1712p |HEK* |share_hek |const char* sv|I32 len|U32 hash
1713np |Signal_t |sighandler |int sig
954c1994 1714Ap |SV** |stack_grow |SV** sp|SV**p|int n
1715Ap |I32 |start_subparse |I32 is_format|U32 flags
cea2e8a9 1716p |void |sub_crush_depth|CV* cv
645c22ef 1717Apd |bool |sv_2bool |SV* sv
1718Apd |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref
1719Apd |IO* |sv_2io |SV* sv
1720Apd |IV |sv_2iv |SV* sv
954c1994 1721Apd |SV* |sv_2mortal |SV* sv
645c22ef 1722Apd |NV |sv_2nv |SV* sv
8d6d96c1 1723Aop |char* |sv_2pv |SV* sv|STRLEN* lp
451be7b1 1724Apd |char* |sv_2pvutf8 |SV* sv|STRLEN* lp
1725Apd |char* |sv_2pvbyte |SV* sv|STRLEN* lp
645c22ef 1726Apd |UV |sv_2uv |SV* sv
1727Apd |IV |sv_iv |SV* sv
1728Apd |UV |sv_uv |SV* sv
1729Apd |NV |sv_nv |SV* sv
451be7b1 1730Apd |char* |sv_pvn |SV *sv|STRLEN *len
645c22ef 1731Apd |char* |sv_pvutf8n |SV *sv|STRLEN *len
1732Apd |char* |sv_pvbyten |SV *sv|STRLEN *len
c461cf8f 1733Apd |I32 |sv_true |SV *sv
645c22ef 1734pd |void |sv_add_arena |char* ptr|U32 size|U32 flags
1735Apd |int |sv_backoff |SV* sv
954c1994 1736Apd |SV* |sv_bless |SV* sv|HV* stash
1737Afpd |void |sv_catpvf |SV* sv|const char* pat|...
1738Ap |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
1739Apd |void |sv_catpv |SV* sv|const char* ptr
8d6d96c1 1740Aopd |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
1741Aopd |void |sv_catsv |SV* dsv|SV* ssv
954c1994 1742Apd |void |sv_chop |SV* sv|char* ptr
645c22ef 1743pd |I32 |sv_clean_all
1744pd |void |sv_clean_objs
c461cf8f 1745Apd |void |sv_clear |SV* sv
954c1994 1746Apd |I32 |sv_cmp |SV* sv1|SV* sv2
c461cf8f 1747Apd |I32 |sv_cmp_locale |SV* sv1|SV* sv2
cea2e8a9 1748#if defined(USE_LOCALE_COLLATE)
645c22ef 1749Apd |char* |sv_collxfrm |SV* sv|STRLEN* nxp
cea2e8a9 1750#endif
1be9d9c6 1751Ap |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
89423764 1752Apd |int |getcwd_sv |SV* sv
954c1994 1753Apd |void |sv_dec |SV* sv
1754Ap |void |sv_dump |SV* sv
1755Apd |bool |sv_derived_from|SV* sv|const char* name
1756Apd |I32 |sv_eq |SV* sv1|SV* sv2
c461cf8f 1757Apd |void |sv_free |SV* sv
645c22ef 1758pd |void |sv_free_arenas
c461cf8f 1759Apd |char* |sv_gets |SV* sv|PerlIO* fp|I32 append
954c1994 1760Apd |char* |sv_grow |SV* sv|STRLEN newlen
1761Apd |void |sv_inc |SV* sv
1762Apd |void |sv_insert |SV* bigsv|STRLEN offset|STRLEN len \
cea2e8a9 1763 |char* little|STRLEN littlelen
954c1994 1764Apd |int |sv_isa |SV* sv|const char* name
1765Apd |int |sv_isobject |SV* sv
1766Apd |STRLEN |sv_len |SV* sv
c461cf8f 1767Apd |STRLEN |sv_len_utf8 |SV* sv
954c1994 1768Apd |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
cea2e8a9 1769 |I32 namlen
954c1994 1770Apd |SV* |sv_mortalcopy |SV* oldsv
1771Apd |SV* |sv_newmortal
645c22ef 1772Apd |SV* |sv_newref |SV* sv
954c1994 1773Ap |char* |sv_peek |SV* sv
645c22ef 1774Apd |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp
1775Apd |void |sv_pos_b2u |SV* sv|I32* offsetp
8d6d96c1 1776Aopd |char* |sv_pvn_force |SV* sv|STRLEN* lp
c461cf8f 1777Apd |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp
645c22ef 1778Apd |char* |sv_pvbyten_force|SV* sv|STRLEN* lp
c461cf8f 1779Apd |char* |sv_reftype |SV* sv|int ob
1780Apd |void |sv_replace |SV* sv|SV* nsv
645c22ef 1781Apd |void |sv_report_used
451be7b1 1782Apd |void |sv_reset |char* s|HV* stash
954c1994 1783Afpd |void |sv_setpvf |SV* sv|const char* pat|...
1784Ap |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
1785Apd |void |sv_setiv |SV* sv|IV num
1786Apd |void |sv_setpviv |SV* sv|IV num
1787Apd |void |sv_setuv |SV* sv|UV num
1788Apd |void |sv_setnv |SV* sv|NV num
1789Apd |SV* |sv_setref_iv |SV* rv|const char* classname|IV iv
e1c57cef 1790Apd |SV* |sv_setref_uv |SV* rv|const char* classname|UV uv
954c1994 1791Apd |SV* |sv_setref_nv |SV* rv|const char* classname|NV nv
1792Apd |SV* |sv_setref_pv |SV* rv|const char* classname|void* pv
1793Apd |SV* |sv_setref_pvn |SV* rv|const char* classname|char* pv \
cea2e8a9 1794 |STRLEN n
954c1994 1795Apd |void |sv_setpv |SV* sv|const char* ptr
1796Apd |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len
8d6d96c1 1797Aopd |void |sv_setsv |SV* dsv|SV* ssv
645c22ef 1798Apd |void |sv_taint |SV* sv
451be7b1 1799Apd |bool |sv_tainted |SV* sv
c461cf8f 1800Apd |int |sv_unmagic |SV* sv|int type
954c1994 1801Apd |void |sv_unref |SV* sv
840a7b70 1802Apd |void |sv_unref_flags |SV* sv|U32 flags
451be7b1 1803Apd |void |sv_untaint |SV* sv
954c1994 1804Apd |bool |sv_upgrade |SV* sv|U32 mt
1805Apd |void |sv_usepvn |SV* sv|char* ptr|STRLEN len
1806Apd |void |sv_vcatpvfn |SV* sv|const char* pat|STRLEN patlen \
cea2e8a9 1807 |va_list* args|SV** svargs|I32 svmax \
5bc28da9 1808 |bool *maybe_tainted
954c1994 1809Apd |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \
cea2e8a9 1810 |va_list* args|SV** svargs|I32 svmax \
5bc28da9 1811 |bool *maybe_tainted
1571675a 1812Ap |NV |str_to_version |SV *sv
1be9d9c6 1813Ap |SV* |swash_init |char* pkg|char* name|SV* listsv \
cea2e8a9 1814 |I32 minbits|I32 none
3568d838 1815Ap |UV |swash_fetch |SV *sv|U8 *ptr|bool do_utf8
954c1994 1816Ap |void |taint_env
1817Ap |void |taint_proper |const char* f|const char* s
1818Ap |UV |to_utf8_lower |U8 *p
1819Ap |UV |to_utf8_upper |U8 *p
1820Ap |UV |to_utf8_title |U8 *p
cea2e8a9 1821#if defined(UNLINK_ALL_VERSIONS)
954c1994 1822Ap |I32 |unlnk |char* f
cea2e8a9 1823#endif
4d1ff10f 1824#if defined(USE_5005THREADS)
1be9d9c6 1825Ap |void |unlock_condpair|void* svv
cea2e8a9 1826#endif
1be9d9c6 1827Ap |void |unsharepvn |const char* sv|I32 len|U32 hash
cea2e8a9 1828p |void |unshare_hek |HEK* hek
1829p |void |utilize |int aver|I32 floor|OP* version|OP* id|OP* arg
dea0fc0b 1830Ap |U8* |utf16_to_utf8 |U8* p|U8 *d|I32 bytelen|I32 *newlen
1831Ap |U8* |utf16_to_utf8_reversed|U8* p|U8 *d|I32 bytelen|I32 *newlen
eebe1485 1832Adp |STRLEN |utf8_length |U8* s|U8 *e
1833Apd |IV |utf8_distance |U8 *a|U8 *b
1834Apd |U8* |utf8_hop |U8 *s|I32 off
1835ApMd |U8* |utf8_to_bytes |U8 *s|STRLEN *len
f9a63242 1836ApMd |U8* |bytes_from_utf8|U8 *s|STRLEN *len|bool *is_utf8
eebe1485 1837ApMd |U8* |bytes_to_utf8 |U8 *s|STRLEN *len
9041c2e3 1838Apd |UV |utf8_to_uvchr |U8 *s|STRLEN* retlen
1839Apd |UV |utf8_to_uvuni |U8 *s|STRLEN* retlen
1840Adp |UV |utf8n_to_uvchr |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags
1841Adp |UV |utf8n_to_uvuni |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags
1842Apd |U8* |uvchr_to_utf8 |U8 *d|UV uv
1843Apd |U8* |uvuni_to_utf8 |U8 *d|UV uv
cea2e8a9 1844p |void |vivify_defelem |SV* sv
1845p |void |vivify_ref |SV* sv|U32 to_what
d8a83dd3 1846p |I32 |wait4pid |Pid_t pid|int* statusp|int flags
bc37a18f 1847p |void |report_evil_fh |GV *gv|IO *io|I32 op
645c22ef 1848pd |void |report_uninit
954c1994 1849Afpd |void |warn |const char* pat|...
1850Ap |void |vwarn |const char* pat|va_list* args
1851Afp |void |warner |U32 err|const char* pat|...
1852Ap |void |vwarner |U32 err|const char* pat|va_list* args
cea2e8a9 1853p |void |watch |char** addr
412d7f2a 1854Ap |I32 |whichsig |char* sig
cea2e8a9 1855p |int |yyerror |char* s
dba4d153 1856#ifdef USE_PURE_BISON
1857p |int |yylex_r |YYSTYPE *lvalp|int *lcharp
cea2e8a9 1858#endif
48cf72c8 1859p |int |yylex
cea2e8a9 1860p |int |yyparse
1861p |int |yywarn |char* s
1862#if defined(MYMALLOC)
954c1994 1863Ap |void |dump_mstats |char* s
827e134a 1864Ap |int |get_mstats |perl_mstats_t *buf|int buflen|int level
cea2e8a9 1865#endif
954c1994 1866Anp |Malloc_t|safesysmalloc |MEM_SIZE nbytes
1867Anp |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
1868Anp |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
1869Anp |Free_t |safesysfree |Malloc_t where
cea2e8a9 1870#if defined(LEAKTEST)
954c1994 1871Anp |Malloc_t|safexmalloc |I32 x|MEM_SIZE size
1872Anp |Malloc_t|safexcalloc |I32 x|MEM_SIZE elements|MEM_SIZE size
1873Anp |Malloc_t|safexrealloc |Malloc_t where|MEM_SIZE size
1874Anp |void |safexfree |Malloc_t where
cea2e8a9 1875#endif
1876#if defined(PERL_GLOBAL_STRUCT)
954c1994 1877Ap |struct perl_vars *|GetVars
cea2e8a9 1878#endif
954c1994 1879Ap |int |runops_standard
1880Ap |int |runops_debug
4d1ff10f 1881#if defined(USE_5005THREADS)
4755096e 1882Ap |SV* |sv_lock |SV *sv
1883#endif
954c1994 1884Afpd |void |sv_catpvf_mg |SV *sv|const char* pat|...
1885Ap |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
1886Apd |void |sv_catpv_mg |SV *sv|const char *ptr
1887Apd |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
1888Apd |void |sv_catsv_mg |SV *dstr|SV *sstr
1889Afpd |void |sv_setpvf_mg |SV *sv|const char* pat|...
1890Ap |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
1891Apd |void |sv_setiv_mg |SV *sv|IV i
1892Apd |void |sv_setpviv_mg |SV *sv|IV iv
1893Apd |void |sv_setuv_mg |SV *sv|UV u
1894Apd |void |sv_setnv_mg |SV *sv|NV num
1895Apd |void |sv_setpv_mg |SV *sv|const char *ptr
1896Apd |void |sv_setpvn_mg |SV *sv|const char *ptr|STRLEN len
1897Apd |void |sv_setsv_mg |SV *dstr|SV *sstr
1898Apd |void |sv_usepvn_mg |SV *sv|char *ptr|STRLEN len
1899Ap |MGVTBL*|get_vtbl |int vtbl_id
cea2e8a9 1900p |char* |pv_display |SV *sv|char *pv|STRLEN cur|STRLEN len \
1901 |STRLEN pvlim
954c1994 1902Afp |void |dump_indent |I32 level|PerlIO *file|const char* pat|...
1903Ap |void |dump_vindent |I32 level|PerlIO *file|const char* pat \
c5be433b 1904 |va_list *args
954c1994 1905Ap |void |do_gv_dump |I32 level|PerlIO *file|char *name|GV *sv
1906Ap |void |do_gvgv_dump |I32 level|PerlIO *file|char *name|GV *sv
1907Ap |void |do_hv_dump |I32 level|PerlIO *file|char *name|HV *sv
1908Ap |void |do_magic_dump |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
cea2e8a9 1909 |I32 maxnest|bool dumpops|STRLEN pvlim
954c1994 1910Ap |void |do_op_dump |I32 level|PerlIO *file|OP *o
1911Ap |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm
1912Ap |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
cea2e8a9 1913 |I32 maxnest|bool dumpops|STRLEN pvlim
954c1994 1914Ap |void |magic_dump |MAGIC *mg
14dd3ad8 1915#if defined(PERL_FLEXIBLE_EXCEPTIONS)
954c1994 1916Ap |void* |default_protect|volatile JMPENV *je|int *excpt \
db36c5a1 1917 |protect_body_t body|...
954c1994 1918Ap |void* |vdefault_protect|volatile JMPENV *je|int *excpt \
db36c5a1 1919 |protect_body_t body|va_list *args
14dd3ad8 1920#endif
954c1994 1921Ap |void |reginitcolors
645c22ef 1922Apd |char* |sv_2pv_nolen |SV* sv
1923Apd |char* |sv_2pvutf8_nolen|SV* sv
1924Apd |char* |sv_2pvbyte_nolen|SV* sv
451be7b1 1925Apd |char* |sv_pv |SV *sv
645c22ef 1926Apd |char* |sv_pvutf8 |SV *sv
1927Apd |char* |sv_pvbyte |SV *sv
8d6d96c1 1928Aopd |STRLEN |sv_utf8_upgrade|SV *sv
4411f3b6 1929ApdM |bool |sv_utf8_downgrade|SV *sv|bool fail_ok
1930Apd |void |sv_utf8_encode |SV *sv
1931ApdM |bool |sv_utf8_decode |SV *sv
645c22ef 1932Apd |void |sv_force_normal|SV *sv
1933Apd |void |sv_force_normal_flags|SV *sv|U32 flags
954c1994 1934Ap |void |tmps_grow |I32 n
c461cf8f 1935Apd |SV* |sv_rvweaken |SV *sv
cea2e8a9 1936p |int |magic_killbackrefs|SV *sv|MAGIC *mg
954c1994 1937Ap |OP* |newANONATTRSUB |I32 floor|OP *proto|OP *attrs|OP *block
1938Ap |CV* |newATTRSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
1939Ap |void |newMYSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
09bef843 1940p |OP * |my_attrs |OP *o|OP *attrs
1941p |void |boot_core_xsutils
1d7c1841 1942#if defined(USE_ITHREADS)
d2d73c3e 1943Ap |PERL_CONTEXT*|cx_dup |PERL_CONTEXT* cx|I32 ix|I32 max|clone_params* param
1944Ap |PERL_SI*|si_dup |PERL_SI* si|clone_params* param
1945Ap |ANY* |ss_dup |PerlInterpreter* proto_perl|clone_params* param
954c1994 1946Ap |void* |any_dup |void* v|PerlInterpreter* proto_perl
d2d73c3e 1947Ap |HE* |he_dup |HE* e|bool shared|clone_params* param
d2f185dc 1948Ap |REGEXP*|re_dup |REGEXP* r|clone_params* param
954c1994 1949Ap |PerlIO*|fp_dup |PerlIO* fp|char type
1950Ap |DIR* |dirp_dup |DIR* dp
d2d73c3e 1951Ap |GP* |gp_dup |GP* gp|clone_params* param
1952Ap |MAGIC* |mg_dup |MAGIC* mg|clone_params* param
1953Ap |SV* |sv_dup |SV* sstr|clone_params* param
1d7c1841 1954#if defined(HAVE_INTERP_INTERN)
954c1994 1955Ap |void |sys_intern_dup |struct interp_intern* src \
1d7c1841 1956 |struct interp_intern* dst
1957#endif
954c1994 1958Ap |PTR_TBL_t*|ptr_table_new
1959Ap |void* |ptr_table_fetch|PTR_TBL_t *tbl|void *sv
1960Ap |void |ptr_table_store|PTR_TBL_t *tbl|void *oldsv|void *newsv
1961Ap |void |ptr_table_split|PTR_TBL_t *tbl
a0739874 1962Ap |void |ptr_table_clear|PTR_TBL_t *tbl
1963Ap |void |ptr_table_free|PTR_TBL_t *tbl
1d7c1841 1964#endif
3dbbd0f5 1965#if defined(HAVE_INTERP_INTERN)
1966Ap |void |sys_intern_clear
1967Ap |void |sys_intern_init
1968#endif
53e06cf0 1969#if defined(PERL_CUSTOM_OPS)
1970Ap |char * |custom_op_name|OP* op
1971Ap |char * |custom_op_desc|OP* op
1972#endif
cea2e8a9 1973
1d7c1841 1974END_EXTERN_C
1d7c1841 1975
0cb96387 1976#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1977s |I32 |avhv_index_sv |SV* sv
10c8fecd 1978s |I32 |avhv_index |AV* av|SV* sv|U32 hash
cea2e8a9 1979#endif
1980
0cb96387 1981#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
036b4402 1982s |I32 |do_trans_simple |SV *sv
1983s |I32 |do_trans_count |SV *sv
1984s |I32 |do_trans_complex |SV *sv
1985s |I32 |do_trans_simple_utf8 |SV *sv
1986s |I32 |do_trans_count_utf8 |SV *sv
1987s |I32 |do_trans_complex_utf8 |SV *sv
cea2e8a9 1988#endif
1989
0cb96387 1990#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1991s |void |gv_init_sv |GV *gv|I32 sv_type
d2c93421 1992s |void |require_errno |GV *gv
cea2e8a9 1993#endif
1994
0cb96387 1995#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
cea2e8a9 1996s |void |hsplit |HV *hv
1997s |void |hfreeentries |HV *hv
1998s |void |more_he
1999s |HE* |new_he
2000s |void |del_he |HE *p
2001s |HEK* |save_hek |const char *str|I32 len|U32 hash
2002s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store
2003#endif
2004
0cb96387 2005#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
8fb26106 2006s |void |save_magic |I32 mgs_ix|SV *sv
cea2e8a9 2007s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth
2008s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \
2009 |int n|SV *val
cea2e8a9 2010#endif
2011
0cb96387 2012#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
cea2e8a9 2013s |I32 |list_assignment|OP *o
2014s |void |bad_type |I32 n|char *t|char *name|OP *kid
3eb57f73 2015s |void |cop_free |COP *cop
cea2e8a9 2016s |OP* |modkids |OP *o|I32 type
2017s |void |no_bareword_allowed|OP *o
2018s |OP* |no_fh_allowed |OP *o
2019s |OP* |scalarboolean |OP *o
2020s |OP* |too_few_arguments|OP *o|char* name
2021s |OP* |too_many_arguments|OP *o|char* name
94f23f41 2022s |PADOFFSET|pad_addlex |SV* name
cea2e8a9 2023s |PADOFFSET|pad_findlex |char* name|PADOFFSET newoff|U32 seq \
2024 |CV* startcv|I32 cx_ix|I32 saweval|U32 flags
2025s |OP* |newDEFSVOP
2026s |OP* |new_logop |I32 type|I32 flags|OP **firstp|OP **otherp
2027s |void |simplify_sort |OP *o
2028s |bool |is_handle_constructor |OP *o|I32 argnum
2029s |char* |gv_ename |GV *gv
9cbac4c7 2030# if defined(DEBUG_CLOSURES)
1d7c1841 2031s |void |cv_dump |CV *cv
9cbac4c7 2032# endif
cea2e8a9 2033s |CV* |cv_clone2 |CV *proto|CV *outside
2034s |bool |scalar_mod_type|OP *o|I32 type
09bef843 2035s |OP * |my_kid |OP *o|OP *attrs
2036s |OP * |dup_attrlist |OP *o
2037s |void |apply_attrs |HV *stash|SV *target|OP *attrs
cea2e8a9 2038# if defined(PL_OP_SLAB_ALLOC)
2039s |void* |Slab_Alloc |int m|size_t sz
2040# endif
2041#endif
2042
0cb96387 2043#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
cea2e8a9 2044s |void |find_beginning
2045s |void |forbid_setid |char *
9c8a64f0 2046s |void |incpush |char *|int|int
cea2e8a9 2047s |void |init_interp
2048s |void |init_ids
cea2e8a9 2049s |void |init_lexer
2050s |void |init_main_stash
2051s |void |init_perllib
2052s |void |init_postdump_symbols|int|char **|char **
2053s |void |init_predump_symbols
2054rs |void |my_exit_jump
2055s |void |nuke_stacks
2056s |void |open_script |char *|bool|SV *|int *fd
2057s |void |usage |char *
2058s |void |validate_suid |char *|char*|int
cea2e8a9 2059# if defined(IAMSUID)
2060s |int |fd_on_nosuid_fs|int fd
2061# endif
14dd3ad8 2062s |void* |parse_body |char **env|XSINIT_t xsinit
2063s |void* |run_body |I32 oldscope
2064s |void |call_body |OP *myop|int is_eval
2065s |void* |call_list_body |CV *cv
2066#if defined(PERL_FLEXIBLE_EXCEPTIONS)
2067s |void* |vparse_body |va_list args
2068s |void* |vrun_body |va_list args
2069s |void* |vcall_body |va_list args
2070s |void* |vcall_list_body|va_list args
2071#endif
4d1ff10f 2072# if defined(USE_5005THREADS)
cea2e8a9 2073s |struct perl_thread * |init_main_thread
2074# endif
2075#endif
2076
0cb96387 2077#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
cea2e8a9 2078s |SV* |refto |SV* sv
2079s |U32 |seed
a6ec74c1 2080#endif
2081
2082#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT)
2083s |void |doencodes |SV* sv|char* s|I32 len
cea2e8a9 2084s |SV* |mul128 |SV *sv|U8 m
2085s |SV* |is_an_int |char *s|STRLEN l
2086s |int |div128 |SV *pnum|bool *done
2087#endif
2088
0cb96387 2089#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
cea2e8a9 2090s |OP* |docatch |OP *o
14dd3ad8 2091s |void* |docatch_body
2092#if defined(PERL_FLEXIBLE_EXCEPTIONS)
2093s |void* |vdocatch_body |va_list args
2094#endif
cea2e8a9 2095s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit
2096s |void |doparseform |SV *sv
2097s |I32 |dopoptoeval |I32 startingblock
2098s |I32 |dopoptolabel |char *label
2099s |I32 |dopoptoloop |I32 startingblock
2100s |I32 |dopoptosub |I32 startingblock
2101s |I32 |dopoptosub_at |PERL_CONTEXT* cxstk|I32 startingblock
cea2e8a9 2102s |void |save_lines |AV *array|SV *sv
2103s |OP* |doeval |int gimme|OP** startop
2104s |PerlIO *|doopen_pmc |const char *name|const char *mode
2105s |void |qsortsv |SV ** array|size_t num_elts|SVCOMPARE_t f
cea2e8a9 2106#endif
2107
0cb96387 2108#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
10c8fecd 2109s |int |do_maybe_phash |AV *ary|SV **lelem|SV **firstlelem \
2110 |SV **relem|SV **lastrelem
2111s |void |do_oddball |HV *hash|SV **relem|SV **firstrelem
cea2e8a9 2112s |CV* |get_db_sub |SV **svp|CV *cv
f5d5a27c 2113s |SV* |method_common |SV* meth|U32* hashp
cea2e8a9 2114#endif
2115
0cb96387 2116#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
cea2e8a9 2117s |OP* |doform |CV *cv|GV *gv|OP *retop
7f4774ae 2118s |int |emulate_eaccess|const char* path|Mode_t mode
cea2e8a9 2119# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
2120s |int |dooneliner |char *cmd|char *filename
2121# endif
2122#endif
2123
0cb96387 2124#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
830247a4 2125s |regnode*|reg |struct RExC_state_t*|I32|I32 *
2126s |regnode*|reganode |struct RExC_state_t*|U8|U32
2127s |regnode*|regatom |struct RExC_state_t*|I32 *
2128s |regnode*|regbranch |struct RExC_state_t*|I32 *|I32
2129s |void |reguni |struct RExC_state_t*|UV|char *|STRLEN*
2130s |regnode*|regclass |struct RExC_state_t*
cea2e8a9 2131s |I32 |regcurly |char *
830247a4 2132s |regnode*|reg_node |struct RExC_state_t*|U8
2133s |regnode*|regpiece |struct RExC_state_t*|I32 *
2134s |void |reginsert |struct RExC_state_t*|U8|regnode *
2135s |void |regoptail |struct RExC_state_t*|regnode *|regnode *
2136s |void |regtail |struct RExC_state_t*|regnode *|regnode *
cea2e8a9 2137s |char*|regwhite |char *|char *
830247a4 2138s |char*|nextchar |struct RExC_state_t*
8fa7f367 2139# ifdef DEBUGGING
cea2e8a9 2140s |regnode*|dumpuntil |regnode *start|regnode *node \
2141 |regnode *last|SV* sv|I32 l
1d7c1841 2142s |void |put_byte |SV* sv|int c
8fa7f367 2143# endif
830247a4 2144s |void |scan_commit |struct RExC_state_t*|struct scan_data_t *data
2145s |void |cl_anything |struct RExC_state_t*|struct regnode_charclass_class *cl
1d7c1841 2146s |int |cl_is_anything |struct regnode_charclass_class *cl
830247a4 2147s |void |cl_init |struct RExC_state_t*|struct regnode_charclass_class *cl
2148s |void |cl_init_zero |struct RExC_state_t*|struct regnode_charclass_class *cl
1d7c1841 2149s |void |cl_and |struct regnode_charclass_class *cl \
2150 |struct regnode_charclass_class *and_with
830247a4 2151s |void |cl_or |struct RExC_state_t*|struct regnode_charclass_class *cl \
1d7c1841 2152 |struct regnode_charclass_class *or_with
830247a4 2153s |I32 |study_chunk |struct RExC_state_t*|regnode **scanp|I32 *deltap \
82ba1be6 2154 |regnode *last|struct scan_data_t *data \
2155 |U32 flags
830247a4 2156s |I32 |add_data |struct RExC_state_t*|I32 n|char *s
cea2e8a9 2157rs |void|re_croak2 |const char* pat1|const char* pat2|...
830247a4 2158s |I32 |regpposixcc |struct RExC_state_t*|I32 value
2159s |void |checkposixcc |struct RExC_state_t*
cea2e8a9 2160#endif
2161
0cb96387 2162#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
cea2e8a9 2163s |I32 |regmatch |regnode *prog
2164s |I32 |regrepeat |regnode *p|I32 max
2165s |I32 |regrepeat_hard |regnode *p|I32 max|I32 *lp
2166s |I32 |regtry |regexp *prog|char *startpos
7ea3cd40 2167s |bool |reginclass |regnode *n|U8 *p|bool do_utf8sv_is_utf8
cea2e8a9 2168s |CHECKPOINT|regcppush |I32 parenfloor
2169s |char*|regcppop
2170s |char*|regcp_set_to |I32 ss
2171s |void |cache_re |regexp *prog
cea2e8a9 2172s |U8* |reghop |U8 *pos|I32 off
60aeb6fd 2173s |U8* |reghop3 |U8 *pos|I32 off|U8 *lim
cea2e8a9 2174s |U8* |reghopmaybe |U8 *pos|I32 off
60aeb6fd 2175s |U8* |reghopmaybe3 |U8 *pos|I32 off|U8 *lim
1d7c1841 2176s |char* |find_byclass |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun
cea2e8a9 2177#endif
2178
0cb96387 2179#if defined(PERL_IN_RUN_C) || defined(PERL_DECL_PROT)
8fa7f367 2180# ifdef DEBUGGING
53a2efa2 2181s |CV* |deb_curcv |I32 ix
cea2e8a9 2182s |void |debprof |OP *o
8fa7f367 2183# endif
cea2e8a9 2184#endif
2185
0cb96387 2186#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
cea2e8a9 2187s |SV* |save_scalar_at |SV **sptr
2188#endif
2189
cd1ee231 2190#if defined(USE_ITHREADS) && (defined(PERL_IN_SHAREDSV_C) || defined(PERL_DECL_PROT))
2191Adp |void |sharedsv_init
2192Adp |shared_sv* |sharedsv_new
2193Adp |shared_sv* |sharedsv_find |SV* sv
2194Adp |void |sharedsv_lock |shared_sv* ssv
2195Adp |void |sharedsv_unlock |shared_sv* ssv
2196p |void |sharedsv_unlock_scope |shared_sv* ssv
2197Adp |void |sharedsv_thrcnt_inc |shared_sv* ssv
2198Adp |void |sharedsv_thrcnt_dec |shared_sv* ssv
2199#endif
2200
0cb96387 2201#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
cea2e8a9 2202s |IV |asIV |SV* sv
2203s |UV |asUV |SV* sv
2204s |SV* |more_sv
2205s |void |more_xiv
2206s |void |more_xnv
2207s |void |more_xpv
932e9ff9 2208s |void |more_xpviv
2209s |void |more_xpvnv
2210s |void |more_xpvcv
2211s |void |more_xpvav
2212s |void |more_xpvhv
2213s |void |more_xpvmg
2214s |void |more_xpvlv
2215s |void |more_xpvbm
cea2e8a9 2216s |void |more_xrv
2217s |XPVIV* |new_xiv
2218s |XPVNV* |new_xnv
2219s |XPV* |new_xpv
932e9ff9 2220s |XPVIV* |new_xpviv
2221s |XPVNV* |new_xpvnv
2222s |XPVCV* |new_xpvcv
2223s |XPVAV* |new_xpvav
2224s |XPVHV* |new_xpvhv
2225s |XPVMG* |new_xpvmg
2226s |XPVLV* |new_xpvlv
2227s |XPVBM* |new_xpvbm
cea2e8a9 2228s |XRV* |new_xrv
2229s |void |del_xiv |XPVIV* p
2230s |void |del_xnv |XPVNV* p
2231s |void |del_xpv |XPV* p
932e9ff9 2232s |void |del_xpviv |XPVIV* p
2233s |void |del_xpvnv |XPVNV* p
2234s |void |del_xpvcv |XPVCV* p
2235s |void |del_xpvav |XPVAV* p
2236s |void |del_xpvhv |XPVHV* p
2237s |void |del_xpvmg |XPVMG* p
2238s |void |del_xpvlv |XPVLV* p
2239s |void |del_xpvbm |XPVBM* p
cea2e8a9 2240s |void |del_xrv |XRV* p
2241s |void |sv_unglob |SV* sv
cea2e8a9 2242s |void |not_a_number |SV *sv
5226ed68 2243s |I32 |visit |SVFUNC_t f
cea2e8a9 2244s |void |sv_add_backref |SV *tsv|SV *sv
2245s |void |sv_del_backref |SV *sv
8fa7f367 2246# ifdef DEBUGGING
cea2e8a9 2247s |void |del_sv |SV *p
2248# endif
28e5dec8 2249# if !defined(NV_PRESERVES_UV)
28e5dec8 2250s |int |sv_2iuv_non_preserve |SV *sv|I32 numtype
2251# endif
6b1bfb71 2252s |I32 |expect_number |char** pattern
9cbac4c7 2253#
2254# if defined(USE_ITHREADS)
2255s |SV* |gv_share |SV *sv
2256# endif
cea2e8a9 2257#endif
2258
0cb96387 2259#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
cea2e8a9 2260s |void |check_uni
2261s |void |force_next |I32 type
2262s |char* |force_version |char *start
2263s |char* |force_word |char *start|int token|int check_keyword \
2264 |int allow_pack|int allow_tick
2265s |SV* |tokeq |SV *sv
8eceec63 2266s |int |pending_ident
cea2e8a9 2267s |char* |scan_const |char *start
2268s |char* |scan_formline |char *s
2269s |char* |scan_heredoc |char *s
2270s |char* |scan_ident |char *s|char *send|char *dest \
2271 |STRLEN destlen|I32 ck_uni
2272s |char* |scan_inputsymbol|char *start
2273s |char* |scan_pat |char *start|I32 type
09bef843 2274s |char* |scan_str |char *start|int keep_quoted|int keep_delims
cea2e8a9 2275s |char* |scan_subst |char *start
2276s |char* |scan_trans |char *start
2277s |char* |scan_word |char *s|char *dest|STRLEN destlen \
2278 |int allow_package|STRLEN *slp
2279s |char* |skipspace |char *s
78ae23f5 2280s |char* |swallow_bom |U8 *s
cea2e8a9 2281s |void |checkcomma |char *s|char *name|char *what
2282s |void |force_ident |char *s|int kind
2283s |void |incline |char *s
2284s |int |intuit_method |char *s|GV *gv
2285s |int |intuit_more |char *s
1d7c1841 2286s |I32 |lop |I32 f|int x|char *s
cea2e8a9 2287s |void |missingterm |char *s
2288s |void |no_op |char *what|char *s
2289s |void |set_csh
2290s |I32 |sublex_done
2291s |I32 |sublex_push
2292s |I32 |sublex_start
2293s |char * |filter_gets |SV *sv|PerlIO *fp|STRLEN append
def3634b 2294s |HV * |find_in_my_stash|char *pkgname|I32 len
1d7c1841 2295s |SV* |new_constant |char *s|STRLEN len|const char *key|SV *sv \
2296 |SV *pv|const char *type
8fa7f367 2297# if defined(DEBUGGING)
998054bd 2298s |void |tokereport |char *thing|char *s|I32 rv
8fa7f367 2299# endif
cea2e8a9 2300s |int |ao |int toketype
2301s |void |depcom
2302s |char* |incl_perldb
155aba94 2303#if 0
cea2e8a9 2304s |I32 |utf16_textfilter|int idx|SV *sv|int maxlen
2305s |I32 |utf16rev_textfilter|int idx|SV *sv|int maxlen
155aba94 2306#endif
cea2e8a9 2307# if defined(CRIPPLED_CC)
2308s |int |uni |I32 f|char *s
2309# endif
c39cd008 2310# if defined(PERL_CR_FILTER)
2311s |I32 |cr_textfilter |int idx|SV *sv|int maxlen
cea2e8a9 2312# endif
2313#endif
2314
0cb96387 2315#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
cea2e8a9 2316s |SV*|isa_lookup |HV *stash|const char *name|int len|int level
2317#endif
2318
2d31dd6a 2319#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
ff4fed7c 2320s |char* |stdize_locale |char* locs
2d31dd6a 2321#endif
2322
2323#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
ae7d165c 2324s |COP* |closest_cop |COP *cop|OP *o
cea2e8a9 2325s |SV* |mess_alloc
cea2e8a9 2326# if defined(LEAKTEST)
2327s |void |xstat |int
2328# endif
2329#endif
1d7c1841 2330
902f5b58 2331START_EXTERN_C
2332
8d6d96c1 2333Apd |void |sv_setsv_flags |SV* dsv|SV* ssv|I32 flags
2334Apd |void |sv_catpvn_flags|SV* sv|const char* ptr|STRLEN len|I32 flags
2335Apd |void |sv_catsv_flags |SV* dsv|SV* ssv|I32 flags
2336Apd |STRLEN |sv_utf8_upgrade_flags|SV *sv|I32 flags
2337Apd |char* |sv_pvn_force_flags|SV* sv|STRLEN* lp|I32 flags
645c22ef 2338Apd |char* |sv_2pv_flags |SV* sv|STRLEN* lp|I32 flags
1f727ac0 2339Ap |char* |my_atof2 |const char *s|NV* value
902f5b58 2340
2341END_EXTERN_C
2342