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