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