Added Cyg-Win
This commit is contained in:
parent
82cbc206eb
commit
413c315806
10586 changed files with 3806249 additions and 0 deletions
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_mysql-1.dll
Normal file
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_mysql-1.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_odbc-1.dll
Normal file
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_odbc-1.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_pgsql-1.dll
Normal file
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_pgsql-1.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_sqlite3-1.dll
Normal file
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbd_sqlite3-1.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbm_db-1.dll
Normal file
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbm_db-1.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbm_gdbm-1.dll
Normal file
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_dbm_gdbm-1.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_ldap-1.dll
Normal file
BIN
Agent-Windows/OGP64/lib/apr-util-1/apr_ldap-1.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/csih/getAccountName.exe
Normal file
BIN
Agent-Windows/OGP64/lib/csih/getAccountName.exe
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/csih/getVolInfo.exe
Normal file
BIN
Agent-Windows/OGP64/lib/csih/getVolInfo.exe
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/csih/winProductName.exe
Normal file
BIN
Agent-Windows/OGP64/lib/csih/winProductName.exe
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/lib4758cca.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/lib4758cca.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libaep.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libaep.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libatalla.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libatalla.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libcapi.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libcapi.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libchil.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libchil.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libcswift.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libcswift.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libgmp.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libgmp.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libgost.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libgost.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libnuron.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libnuron.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libpadlock.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libpadlock.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libsureware.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libsureware.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.0/libubsec.so
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.0/libubsec.so
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.1/capi.dll
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.1/capi.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-1.1/padlock.dll
Normal file
BIN
Agent-Windows/OGP64/lib/engines-1.1/padlock.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-3/capi.dll
Normal file
BIN
Agent-Windows/OGP64/lib/engines-3/capi.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-3/loader_attic.dll
Normal file
BIN
Agent-Windows/OGP64/lib/engines-3/loader_attic.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/engines-3/padlock.dll
Normal file
BIN
Agent-Windows/OGP64/lib/engines-3/padlock.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/filefuncs.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/filefuncs.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/filefuncs.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/filefuncs.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/fnmatch.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/fnmatch.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/fnmatch.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/fnmatch.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/fork.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/fork.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/fork.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/fork.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/inplace.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/inplace.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/inplace.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/inplace.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/intdiv.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/intdiv.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/intdiv.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/intdiv.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/ordchr.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/ordchr.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/ordchr.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/ordchr.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/readdir.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/readdir.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/readdir.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/readdir.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/readfile.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/readfile.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/readfile.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/readfile.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/revoutput.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/revoutput.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/revoutput.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/revoutput.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/revtwoway.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/revtwoway.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/revtwoway.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/revtwoway.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/rwarray.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/rwarray.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/rwarray.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/rwarray.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/time.dll
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/time.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/gawk/time.dll.a
Normal file
BIN
Agent-Windows/OGP64/lib/gawk/time.dll.a
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/auth_gssapi_client.dll
Normal file
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/auth_gssapi_client.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/caching_sha2_password.dll
Normal file
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/caching_sha2_password.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/dialog.dll
Normal file
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/dialog.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/mysql_clear_password.dll
Normal file
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/mysql_clear_password.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/remote_io.dll
Normal file
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/remote_io.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/sha256_password.dll
Normal file
BIN
Agent-Windows/OGP64/lib/mariadb/plugin/sha256_password.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/ossl-modules/legacy.dll
Normal file
BIN
Agent-Windows/OGP64/lib/ossl-modules/legacy.dll
Normal file
Binary file not shown.
BIN
Agent-Windows/OGP64/lib/p11-kit-proxy.so
Normal file
BIN
Agent-Windows/OGP64/lib/p11-kit-proxy.so
Normal file
Binary file not shown.
1432
Agent-Windows/OGP64/lib/perl5/5.40/x86_64-cygwin-threads/B.pm
Normal file
1432
Agent-Windows/OGP64/lib/perl5/5.40/x86_64-cygwin-threads/B.pm
Normal file
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,217 @@
|
|||
package B::Showlex;
|
||||
|
||||
our $VERSION = '1.05';
|
||||
|
||||
use strict;
|
||||
use B qw(svref_2object comppadlist class);
|
||||
use B::Terse ();
|
||||
use B::Concise ();
|
||||
|
||||
#
|
||||
# Invoke as
|
||||
# perl -MO=Showlex,foo bar.pl
|
||||
# to see the names of lexical variables used by &foo
|
||||
# or as
|
||||
# perl -MO=Showlex bar.pl
|
||||
# to see the names of file scope lexicals used by bar.pl
|
||||
#
|
||||
|
||||
|
||||
# borrowed from B::Concise
|
||||
our $walkHandle = \*STDOUT;
|
||||
|
||||
sub walk_output { # updates $walkHandle
|
||||
$walkHandle = B::Concise::walk_output(@_);
|
||||
#print "got $walkHandle";
|
||||
#print $walkHandle "using it";
|
||||
$walkHandle;
|
||||
}
|
||||
|
||||
sub shownamearray {
|
||||
my ($name, $av) = @_;
|
||||
my @els = $av->ARRAY;
|
||||
my $count = @els;
|
||||
my $i;
|
||||
print $walkHandle "$name has $count entries\n";
|
||||
for ($i = 0; $i < $count; $i++) {
|
||||
my $sv = $els[$i];
|
||||
if (class($sv) ne "SPECIAL") {
|
||||
printf $walkHandle "$i: (0x%lx) %s\n",
|
||||
$$sv, $sv->PVX // "undef" || "const";
|
||||
} else {
|
||||
printf $walkHandle "$i: %s\n", $sv->terse;
|
||||
#printf $walkHandle "$i: %s\n", B::Concise::concise_sv($sv);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub showvaluearray {
|
||||
my ($name, $av) = @_;
|
||||
my @els = $av->ARRAY;
|
||||
my $count = @els;
|
||||
my $i;
|
||||
print $walkHandle "$name has $count entries\n";
|
||||
for ($i = 0; $i < $count; $i++) {
|
||||
printf $walkHandle "$i: %s\n", $els[$i]->terse;
|
||||
#print $walkHandle "$i: %s\n", B::Concise::concise_sv($els[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
sub showlex {
|
||||
my ($objname, $namesav, $valsav) = @_;
|
||||
shownamearray("Pad of lexical names for $objname", $namesav);
|
||||
showvaluearray("Pad of lexical values for $objname", $valsav);
|
||||
}
|
||||
|
||||
my ($newlex, $nosp1); # rendering state vars
|
||||
|
||||
sub padname_terse {
|
||||
my $name = shift;
|
||||
return $name->terse if class($name) eq 'SPECIAL';
|
||||
my $str = $name->PVX;
|
||||
return sprintf "(0x%lx) %s",
|
||||
$$name,
|
||||
length $str ? qq'"$str"' : defined $str ? "const" : 'undef';
|
||||
}
|
||||
|
||||
sub newlex { # drop-in for showlex
|
||||
my ($objname, $names, $vals) = @_;
|
||||
my @names = $names->ARRAY;
|
||||
my @vals = $vals->ARRAY;
|
||||
my $count = @names;
|
||||
print $walkHandle "$objname Pad has $count entries\n";
|
||||
printf $walkHandle "0: %s\n", padname_terse($names[0]) unless $nosp1;
|
||||
for (my $i = 1; $i < $count; $i++) {
|
||||
printf $walkHandle "$i: %s = %s\n", padname_terse($names[$i]),
|
||||
$vals[$i]->terse,
|
||||
unless $nosp1
|
||||
and class($names[$i]) eq 'SPECIAL' || !$names[$i]->LEN;
|
||||
}
|
||||
}
|
||||
|
||||
sub showlex_obj {
|
||||
my ($objname, $obj) = @_;
|
||||
$objname =~ s/^&main::/&/;
|
||||
showlex($objname, svref_2object($obj)->PADLIST->ARRAY) if !$newlex;
|
||||
newlex ($objname, svref_2object($obj)->PADLIST->ARRAY) if $newlex;
|
||||
}
|
||||
|
||||
sub showlex_main {
|
||||
showlex("comppadlist", comppadlist->ARRAY) if !$newlex;
|
||||
newlex ("main", comppadlist->ARRAY) if $newlex;
|
||||
}
|
||||
|
||||
sub compile {
|
||||
my @options = grep(/^-/, @_);
|
||||
my @args = grep(!/^-/, @_);
|
||||
for my $o (@options) {
|
||||
$newlex = 1 if $o eq "-newlex";
|
||||
$nosp1 = 1 if $o eq "-nosp";
|
||||
}
|
||||
|
||||
return \&showlex_main unless @args;
|
||||
return sub {
|
||||
my $objref;
|
||||
foreach my $objname (@args) {
|
||||
next unless $objname; # skip nulls w/o carping
|
||||
|
||||
if (ref $objname) {
|
||||
print $walkHandle "B::Showlex::compile($objname)\n";
|
||||
$objref = $objname;
|
||||
} else {
|
||||
$objname = "main::$objname" unless $objname =~ /::/;
|
||||
print $walkHandle "$objname:\n";
|
||||
no strict 'refs';
|
||||
die "err: unknown function ($objname)\n"
|
||||
unless *{$objname}{CODE};
|
||||
$objref = \&$objname;
|
||||
}
|
||||
showlex_obj($objname, $objref);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
B::Showlex - Show lexical variables used in functions or files
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
perl -MO=Showlex[,-OPTIONS][,SUBROUTINE] foo.pl
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
When a comma-separated list of subroutine names is given as options, Showlex
|
||||
prints the lexical variables used in those subroutines. Otherwise, it prints
|
||||
the file-scope lexicals in the file.
|
||||
|
||||
=head1 EXAMPLES
|
||||
|
||||
Traditional form:
|
||||
|
||||
$ perl -MO=Showlex -e 'my ($i,$j,$k)=(1,"foo")'
|
||||
Pad of lexical names for comppadlist has 4 entries
|
||||
0: (0x8caea4) undef
|
||||
1: (0x9db0fb0) $i
|
||||
2: (0x9db0f38) $j
|
||||
3: (0x9db0f50) $k
|
||||
Pad of lexical values for comppadlist has 5 entries
|
||||
0: SPECIAL #1 &PL_sv_undef
|
||||
1: NULL (0x9da4234)
|
||||
2: NULL (0x9db0f2c)
|
||||
3: NULL (0x9db0f44)
|
||||
4: NULL (0x9da4264)
|
||||
-e syntax OK
|
||||
|
||||
New-style form:
|
||||
|
||||
$ perl -MO=Showlex,-newlex -e 'my ($i,$j,$k)=(1,"foo")'
|
||||
main Pad has 4 entries
|
||||
0: (0x8caea4) undef
|
||||
1: (0xa0c4fb8) "$i" = NULL (0xa0b8234)
|
||||
2: (0xa0c4f40) "$j" = NULL (0xa0c4f34)
|
||||
3: (0xa0c4f58) "$k" = NULL (0xa0c4f4c)
|
||||
-e syntax OK
|
||||
|
||||
New form, no specials, outside O framework:
|
||||
|
||||
$ perl -MB::Showlex -e \
|
||||
'my ($i,$j,$k)=(1,"foo"); B::Showlex::compile(-newlex,-nosp)->()'
|
||||
main Pad has 4 entries
|
||||
1: (0x998ffb0) "$i" = IV (0x9983234) 1
|
||||
2: (0x998ff68) "$j" = PV (0x998ff5c) "foo"
|
||||
3: (0x998ff80) "$k" = NULL (0x998ff74)
|
||||
|
||||
Note that this example shows the values of the lexicals, whereas the other
|
||||
examples did not (as they're compile-time only).
|
||||
|
||||
=head2 OPTIONS
|
||||
|
||||
The C<-newlex> option produces a more readable C<< name => value >> format,
|
||||
and is shown in the second example above.
|
||||
|
||||
The C<-nosp> option eliminates reporting of SPECIALs, such as C<0: SPECIAL
|
||||
#1 &PL_sv_undef> above. Reporting of SPECIALs can sometimes overwhelm
|
||||
your declared lexicals.
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
L<B::Showlex> can also be used outside of the O framework, as in the third
|
||||
example. See L<B::Concise> for a fuller explanation of reasons.
|
||||
|
||||
=head1 TODO
|
||||
|
||||
Some of the reported info, such as hex addresses, is not particularly
|
||||
valuable. Other information would be more useful for the typical
|
||||
programmer, such as line-numbers, pad-slot reuses, etc.. Given this,
|
||||
-newlex is not a particularly good flag-name.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Malcolm Beattie, C<mbeattie@sable.ox.ac.uk>
|
||||
|
||||
=cut
|
||||
|
|
@ -0,0 +1,104 @@
|
|||
package B::Terse;
|
||||
|
||||
our $VERSION = '1.09';
|
||||
|
||||
use strict;
|
||||
use B qw(class @specialsv_name);
|
||||
use B::Concise qw(concise_subref set_style_standard);
|
||||
use Carp;
|
||||
|
||||
sub terse {
|
||||
my ($order, $subref) = @_;
|
||||
set_style_standard("terse");
|
||||
if ($order eq "exec") {
|
||||
concise_subref('exec', $subref);
|
||||
} else {
|
||||
concise_subref('basic', $subref);
|
||||
}
|
||||
}
|
||||
|
||||
sub compile {
|
||||
my @args = @_;
|
||||
my $order = @args ? shift(@args) : "";
|
||||
$order = "-exec" if $order eq "exec";
|
||||
unshift @args, $order if $order ne "";
|
||||
B::Concise::compile("-terse", @args);
|
||||
}
|
||||
|
||||
sub indent {
|
||||
my ($level) = @_ ? shift : 0;
|
||||
return " " x $level;
|
||||
}
|
||||
|
||||
|
||||
sub B::SV::terse {
|
||||
my($sv, $level) = (@_, 0);
|
||||
my %info;
|
||||
B::Concise::concise_sv($sv, \%info);
|
||||
my $s = indent($level)
|
||||
. B::Concise::fmt_line(\%info, $sv,
|
||||
"#svclass~(?((#svaddr))?)~#svval", 0);
|
||||
chomp $s;
|
||||
print "$s\n" unless defined wantarray;
|
||||
$s;
|
||||
}
|
||||
|
||||
sub B::NULL::terse {
|
||||
my ($sv, $level) = (@_, 0);
|
||||
my $s = indent($level) . sprintf "%s (0x%lx)", class($sv), $$sv;
|
||||
print "$s\n" unless defined wantarray;
|
||||
$s;
|
||||
}
|
||||
|
||||
sub B::SPECIAL::terse {
|
||||
my ($sv, $level) = (@_, 0);
|
||||
my $s = indent($level)
|
||||
. sprintf( "%s #%d %s", class($sv), $$sv, $specialsv_name[$$sv]);
|
||||
print "$s\n" unless defined wantarray;
|
||||
$s;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
B::Terse - Walk Perl syntax tree, printing terse info about ops
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
perl -MO=Terse[,OPTIONS] foo.pl
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This module prints the contents of the parse tree, but without as much
|
||||
information as CPAN module B::Debug. For comparison, C<print "Hello, world.">
|
||||
produced 96 lines of output from B::Debug, but only 6 from B::Terse.
|
||||
|
||||
This module is useful for people who are writing their own back end,
|
||||
or who are learning about the Perl internals. It's not useful to the
|
||||
average programmer.
|
||||
|
||||
This version of B::Terse is really just a wrapper that calls L<B::Concise>
|
||||
with the B<-terse> option. It is provided for compatibility with old scripts
|
||||
(and habits) but using B::Concise directly is now recommended instead.
|
||||
|
||||
For compatibility with the old B::Terse, this module also adds a
|
||||
method named C<terse> to B::OP and B::SV objects. The B::SV method is
|
||||
largely compatible with the old one, though authors of new software
|
||||
might be advised to choose a more user-friendly output format. The
|
||||
B::OP C<terse> method, however, doesn't work well. Since B::Terse was
|
||||
first written, much more information in OPs has migrated to the
|
||||
scratchpad datastructure, but the C<terse> interface doesn't have any
|
||||
way of getting to the correct pad. As a kludge, the new version will
|
||||
always use the pad for the main program, but for OPs in subroutines
|
||||
this will give the wrong answer or crash.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
The original version of B::Terse was written by Malcolm Beattie,
|
||||
E<lt>mbeattie@sable.ox.ac.ukE<gt>. This wrapper was written by Stephen
|
||||
McCamant, E<lt>smcc@MIT.EDUE<gt>.
|
||||
|
||||
=cut
|
||||
|
|
@ -0,0 +1,496 @@
|
|||
package B::Xref;
|
||||
|
||||
our $VERSION = '1.07';
|
||||
|
||||
=head1 NAME
|
||||
|
||||
B::Xref - Generates cross reference reports for Perl programs
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
perl -MO=Xref[,OPTIONS] foo.pl
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
The B::Xref module is used to generate a cross reference listing of all
|
||||
definitions and uses of variables, subroutines and formats in a Perl program.
|
||||
It is implemented as a backend for the Perl compiler.
|
||||
|
||||
The report generated is in the following format:
|
||||
|
||||
File filename1
|
||||
Subroutine subname1
|
||||
Package package1
|
||||
object1 line numbers
|
||||
object2 line numbers
|
||||
...
|
||||
Package package2
|
||||
...
|
||||
|
||||
Each B<File> section reports on a single file. Each B<Subroutine> section
|
||||
reports on a single subroutine apart from the special cases
|
||||
"(definitions)" and "(main)". These report, respectively, on subroutine
|
||||
definitions found by the initial symbol table walk and on the main part of
|
||||
the program or module external to all subroutines.
|
||||
|
||||
The report is then grouped by the B<Package> of each variable,
|
||||
subroutine or format with the special case "(lexicals)" meaning
|
||||
lexical variables. Each B<object> name (implicitly qualified by its
|
||||
containing B<Package>) includes its type character(s) at the beginning
|
||||
where possible. Lexical variables are easier to track and even
|
||||
included dereferencing information where possible.
|
||||
|
||||
The C<line numbers> are a comma separated list of line numbers (some
|
||||
preceded by code letters) where that object is used in some way.
|
||||
Simple uses aren't preceded by a code letter. Introductions (such as
|
||||
where a lexical is first defined with C<my>) are indicated with the
|
||||
letter "i". Subroutine and method calls are indicated by the character
|
||||
"&". Subroutine definitions are indicated by "s" and format
|
||||
definitions by "f".
|
||||
|
||||
For instance, here's part of the report from the I<pod2man> program that
|
||||
comes with Perl:
|
||||
|
||||
Subroutine clear_noremap
|
||||
Package (lexical)
|
||||
$ready_to_print i1069, 1079
|
||||
Package main
|
||||
$& 1086
|
||||
$. 1086
|
||||
$0 1086
|
||||
$1 1087
|
||||
$2 1085, 1085
|
||||
$3 1085, 1085
|
||||
$ARGV 1086
|
||||
%HTML_Escapes 1085, 1085
|
||||
|
||||
This shows the variables used in the subroutine C<clear_noremap>. The
|
||||
variable C<$ready_to_print> is a my() (lexical) variable,
|
||||
B<i>ntroduced (first declared with my()) on line 1069, and used on
|
||||
line 1079. The variable C<$&> from the main package is used on 1086,
|
||||
and so on.
|
||||
|
||||
A line number may be prefixed by a single letter:
|
||||
|
||||
=over 4
|
||||
|
||||
=item i
|
||||
|
||||
Lexical variable introduced (declared with my()) for the first time.
|
||||
|
||||
=item &
|
||||
|
||||
Subroutine or method call.
|
||||
|
||||
=item s
|
||||
|
||||
Subroutine defined.
|
||||
|
||||
=item r
|
||||
|
||||
Format defined.
|
||||
|
||||
=back
|
||||
|
||||
The most useful option the cross referencer has is to save the report
|
||||
to a separate file. For instance, to save the report on
|
||||
I<myperlprogram> to the file I<report>:
|
||||
|
||||
$ perl -MO=Xref,-oreport myperlprogram
|
||||
|
||||
=head1 OPTIONS
|
||||
|
||||
Option words are separated by commas (not whitespace) and follow the
|
||||
usual conventions of compiler backend options.
|
||||
|
||||
=over 8
|
||||
|
||||
=item C<-oFILENAME>
|
||||
|
||||
Directs output to C<FILENAME> instead of standard output.
|
||||
|
||||
=item C<-r>
|
||||
|
||||
Raw output. Instead of producing a human-readable report, outputs a line
|
||||
in machine-readable form for each definition/use of a variable/sub/format.
|
||||
|
||||
=item C<-d>
|
||||
|
||||
Don't output the "(definitions)" sections.
|
||||
|
||||
=item C<-D[tO]>
|
||||
|
||||
(Internal) debug options, probably only useful if C<-r> included.
|
||||
The C<t> option prints the object on the top of the stack as it's
|
||||
being tracked. The C<O> option prints each operator as it's being
|
||||
processed in the execution order of the program.
|
||||
|
||||
=back
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Non-lexical variables are quite difficult to track through a program.
|
||||
Sometimes the type of a non-lexical variable's use is impossible to
|
||||
determine. Introductions of non-lexical non-scalars don't seem to be
|
||||
reported properly.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Malcolm Beattie, mbeattie@sable.ox.ac.uk.
|
||||
|
||||
=cut
|
||||
|
||||
use strict;
|
||||
use Config;
|
||||
use B qw(peekop class comppadlist main_start svref_2object walksymtable
|
||||
OPpLVAL_INTRO SVf_POK SVf_ROK OPpOUR_INTRO cstring
|
||||
);
|
||||
|
||||
sub UNKNOWN { ["?", "?", "?"] }
|
||||
|
||||
my @pad; # lexicals in current pad
|
||||
# as ["(lexical)", type, name]
|
||||
my %done; # keyed by $$op: set when each $op is done
|
||||
my $top = UNKNOWN; # shadows top element of stack as
|
||||
# [pack, type, name] (pack can be "(lexical)")
|
||||
my $file; # shadows current filename
|
||||
my $line; # shadows current line number
|
||||
my $subname; # shadows current sub name
|
||||
my %table; # Multi-level hash to record all uses etc.
|
||||
my @todo = (); # List of CVs that need processing
|
||||
|
||||
my %code = (intro => "i", used => "",
|
||||
subdef => "s", subused => "&",
|
||||
formdef => "f", meth => "->");
|
||||
|
||||
|
||||
# Options
|
||||
my ($debug_op, $debug_top, $nodefs, $raw);
|
||||
|
||||
sub process {
|
||||
my ($var, $event) = @_;
|
||||
my ($pack, $type, $name) = @$var;
|
||||
if ($type eq "*") {
|
||||
if ($event eq "used") {
|
||||
return;
|
||||
} elsif ($event eq "subused") {
|
||||
$type = "&";
|
||||
}
|
||||
}
|
||||
$type =~ s/(.)\*$/$1/g;
|
||||
if ($raw) {
|
||||
printf "%-16s %-12s %5d %-12s %4s %-16s %s\n",
|
||||
$file, $subname, $line, $pack, $type, $name, $event;
|
||||
} else {
|
||||
# Wheee
|
||||
push(@{$table{$file}->{$subname}->{$pack}->{$type.$name}->{$event}},
|
||||
$line);
|
||||
}
|
||||
}
|
||||
|
||||
sub load_pad {
|
||||
my $padlist = shift;
|
||||
my ($namelistav, $vallistav, @namelist, $ix);
|
||||
@pad = ();
|
||||
return if class($padlist) =~ '^(?:SPECIAL|NULL)\z';
|
||||
($namelistav,$vallistav) = $padlist->ARRAY;
|
||||
@namelist = $namelistav->ARRAY;
|
||||
for ($ix = 1; $ix < @namelist; $ix++) {
|
||||
my $namesv = $namelist[$ix];
|
||||
next if class($namesv) eq "SPECIAL";
|
||||
my ($type, $name) = $namesv->PV =~ /^(.)([^\0]*)(\0.*)?$/;
|
||||
$pad[$ix] = ["(lexical)", $type || '?', $name || '?'];
|
||||
}
|
||||
if ($Config{useithreads}) {
|
||||
my (@vallist);
|
||||
@vallist = $vallistav->ARRAY;
|
||||
for ($ix = 1; $ix < @vallist; $ix++) {
|
||||
my $valsv = $vallist[$ix];
|
||||
next unless class($valsv) eq "GV";
|
||||
next if class($valsv->STASH) eq 'SPECIAL';
|
||||
# these pad GVs don't have corresponding names, so same @pad
|
||||
# array can be used without collisions
|
||||
$pad[$ix] = [$valsv->STASH->NAME, "*", $valsv->NAME];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub xref {
|
||||
my $start = shift;
|
||||
my $op;
|
||||
for ($op = $start; $$op; $op = $op->next) {
|
||||
last if $done{$$op}++;
|
||||
warn sprintf("top = [%s, %s, %s]\n", @$top) if $debug_top;
|
||||
warn peekop($op), "\n" if $debug_op;
|
||||
my $opname = $op->name;
|
||||
if ($opname =~ /^(or|and|mapwhile|grepwhile|range|cond_expr)$/) {
|
||||
xref($op->other);
|
||||
} elsif ($opname eq "match" || $opname eq "subst") {
|
||||
xref($op->pmreplstart);
|
||||
} elsif ($opname eq "substcont") {
|
||||
xref($op->other->pmreplstart);
|
||||
$op = $op->other;
|
||||
redo;
|
||||
} elsif ($opname eq "enterloop") {
|
||||
xref($op->redoop);
|
||||
xref($op->nextop);
|
||||
xref($op->lastop);
|
||||
} elsif ($opname eq "subst") {
|
||||
xref($op->pmreplstart);
|
||||
} else {
|
||||
no strict 'refs';
|
||||
my $ppname = "pp_$opname";
|
||||
&$ppname($op) if defined(&$ppname);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub xref_cv {
|
||||
my $cv = shift;
|
||||
my $pack = $cv->GV->STASH->NAME;
|
||||
$subname = ($pack eq "main" ? "" : "$pack\::") . $cv->GV->NAME;
|
||||
load_pad($cv->PADLIST);
|
||||
xref($cv->START);
|
||||
$subname = "(main)";
|
||||
}
|
||||
|
||||
sub xref_object {
|
||||
my $cvref = shift;
|
||||
xref_cv(svref_2object($cvref));
|
||||
}
|
||||
|
||||
sub xref_main {
|
||||
$subname = "(main)";
|
||||
load_pad(comppadlist);
|
||||
xref(main_start);
|
||||
while (@todo) {
|
||||
xref_cv(shift @todo);
|
||||
}
|
||||
}
|
||||
|
||||
sub pp_nextstate {
|
||||
my $op = shift;
|
||||
$file = $op->file;
|
||||
$line = $op->line;
|
||||
$top = UNKNOWN;
|
||||
}
|
||||
|
||||
sub pp_padrange {
|
||||
my $op = shift;
|
||||
my $count = $op->private & 127;
|
||||
for my $i (0..$count-1) {
|
||||
$top = $pad[$op->targ + $i];
|
||||
process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used");
|
||||
}
|
||||
}
|
||||
|
||||
sub pp_padsv {
|
||||
my $op = shift;
|
||||
$top = $pad[$op->targ];
|
||||
process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used");
|
||||
}
|
||||
|
||||
sub pp_padav { pp_padsv(@_) }
|
||||
sub pp_padhv { pp_padsv(@_) }
|
||||
|
||||
sub deref {
|
||||
my ($op, $var, $as) = @_;
|
||||
$var->[1] = $as . $var->[1];
|
||||
process($var, $op->private & OPpOUR_INTRO ? "intro" : "used");
|
||||
}
|
||||
|
||||
sub pp_rv2cv { deref(shift, $top, "&"); }
|
||||
sub pp_rv2hv { deref(shift, $top, "%"); }
|
||||
sub pp_rv2sv { deref(shift, $top, "\$"); }
|
||||
sub pp_rv2av { deref(shift, $top, "\@"); }
|
||||
sub pp_rv2gv { deref(shift, $top, "*"); }
|
||||
|
||||
sub pp_gvsv {
|
||||
my $op = shift;
|
||||
my $gv;
|
||||
if ($Config{useithreads}) {
|
||||
$top = $pad[$op->padix];
|
||||
$top = UNKNOWN unless $top;
|
||||
$top->[1] = '$';
|
||||
}
|
||||
else {
|
||||
$gv = $op->gv;
|
||||
$top = [$gv->STASH->NAME, '$', $gv->SAFENAME];
|
||||
}
|
||||
process($top, $op->private & OPpLVAL_INTRO ||
|
||||
$op->private & OPpOUR_INTRO ? "intro" : "used");
|
||||
}
|
||||
|
||||
sub pp_gv {
|
||||
my $op = shift;
|
||||
my $gv;
|
||||
if ($Config{useithreads}) {
|
||||
$top = $pad[$op->padix];
|
||||
$top = UNKNOWN unless $top;
|
||||
$top->[1] = '*';
|
||||
}
|
||||
else {
|
||||
$gv = $op->gv;
|
||||
if ($gv->FLAGS & SVf_ROK) { # sub ref
|
||||
my $cv = $gv->RV;
|
||||
$top = [$cv->STASH->NAME, '*', B::safename($cv->NAME_HEK)]
|
||||
}
|
||||
else {
|
||||
$top = [$gv->STASH->NAME, '*', $gv->SAFENAME];
|
||||
}
|
||||
}
|
||||
process($top, $op->private & OPpLVAL_INTRO ? "intro" : "used");
|
||||
}
|
||||
|
||||
sub pp_const {
|
||||
my $op = shift;
|
||||
my $sv = $op->sv;
|
||||
# constant could be in the pad (under useithreads)
|
||||
if ($$sv) {
|
||||
$top = ["?", "",
|
||||
(class($sv) ne "SPECIAL" && $sv->FLAGS & SVf_POK)
|
||||
? cstring($sv->PV) : "?"];
|
||||
}
|
||||
else {
|
||||
$top = $pad[$op->targ];
|
||||
$top = UNKNOWN unless $top;
|
||||
}
|
||||
}
|
||||
|
||||
sub pp_method {
|
||||
my $op = shift;
|
||||
$top = ["(method)", "->".$top->[1], $top->[2]];
|
||||
}
|
||||
|
||||
sub pp_entersub {
|
||||
my $op = shift;
|
||||
if ($top->[1] eq "m") {
|
||||
process($top, "meth");
|
||||
} else {
|
||||
process($top, "subused");
|
||||
}
|
||||
$top = UNKNOWN;
|
||||
}
|
||||
|
||||
#
|
||||
# Stuff for cross referencing definitions of variables and subs
|
||||
#
|
||||
|
||||
sub B::GV::xref {
|
||||
my $gv = shift;
|
||||
my $cv = $gv->CV;
|
||||
if ($$cv) {
|
||||
#return if $done{$$cv}++;
|
||||
$file = $gv->FILE;
|
||||
$line = $gv->LINE;
|
||||
process([$gv->STASH->NAME, "&", $gv->NAME], "subdef");
|
||||
push(@todo, $cv);
|
||||
}
|
||||
my $form = $gv->FORM;
|
||||
if ($$form) {
|
||||
return if $done{$$form}++;
|
||||
$file = $gv->FILE;
|
||||
$line = $gv->LINE;
|
||||
process([$gv->STASH->NAME, "", $gv->NAME], "formdef");
|
||||
}
|
||||
}
|
||||
|
||||
sub xref_definitions {
|
||||
my ($pack, %exclude);
|
||||
return if $nodefs;
|
||||
$subname = "(definitions)";
|
||||
foreach $pack (qw(B O AutoLoader DynaLoader XSLoader Config DB VMS
|
||||
strict vars FileHandle Exporter Carp PerlIO::Layer
|
||||
attributes utf8 warnings)) {
|
||||
$exclude{$pack."::"} = 1;
|
||||
}
|
||||
no strict qw(vars refs);
|
||||
walksymtable(\%{"main::"}, "xref", sub { !defined($exclude{$_[0]}) });
|
||||
}
|
||||
|
||||
sub output {
|
||||
return if $raw;
|
||||
my ($file, $subname, $pack, $name, $ev, $perfile, $persubname,
|
||||
$perpack, $pername, $perev);
|
||||
foreach $file (sort(keys(%table))) {
|
||||
$perfile = $table{$file};
|
||||
print "File $file\n";
|
||||
foreach $subname (sort(keys(%$perfile))) {
|
||||
$persubname = $perfile->{$subname};
|
||||
print " Subroutine $subname\n";
|
||||
foreach $pack (sort(keys(%$persubname))) {
|
||||
$perpack = $persubname->{$pack};
|
||||
print " Package $pack\n";
|
||||
foreach $name (sort(keys(%$perpack))) {
|
||||
$pername = $perpack->{$name};
|
||||
my @lines;
|
||||
foreach $ev (qw(intro formdef subdef meth subused used)) {
|
||||
$perev = $pername->{$ev};
|
||||
if (defined($perev) && @$perev) {
|
||||
my $code = $code{$ev};
|
||||
push(@lines, map("$code$_", @$perev));
|
||||
}
|
||||
}
|
||||
printf " %-16s %s\n", $name, join(", ", @lines);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub compile {
|
||||
my @options = @_;
|
||||
my ($option, $opt, $arg);
|
||||
OPTION:
|
||||
while ($option = shift @options) {
|
||||
if ($option =~ /^-(.)(.*)/) {
|
||||
$opt = $1;
|
||||
$arg = $2;
|
||||
} else {
|
||||
unshift @options, $option;
|
||||
last OPTION;
|
||||
}
|
||||
if ($opt eq "-" && $arg eq "-") {
|
||||
shift @options;
|
||||
last OPTION;
|
||||
} elsif ($opt eq "o") {
|
||||
$arg ||= shift @options;
|
||||
open(STDOUT, '>', $arg) or return "$arg: $!\n";
|
||||
} elsif ($opt eq "d") {
|
||||
$nodefs = 1;
|
||||
} elsif ($opt eq "r") {
|
||||
$raw = 1;
|
||||
} elsif ($opt eq "D") {
|
||||
$arg ||= shift @options;
|
||||
foreach $arg (split(//, $arg)) {
|
||||
if ($arg eq "o") {
|
||||
B->debug(1);
|
||||
} elsif ($arg eq "O") {
|
||||
$debug_op = 1;
|
||||
} elsif ($arg eq "t") {
|
||||
$debug_top = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (@options) {
|
||||
return sub {
|
||||
my $objname;
|
||||
xref_definitions();
|
||||
foreach $objname (@options) {
|
||||
$objname = "main::$objname" unless $objname =~ /::/;
|
||||
eval "xref_object(\\&$objname)";
|
||||
die "xref_object(\\&$objname) failed: $@" if $@;
|
||||
}
|
||||
output();
|
||||
}
|
||||
} else {
|
||||
return sub {
|
||||
xref_definitions();
|
||||
xref_main();
|
||||
output();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
/* EXTERN.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999,
|
||||
* 2000, 2001, by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* EXT: designates a global var which is defined in perl.h
|
||||
*
|
||||
* dEXT: designates a global var which is defined in another
|
||||
* file, so we can't count on finding it in perl.h
|
||||
* (this practice should be avoided).
|
||||
*/
|
||||
#undef EXT
|
||||
#undef dEXT
|
||||
#undef EXTCONST
|
||||
#undef dEXTCONST
|
||||
|
||||
# if defined(WIN32) && !defined(PERL_STATIC_SYMS)
|
||||
/* miniperl should not export anything */
|
||||
# if defined(PERL_IS_MINIPERL)
|
||||
# define EXT extern
|
||||
# define dEXT
|
||||
# define EXTCONST extern const
|
||||
# define dEXTCONST const
|
||||
# elif defined(PERLDLL)
|
||||
# define EXT EXTERN_C __declspec(dllexport)
|
||||
# define dEXT
|
||||
# define EXTCONST EXTERN_C __declspec(dllexport) const
|
||||
# define dEXTCONST const
|
||||
# else
|
||||
# define EXT EXTERN_C __declspec(dllimport)
|
||||
# define dEXT
|
||||
# define EXTCONST EXTERN_C __declspec(dllimport) const
|
||||
# define dEXTCONST const
|
||||
# endif
|
||||
# else
|
||||
# if defined(__CYGWIN__) && defined(USEIMPORTLIB)
|
||||
# define EXT extern __declspec(dllimport)
|
||||
# define dEXT
|
||||
# define EXTCONST extern __declspec(dllimport) const
|
||||
# define dEXTCONST const
|
||||
# else
|
||||
# define EXT extern
|
||||
# define dEXT
|
||||
# define EXTCONST extern const
|
||||
# define dEXTCONST const
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#undef INIT
|
||||
#define INIT(...)
|
||||
|
||||
#undef DOINIT
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
/* INTERN.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 1995, 1996, 1998, 2000, 2001,
|
||||
* by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* EXT designates a global var which is defined in perl.h
|
||||
* dEXT designates a global var which is defined in another
|
||||
* file, so we can't count on finding it in perl.h
|
||||
* (this practice should be avoided).
|
||||
*/
|
||||
#undef EXT
|
||||
#undef dEXT
|
||||
#undef EXTCONST
|
||||
#undef dEXTCONST
|
||||
|
||||
# if (defined(WIN32) && defined(__MINGW32__) && ! defined(PERL_IS_MINIPERL))
|
||||
# ifdef __cplusplus
|
||||
# define EXT __declspec(dllexport)
|
||||
# define dEXT
|
||||
# define EXTCONST __declspec(dllexport) extern const
|
||||
# define dEXTCONST const
|
||||
# else
|
||||
# define EXT __declspec(dllexport)
|
||||
# define dEXT
|
||||
# define EXTCONST __declspec(dllexport) const
|
||||
# define dEXTCONST const
|
||||
# endif
|
||||
# else
|
||||
# ifdef __cplusplus
|
||||
# define EXT
|
||||
# define dEXT
|
||||
# define EXTCONST EXTERN_C const
|
||||
# define dEXTCONST const
|
||||
# else
|
||||
# define EXT
|
||||
# define dEXT
|
||||
# define EXTCONST const
|
||||
# define dEXTCONST const
|
||||
# endif
|
||||
# endif
|
||||
|
||||
#undef INIT
|
||||
#define INIT(...) = __VA_ARGS__
|
||||
|
||||
#define DOINIT
|
||||
|
|
@ -0,0 +1,676 @@
|
|||
/* XSUB.h
|
||||
*
|
||||
* Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
* 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PERL_XSUB_H_
|
||||
#define PERL_XSUB_H_ 1
|
||||
|
||||
/* first, some documentation for xsubpp-generated items */
|
||||
|
||||
/*
|
||||
=for apidoc_section $XS
|
||||
|
||||
F<xsubpp> compiles XS code into C. See L<perlutil/xsubpp>.
|
||||
|
||||
=for comment
|
||||
Some variables below are flagged with 'u' because Devel::PPPort can't currently
|
||||
readily test them as they spring into existence by compiling with xsubpp.
|
||||
|
||||
=for apidoc Amnu|char*|CLASS
|
||||
Variable which is setup by C<xsubpp> to indicate the
|
||||
class name for a C++ XS constructor. This is always a C<char*>. See
|
||||
C<L</THIS>>.
|
||||
|
||||
=for apidoc Amnu|type|RETVAL
|
||||
Variable which is setup by C<xsubpp> to hold the return value for an
|
||||
XSUB. This is always the proper type for the XSUB. See
|
||||
L<perlxs/"The RETVAL Variable">.
|
||||
|
||||
=for apidoc Amnu|type|THIS
|
||||
Variable which is setup by C<xsubpp> to designate the object in a C++
|
||||
XSUB. This is always the proper type for the C++ object. See C<L</CLASS>> and
|
||||
L<perlxs/"Using XS With C++">.
|
||||
|
||||
=for apidoc Amn|Stack_off_t|ax
|
||||
Variable which is setup by C<xsubpp> to indicate the stack base offset,
|
||||
used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
|
||||
must be called prior to setup the C<MARK> variable.
|
||||
|
||||
=for apidoc Amn|Stack_off_t|items
|
||||
Variable which is setup by C<xsubpp> to indicate the number of
|
||||
items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
|
||||
|
||||
=for apidoc Amn|I32|ix
|
||||
Variable which is setup by C<xsubpp> to indicate which of an
|
||||
XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
|
||||
|
||||
=for apidoc Am|SV*|ST|int ix
|
||||
Used to access elements on the XSUB's stack.
|
||||
|
||||
=for apidoc Ay||XS|name
|
||||
Macro to declare an XSUB and its C parameter list. This is handled by
|
||||
C<xsubpp>. It is the same as using the more explicit C<XS_EXTERNAL> macro; the
|
||||
latter is preferred.
|
||||
|
||||
=for apidoc Ayu||XS_INTERNAL|name
|
||||
Macro to declare an XSUB and its C parameter list without exporting the symbols.
|
||||
This is handled by C<xsubpp> and generally preferable over exporting the XSUB
|
||||
symbols unnecessarily.
|
||||
|
||||
=for comment
|
||||
XS_INTERNAL marked 'u' because declaring a function static within our test
|
||||
function doesn't work
|
||||
|
||||
=for apidoc Ay||XS_EXTERNAL|name
|
||||
Macro to declare an XSUB and its C parameter list explicitly exporting the symbols.
|
||||
|
||||
=for apidoc Ay||XSPROTO|name
|
||||
Macro used by C<L</XS_INTERNAL>> and C<L</XS_EXTERNAL>> to declare a function
|
||||
prototype. You probably shouldn't be using this directly yourself.
|
||||
|
||||
=for apidoc Amn;||dAX
|
||||
Sets up the C<ax> variable.
|
||||
This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
|
||||
|
||||
=for apidoc Amn;||dAXMARK
|
||||
Sets up the C<ax> variable and stack marker variable C<mark>.
|
||||
This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
|
||||
|
||||
=for apidoc Amn;||dITEMS
|
||||
Sets up the C<items> variable.
|
||||
This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
|
||||
|
||||
=for apidoc Amn;||dXSARGS
|
||||
Sets up stack and mark pointers for an XSUB, calling C<dSP> and C<dMARK>.
|
||||
Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
|
||||
This is usually handled automatically by C<xsubpp>.
|
||||
|
||||
=for apidoc Amn;||dXSI32
|
||||
Sets up the C<ix> variable for an XSUB which has aliases. This is usually
|
||||
handled automatically by C<xsubpp>.
|
||||
|
||||
=for apidoc Amn;||dUNDERBAR
|
||||
Sets up any variable needed by the C<UNDERBAR> macro. It used to define
|
||||
C<padoff_du>, but it is currently a noop. However, it is strongly advised
|
||||
to still use it for ensuring past and future compatibility.
|
||||
|
||||
=for apidoc AmnU||UNDERBAR
|
||||
The SV* corresponding to the C<$_> variable. Works even if there
|
||||
is a lexical C<$_> in scope.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#ifndef PERL_UNUSED_ARG
|
||||
# define PERL_UNUSED_ARG(x) ((void)sizeof(x))
|
||||
#endif
|
||||
#ifndef PERL_UNUSED_VAR
|
||||
# define PERL_UNUSED_VAR(x) ((void)sizeof(x))
|
||||
#endif
|
||||
|
||||
#define ST(off) PL_stack_base[ax + (off)]
|
||||
|
||||
/* XSPROTO() is also used by SWIG like this:
|
||||
*
|
||||
* typedef XSPROTO(SwigPerlWrapper);
|
||||
* typedef SwigPerlWrapper *SwigPerlWrapperPtr;
|
||||
*
|
||||
* This code needs to be compilable under both C and C++.
|
||||
*
|
||||
* Don't forget to change the __attribute__unused__ version of XS()
|
||||
* below too if you change XSPROTO() here.
|
||||
*/
|
||||
|
||||
/* XS_INTERNAL is the explicit static-linkage variant of the default
|
||||
* XS macro.
|
||||
*
|
||||
* XS_EXTERNAL is the same as XS_INTERNAL except it does not include
|
||||
* "STATIC", ie. it exports XSUB symbols. You probably don't want that.
|
||||
*/
|
||||
|
||||
#define XSPROTO(name) void name(pTHX_ CV* cv __attribute__unused__)
|
||||
|
||||
#undef XS
|
||||
#undef XS_EXTERNAL
|
||||
#undef XS_INTERNAL
|
||||
#if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
|
||||
# define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
|
||||
# define XS_INTERNAL(name) STATIC XSPROTO(name)
|
||||
#elif defined(__cplusplus)
|
||||
# define XS_EXTERNAL(name) extern "C" XSPROTO(name)
|
||||
# define XS_INTERNAL(name) static XSPROTO(name)
|
||||
#elif defined(HASATTRIBUTE_UNUSED)
|
||||
# define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
|
||||
# define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
|
||||
#else
|
||||
# define XS_EXTERNAL(name) XSPROTO(name)
|
||||
# define XS_INTERNAL(name) STATIC XSPROTO(name)
|
||||
#endif
|
||||
|
||||
/* We do export xsub symbols by default for the public XS macro.
|
||||
* Try explicitly using XS_INTERNAL/XS_EXTERNAL instead, please. */
|
||||
#define XS(name) XS_EXTERNAL(name)
|
||||
|
||||
#define dAX const Stack_off_t ax = (Stack_off_t)(MARK - PL_stack_base + 1)
|
||||
|
||||
#define dAXMARK \
|
||||
Stack_off_t ax = POPMARK; \
|
||||
SV **mark = PL_stack_base + ax++
|
||||
|
||||
#define dITEMS Stack_off_t items = (Stack_off_t)(SP - MARK)
|
||||
|
||||
#define dXSARGS \
|
||||
dSP; dAXMARK; dITEMS
|
||||
/* These 3 macros are replacements for dXSARGS macro only in bootstrap.
|
||||
They factor out common code in every BOOT XSUB. Computation of vars mark
|
||||
and items will optimize away in most BOOT functions. Var ax can never be
|
||||
optimized away since BOOT must return &PL_sv_yes by default from xsubpp.
|
||||
Note these macros are not drop in replacements for dXSARGS since they set
|
||||
PL_xsubfilename. */
|
||||
#define dXSBOOTARGSXSAPIVERCHK \
|
||||
Stack_off_t ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
|
||||
SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
|
||||
#define dXSBOOTARGSAPIVERCHK \
|
||||
Stack_off_t ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
|
||||
SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
|
||||
/* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do
|
||||
#undef dXSBOOTARGSXSAPIVERCHK
|
||||
#define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK */
|
||||
#define dXSBOOTARGSNOVERCHK \
|
||||
Stack_off_t ax = XS_SETXSUBFN_POPMARK; \
|
||||
SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
|
||||
|
||||
#define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
|
||||
? PAD_SV(PL_op->op_targ) : sv_newmortal())
|
||||
|
||||
/* Should be used before final PUSHi etc. if not in PPCODE section. */
|
||||
#define XSprePUSH (sp = PL_stack_base + ax - 1)
|
||||
|
||||
#define XSANY CvXSUBANY(cv)
|
||||
|
||||
#define dXSI32 I32 ix = XSANY.any_i32
|
||||
|
||||
#ifdef __cplusplus
|
||||
# define XSINTERFACE_CVT(ret,name) ret (*name)(...)
|
||||
# define XSINTERFACE_CVT_ANON(ret) ret (*)(...)
|
||||
#else
|
||||
# define XSINTERFACE_CVT(ret,name) ret (*name)()
|
||||
# define XSINTERFACE_CVT_ANON(ret) ret (*)()
|
||||
#endif
|
||||
#define dXSFUNCTION(ret) XSINTERFACE_CVT(ret,XSFUNCTION)
|
||||
#define XSINTERFACE_FUNC(ret,cv,f) ((XSINTERFACE_CVT_ANON(ret))(f))
|
||||
#define XSINTERFACE_FUNC_SET(cv,f) \
|
||||
CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f)
|
||||
|
||||
#define dUNDERBAR dNOOP
|
||||
#define UNDERBAR find_rundefsv()
|
||||
|
||||
/* Simple macros to put new mortal values onto the stack. */
|
||||
/* Typically used to return values from XS functions. */
|
||||
|
||||
/*
|
||||
=for apidoc_section $stack
|
||||
|
||||
=for apidoc Am|void|XST_mIV|int pos|IV iv
|
||||
Place an integer into the specified position C<pos> on the stack. The
|
||||
value is stored in a new mortal SV.
|
||||
|
||||
=for apidoc Am|void|XST_mNV|int pos|NV nv
|
||||
Place a double into the specified position C<pos> on the stack. The value
|
||||
is stored in a new mortal SV.
|
||||
|
||||
=for apidoc Am|void|XST_mPV|int pos|char* str
|
||||
Place a copy of a string into the specified position C<pos> on the stack.
|
||||
The value is stored in a new mortal SV.
|
||||
|
||||
=for apidoc Am|void|XST_mUV|int pos|UV uv
|
||||
Place an unsigned integer into the specified position C<pos> on the stack. The
|
||||
value is stored in a new mortal SV.
|
||||
|
||||
=for apidoc Am|void|XST_mNO|int pos
|
||||
Place C<&PL_sv_no> into the specified position C<pos> on the
|
||||
stack.
|
||||
|
||||
=for apidoc Am|void|XST_mYES|int pos
|
||||
Place C<&PL_sv_yes> into the specified position C<pos> on the
|
||||
stack.
|
||||
|
||||
=for apidoc Am|void|XST_mUNDEF|int pos
|
||||
Place C<&PL_sv_undef> into the specified position C<pos> on the
|
||||
stack.
|
||||
|
||||
=for apidoc Am|void|XSRETURN|int nitems
|
||||
Return from XSUB, indicating number of items on the stack. This is usually
|
||||
handled by C<xsubpp>.
|
||||
|
||||
=for apidoc Am|void|XSRETURN_IV|IV iv
|
||||
Return an integer from an XSUB immediately. Uses C<XST_mIV>.
|
||||
|
||||
=for apidoc Am|void|XSRETURN_UV|IV uv
|
||||
Return an integer from an XSUB immediately. Uses C<XST_mUV>.
|
||||
|
||||
=for apidoc Am|void|XSRETURN_NV|NV nv
|
||||
Return a double from an XSUB immediately. Uses C<XST_mNV>.
|
||||
|
||||
=for apidoc Am|void|XSRETURN_PV|char* str
|
||||
Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
|
||||
|
||||
=for apidoc Amn;||XSRETURN_NO
|
||||
Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
|
||||
|
||||
=for apidoc Amn;||XSRETURN_YES
|
||||
Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
|
||||
|
||||
=for apidoc Amn;||XSRETURN_UNDEF
|
||||
Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
|
||||
|
||||
=for apidoc Amn;||XSRETURN_EMPTY
|
||||
Return an empty list from an XSUB immediately.
|
||||
|
||||
=for apidoc AmU||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto
|
||||
Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
|
||||
the subs.
|
||||
|
||||
=for apidoc AmnU||XS_VERSION
|
||||
The version identifier for an XS module. This is usually
|
||||
handled automatically by C<ExtUtils::MakeMaker>. See
|
||||
C<L</XS_VERSION_BOOTCHECK>>.
|
||||
|
||||
=for apidoc Amn;||XS_VERSION_BOOTCHECK
|
||||
Macro to verify that a PM module's C<$VERSION> variable matches the XS
|
||||
module's C<XS_VERSION> variable. This is usually handled automatically by
|
||||
C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
|
||||
|
||||
=for apidoc Amn;||XS_APIVERSION_BOOTCHECK
|
||||
Macro to verify that the perl api version an XS module has been compiled against
|
||||
matches the api version of the perl interpreter it's being loaded into.
|
||||
|
||||
=for apidoc_section $exceptions
|
||||
|
||||
=for apidoc Amn;||dXCPT
|
||||
Set up necessary local variables for exception handling.
|
||||
See L<perlguts/"Exception Handling">.
|
||||
|
||||
=for apidoc AmnU||XCPT_TRY_START
|
||||
Starts a try block. See L<perlguts/"Exception Handling">.
|
||||
|
||||
=for apidoc AmnU||XCPT_TRY_END
|
||||
Ends a try block. See L<perlguts/"Exception Handling">.
|
||||
|
||||
=for apidoc AmnU||XCPT_CATCH
|
||||
Introduces a catch block. See L<perlguts/"Exception Handling">.
|
||||
|
||||
=for apidoc Amn;||XCPT_RETHROW
|
||||
Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define XST_mIV(i,v) (ST(i) = sv_2mortal(newSViv(v)) )
|
||||
#define XST_mUV(i,v) (ST(i) = sv_2mortal(newSVuv(v)) )
|
||||
#define XST_mNV(i,v) (ST(i) = sv_2mortal(newSVnv(v)) )
|
||||
#define XST_mPV(i,v) (ST(i) = sv_2mortal(newSVpv(v,0)))
|
||||
#define XST_mPVN(i,v,n) (ST(i) = newSVpvn_flags(v,n, SVs_TEMP))
|
||||
#define XST_mNO(i) (ST(i) = &PL_sv_no )
|
||||
#define XST_mYES(i) (ST(i) = &PL_sv_yes )
|
||||
#define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
|
||||
|
||||
#define XSRETURN(off) \
|
||||
STMT_START { \
|
||||
const IV tmpXSoff = (off); \
|
||||
assert(tmpXSoff >= 0);\
|
||||
PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); \
|
||||
return; \
|
||||
} STMT_END
|
||||
|
||||
#define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_NV(v) STMT_START { XST_mNV(0,v); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_PV(v) STMT_START { XST_mPV(0,v); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_NO STMT_START { XST_mNO(0); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_YES STMT_START { XST_mYES(0); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
|
||||
#define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END
|
||||
|
||||
#define newXSproto(a,b,c,d) newXS_flags(a,b,c,d,0)
|
||||
|
||||
#ifdef XS_VERSION
|
||||
# define XS_VERSION_BOOTCHECK \
|
||||
Perl_xs_handshake(HS_KEY(FALSE, FALSE, "", XS_VERSION), HS_CXT, __FILE__, \
|
||||
items, ax, XS_VERSION)
|
||||
#else
|
||||
# define XS_VERSION_BOOTCHECK
|
||||
#endif
|
||||
|
||||
#define XS_APIVERSION_BOOTCHECK \
|
||||
Perl_xs_handshake(HS_KEY(FALSE, FALSE, "v" PERL_API_VERSION_STRING, ""), \
|
||||
HS_CXT, __FILE__, items, ax, "v" PERL_API_VERSION_STRING)
|
||||
/* public API, this is a combination of XS_VERSION_BOOTCHECK and
|
||||
XS_APIVERSION_BOOTCHECK in 1, and is backportable */
|
||||
#ifdef XS_VERSION
|
||||
# define XS_BOTHVERSION_BOOTCHECK \
|
||||
Perl_xs_handshake(HS_KEY(FALSE, FALSE, "v" PERL_API_VERSION_STRING, XS_VERSION), \
|
||||
HS_CXT, __FILE__, items, ax, "v" PERL_API_VERSION_STRING, XS_VERSION)
|
||||
#else
|
||||
/* should this be a #error? if you want both checked, you better supply XS_VERSION right? */
|
||||
# define XS_BOTHVERSION_BOOTCHECK XS_APIVERSION_BOOTCHECK
|
||||
#endif
|
||||
|
||||
/* private API */
|
||||
#define XS_APIVERSION_POPMARK_BOOTCHECK \
|
||||
Perl_xs_handshake(HS_KEY(FALSE, TRUE, "v" PERL_API_VERSION_STRING, ""), \
|
||||
HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING)
|
||||
#ifdef XS_VERSION
|
||||
# define XS_BOTHVERSION_POPMARK_BOOTCHECK \
|
||||
Perl_xs_handshake(HS_KEY(FALSE, TRUE, "v" PERL_API_VERSION_STRING, XS_VERSION), \
|
||||
HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING, XS_VERSION)
|
||||
#else
|
||||
/* should this be a #error? if you want both checked, you better supply XS_VERSION right? */
|
||||
# define XS_BOTHVERSION_POPMARK_BOOTCHECK XS_APIVERSION_POPMARK_BOOTCHECK
|
||||
#endif
|
||||
|
||||
#define XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK \
|
||||
Perl_xs_handshake(HS_KEY(TRUE, TRUE, "v" PERL_API_VERSION_STRING, ""), \
|
||||
HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING)
|
||||
#ifdef XS_VERSION
|
||||
# define XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK \
|
||||
Perl_xs_handshake(HS_KEY(TRUE, TRUE, "v" PERL_API_VERSION_STRING, XS_VERSION),\
|
||||
HS_CXT, __FILE__, "v" PERL_API_VERSION_STRING, XS_VERSION)
|
||||
#else
|
||||
/* should this be a #error? if you want both checked, you better supply XS_VERSION right? */
|
||||
# define XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK
|
||||
#endif
|
||||
|
||||
/* For a normal bootstrap without API or XS version checking.
|
||||
Useful for static XS modules or debugging/testing scenarios.
|
||||
If this macro gets heavily used in the future, it should separated into
|
||||
a separate function independent of Perl_xs_handshake for efficiency */
|
||||
#define XS_SETXSUBFN_POPMARK \
|
||||
Perl_xs_handshake(HS_KEY(TRUE, TRUE, "", "") | HSf_NOCHK, HS_CXT, __FILE__)
|
||||
|
||||
#ifdef NO_XSLOCKS
|
||||
# define dXCPT dJMPENV; int rEtV = 0
|
||||
# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
|
||||
# define XCPT_TRY_END JMPENV_POP;
|
||||
# define XCPT_CATCH if (rEtV != 0)
|
||||
# define XCPT_RETHROW JMPENV_JUMP(rEtV)
|
||||
#endif
|
||||
|
||||
/*
|
||||
The DBM_setFilter & DBM_ckFilter macros are only used by
|
||||
the *DB*_File modules
|
||||
*/
|
||||
|
||||
#define DBM_setFilter(db_type,code) \
|
||||
STMT_START { \
|
||||
if (db_type) \
|
||||
RETVAL = sv_mortalcopy(db_type) ; \
|
||||
ST(0) = RETVAL ; \
|
||||
if (db_type && (code == &PL_sv_undef)) { \
|
||||
SvREFCNT_dec_NN(db_type) ; \
|
||||
db_type = NULL ; \
|
||||
} \
|
||||
else if (code) { \
|
||||
if (db_type) \
|
||||
sv_setsv(db_type, code) ; \
|
||||
else \
|
||||
db_type = newSVsv(code) ; \
|
||||
} \
|
||||
} STMT_END
|
||||
|
||||
#define DBM_ckFilter(arg,type,name) \
|
||||
STMT_START { \
|
||||
if (db->type) { \
|
||||
if (db->filtering) { \
|
||||
croak("recursion detected in %s", name) ; \
|
||||
} \
|
||||
ENTER ; \
|
||||
SAVETMPS ; \
|
||||
SAVEINT(db->filtering) ; \
|
||||
db->filtering = TRUE ; \
|
||||
SAVE_DEFSV ; \
|
||||
if (name[7] == 's') \
|
||||
arg = newSVsv(arg); \
|
||||
DEFSV_set(arg) ; \
|
||||
SvTEMP_off(arg) ; \
|
||||
PUSHMARK(SP) ; \
|
||||
PUTBACK ; \
|
||||
(void) perl_call_sv(db->type, G_DISCARD); \
|
||||
SPAGAIN ; \
|
||||
PUTBACK ; \
|
||||
FREETMPS ; \
|
||||
LEAVE ; \
|
||||
if (name[7] == 's'){ \
|
||||
arg = sv_2mortal(arg); \
|
||||
} \
|
||||
} \
|
||||
} STMT_END
|
||||
|
||||
#if 1 /* for compatibility */
|
||||
# define VTBL_sv &PL_vtbl_sv
|
||||
# define VTBL_env &PL_vtbl_env
|
||||
# define VTBL_envelem &PL_vtbl_envelem
|
||||
# define VTBL_sigelem &PL_vtbl_sigelem
|
||||
# define VTBL_pack &PL_vtbl_pack
|
||||
# define VTBL_packelem &PL_vtbl_packelem
|
||||
# define VTBL_dbline &PL_vtbl_dbline
|
||||
# define VTBL_isa &PL_vtbl_isa
|
||||
# define VTBL_isaelem &PL_vtbl_isaelem
|
||||
# define VTBL_arylen &PL_vtbl_arylen
|
||||
# define VTBL_glob &PL_vtbl_glob
|
||||
# define VTBL_mglob &PL_vtbl_mglob
|
||||
# define VTBL_nkeys &PL_vtbl_nkeys
|
||||
# define VTBL_taint &PL_vtbl_taint
|
||||
# define VTBL_substr &PL_vtbl_substr
|
||||
# define VTBL_vec &PL_vtbl_vec
|
||||
# define VTBL_pos &PL_vtbl_pos
|
||||
# define VTBL_bm &PL_vtbl_bm
|
||||
# define VTBL_fm &PL_vtbl_fm
|
||||
# define VTBL_uvar &PL_vtbl_uvar
|
||||
# define VTBL_defelem &PL_vtbl_defelem
|
||||
# define VTBL_regexp &PL_vtbl_regexp
|
||||
# define VTBL_regdata &PL_vtbl_regdata
|
||||
# define VTBL_regdatum &PL_vtbl_regdatum
|
||||
# ifdef USE_LOCALE_COLLATE
|
||||
# define VTBL_collxfrm &PL_vtbl_collxfrm
|
||||
# endif
|
||||
# define VTBL_amagic &PL_vtbl_amagic
|
||||
# define VTBL_amagicelem &PL_vtbl_amagicelem
|
||||
#endif
|
||||
|
||||
#if defined(MULTIPLICITY) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE)
|
||||
# undef aTHX
|
||||
# undef aTHX_
|
||||
# define aTHX PERL_GET_THX
|
||||
# define aTHX_ aTHX,
|
||||
#endif
|
||||
|
||||
#if defined(PERL_IMPLICIT_SYS) && !defined(PERL_CORE)
|
||||
# ifndef NO_XSLOCKS
|
||||
# undef closedir
|
||||
# undef opendir
|
||||
# undef stdin
|
||||
# undef stdout
|
||||
# undef stderr
|
||||
# undef feof
|
||||
# undef ferror
|
||||
# undef fgetpos
|
||||
# undef ioctl
|
||||
# undef getlogin
|
||||
# undef getc
|
||||
# undef ungetc
|
||||
# undef fileno
|
||||
|
||||
/* to avoid warnings: "xyz" redefined */
|
||||
#ifdef WIN32
|
||||
# undef popen
|
||||
# undef pclose
|
||||
#endif /* WIN32 */
|
||||
|
||||
# undef socketpair
|
||||
|
||||
# define mkdir PerlDir_mkdir
|
||||
# define chdir PerlDir_chdir
|
||||
# define rmdir PerlDir_rmdir
|
||||
# define closedir PerlDir_close
|
||||
# define opendir PerlDir_open
|
||||
# define readdir PerlDir_read
|
||||
# define rewinddir PerlDir_rewind
|
||||
# define seekdir PerlDir_seek
|
||||
# define telldir PerlDir_tell
|
||||
# define putenv PerlEnv_putenv
|
||||
# define getenv PerlEnv_getenv
|
||||
# define uname PerlEnv_uname
|
||||
# define stdin PerlSIO_stdin
|
||||
# define stdout PerlSIO_stdout
|
||||
# define stderr PerlSIO_stderr
|
||||
# define fopen PerlSIO_fopen
|
||||
# define fclose PerlSIO_fclose
|
||||
# define feof PerlSIO_feof
|
||||
# define ferror PerlSIO_ferror
|
||||
# define clearerr PerlSIO_clearerr
|
||||
# define getc PerlSIO_getc
|
||||
# define fgets PerlSIO_fgets
|
||||
# define fputc PerlSIO_fputc
|
||||
# define fputs PerlSIO_fputs
|
||||
# define fflush PerlSIO_fflush
|
||||
# define ungetc PerlSIO_ungetc
|
||||
# define fileno PerlSIO_fileno
|
||||
# define fdopen PerlSIO_fdopen
|
||||
# define freopen PerlSIO_freopen
|
||||
# define fread PerlSIO_fread
|
||||
# define fwrite PerlSIO_fwrite
|
||||
# define setbuf PerlSIO_setbuf
|
||||
# define setvbuf PerlSIO_setvbuf
|
||||
# define setlinebuf PerlSIO_setlinebuf
|
||||
# define stdoutf PerlSIO_stdoutf
|
||||
# define vfprintf PerlSIO_vprintf
|
||||
# define ftell PerlSIO_ftell
|
||||
# define fseek PerlSIO_fseek
|
||||
# define fgetpos PerlSIO_fgetpos
|
||||
# define fsetpos PerlSIO_fsetpos
|
||||
# define frewind PerlSIO_rewind
|
||||
# define tmpfile PerlSIO_tmpfile
|
||||
# define access PerlLIO_access
|
||||
# define chmod PerlLIO_chmod
|
||||
# define chsize PerlLIO_chsize
|
||||
# define close PerlLIO_close
|
||||
# define dup PerlLIO_dup
|
||||
# define dup2 PerlLIO_dup2
|
||||
# define flock PerlLIO_flock
|
||||
# define fstat PerlLIO_fstat
|
||||
# define ioctl PerlLIO_ioctl
|
||||
# define isatty PerlLIO_isatty
|
||||
# define link PerlLIO_link
|
||||
# define lseek PerlLIO_lseek
|
||||
# define lstat PerlLIO_lstat
|
||||
# define mktemp PerlLIO_mktemp
|
||||
# define open PerlLIO_open
|
||||
# define read PerlLIO_read
|
||||
# define rename PerlLIO_rename
|
||||
# define setmode PerlLIO_setmode
|
||||
# define stat(buf,sb) PerlLIO_stat(buf,sb)
|
||||
# define tmpnam PerlLIO_tmpnam
|
||||
# define umask PerlLIO_umask
|
||||
# define unlink PerlLIO_unlink
|
||||
# define utime PerlLIO_utime
|
||||
# define write PerlLIO_write
|
||||
# define malloc PerlMem_malloc
|
||||
# define calloc PerlMem_calloc
|
||||
# define realloc PerlMem_realloc
|
||||
# define free PerlMem_free
|
||||
# define abort PerlProc_abort
|
||||
# define exit PerlProc_exit
|
||||
# define _exit PerlProc__exit
|
||||
# define execl PerlProc_execl
|
||||
# define execv PerlProc_execv
|
||||
# define execvp PerlProc_execvp
|
||||
# define getuid PerlProc_getuid
|
||||
# define geteuid PerlProc_geteuid
|
||||
# define getgid PerlProc_getgid
|
||||
# define getegid PerlProc_getegid
|
||||
# define getlogin PerlProc_getlogin
|
||||
# define kill PerlProc_kill
|
||||
# define killpg PerlProc_killpg
|
||||
# define pause PerlProc_pause
|
||||
# define popen PerlProc_popen
|
||||
# define pclose PerlProc_pclose
|
||||
# define pipe PerlProc_pipe
|
||||
# define setuid PerlProc_setuid
|
||||
# define setgid PerlProc_setgid
|
||||
# define sleep PerlProc_sleep
|
||||
# define times PerlProc_times
|
||||
# define wait PerlProc_wait
|
||||
# define signal PerlProc_signal
|
||||
# define getpid PerlProc_getpid
|
||||
# define gettimeofday PerlProc_gettimeofday
|
||||
# define htonl PerlSock_htonl
|
||||
# define htons PerlSock_htons
|
||||
# define ntohl PerlSock_ntohl
|
||||
# define ntohs PerlSock_ntohs
|
||||
# define accept PerlSock_accept
|
||||
# define bind PerlSock_bind
|
||||
# define connect PerlSock_connect
|
||||
# define endhostent PerlSock_endhostent
|
||||
# define endnetent PerlSock_endnetent
|
||||
# define endprotoent PerlSock_endprotoent
|
||||
# define endservent PerlSock_endservent
|
||||
# define gethostbyaddr PerlSock_gethostbyaddr
|
||||
# define gethostbyname PerlSock_gethostbyname
|
||||
# define gethostent PerlSock_gethostent
|
||||
# define gethostname PerlSock_gethostname
|
||||
# define getnetbyaddr PerlSock_getnetbyaddr
|
||||
# define getnetbyname PerlSock_getnetbyname
|
||||
# define getnetent PerlSock_getnetent
|
||||
# define getpeername PerlSock_getpeername
|
||||
# define getprotobyname PerlSock_getprotobyname
|
||||
# define getprotobynumber PerlSock_getprotobynumber
|
||||
# define getprotoent PerlSock_getprotoent
|
||||
# define getservbyname PerlSock_getservbyname
|
||||
# define getservbyport PerlSock_getservbyport
|
||||
# define getservent PerlSock_getservent
|
||||
# define getsockname PerlSock_getsockname
|
||||
# define getsockopt PerlSock_getsockopt
|
||||
# define inet_addr PerlSock_inet_addr
|
||||
# define inet_ntoa PerlSock_inet_ntoa
|
||||
# define listen PerlSock_listen
|
||||
# define recv PerlSock_recv
|
||||
# define recvfrom PerlSock_recvfrom
|
||||
# define select PerlSock_select
|
||||
# define send PerlSock_send
|
||||
# define sendto PerlSock_sendto
|
||||
# define sethostent PerlSock_sethostent
|
||||
# define setnetent PerlSock_setnetent
|
||||
# define setprotoent PerlSock_setprotoent
|
||||
# define setservent PerlSock_setservent
|
||||
# define setsockopt PerlSock_setsockopt
|
||||
# define shutdown PerlSock_shutdown
|
||||
# define socket PerlSock_socket
|
||||
# define socketpair PerlSock_socketpair
|
||||
|
||||
# undef fd_set
|
||||
# undef FD_SET
|
||||
# undef FD_CLR
|
||||
# undef FD_ISSET
|
||||
# undef FD_ZERO
|
||||
# define fd_set Perl_fd_set
|
||||
# define FD_SET(n,p) PERL_FD_SET(n,p)
|
||||
# define FD_CLR(n,p) PERL_FD_CLR(n,p)
|
||||
# define FD_ISSET(n,p) PERL_FD_ISSET(n,p)
|
||||
# define FD_ZERO(p) PERL_FD_ZERO(p)
|
||||
|
||||
# endif /* NO_XSLOCKS */
|
||||
#endif /* PERL_IMPLICIT_SYS && !PERL_CORE */
|
||||
|
||||
#endif /* PERL_XSUB_H_ */ /* include guard */
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
|
|
@ -0,0 +1,225 @@
|
|||
/* av.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
* 2001, 2002, 2005, 2006, 2007, 2008, by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
struct xpvav {
|
||||
HV* xmg_stash; /* class package */
|
||||
union _xmgu xmg_u;
|
||||
SSize_t xav_fill; /* Index of last element present */
|
||||
SSize_t xav_max; /* max index for which array has space */
|
||||
SV** xav_alloc; /* pointer to beginning of C array of SVs */
|
||||
};
|
||||
|
||||
/* SV* xav_arylen; */
|
||||
|
||||
/* SVpav_REAL is set for all AVs whose xav_array contents are refcounted
|
||||
* and initialized such that any element can be retrieved as a SV*.
|
||||
* Such AVs may be referred to as "real" AVs. Examples include regular
|
||||
* perl arrays, tiedarrays (since v5.16), and padlist AVs.
|
||||
*
|
||||
* Some things do not set SVpav_REAL, to indicate that they are cheating
|
||||
* (for efficiency) by not refcounting the AV's contents or ensuring that
|
||||
* all elements are safe for arbitrary access. This type of AV may be
|
||||
* referred to as "fake" AVs. Examples include "@_" (unless tied), the
|
||||
* scratchpad list, and the backrefs list on an object or stash.
|
||||
*
|
||||
* SVpav_REIFY is only meaningful on such "fake" AVs (i.e. where SVpav_REAL
|
||||
* is not set). It indicates that the fake AV is capable of becoming
|
||||
* real if the array needs to be modified in some way. Functions that
|
||||
* modify fake AVs check both flags to call av_reify() as appropriate.
|
||||
*
|
||||
* av_reify() transforms a fake AV into a real one through two actions.
|
||||
* Allocated but unpopulated elements are initialized to make them safe for
|
||||
* arbitrary retrieval and the reference counts of populated elements are
|
||||
* incremented.
|
||||
*
|
||||
* Note that the Perl stack has neither flag set. (Thus,
|
||||
* items that go on the stack are never refcounted.)
|
||||
*
|
||||
* These internal details are subject to change any time. AV
|
||||
* manipulations external to perl should not care about any of this.
|
||||
* GSAR 1999-09-10
|
||||
*/
|
||||
|
||||
/*
|
||||
=for apidoc ADmnU||Nullav
|
||||
Null AV pointer.
|
||||
|
||||
(deprecated - use C<(AV *)NULL> instead)
|
||||
|
||||
=for apidoc Am|SSize_t|AvFILL|AV* av
|
||||
Same as C<L</av_top_index>> or C<L</av_tindex>>.
|
||||
|
||||
=for apidoc Cm|SSize_t|AvFILLp|AV* av
|
||||
|
||||
If the array C<av> is empty, this returns -1; otherwise it returns the maximum
|
||||
value of the indices of all the array elements which are currently defined in
|
||||
C<av>. It does not handle magic, hence the C<p> private indication in its name.
|
||||
|
||||
=for apidoc Am|SV**|AvARRAY|AV* av
|
||||
Returns a pointer to the AV's internal SV* array.
|
||||
|
||||
This is useful for doing pointer arithmetic on the array.
|
||||
If all you need is to look up an array element, then prefer C<av_fetch>.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#ifndef PERL_CORE
|
||||
# define Nullav Null(AV*)
|
||||
#endif
|
||||
|
||||
#define AvARRAY(av) ((av)->sv_u.svu_array)
|
||||
#define AvALLOC(av) ((XPVAV*) SvANY(av))->xav_alloc
|
||||
#define AvMAX(av) ((XPVAV*) SvANY(av))->xav_max
|
||||
#define AvFILLp(av) ((XPVAV*) SvANY(av))->xav_fill
|
||||
#define AvARYLEN(av) (*Perl_av_arylen_p(aTHX_ MUTABLE_AV(av)))
|
||||
|
||||
#define AvREAL(av) (SvFLAGS(av) & SVpav_REAL)
|
||||
#define AvREAL_on(av) (SvFLAGS(av) |= SVpav_REAL)
|
||||
#define AvREAL_off(av) (SvFLAGS(av) &= ~SVpav_REAL)
|
||||
#define AvREAL_only(av) (AvREIFY_off(av), SvFLAGS(av) |= SVpav_REAL)
|
||||
#define AvREIFY(av) (SvFLAGS(av) & SVpav_REIFY)
|
||||
#define AvREIFY_on(av) (SvFLAGS(av) |= SVpav_REIFY)
|
||||
#define AvREIFY_off(av) (SvFLAGS(av) &= ~SVpav_REIFY)
|
||||
#define AvREIFY_only(av) (AvREAL_off(av), SvFLAGS(av) |= SVpav_REIFY)
|
||||
|
||||
|
||||
#define AvREALISH(av) (SvFLAGS(av) & (SVpav_REAL|SVpav_REIFY))
|
||||
|
||||
#define AvFILL(av) ((SvRMAGICAL((const SV *) (av))) \
|
||||
? mg_size(MUTABLE_SV(av)) : AvFILLp(av))
|
||||
#define av_top_index(av) AvFILL(av)
|
||||
#define av_tindex(av) av_top_index(av)
|
||||
|
||||
/* Note that it doesn't make sense to do this:
|
||||
* SvGETMAGIC(av); IV x = av_tindex_nomg(av);
|
||||
*/
|
||||
# define av_top_index_skip_len_mg(av) \
|
||||
(__ASSERT_(SvTYPE(av) == SVt_PVAV) AvFILLp(av))
|
||||
# define av_tindex_skip_len_mg(av) av_top_index_skip_len_mg(av)
|
||||
|
||||
#define NEGATIVE_INDICES_VAR "NEGATIVE_INDICES"
|
||||
|
||||
/*
|
||||
|
||||
Note that there are both real and fake AVs; see the beginning of this file and
|
||||
'av.c'
|
||||
|
||||
=for apidoc newAV
|
||||
=for apidoc_item newAV_mortal
|
||||
=for apidoc_item newAV_alloc_x
|
||||
=for apidoc_item newAV_alloc_xz
|
||||
|
||||
These all create a new AV, setting the reference count to 1. If you also know
|
||||
the initial elements of the array with, see L</C<av_make>>.
|
||||
|
||||
As background, an array consists of three things:
|
||||
|
||||
=over
|
||||
|
||||
=item 1.
|
||||
|
||||
A data structure containing information about the array as a whole, such as its
|
||||
size and reference count.
|
||||
|
||||
=item 2.
|
||||
|
||||
A C language array of pointers to the individual elements. These are treated
|
||||
as pointers to SVs, so all must be castable to SV*.
|
||||
|
||||
=item 3.
|
||||
|
||||
The individual elements themselves. These could be, for instance, SVs and/or
|
||||
AVs and/or HVs, etc.
|
||||
|
||||
=back
|
||||
|
||||
An empty array need only have the first data structure, and all these functions
|
||||
create that. They differ in what else they do, as follows:
|
||||
|
||||
=over
|
||||
|
||||
=item C<newAV> form
|
||||
|
||||
=for comment
|
||||
'form' above and below is because otherwise have two =items with the same name,
|
||||
can't link to them.
|
||||
|
||||
This does nothing beyond creating the whole-array data structure.
|
||||
The Perl equivalent is approximately S<C<my @array;>>
|
||||
|
||||
This is useful when the minimum size of the array could be zero (perhaps there
|
||||
are likely code paths that will entirely skip using it).
|
||||
|
||||
If the array does get used, the pointers data structure will need to be
|
||||
allocated at that time. This will end up being done by L</av_extend>>,
|
||||
either explicitly:
|
||||
|
||||
av_extend(av, len);
|
||||
|
||||
or implicitly when the first element is stored:
|
||||
|
||||
(void)av_store(av, 0, sv);
|
||||
|
||||
Unused array elements are typically initialized by C<av_extend>.
|
||||
|
||||
=item C<newAV_mortal> form
|
||||
|
||||
This also creates the whole-array data structure, but also mortalises it.
|
||||
(That is to say, a reference to the AV is added to the C<temps> stack.)
|
||||
|
||||
=item C<newAV_alloc_x> form
|
||||
|
||||
This effectively does a C<newAV> followed by also allocating (uninitialized)
|
||||
space for the pointers array. This is used when you know ahead of time the
|
||||
likely minimum size of the array. It is more efficient to do this than doing a
|
||||
plain C<newAV> followed by an C<av_extend>.
|
||||
|
||||
Of course the array can be extended later should it become necessary.
|
||||
|
||||
C<size> must be at least 1.
|
||||
|
||||
=item C<newAV_alloc_xz> form
|
||||
|
||||
This is C<newAV_alloc_x>, but initializes each pointer in it to NULL. This
|
||||
gives added safety to guard against them being read before being set.
|
||||
|
||||
C<size> must be at least 1.
|
||||
|
||||
=back
|
||||
|
||||
The following examples all result in an array that can fit four elements
|
||||
(indexes 0 .. 3):
|
||||
|
||||
AV *av = newAV();
|
||||
av_extend(av, 3);
|
||||
|
||||
AV *av = newAV_alloc_x(4);
|
||||
|
||||
AV *av = newAV_alloc_xz(4);
|
||||
|
||||
In contrast, the following examples allocate an array that is only guaranteed
|
||||
to fit one element without extending:
|
||||
|
||||
AV *av = newAV_alloc_x(1);
|
||||
AV *av = newAV_alloc_xz(1);
|
||||
|
||||
=cut
|
||||
|
||||
*/
|
||||
|
||||
#define newAV() MUTABLE_AV(newSV_type(SVt_PVAV))
|
||||
#define newAV_mortal() MUTABLE_AV(newSV_type_mortal(SVt_PVAV))
|
||||
#define newAV_alloc_x(size) av_new_alloc(size,0)
|
||||
#define newAV_alloc_xz(size) av_new_alloc(size,1)
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
/* bitcount.h:
|
||||
* THIS FILE IS AUTO-GENERATED DURING THE BUILD by: ./generate_uudmap
|
||||
*
|
||||
* These values will populate PL_bitcount[]:
|
||||
* this is a count of bits for each U8 value 0..255
|
||||
*/
|
||||
{
|
||||
0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4,
|
||||
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
|
||||
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||
3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||
4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
|
||||
}
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
1445
Agent-Windows/OGP64/lib/perl5/5.40/x86_64-cygwin-threads/CORE/cop.h
Normal file
1445
Agent-Windows/OGP64/lib/perl5/5.40/x86_64-cygwin-threads/CORE/cop.h
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,373 @@
|
|||
/* cv.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
|
||||
* 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/* This structure must match the beginning of XPVFM in sv.h */
|
||||
|
||||
struct xpvcv {
|
||||
_XPV_HEAD;
|
||||
_XPVCV_COMMON;
|
||||
};
|
||||
|
||||
/*
|
||||
=for apidoc Ayh||CV
|
||||
|
||||
=for apidoc ADmnU||Nullcv
|
||||
Null CV pointer.
|
||||
|
||||
(deprecated - use C<(CV *)NULL> instead)
|
||||
|
||||
=for apidoc Am|HV*|CvSTASH|CV* cv
|
||||
Returns the stash of the CV. A stash is the symbol table hash, containing
|
||||
the package-scoped variables in the package where the subroutine was defined.
|
||||
For more information, see L<perlguts>.
|
||||
|
||||
This also has a special use with XS AUTOLOAD subs.
|
||||
See L<perlguts/Autoloading with XSUBs>.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#ifndef PERL_CORE
|
||||
# define Nullcv Null(CV*)
|
||||
#endif
|
||||
|
||||
#define CvSTASH(sv) (MUTABLE_HV(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash))
|
||||
#define CvSTASH_set(cv,st) Perl_cvstash_set(aTHX_ cv, st)
|
||||
#define CvSTART(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_start_u.xcv_start
|
||||
#define CvROOT(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_root_u.xcv_root
|
||||
#define CvXSUB(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_root_u.xcv_xsub
|
||||
#define CvXSUBANY(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_start_u.xcv_xsubany
|
||||
#define CvGV(sv) Perl_CvGV(aTHX_ (CV *)(sv))
|
||||
#define CvGV_set(cv,gv) Perl_cvgv_set(aTHX_ cv, gv)
|
||||
#define CvHASGV(cv) cBOOL(SvANY(cv)->xcv_gv_u.xcv_gv)
|
||||
#define CvFILE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_file
|
||||
#ifdef USE_ITHREADS
|
||||
# define CvFILE_set_from_cop(sv, cop) \
|
||||
(CvFILE(sv) = savepv(CopFILE(cop)), CvDYNFILE_on(sv))
|
||||
#else
|
||||
# define CvFILE_set_from_cop(sv, cop) \
|
||||
(CvFILE(sv) = CopFILE(cop), CvDYNFILE_off(sv))
|
||||
#endif
|
||||
#define CvFILEGV(sv) (gv_fetchfile(CvFILE(sv)))
|
||||
#define CvDEPTH(sv) (*Perl_CvDEPTH((const CV *)sv))
|
||||
/* For use when you only have a XPVCV*, not a real CV*.
|
||||
Must be assert protected as in Perl_CvDEPTH before use. */
|
||||
#define CvDEPTHunsafe(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_depth
|
||||
|
||||
/* these CvPADLIST/CvRESERVED asserts can be reverted one day, once stabilized */
|
||||
#define CvPADLIST(sv) (*(assert_(!CvISXSUB((CV*)(sv))) \
|
||||
&(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_padlist)))
|
||||
/* CvPADLIST_set is not public API, it can be removed one day, once stabilized */
|
||||
#ifdef DEBUGGING
|
||||
# define CvPADLIST_set(sv, padlist) Perl_set_padlist((CV*)sv, padlist)
|
||||
#else
|
||||
# define CvPADLIST_set(sv, padlist) (CvPADLIST(sv) = (padlist))
|
||||
#endif
|
||||
#define CvHSCXT(sv) *(assert_(CvISXSUB((CV*)(sv))) \
|
||||
&(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_hscxt))
|
||||
#ifdef DEBUGGING
|
||||
# if PTRSIZE == 8
|
||||
# define PoisonPADLIST(sv) \
|
||||
(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_padlist = (PADLIST *)UINT64_C(0xEFEFEFEFEFEFEFEF))
|
||||
# elif PTRSIZE == 4
|
||||
# define PoisonPADLIST(sv) \
|
||||
(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_padlist_u.xcv_padlist = (PADLIST *)0xEFEFEFEF)
|
||||
# else
|
||||
# error unknown pointer size
|
||||
# endif
|
||||
#else
|
||||
# define PoisonPADLIST(sv) NOOP
|
||||
#endif
|
||||
|
||||
#define CvOUTSIDE(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside
|
||||
#define CvOUTSIDE_SEQ(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_outside_seq
|
||||
#define CvFLAGS(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_flags
|
||||
|
||||
/* These two are sometimes called on non-CVs */
|
||||
#define CvPROTO(sv) \
|
||||
( \
|
||||
SvPOK(sv) \
|
||||
? SvTYPE(sv) == SVt_PVCV && CvAUTOLOAD(sv) \
|
||||
? SvEND(sv)+1 : SvPVX_const(sv) \
|
||||
: NULL \
|
||||
)
|
||||
#define CvPROTOLEN(sv) \
|
||||
( \
|
||||
SvPOK(sv) \
|
||||
? SvTYPE(sv) == SVt_PVCV && CvAUTOLOAD(sv) \
|
||||
? SvLEN(sv)-SvCUR(sv)-2 \
|
||||
: SvCUR(sv) \
|
||||
: 0 \
|
||||
)
|
||||
|
||||
/* CV has the `:method` attribute. This used to be called CVf_METHOD but is
|
||||
* renamed to avoid collision with CVf_IsMETHOD */
|
||||
#define CVf_NOWARN_AMBIGUOUS 0x0001
|
||||
|
||||
#define CVf_LVALUE 0x0002 /* CV return value can be used as lvalue */
|
||||
#define CVf_CONST 0x0004 /* inlinable sub */
|
||||
#define CVf_ISXSUB 0x0008 /* CV is an XSUB, not pure perl. */
|
||||
|
||||
#define CVf_WEAKOUTSIDE 0x0010 /* CvOUTSIDE isn't ref counted */
|
||||
#define CVf_CLONE 0x0020 /* anon CV uses external lexicals */
|
||||
#define CVf_CLONED 0x0040 /* a clone of one of those */
|
||||
#define CVf_ANON 0x0080 /* CV is not pointed to by a GV */
|
||||
#define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv,
|
||||
require, eval). */
|
||||
#define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV
|
||||
(esp. useful for special XSUBs) */
|
||||
#define CVf_CVGV_RC 0x0400 /* CvGV is reference counted */
|
||||
#if defined(PERL_CORE) || defined(PERL_EXT)
|
||||
# define CVf_SLABBED 0x0800 /* Holds refcount on op slab */
|
||||
#endif
|
||||
#define CVf_DYNFILE 0x1000 /* The filename is malloced */
|
||||
#define CVf_AUTOLOAD 0x2000 /* SvPVX contains AUTOLOADed sub name */
|
||||
/* 0x4000 previously CVf_HASEVAL */
|
||||
#define CVf_NAMED 0x8000 /* Has a name HEK */
|
||||
#define CVf_LEXICAL 0x10000 /* Omit package from name */
|
||||
#define CVf_ANONCONST 0x20000 /* :const - create anonconst op */
|
||||
#define CVf_SIGNATURE 0x40000 /* CV uses a signature */
|
||||
#define CVf_REFCOUNTED_ANYSV 0x80000 /* CvXSUBANY().any_sv is refcounted */
|
||||
#define CVf_IsMETHOD 0x100000 /* CV is a (real) method of a real class. Not
|
||||
to be confused with what used to be called
|
||||
CVf_METHOD; now CVf_NOWARN_AMBIGUOUS */
|
||||
#define CVf_XS_RCSTACK 0x200000 /* the XS function understands a
|
||||
reference-counted stack */
|
||||
|
||||
/* This symbol for optimised communication between toke.c and op.c: */
|
||||
#define CVf_BUILTIN_ATTRS (CVf_NOWARN_AMBIGUOUS|CVf_LVALUE|CVf_ANONCONST)
|
||||
|
||||
#define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE)
|
||||
#define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE)
|
||||
#define CvCLONE_off(cv) (CvFLAGS(cv) &= ~CVf_CLONE)
|
||||
|
||||
#define CvCLONED(cv) (CvFLAGS(cv) & CVf_CLONED)
|
||||
#define CvCLONED_on(cv) (CvFLAGS(cv) |= CVf_CLONED)
|
||||
#define CvCLONED_off(cv) (CvFLAGS(cv) &= ~CVf_CLONED)
|
||||
|
||||
#define CvANON(cv) (CvFLAGS(cv) & CVf_ANON)
|
||||
#define CvANON_on(cv) (CvFLAGS(cv) |= CVf_ANON)
|
||||
#define CvANON_off(cv) (CvFLAGS(cv) &= ~CVf_ANON)
|
||||
|
||||
/* CvEVAL or CvSPECIAL */
|
||||
#define CvUNIQUE(cv) (CvFLAGS(cv) & CVf_UNIQUE)
|
||||
#define CvUNIQUE_on(cv) (CvFLAGS(cv) |= CVf_UNIQUE)
|
||||
#define CvUNIQUE_off(cv) (CvFLAGS(cv) &= ~CVf_UNIQUE)
|
||||
|
||||
#define CvNODEBUG(cv) (CvFLAGS(cv) & CVf_NODEBUG)
|
||||
#define CvNODEBUG_on(cv) (CvFLAGS(cv) |= CVf_NODEBUG)
|
||||
#define CvNODEBUG_off(cv) (CvFLAGS(cv) &= ~CVf_NODEBUG)
|
||||
|
||||
#define CvNOWARN_AMBIGUOUS(cv) (CvFLAGS(cv) & CVf_NOWARN_AMBIGUOUS)
|
||||
#define CvNOWARN_AMBIGUOUS_on(cv) (CvFLAGS(cv) |= CVf_NOWARN_AMBIGUOUS)
|
||||
#define CvNOWARN_AMBIGUOUS_off(cv) (CvFLAGS(cv) &= ~CVf_NOWARN_AMBIGUOUS)
|
||||
|
||||
#define CvLVALUE(cv) (CvFLAGS(cv) & CVf_LVALUE)
|
||||
#define CvLVALUE_on(cv) (CvFLAGS(cv) |= CVf_LVALUE)
|
||||
#define CvLVALUE_off(cv) (CvFLAGS(cv) &= ~CVf_LVALUE)
|
||||
|
||||
/* eval or PL_main_cv */
|
||||
#define CvEVAL(cv) (CvUNIQUE(cv) && !SvFAKE(cv))
|
||||
#define CvEVAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_off(cv))
|
||||
#define CvEVAL_off(cv) CvUNIQUE_off(cv)
|
||||
|
||||
/* BEGIN|CHECK|INIT|UNITCHECK|END */
|
||||
#define CvSPECIAL(cv) (CvUNIQUE(cv) && SvFAKE(cv))
|
||||
#define CvSPECIAL_on(cv) (CvUNIQUE_on(cv),SvFAKE_on(cv))
|
||||
#define CvSPECIAL_off(cv) (CvUNIQUE_off(cv),SvFAKE_off(cv))
|
||||
|
||||
#define CvCONST(cv) (CvFLAGS(cv) & CVf_CONST)
|
||||
#define CvCONST_on(cv) (CvFLAGS(cv) |= CVf_CONST)
|
||||
#define CvCONST_off(cv) (CvFLAGS(cv) &= ~CVf_CONST)
|
||||
|
||||
#define CvWEAKOUTSIDE(cv) (CvFLAGS(cv) & CVf_WEAKOUTSIDE)
|
||||
#define CvWEAKOUTSIDE_on(cv) (CvFLAGS(cv) |= CVf_WEAKOUTSIDE)
|
||||
#define CvWEAKOUTSIDE_off(cv) (CvFLAGS(cv) &= ~CVf_WEAKOUTSIDE)
|
||||
|
||||
#define CvISXSUB(cv) (CvFLAGS(cv) & CVf_ISXSUB)
|
||||
#define CvISXSUB_on(cv) (CvFLAGS(cv) |= CVf_ISXSUB)
|
||||
#define CvISXSUB_off(cv) (CvFLAGS(cv) &= ~CVf_ISXSUB)
|
||||
|
||||
#define CvCVGV_RC(cv) (CvFLAGS(cv) & CVf_CVGV_RC)
|
||||
#define CvCVGV_RC_on(cv) (CvFLAGS(cv) |= CVf_CVGV_RC)
|
||||
#define CvCVGV_RC_off(cv) (CvFLAGS(cv) &= ~CVf_CVGV_RC)
|
||||
|
||||
#ifdef PERL_CORE
|
||||
# define CvSLABBED(cv) (CvFLAGS(cv) & CVf_SLABBED)
|
||||
# define CvSLABBED_on(cv) (CvFLAGS(cv) |= CVf_SLABBED)
|
||||
# define CvSLABBED_off(cv) (CvFLAGS(cv) &= ~CVf_SLABBED)
|
||||
#endif
|
||||
|
||||
#define CvDYNFILE(cv) (CvFLAGS(cv) & CVf_DYNFILE)
|
||||
#define CvDYNFILE_on(cv) (CvFLAGS(cv) |= CVf_DYNFILE)
|
||||
#define CvDYNFILE_off(cv) (CvFLAGS(cv) &= ~CVf_DYNFILE)
|
||||
|
||||
#define CvAUTOLOAD(cv) (CvFLAGS(cv) & CVf_AUTOLOAD)
|
||||
#define CvAUTOLOAD_on(cv) (CvFLAGS(cv) |= CVf_AUTOLOAD)
|
||||
#define CvAUTOLOAD_off(cv) (CvFLAGS(cv) &= ~CVf_AUTOLOAD)
|
||||
|
||||
#define CvNAMED(cv) (CvFLAGS(cv) & CVf_NAMED)
|
||||
#define CvNAMED_on(cv) (CvFLAGS(cv) |= CVf_NAMED)
|
||||
#define CvNAMED_off(cv) (CvFLAGS(cv) &= ~CVf_NAMED)
|
||||
|
||||
#define CvLEXICAL(cv) (CvFLAGS(cv) & CVf_LEXICAL)
|
||||
#define CvLEXICAL_on(cv) (CvFLAGS(cv) |= CVf_LEXICAL)
|
||||
#define CvLEXICAL_off(cv) (CvFLAGS(cv) &= ~CVf_LEXICAL)
|
||||
|
||||
#define CvANONCONST(cv) (CvFLAGS(cv) & CVf_ANONCONST)
|
||||
#define CvANONCONST_on(cv) (CvFLAGS(cv) |= CVf_ANONCONST)
|
||||
#define CvANONCONST_off(cv) (CvFLAGS(cv) &= ~CVf_ANONCONST)
|
||||
|
||||
#define CvSIGNATURE(cv) (CvFLAGS(cv) & CVf_SIGNATURE)
|
||||
#define CvSIGNATURE_on(cv) (CvFLAGS(cv) |= CVf_SIGNATURE)
|
||||
#define CvSIGNATURE_off(cv) (CvFLAGS(cv) &= ~CVf_SIGNATURE)
|
||||
|
||||
/*
|
||||
|
||||
=for apidoc m|bool|CvREFCOUNTED_ANYSV|CV *cv
|
||||
|
||||
If true, indicates that the C<CvXSUBANY(cv).any_sv> member contains an SV
|
||||
pointer whose reference count should be decremented when the CV itself is
|
||||
freed. In addition, C<cv_clone()> will increment the reference count, and
|
||||
C<sv_dup()> will duplicate the entire pointed-to SV if this flag is set.
|
||||
|
||||
Any CV that wraps an XSUB has an C<ANY> union that the XSUB function is free
|
||||
to use for its own purposes. It may be the case that the code wishes to store
|
||||
an SV in the C<any_sv> member of this union. By setting this flag, this SV
|
||||
reference will be properly reclaimed or duplicated when the CV itself is.
|
||||
|
||||
=for apidoc m|void|CvREFCOUNTED_ANYSV_on|CV *cv
|
||||
|
||||
Helper macro to turn on the C<CvREFCOUNTED_ANYSV> flag.
|
||||
|
||||
=for apidoc m|void|CvREFCOUNTED_ANYSV_off|CV *cv
|
||||
|
||||
Helper macro to turn off the C<CvREFCOUNTED_ANYSV> flag.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define CvREFCOUNTED_ANYSV(cv) (CvFLAGS(cv) & CVf_REFCOUNTED_ANYSV)
|
||||
#define CvREFCOUNTED_ANYSV_on(cv) (CvFLAGS(cv) |= CVf_REFCOUNTED_ANYSV)
|
||||
#define CvREFCOUNTED_ANYSV_off(cv) (CvFLAGS(cv) &= ~CVf_REFCOUNTED_ANYSV)
|
||||
|
||||
#define CvIsMETHOD(cv) (CvFLAGS(cv) & CVf_IsMETHOD)
|
||||
#define CvIsMETHOD_on(cv) (CvFLAGS(cv) |= CVf_IsMETHOD)
|
||||
#define CvIsMETHOD_off(cv) (CvFLAGS(cv) &= ~CVf_IsMETHOD)
|
||||
|
||||
#define CvXS_RCSTACK(cv) (CvFLAGS(cv) & CVf_XS_RCSTACK)
|
||||
#define CvXS_RCSTACK_on(cv) (CvFLAGS(cv) |= CVf_XS_RCSTACK)
|
||||
#define CvXS_RCSTACK_off(cv) (CvFLAGS(cv) &= ~CVf_XS_RCSTACK)
|
||||
|
||||
/* Back-compat */
|
||||
#ifndef PERL_CORE
|
||||
# define CVf_METHOD CVf_NOWARN_AMBIGUOUS
|
||||
# define CvMETHOD(cv) CvNOWARN_AMBIGUOUS(cv)
|
||||
# define CvMETHOD_on(cv) CvNOWARN_AMBIGUOUS_on(cv)
|
||||
# define CvMETHOD_off(cv) CvNOWARN_AMBIGUOUS_off(cv)
|
||||
#endif
|
||||
|
||||
/* Flags for newXS_flags */
|
||||
#define XS_DYNAMIC_FILENAME 0x01 /* The filename isn't static */
|
||||
|
||||
PERL_STATIC_INLINE HEK *
|
||||
CvNAME_HEK(CV *sv)
|
||||
{
|
||||
return CvNAMED(sv)
|
||||
? ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_hek
|
||||
: 0;
|
||||
}
|
||||
|
||||
/* helper for the common pattern:
|
||||
CvNAMED(sv) ? CvNAME_HEK((CV *)sv) : GvNAME_HEK(CvGV(sv))
|
||||
*/
|
||||
#define CvGvNAME_HEK(sv) ( \
|
||||
CvNAMED((CV*)sv) ? \
|
||||
((XPVCV*)MUTABLE_PTR(SvANY((SV*)sv)))->xcv_gv_u.xcv_hek\
|
||||
: GvNAME_HEK(CvGV( (SV*) sv)) \
|
||||
)
|
||||
|
||||
/* This lowers the reference count of the previous value, but does *not*
|
||||
increment the reference count of the new value. */
|
||||
#define CvNAME_HEK_set(cv, hek) ( \
|
||||
CvNAME_HEK((CV *)(cv)) \
|
||||
? unshare_hek(SvANY((CV *)(cv))->xcv_gv_u.xcv_hek) \
|
||||
: (void)0, \
|
||||
((XPVCV*)MUTABLE_PTR(SvANY(cv)))->xcv_gv_u.xcv_hek = (hek), \
|
||||
CvNAMED_on(cv) \
|
||||
)
|
||||
|
||||
/*
|
||||
|
||||
=for apidoc m|bool|CvWEAKOUTSIDE|CV *cv
|
||||
|
||||
Each CV has a pointer, C<CvOUTSIDE()>, to its lexically enclosing
|
||||
CV (if any). Because pointers to anonymous sub prototypes are
|
||||
stored in C<&> pad slots, it is a possible to get a circular reference,
|
||||
with the parent pointing to the child and vice-versa. To avoid the
|
||||
ensuing memory leak, we do not increment the reference count of the CV
|
||||
pointed to by C<CvOUTSIDE> in the I<one specific instance> that the parent
|
||||
has a C<&> pad slot pointing back to us. In this case, we set the
|
||||
C<CvWEAKOUTSIDE> flag in the child. This allows us to determine under what
|
||||
circumstances we should decrement the refcount of the parent when freeing
|
||||
the child.
|
||||
|
||||
There is a further complication with non-closure anonymous subs (i.e. those
|
||||
that do not refer to any lexicals outside that sub). In this case, the
|
||||
anonymous prototype is shared rather than being cloned. This has the
|
||||
consequence that the parent may be freed while there are still active
|
||||
children, I<e.g.>,
|
||||
|
||||
BEGIN { $a = sub { eval '$x' } }
|
||||
|
||||
In this case, the BEGIN is freed immediately after execution since there
|
||||
are no active references to it: the anon sub prototype has
|
||||
C<CvWEAKOUTSIDE> set since it's not a closure, and $a points to the same
|
||||
CV, so it doesn't contribute to BEGIN's refcount either. When $a is
|
||||
executed, the C<eval '$x'> causes the chain of C<CvOUTSIDE>s to be followed,
|
||||
and the freed BEGIN is accessed.
|
||||
|
||||
To avoid this, whenever a CV and its associated pad is freed, any
|
||||
C<&> entries in the pad are explicitly removed from the pad, and if the
|
||||
refcount of the pointed-to anon sub is still positive, then that
|
||||
child's C<CvOUTSIDE> is set to point to its grandparent. This will only
|
||||
occur in the single specific case of a non-closure anon prototype
|
||||
having one or more active references (such as C<$a> above).
|
||||
|
||||
One other thing to consider is that a CV may be merely undefined
|
||||
rather than freed, eg C<undef &foo>. In this case, its refcount may
|
||||
not have reached zero, but we still delete its pad and its C<CvROOT> etc.
|
||||
Since various children may still have their C<CvOUTSIDE> pointing at this
|
||||
undefined CV, we keep its own C<CvOUTSIDE> for the time being, so that
|
||||
the chain of lexical scopes is unbroken. For example, the following
|
||||
should print 123:
|
||||
|
||||
my $x = 123;
|
||||
sub tmp { sub { eval '$x' } }
|
||||
my $a = tmp();
|
||||
undef &tmp;
|
||||
print $a->();
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
typedef OP *(*Perl_call_checker)(pTHX_ OP *, GV *, SV *);
|
||||
|
||||
#define CALL_CHECKER_REQUIRE_GV MGf_REQUIRE_GV
|
||||
|
||||
#define CV_NAME_NOTQUAL 1
|
||||
|
||||
#ifdef PERL_CORE
|
||||
# define CV_UNDEF_KEEP_NAME 1
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
Binary file not shown.
|
|
@ -0,0 +1,119 @@
|
|||
/* dosish.h
|
||||
*
|
||||
* Copyright (C) 1993, 1994, 1996, 1997, 1998, 1999,
|
||||
* 2000, 2001, 2002, 2007, by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
#define ABORT() abort();
|
||||
|
||||
#ifndef SH_PATH
|
||||
#define SH_PATH "/bin/sh"
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
# define PERL_SYS_INIT_BODY(c,v) \
|
||||
MALLOC_CHECK_TAINT2(*c,*v) Perl_win32_init(c,v); PERLIO_INIT
|
||||
# define PERL_SYS_TERM_BODY() Perl_win32_term()
|
||||
# define BIT_BUCKET "nul"
|
||||
#else
|
||||
# define PERL_SYS_INIT_BODY(c,v) \
|
||||
MALLOC_CHECK_TAINT2(*c,*v); PERLIO_INIT
|
||||
# define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */
|
||||
#endif
|
||||
|
||||
/* Generally add things last-in first-terminated. IO and memory terminations
|
||||
* need to be generally last
|
||||
*
|
||||
* BEWARE that using PerlIO in these will be using freed memory, so may appear
|
||||
* to work, but must NOT be retained in production code. */
|
||||
#ifndef PERL_SYS_TERM_BODY
|
||||
# define PERL_SYS_TERM_BODY() \
|
||||
ENV_TERM; USER_PROP_MUTEX_TERM; LOCALE_TERM; \
|
||||
HINTS_REFCNT_TERM; KEYWORD_PLUGIN_MUTEX_TERM; \
|
||||
OP_CHECK_MUTEX_TERM; OP_REFCNT_TERM; \
|
||||
PERLIO_TERM; MALLOC_TERM;
|
||||
#endif
|
||||
#define dXSUB_SYS dNOOP
|
||||
|
||||
/* USEMYBINMODE
|
||||
* This symbol, if defined, indicates that the program should
|
||||
* use the routine my_binmode(FILE *fp, char iotype, int mode) to insure
|
||||
* that a file is in "binary" mode -- that is, that no translation
|
||||
* of bytes occurs on read or write operations.
|
||||
*/
|
||||
#undef USEMYBINMODE
|
||||
|
||||
/* Stat_t:
|
||||
* This symbol holds the type used to declare buffers for information
|
||||
* returned by stat(). It's usually just struct stat. It may be necessary
|
||||
* to include <sys/stat.h> and <sys/types.h> to get any typedef'ed
|
||||
* information.
|
||||
*/
|
||||
#if defined(WIN32)
|
||||
# define Stat_t struct w32_stat
|
||||
#else
|
||||
# define Stat_t struct _stati64
|
||||
#endif
|
||||
|
||||
/* USE_STAT_RDEV:
|
||||
* This symbol is defined if this system has a stat structure declaring
|
||||
* st_rdev
|
||||
*/
|
||||
#define USE_STAT_RDEV /**/
|
||||
|
||||
/* ACME_MESS:
|
||||
* This symbol, if defined, indicates that error messages should be
|
||||
* should be generated in a format that allows the use of the Acme
|
||||
* GUI/editor's autofind feature.
|
||||
*/
|
||||
#undef ACME_MESS /**/
|
||||
|
||||
/* ALTERNATE_SHEBANG:
|
||||
* This symbol, if defined, contains a "magic" string which may be used
|
||||
* as the first line of a Perl program designed to be executed directly
|
||||
* by name, instead of the standard Unix #!. If ALTERNATE_SHEBANG
|
||||
* begins with a character other then #, then Perl will only treat
|
||||
* it as a command line if it finds the string "perl" in the first
|
||||
* word; otherwise it's treated as the first line of code in the script.
|
||||
* (IOW, Perl won't hand off to another interpreter via an alternate
|
||||
* shebang sequence that might be legal Perl code.)
|
||||
*/
|
||||
/* #define ALTERNATE_SHEBANG "#!" / **/
|
||||
|
||||
#include <signal.h>
|
||||
|
||||
/*
|
||||
* fwrite1() should be a routine with the same calling sequence as fwrite(),
|
||||
* but which outputs all of the bytes requested as a single stream (unlike
|
||||
* fwrite() itself, which on some systems outputs several distinct records
|
||||
* if the number_of_items parameter is >1).
|
||||
*/
|
||||
#define fwrite1 fwrite
|
||||
|
||||
#define Fstat(fd,bufptr) fstat((fd),(bufptr))
|
||||
#define Fflush(fp) fflush(fp)
|
||||
#define Mkdir(path,mode) mkdir((path),(mode))
|
||||
|
||||
#ifndef WIN32
|
||||
# define Stat(fname,bufptr) stat((fname),(bufptr))
|
||||
#else
|
||||
# define HAS_IOCTL
|
||||
# define HAS_UTIME
|
||||
# define HAS_KILL
|
||||
# define HAS_WAIT
|
||||
# define HAS_CHOWN
|
||||
#endif /* WIN32 */
|
||||
|
||||
/* Don't go reading from /dev/urandom */
|
||||
#define PERL_NO_DEV_RANDOM
|
||||
|
||||
#ifdef WIN32
|
||||
# define NO_ENVIRON_ARRAY
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
|
|
@ -0,0 +1,798 @@
|
|||
/* -*- mode: C; buffer-read-only: t -*-
|
||||
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
|
||||
* This file is built by regen/ebcdic.pl.
|
||||
* Any changes made here will be lost!
|
||||
*/
|
||||
|
||||
|
||||
#ifndef PERL_EBCDIC_TABLES_H_ /* Guard against nested #includes */
|
||||
#define PERL_EBCDIC_TABLES_H_ 1
|
||||
|
||||
/* This file contains definitions for various tables used in EBCDIC handling.
|
||||
* More info is in utfebcdic.h
|
||||
*
|
||||
* Some of the tables are adapted from
|
||||
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
|
||||
* which requires this copyright notice:
|
||||
|
||||
Copyright (c) 2008-2009 Bjoern Hoehrmann <bjoern@hoehrmann.de>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is furnished to do
|
||||
so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
*/
|
||||
|
||||
#if 'A' == 193 /* EBCDIC 1047 */ \
|
||||
&& '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
|
||||
&& '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
|
||||
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
|
||||
|
||||
/* Index is ASCII platform code point; value is EBCDIC 1047 equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_a2e[256];
|
||||
# else
|
||||
EXTCONST U8 PL_a2e[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x15,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
|
||||
/*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
|
||||
/*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
|
||||
/*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAD,0xE0,0xBD,0x5F,0x6D,
|
||||
/*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
|
||||
/*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
|
||||
/*8_*/0x20,0x21,0x22,0x23,0x24,0x25,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
|
||||
/*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
|
||||
/*A_*/0x41,0xAA,0x4A,0xB1,0x9F,0xB2,0x6A,0xB5,0xBB,0xB4,0x9A,0x8A,0xB0,0xCA,0xAF,0xBC,
|
||||
/*B_*/0x90,0x8F,0xEA,0xFA,0xBE,0xA0,0xB6,0xB3,0x9D,0xDA,0x9B,0x8B,0xB7,0xB8,0xB9,0xAB,
|
||||
/*C_*/0x64,0x65,0x62,0x66,0x63,0x67,0x9E,0x68,0x74,0x71,0x72,0x73,0x78,0x75,0x76,0x77,
|
||||
/*D_*/0xAC,0x69,0xED,0xEE,0xEB,0xEF,0xEC,0xBF,0x80,0xFD,0xFE,0xFB,0xFC,0xBA,0xAE,0x59,
|
||||
/*E_*/0x44,0x45,0x42,0x46,0x43,0x47,0x9C,0x48,0x54,0x51,0x52,0x53,0x58,0x55,0x56,0x57,
|
||||
/*F_*/0x8C,0x49,0xCD,0xCE,0xCB,0xCF,0xCC,0xE1,0x70,0xDD,0xDE,0xDB,0xDC,0x8D,0x8E,0xDF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 1047 code point; value is ASCII platform equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_e2a[256];
|
||||
# else
|
||||
EXTCONST U8 PL_e2a[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x9D,0x0A,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x80,0x81,0x82,0x83,0x84,0x85,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
|
||||
/*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
|
||||
/*4_*/0x20,0xA0,0xE2,0xE4,0xE0,0xE1,0xE3,0xE5,0xE7,0xF1,0xA2,0x2E,0x3C,0x28,0x2B,0x7C,
|
||||
/*5_*/0x26,0xE9,0xEA,0xEB,0xE8,0xED,0xEE,0xEF,0xEC,0xDF,0x21,0x24,0x2A,0x29,0x3B,0x5E,
|
||||
/*6_*/0x2D,0x2F,0xC2,0xC4,0xC0,0xC1,0xC3,0xC5,0xC7,0xD1,0xA6,0x2C,0x25,0x5F,0x3E,0x3F,
|
||||
/*7_*/0xF8,0xC9,0xCA,0xCB,0xC8,0xCD,0xCE,0xCF,0xCC,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
|
||||
/*8_*/0xD8,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xAB,0xBB,0xF0,0xFD,0xFE,0xB1,
|
||||
/*9_*/0xB0,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xAA,0xBA,0xE6,0xB8,0xC6,0xA4,
|
||||
/*A_*/0xB5,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xA1,0xBF,0xD0,0x5B,0xDE,0xAE,
|
||||
/*B_*/0xAC,0xA3,0xA5,0xB7,0xA9,0xA7,0xB6,0xBC,0xBD,0xBE,0xDD,0xA8,0xAF,0x5D,0xB4,0xD7,
|
||||
/*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xAD,0xF4,0xF6,0xF2,0xF3,0xF5,
|
||||
/*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xB9,0xFB,0xFC,0xF9,0xFA,0xFF,
|
||||
/*E_*/0x5C,0xF7,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xB2,0xD4,0xD6,0xD2,0xD3,0xD5,
|
||||
/*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xB3,0xDB,0xDC,0xD9,0xDA,0x9F
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* (Confusingly named) Index is EBCDIC 1047 I8 byte; value is
|
||||
* EBCDIC 1047 UTF-EBCDIC equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_utf2e[256];
|
||||
# else
|
||||
EXTCONST U8 PL_utf2e[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x15,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
|
||||
/*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
|
||||
/*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
|
||||
/*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAD,0xE0,0xBD,0x5F,0x6D,
|
||||
/*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
|
||||
/*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
|
||||
/*8_*/0x20,0x21,0x22,0x23,0x24,0x25,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
|
||||
/*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
|
||||
/*A_*/0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x51,0x52,0x53,0x54,0x55,0x56,
|
||||
/*B_*/0x57,0x58,0x59,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x70,0x71,0x72,0x73,
|
||||
/*C_*/0x74,0x75,0x76,0x77,0x78,0x80,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x9A,0x9B,0x9C,
|
||||
/*D_*/0x9D,0x9E,0x9F,0xA0,0xAA,0xAB,0xAC,0xAE,0xAF,0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,
|
||||
/*E_*/0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBE,0xBF,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xDA,0xDB,
|
||||
/*F_*/0xDC,0xDD,0xDE,0xDF,0xE1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xFA,0xFB,0xFC,0xFD,0xFE
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* (Confusingly named) Index is EBCDIC 1047 UTF-EBCDIC byte; value is
|
||||
* EBCDIC 1047 I8 equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_e2utf[256];
|
||||
# else
|
||||
EXTCONST U8 PL_e2utf[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x9D,0x0A,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x80,0x81,0x82,0x83,0x84,0x85,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
|
||||
/*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
|
||||
/*4_*/0x20,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0x2E,0x3C,0x28,0x2B,0x7C,
|
||||
/*5_*/0x26,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0x21,0x24,0x2A,0x29,0x3B,0x5E,
|
||||
/*6_*/0x2D,0x2F,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0x2C,0x25,0x5F,0x3E,0x3F,
|
||||
/*7_*/0xBC,0xBD,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
|
||||
/*8_*/0xC5,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,
|
||||
/*9_*/0xCC,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xCD,0xCE,0xCF,0xD0,0xD1,0xD2,
|
||||
/*A_*/0xD3,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xD4,0xD5,0xD6,0x5B,0xD7,0xD8,
|
||||
/*B_*/0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0x5D,0xE6,0xE7,
|
||||
/*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,
|
||||
/*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,
|
||||
/*E_*/0x5C,0xF4,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,
|
||||
/*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xFB,0xFC,0xFD,0xFE,0xFF,0x9F
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 1047 UTF-EBCDIC byte; value is UTF8SKIP for start bytes
|
||||
* (including for overlongs); 1 for continuation. Adapted from the shadow
|
||||
* flags table in tr16. The entries marked 9 in tr16 are continuation bytes
|
||||
* and are marked as length 1 here so that we can recover. */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_utf8skip[256];
|
||||
# else
|
||||
EXTCONST U8 PL_utf8skip[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*1_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*2_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*3_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*4_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*5_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*6_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*7_*/ 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*8_*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
|
||||
/*9_*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
|
||||
/*A_*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 2, 2,
|
||||
/*B_*/ 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 1, 3, 3,
|
||||
/*C_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
|
||||
/*D_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 4,
|
||||
/*E_*/ 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 5, 5, 5,
|
||||
/*F_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 6, 7, 14, 1
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 1047 code point; value is its lowercase equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_latin1_lc[256];
|
||||
# else
|
||||
EXTCONST U8 PL_latin1_lc[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x70,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x70,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
|
||||
/*9_*/0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9C,0x9F,
|
||||
/*A_*/0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0x8C,0xAD,0x8E,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0x8D,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 1047 code point; value is its uppercase equivalent.
|
||||
* The 'mod' in the name means that codepoints whose uppercase is above 255 or
|
||||
* longer than 1 character map to LATIN SMALL LETTER Y WITH DIARESIS */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_mod_latin1_uc[256];
|
||||
# else
|
||||
EXTCONST U8 PL_mod_latin1_uc[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0xDF,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x80,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xBA,0xAE,0x8F,
|
||||
/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9E,0x9F,
|
||||
/*A_*/0xDF,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*D_*/0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 1047 code point; For A-Z, value is a-z; for a-z, value
|
||||
* is A-Z; all other code points map to themselves */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_fold[256];
|
||||
# else
|
||||
EXTCONST U8 PL_fold[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
|
||||
/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
|
||||
/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 1047 code point; value is its other fold-pair equivalent
|
||||
* (A => a; a => A, etc) in the 0-255 range. If no such equivalent, value is
|
||||
* the code point itself */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_fold_latin1[256];
|
||||
# else
|
||||
EXTCONST U8 PL_fold_latin1[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x80,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x70,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xBA,0xAE,0x8F,
|
||||
/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9C,0x9F,
|
||||
/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0x8C,0xAD,0x8E,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0x8D,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
|
||||
/* The table below is adapted from
|
||||
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
|
||||
* See copyright notice at the beginning of this file.
|
||||
*/
|
||||
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_extended_utf8_dfa_tab[416];
|
||||
# else
|
||||
EXTCONST U8 PL_extended_utf8_dfa_tab[416] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*2_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*3_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*4_ */ 0, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10, 0, 0, 0, 0, 0,
|
||||
/*5_ */ 0, 10, 10, 10, 10, 10, 10, 11, 11, 11, 0, 0, 0, 0, 0, 0,
|
||||
/*6_ */ 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0,
|
||||
/*7_ */ 11, 11, 11, 11, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*8_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*9_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*A_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2,
|
||||
/*B_ */ 2, 2, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 3, 0, 3, 3,
|
||||
/*C_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
|
||||
/*D_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 12, 4, 4, 4,
|
||||
/*E_ */ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 13, 5, 5,
|
||||
/*F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 14, 6, 15, 1, 0,
|
||||
/*N0= 0*/ 0, 1, 16, 32, 48, 64, 80, 1, 1, 1, 1, 1, 96,112,128,144,
|
||||
/*N1= 16*/ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
|
||||
/*N2= 32*/ 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16, 1, 1, 1, 1,
|
||||
/*N3= 48*/ 1, 1, 1, 1, 1, 1, 1, 32, 32, 32, 32, 32, 1, 1, 1, 1,
|
||||
/*N4= 64*/ 1, 1, 1, 1, 1, 1, 1, 48, 48, 48, 48, 48, 1, 1, 1, 1,
|
||||
/*N5= 80*/ 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 1, 1, 1, 1,
|
||||
/*N6= 96*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 1, 1, 1, 1,
|
||||
/*N7=112*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 48, 1, 1, 1, 1,
|
||||
/*N8=128*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 1, 1, 1, 1,
|
||||
/*N9=144*/ 1, 1, 1, 1, 1, 1, 1, 1, 80, 80, 80, 80, 1, 1, 1, 1
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/
|
||||
};
|
||||
# endif
|
||||
|
||||
|
||||
/* The table below is adapted from
|
||||
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
|
||||
* See copyright notice at the beginning of this file.
|
||||
*/
|
||||
|
||||
# ifndef DOINIT
|
||||
EXTCONST U16 PL_strict_utf8_dfa_tab[624];
|
||||
# else
|
||||
EXTCONST U16 PL_strict_utf8_dfa_tab[624] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*2_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*3_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*4_ */ 0, 10, 11, 12, 12, 12, 12, 12, 12, 13, 14, 0, 0, 0, 0, 0,
|
||||
/*5_ */ 0, 13, 14, 13, 14, 15, 16, 17, 18, 17, 0, 0, 0, 0, 0, 0,
|
||||
/*6_ */ 0, 0, 18, 17, 18, 19, 20, 17, 18, 17, 18, 0, 0, 0, 0, 0,
|
||||
/*7_ */ 17, 18, 21, 22, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*8_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*9_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*A_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2,
|
||||
/*B_ */ 2, 2, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 3, 0, 3, 3,
|
||||
/*C_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
|
||||
/*D_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 8, 6, 4, 5,
|
||||
/*E_ */ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 5, 9, 7, 1,
|
||||
/*F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
|
||||
/*N0 = 0*/ 0, 1, 23, 46, 69,138,115,184, 92,161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*N1 = 23*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*N2 = 46*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
|
||||
/*N3 = 69*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
|
||||
/*N4 = 92*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46,
|
||||
/*N5 =115*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1, 1, 46,207,
|
||||
/*N6 =138*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,276,
|
||||
/*N7 =161*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69,322, 69,322, 69,322, 69,322, 69,322,
|
||||
/*N8 =184*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69,322, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*N9 =207*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23,230,253, 23, 23, 23, 23, 23,299,
|
||||
/*N10=230*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
|
||||
/*N11=253*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
||||
/*N12=276*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299,
|
||||
/*N13=299*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||||
/*N14=322*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,345,
|
||||
/*N15=345*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22*/
|
||||
};
|
||||
# endif
|
||||
|
||||
|
||||
/* The table below is adapted from
|
||||
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
|
||||
* See copyright notice at the beginning of this file.
|
||||
*/
|
||||
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_c9_utf8_dfa_tab[368];
|
||||
# else
|
||||
EXTCONST U8 PL_c9_utf8_dfa_tab[368] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*2_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*3_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*4_ */ 0, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 0, 0, 0, 0, 0,
|
||||
/*5_ */ 0, 11, 11, 11, 11, 11, 11, 12, 12, 12, 0, 0, 0, 0, 0, 0,
|
||||
/*6_ */ 0, 0, 12, 12, 12, 13, 13, 12, 12, 12, 12, 0, 0, 0, 0, 0,
|
||||
/*7_ */ 12, 12, 12, 12, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*8_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*9_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*A_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 2, 2,
|
||||
/*B_ */ 2, 2, 2, 2, 2, 2, 2, 1, 3, 3, 3, 3, 3, 0, 3, 3,
|
||||
/*C_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
|
||||
/*D_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 5, 4, 4,
|
||||
/*E_ */ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 8, 7, 1,
|
||||
/*F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
|
||||
/*N0= 0*/ 0, 1, 14, 28, 42, 70, 56, 98, 84, 1, 1, 1, 1, 1,
|
||||
/*N1=14*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
|
||||
/*N2=28*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 14, 14, 14, 14,
|
||||
/*N3=42*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28, 28, 28, 28,
|
||||
/*N4=56*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28,
|
||||
/*N5=70*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28, 28, 28, 1,
|
||||
/*N6=84*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 42, 42,
|
||||
/*N7=98*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 1, 1, 1, 1
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13*/
|
||||
};
|
||||
# endif
|
||||
|
||||
#endif /* EBCDIC 1047 */
|
||||
|
||||
#if 'A' == 193 /* EBCDIC 037 */ \
|
||||
&& '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
|
||||
&& '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
|
||||
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
|
||||
|
||||
/* Index is ASCII platform code point; value is EBCDIC 037 equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_a2e[256];
|
||||
# else
|
||||
EXTCONST U8 PL_a2e[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x25,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
|
||||
/*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
|
||||
/*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
|
||||
/*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xBA,0xE0,0xBB,0xB0,0x6D,
|
||||
/*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
|
||||
/*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
|
||||
/*8_*/0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
|
||||
/*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
|
||||
/*A_*/0x41,0xAA,0x4A,0xB1,0x9F,0xB2,0x6A,0xB5,0xBD,0xB4,0x9A,0x8A,0x5F,0xCA,0xAF,0xBC,
|
||||
/*B_*/0x90,0x8F,0xEA,0xFA,0xBE,0xA0,0xB6,0xB3,0x9D,0xDA,0x9B,0x8B,0xB7,0xB8,0xB9,0xAB,
|
||||
/*C_*/0x64,0x65,0x62,0x66,0x63,0x67,0x9E,0x68,0x74,0x71,0x72,0x73,0x78,0x75,0x76,0x77,
|
||||
/*D_*/0xAC,0x69,0xED,0xEE,0xEB,0xEF,0xEC,0xBF,0x80,0xFD,0xFE,0xFB,0xFC,0xAD,0xAE,0x59,
|
||||
/*E_*/0x44,0x45,0x42,0x46,0x43,0x47,0x9C,0x48,0x54,0x51,0x52,0x53,0x58,0x55,0x56,0x57,
|
||||
/*F_*/0x8C,0x49,0xCD,0xCE,0xCB,0xCF,0xCC,0xE1,0x70,0xDD,0xDE,0xDB,0xDC,0x8D,0x8E,0xDF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 037 code point; value is ASCII platform equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_e2a[256];
|
||||
# else
|
||||
EXTCONST U8 PL_e2a[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x9D,0x85,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x80,0x81,0x82,0x83,0x84,0x0A,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
|
||||
/*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
|
||||
/*4_*/0x20,0xA0,0xE2,0xE4,0xE0,0xE1,0xE3,0xE5,0xE7,0xF1,0xA2,0x2E,0x3C,0x28,0x2B,0x7C,
|
||||
/*5_*/0x26,0xE9,0xEA,0xEB,0xE8,0xED,0xEE,0xEF,0xEC,0xDF,0x21,0x24,0x2A,0x29,0x3B,0xAC,
|
||||
/*6_*/0x2D,0x2F,0xC2,0xC4,0xC0,0xC1,0xC3,0xC5,0xC7,0xD1,0xA6,0x2C,0x25,0x5F,0x3E,0x3F,
|
||||
/*7_*/0xF8,0xC9,0xCA,0xCB,0xC8,0xCD,0xCE,0xCF,0xCC,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
|
||||
/*8_*/0xD8,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xAB,0xBB,0xF0,0xFD,0xFE,0xB1,
|
||||
/*9_*/0xB0,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xAA,0xBA,0xE6,0xB8,0xC6,0xA4,
|
||||
/*A_*/0xB5,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xA1,0xBF,0xD0,0xDD,0xDE,0xAE,
|
||||
/*B_*/0x5E,0xA3,0xA5,0xB7,0xA9,0xA7,0xB6,0xBC,0xBD,0xBE,0x5B,0x5D,0xAF,0xA8,0xB4,0xD7,
|
||||
/*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xAD,0xF4,0xF6,0xF2,0xF3,0xF5,
|
||||
/*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xB9,0xFB,0xFC,0xF9,0xFA,0xFF,
|
||||
/*E_*/0x5C,0xF7,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xB2,0xD4,0xD6,0xD2,0xD3,0xD5,
|
||||
/*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xB3,0xDB,0xDC,0xD9,0xDA,0x9F
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* (Confusingly named) Index is EBCDIC 037 I8 byte; value is
|
||||
* EBCDIC 037 UTF-EBCDIC equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_utf2e[256];
|
||||
# else
|
||||
EXTCONST U8 PL_utf2e[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x37,0x2D,0x2E,0x2F,0x16,0x05,0x25,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x3C,0x3D,0x32,0x26,0x18,0x19,0x3F,0x27,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x40,0x5A,0x7F,0x7B,0x5B,0x6C,0x50,0x7D,0x4D,0x5D,0x5C,0x4E,0x6B,0x60,0x4B,0x61,
|
||||
/*3_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0x7A,0x5E,0x4C,0x7E,0x6E,0x6F,
|
||||
/*4_*/0x7C,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,
|
||||
/*5_*/0xD7,0xD8,0xD9,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xBA,0xE0,0xBB,0xB0,0x6D,
|
||||
/*6_*/0x79,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x91,0x92,0x93,0x94,0x95,0x96,
|
||||
/*7_*/0x97,0x98,0x99,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xC0,0x4F,0xD0,0xA1,0x07,
|
||||
/*8_*/0x20,0x21,0x22,0x23,0x24,0x15,0x06,0x17,0x28,0x29,0x2A,0x2B,0x2C,0x09,0x0A,0x1B,
|
||||
/*9_*/0x30,0x31,0x1A,0x33,0x34,0x35,0x36,0x08,0x38,0x39,0x3A,0x3B,0x04,0x14,0x3E,0xFF,
|
||||
/*A_*/0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x51,0x52,0x53,0x54,0x55,0x56,
|
||||
/*B_*/0x57,0x58,0x59,0x5F,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x70,0x71,0x72,
|
||||
/*C_*/0x73,0x74,0x75,0x76,0x77,0x78,0x80,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,0x90,0x9A,0x9B,
|
||||
/*D_*/0x9C,0x9D,0x9E,0x9F,0xA0,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB1,0xB2,0xB3,0xB4,0xB5,
|
||||
/*E_*/0xB6,0xB7,0xB8,0xB9,0xBC,0xBD,0xBE,0xBF,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,0xDA,0xDB,
|
||||
/*F_*/0xDC,0xDD,0xDE,0xDF,0xE1,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xFA,0xFB,0xFC,0xFD,0xFE
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* (Confusingly named) Index is EBCDIC 037 UTF-EBCDIC byte; value is
|
||||
* EBCDIC 037 I8 equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_e2utf[256];
|
||||
# else
|
||||
EXTCONST U8 PL_e2utf[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x9C,0x09,0x86,0x7F,0x97,0x8D,0x8E,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x9D,0x85,0x08,0x87,0x18,0x19,0x92,0x8F,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x80,0x81,0x82,0x83,0x84,0x0A,0x17,0x1B,0x88,0x89,0x8A,0x8B,0x8C,0x05,0x06,0x07,
|
||||
/*3_*/0x90,0x91,0x16,0x93,0x94,0x95,0x96,0x04,0x98,0x99,0x9A,0x9B,0x14,0x15,0x9E,0x1A,
|
||||
/*4_*/0x20,0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0x2E,0x3C,0x28,0x2B,0x7C,
|
||||
/*5_*/0x26,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,0xB0,0xB1,0xB2,0x21,0x24,0x2A,0x29,0x3B,0xB3,
|
||||
/*6_*/0x2D,0x2F,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0x2C,0x25,0x5F,0x3E,0x3F,
|
||||
/*7_*/0xBD,0xBE,0xBF,0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0x60,0x3A,0x23,0x40,0x27,0x3D,0x22,
|
||||
/*8_*/0xC6,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,
|
||||
/*9_*/0xCD,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,0xCE,0xCF,0xD0,0xD1,0xD2,0xD3,
|
||||
/*A_*/0xD4,0x7E,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,
|
||||
/*B_*/0x5E,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,0xE2,0xE3,0x5B,0x5D,0xE4,0xE5,0xE6,0xE7,
|
||||
/*C_*/0x7B,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,
|
||||
/*D_*/0x7D,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,0x50,0x51,0x52,0xEE,0xEF,0xF0,0xF1,0xF2,0xF3,
|
||||
/*E_*/0x5C,0xF4,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,
|
||||
/*F_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xFB,0xFC,0xFD,0xFE,0xFF,0x9F
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 037 UTF-EBCDIC byte; value is UTF8SKIP for start bytes
|
||||
* (including for overlongs); 1 for continuation. Adapted from the shadow
|
||||
* flags table in tr16. The entries marked 9 in tr16 are continuation bytes
|
||||
* and are marked as length 1 here so that we can recover. */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_utf8skip[256];
|
||||
# else
|
||||
EXTCONST U8 PL_utf8skip[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*1_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*2_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*3_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*4_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*5_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*6_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*7_*/ 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*8_*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
|
||||
/*9_*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
|
||||
/*A_*/ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
|
||||
/*B_*/ 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 1, 1, 3, 3, 3, 3,
|
||||
/*C_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
|
||||
/*D_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 4,
|
||||
/*E_*/ 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 5, 5, 5,
|
||||
/*F_*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 6, 7, 14, 1
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 037 code point; value is its lowercase equivalent */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_latin1_lc[256];
|
||||
# else
|
||||
EXTCONST U8 PL_latin1_lc[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x70,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x70,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
|
||||
/*9_*/0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9C,0x9F,
|
||||
/*A_*/0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0x8C,0x8D,0x8E,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 037 code point; value is its uppercase equivalent.
|
||||
* The 'mod' in the name means that codepoints whose uppercase is above 255 or
|
||||
* longer than 1 character map to LATIN SMALL LETTER Y WITH DIARESIS */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_mod_latin1_uc[256];
|
||||
# else
|
||||
EXTCONST U8 PL_mod_latin1_uc[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0xDF,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x80,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xAD,0xAE,0x8F,
|
||||
/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9E,0x9F,
|
||||
/*A_*/0xDF,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*D_*/0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 037 code point; For A-Z, value is a-z; for a-z, value
|
||||
* is A-Z; all other code points map to themselves */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_fold[256];
|
||||
# else
|
||||
EXTCONST U8 PL_fold[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
|
||||
/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
|
||||
/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
/* Index is EBCDIC 037 code point; value is its other fold-pair equivalent
|
||||
* (A => a; a => A, etc) in the 0-255 range. If no such equivalent, value is
|
||||
* the code point itself */
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_fold_latin1[256];
|
||||
# else
|
||||
EXTCONST U8 PL_fold_latin1[256] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
|
||||
/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
|
||||
/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
|
||||
/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
|
||||
/*4_*/0x40,0x41,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
|
||||
/*5_*/0x50,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
|
||||
/*6_*/0x60,0x61,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
|
||||
/*7_*/0x80,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
|
||||
/*8_*/0x70,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0xAC,0xAD,0xAE,0x8F,
|
||||
/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9E,0x9D,0x9C,0x9F,
|
||||
/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0x8C,0x8D,0x8E,0xAF,
|
||||
/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
|
||||
/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xEB,0xEC,0xED,0xEE,0xEF,
|
||||
/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xFB,0xFC,0xFD,0xFE,0xDF,
|
||||
/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xCB,0xCC,0xCD,0xCE,0xCF,
|
||||
/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xDB,0xDC,0xDD,0xDE,0xFF
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
};
|
||||
# endif
|
||||
|
||||
|
||||
/* The table below is adapted from
|
||||
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
|
||||
* See copyright notice at the beginning of this file.
|
||||
*/
|
||||
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_extended_utf8_dfa_tab[416];
|
||||
# else
|
||||
EXTCONST U8 PL_extended_utf8_dfa_tab[416] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*2_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*3_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*4_ */ 0, 7, 7, 8, 8, 9, 9, 9, 9, 10, 10, 0, 0, 0, 0, 0,
|
||||
/*5_ */ 0, 10, 10, 10, 10, 10, 10, 11, 11, 11, 0, 0, 0, 0, 0, 11,
|
||||
/*6_ */ 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0,
|
||||
/*7_ */ 11, 11, 11, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*8_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*9_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*A_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*B_ */ 0, 2, 2, 2, 2, 2, 1, 3, 3, 3, 0, 0, 3, 3, 3, 3,
|
||||
/*C_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
|
||||
/*D_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 12, 4, 4, 4,
|
||||
/*E_ */ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 13, 5, 5,
|
||||
/*F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 14, 6, 15, 1, 0,
|
||||
/*N0= 0*/ 0, 1, 16, 32, 48, 64, 80, 1, 1, 1, 1, 1, 96,112,128,144,
|
||||
/*N1= 16*/ 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1,
|
||||
/*N2= 32*/ 1, 1, 1, 1, 1, 1, 1, 16, 16, 16, 16, 16, 1, 1, 1, 1,
|
||||
/*N3= 48*/ 1, 1, 1, 1, 1, 1, 1, 32, 32, 32, 32, 32, 1, 1, 1, 1,
|
||||
/*N4= 64*/ 1, 1, 1, 1, 1, 1, 1, 48, 48, 48, 48, 48, 1, 1, 1, 1,
|
||||
/*N5= 80*/ 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 64, 64, 1, 1, 1, 1,
|
||||
/*N6= 96*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 32, 1, 1, 1, 1,
|
||||
/*N7=112*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 48, 48, 1, 1, 1, 1,
|
||||
/*N8=128*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 64, 64, 64, 1, 1, 1, 1,
|
||||
/*N9=144*/ 1, 1, 1, 1, 1, 1, 1, 1, 80, 80, 80, 80, 1, 1, 1, 1
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/
|
||||
};
|
||||
# endif
|
||||
|
||||
|
||||
/* The table below is adapted from
|
||||
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
|
||||
* See copyright notice at the beginning of this file.
|
||||
*/
|
||||
|
||||
# ifndef DOINIT
|
||||
EXTCONST U16 PL_strict_utf8_dfa_tab[624];
|
||||
# else
|
||||
EXTCONST U16 PL_strict_utf8_dfa_tab[624] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*2_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*3_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*4_ */ 0, 10, 11, 12, 12, 12, 12, 12, 12, 13, 14, 0, 0, 0, 0, 0,
|
||||
/*5_ */ 0, 13, 14, 13, 14, 15, 16, 17, 18, 17, 0, 0, 0, 0, 0, 18,
|
||||
/*6_ */ 0, 0, 17, 18, 19, 20, 17, 18, 17, 18, 17, 0, 0, 0, 0, 0,
|
||||
/*7_ */ 18, 21, 22, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*8_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*9_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*A_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*B_ */ 0, 2, 2, 2, 2, 2, 1, 3, 3, 3, 0, 0, 3, 3, 3, 3,
|
||||
/*C_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
|
||||
/*D_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 8, 6, 4, 5,
|
||||
/*E_ */ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 5, 9, 7, 1,
|
||||
/*F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
|
||||
/*N0 = 0*/ 0, 1, 23, 46, 69,138,115,184, 92,161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*N1 = 23*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*N2 = 46*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
|
||||
/*N3 = 69*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
|
||||
/*N4 = 92*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46,
|
||||
/*N5 =115*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 1, 1, 46,207,
|
||||
/*N6 =138*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,276,
|
||||
/*N7 =161*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69,322, 69,322, 69,322, 69,322, 69,322,
|
||||
/*N8 =184*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 69,322, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
/*N9 =207*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23,230,253, 23, 23, 23, 23, 23,299,
|
||||
/*N10=230*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
|
||||
/*N11=253*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
|
||||
/*N12=276*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299,
|
||||
/*N13=299*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
|
||||
/*N14=322*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,345,
|
||||
/*N15=345*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,299
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22*/
|
||||
};
|
||||
# endif
|
||||
|
||||
|
||||
/* The table below is adapted from
|
||||
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/
|
||||
* See copyright notice at the beginning of this file.
|
||||
*/
|
||||
|
||||
# ifndef DOINIT
|
||||
EXTCONST U8 PL_c9_utf8_dfa_tab[368];
|
||||
# else
|
||||
EXTCONST U8 PL_c9_utf8_dfa_tab[368] = {
|
||||
/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
|
||||
/*0_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*1_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*2_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*3_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*4_ */ 0, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 0, 0, 0, 0, 0,
|
||||
/*5_ */ 0, 11, 11, 11, 11, 11, 11, 12, 12, 12, 0, 0, 0, 0, 0, 12,
|
||||
/*6_ */ 0, 0, 12, 12, 13, 13, 12, 12, 12, 12, 12, 0, 0, 0, 0, 0,
|
||||
/*7_ */ 12, 12, 12, 1, 1, 1, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0,
|
||||
/*8_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*9_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*A_ */ 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
|
||||
/*B_ */ 0, 2, 2, 2, 2, 2, 1, 3, 3, 3, 0, 0, 3, 3, 3, 3,
|
||||
/*C_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
|
||||
/*D_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 6, 5, 4, 4,
|
||||
/*E_ */ 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 8, 7, 1,
|
||||
/*F_ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0,
|
||||
/*N0= 0*/ 0, 1, 14, 28, 42, 70, 56, 98, 84, 1, 1, 1, 1, 1,
|
||||
/*N1=14*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
|
||||
/*N2=28*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 14, 14, 14, 14,
|
||||
/*N3=42*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28, 28, 28, 28,
|
||||
/*N4=56*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28,
|
||||
/*N5=70*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 28, 28, 28, 1,
|
||||
/*N6=84*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 42, 42,
|
||||
/*N7=98*/ 1, 1, 1, 1, 1, 1, 1, 1, 1, 42, 1, 1, 1, 1
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13*/
|
||||
};
|
||||
# endif
|
||||
|
||||
#endif /* EBCDIC 037 */
|
||||
|
||||
#endif /* PERL_EBCDIC_TABLES_H_ */
|
||||
|
||||
/* ex: set ro ft=c: */
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,370 @@
|
|||
/* -*- mode: C; buffer-read-only: t -*-
|
||||
*
|
||||
* embedvar.h
|
||||
*
|
||||
* Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
* 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
|
||||
* 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022
|
||||
* by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
|
||||
* This file is built by regen/embed.pl from embed.fnc, intrpvar.h,
|
||||
* perlvars.h, regen/opcodes, regen/embed.pl, regen/embed_lib.pl and
|
||||
* regen/HeaderParser.pm.
|
||||
* Any changes made here will be lost!
|
||||
*
|
||||
* Edit those files and run 'make regen_headers' to effect changes.
|
||||
*/
|
||||
|
||||
#if defined(MULTIPLICITY)
|
||||
# define vTHX aTHX
|
||||
# define PL_AboveLatin1 (vTHX->IAboveLatin1)
|
||||
# define PL_an (vTHX->Ian)
|
||||
# define PL_argvgv (vTHX->Iargvgv)
|
||||
# define PL_argvout_stack (vTHX->Iargvout_stack)
|
||||
# define PL_argvoutgv (vTHX->Iargvoutgv)
|
||||
# define PL_Assigned_invlist (vTHX->IAssigned_invlist)
|
||||
# define PL_basetime (vTHX->Ibasetime)
|
||||
# define PL_beginav (vTHX->Ibeginav)
|
||||
# define PL_beginav_save (vTHX->Ibeginav_save)
|
||||
# define PL_blockhooks (vTHX->Iblockhooks)
|
||||
# define PL_body_arenas (vTHX->Ibody_arenas)
|
||||
# define PL_body_roots (vTHX->Ibody_roots)
|
||||
# define PL_bodytarget (vTHX->Ibodytarget)
|
||||
# define PL_breakable_sub_gen (vTHX->Ibreakable_sub_gen)
|
||||
# define PL_CCC_non0_non230 (vTHX->ICCC_non0_non230)
|
||||
# define PL_checkav (vTHX->Icheckav)
|
||||
# define PL_checkav_save (vTHX->Icheckav_save)
|
||||
# define PL_chopset (vTHX->Ichopset)
|
||||
# define PL_clocktick (vTHX->Iclocktick)
|
||||
# define PL_collation_ix (vTHX->Icollation_ix)
|
||||
# define PL_collation_name (vTHX->Icollation_name)
|
||||
# define PL_collation_standard (vTHX->Icollation_standard)
|
||||
# define PL_collxfrm_base (vTHX->Icollxfrm_base)
|
||||
# define PL_collxfrm_mult (vTHX->Icollxfrm_mult)
|
||||
# define PL_colors (vTHX->Icolors)
|
||||
# define PL_colorset (vTHX->Icolorset)
|
||||
# define PL_compcv (vTHX->Icompcv)
|
||||
# define PL_compiling (vTHX->Icompiling)
|
||||
# define PL_comppad (vTHX->Icomppad)
|
||||
# define PL_comppad_name (vTHX->Icomppad_name)
|
||||
# define PL_comppad_name_fill (vTHX->Icomppad_name_fill)
|
||||
# define PL_comppad_name_floor (vTHX->Icomppad_name_floor)
|
||||
# define PL_constpadix (vTHX->Iconstpadix)
|
||||
# define PL_cop_seqmax (vTHX->Icop_seqmax)
|
||||
# define PL_ctype_name (vTHX->Ictype_name)
|
||||
# define PL_cur_LC_ALL (vTHX->Icur_LC_ALL)
|
||||
# define PL_cur_locale_obj (vTHX->Icur_locale_obj)
|
||||
# define PL_curcop (vTHX->Icurcop)
|
||||
# define PL_curcopdb (vTHX->Icurcopdb)
|
||||
# define PL_curlocales (vTHX->Icurlocales)
|
||||
# define PL_curpad (vTHX->Icurpad)
|
||||
# define PL_curpm (vTHX->Icurpm)
|
||||
# define PL_curpm_under (vTHX->Icurpm_under)
|
||||
# define PL_curstack (vTHX->Icurstack)
|
||||
# define PL_curstackinfo (vTHX->Icurstackinfo)
|
||||
# define PL_curstash (vTHX->Icurstash)
|
||||
# define PL_curstname (vTHX->Icurstname)
|
||||
# define PL_custom_op_descs (vTHX->Icustom_op_descs)
|
||||
# define PL_custom_op_names (vTHX->Icustom_op_names)
|
||||
# define PL_custom_ops (vTHX->Icustom_ops)
|
||||
# define PL_cv_has_eval (vTHX->Icv_has_eval)
|
||||
# define PL_dbargs (vTHX->Idbargs)
|
||||
# define PL_DBcontrol (vTHX->IDBcontrol)
|
||||
# define PL_DBcv (vTHX->IDBcv)
|
||||
# define PL_DBgv (vTHX->IDBgv)
|
||||
# define PL_DBline (vTHX->IDBline)
|
||||
# define PL_DBsignal (vTHX->IDBsignal)
|
||||
# define PL_DBsingle (vTHX->IDBsingle)
|
||||
# define PL_DBsub (vTHX->IDBsub)
|
||||
# define PL_DBtrace (vTHX->IDBtrace)
|
||||
# define PL_debstash (vTHX->Idebstash)
|
||||
# define PL_debug (vTHX->Idebug)
|
||||
# define PL_debug_pad (vTHX->Idebug_pad)
|
||||
# define PL_def_layerlist (vTHX->Idef_layerlist)
|
||||
# define PL_defgv (vTHX->Idefgv)
|
||||
# define PL_defoutgv (vTHX->Idefoutgv)
|
||||
# define PL_defstash (vTHX->Idefstash)
|
||||
# define PL_delaymagic (vTHX->Idelaymagic)
|
||||
# define PL_delaymagic_egid (vTHX->Idelaymagic_egid)
|
||||
# define PL_delaymagic_euid (vTHX->Idelaymagic_euid)
|
||||
# define PL_delaymagic_gid (vTHX->Idelaymagic_gid)
|
||||
# define PL_delaymagic_uid (vTHX->Idelaymagic_uid)
|
||||
# define PL_destroyhook (vTHX->Idestroyhook)
|
||||
# define PL_diehook (vTHX->Idiehook)
|
||||
# define PL_Dir (vTHX->IDir)
|
||||
# define PL_doswitches (vTHX->Idoswitches)
|
||||
# define PL_dowarn (vTHX->Idowarn)
|
||||
# define PL_dump_re_max_len (vTHX->Idump_re_max_len)
|
||||
# define PL_dumper_fd (vTHX->Idumper_fd)
|
||||
# define PL_dumpindent (vTHX->Idumpindent)
|
||||
# define PL_e_script (vTHX->Ie_script)
|
||||
# define PL_efloatbuf (vTHX->Iefloatbuf)
|
||||
# define PL_efloatsize (vTHX->Iefloatsize)
|
||||
# define PL_endav (vTHX->Iendav)
|
||||
# define PL_Env (vTHX->IEnv)
|
||||
# define PL_envgv (vTHX->Ienvgv)
|
||||
# define PL_errgv (vTHX->Ierrgv)
|
||||
# define PL_errors (vTHX->Ierrors)
|
||||
# define PL_eval_begin_nest_depth (vTHX->Ieval_begin_nest_depth)
|
||||
# define PL_eval_root (vTHX->Ieval_root)
|
||||
# define PL_eval_start (vTHX->Ieval_start)
|
||||
# define PL_evalseq (vTHX->Ievalseq)
|
||||
# define PL_exit_flags (vTHX->Iexit_flags)
|
||||
# define PL_exitlist (vTHX->Iexitlist)
|
||||
# define PL_exitlistlen (vTHX->Iexitlistlen)
|
||||
# define PL_fdpid (vTHX->Ifdpid)
|
||||
# define PL_filemode (vTHX->Ifilemode)
|
||||
# define PL_firstgv (vTHX->Ifirstgv)
|
||||
# define PL_fold_locale (vTHX->Ifold_locale)
|
||||
# define PL_forkprocess (vTHX->Iforkprocess)
|
||||
# define PL_formtarget (vTHX->Iformtarget)
|
||||
# define PL_GCB_invlist (vTHX->IGCB_invlist)
|
||||
# define PL_generation (vTHX->Igeneration)
|
||||
# define PL_gensym (vTHX->Igensym)
|
||||
# define PL_globalstash (vTHX->Iglobalstash)
|
||||
# define PL_globhook (vTHX->Iglobhook)
|
||||
# define PL_hash_rand_bits (vTHX->Ihash_rand_bits)
|
||||
# define PL_hash_rand_bits_enabled (vTHX->Ihash_rand_bits_enabled)
|
||||
# define PL_HasMultiCharFold (vTHX->IHasMultiCharFold)
|
||||
# define PL_hintgv (vTHX->Ihintgv)
|
||||
# define PL_hook__require__after (vTHX->Ihook__require__after)
|
||||
# define PL_hook__require__before (vTHX->Ihook__require__before)
|
||||
# define PL_hv_fetch_ent_mh (vTHX->Ihv_fetch_ent_mh)
|
||||
# define PL_in_clean_all (vTHX->Iin_clean_all)
|
||||
# define PL_in_clean_objs (vTHX->Iin_clean_objs)
|
||||
# define PL_in_eval (vTHX->Iin_eval)
|
||||
# define PL_in_load_module (vTHX->Iin_load_module)
|
||||
# define PL_in_some_fold (vTHX->Iin_some_fold)
|
||||
# define PL_in_utf8_COLLATE_locale (vTHX->Iin_utf8_COLLATE_locale)
|
||||
# define PL_in_utf8_CTYPE_locale (vTHX->Iin_utf8_CTYPE_locale)
|
||||
# define PL_in_utf8_turkic_locale (vTHX->Iin_utf8_turkic_locale)
|
||||
# define PL_InBitmap (vTHX->IInBitmap)
|
||||
# define PL_incgv (vTHX->Iincgv)
|
||||
# define PL_initav (vTHX->Iinitav)
|
||||
# define PL_InMultiCharFold (vTHX->IInMultiCharFold)
|
||||
# define PL_inplace (vTHX->Iinplace)
|
||||
# define PL_internal_random_state (vTHX->Iinternal_random_state)
|
||||
# define PL_isarev (vTHX->Iisarev)
|
||||
# define PL_known_layers (vTHX->Iknown_layers)
|
||||
# define PL_langinfo_sv (vTHX->Ilanginfo_sv)
|
||||
# define PL_last_in_gv (vTHX->Ilast_in_gv)
|
||||
# define PL_lastfd (vTHX->Ilastfd)
|
||||
# define PL_lastgotoprobe (vTHX->Ilastgotoprobe)
|
||||
# define PL_laststatval (vTHX->Ilaststatval)
|
||||
# define PL_laststype (vTHX->Ilaststype)
|
||||
# define PL_Latin1 (vTHX->ILatin1)
|
||||
# define PL_LB_invlist (vTHX->ILB_invlist)
|
||||
# define PL_less_dicey_locale_buf (vTHX->Iless_dicey_locale_buf)
|
||||
# define PL_less_dicey_locale_bufsize (vTHX->Iless_dicey_locale_bufsize)
|
||||
# define PL_LIO (vTHX->ILIO)
|
||||
# define PL_locale_mutex_depth (vTHX->Ilocale_mutex_depth)
|
||||
# define PL_localizing (vTHX->Ilocalizing)
|
||||
# define PL_localpatches (vTHX->Ilocalpatches)
|
||||
# define PL_lockhook (vTHX->Ilockhook)
|
||||
# define PL_main_cv (vTHX->Imain_cv)
|
||||
# define PL_main_root (vTHX->Imain_root)
|
||||
# define PL_main_start (vTHX->Imain_start)
|
||||
# define PL_mainstack (vTHX->Imainstack)
|
||||
# define PL_markstack (vTHX->Imarkstack)
|
||||
# define PL_markstack_max (vTHX->Imarkstack_max)
|
||||
# define PL_markstack_ptr (vTHX->Imarkstack_ptr)
|
||||
# define PL_max_intro_pending (vTHX->Imax_intro_pending)
|
||||
# define PL_maxsysfd (vTHX->Imaxsysfd)
|
||||
# define PL_mbrlen_ps (vTHX->Imbrlen_ps)
|
||||
# define PL_mbrtowc_ps (vTHX->Imbrtowc_ps)
|
||||
# define PL_Mem (vTHX->IMem)
|
||||
# define PL_mem_log (vTHX->Imem_log)
|
||||
# define PL_memory_debug_header (vTHX->Imemory_debug_header)
|
||||
# define PL_MemParse (vTHX->IMemParse)
|
||||
# define PL_MemShared (vTHX->IMemShared)
|
||||
# define PL_mess_sv (vTHX->Imess_sv)
|
||||
# define PL_min_intro_pending (vTHX->Imin_intro_pending)
|
||||
# define PL_minus_a (vTHX->Iminus_a)
|
||||
# define PL_minus_c (vTHX->Iminus_c)
|
||||
# define PL_minus_E (vTHX->Iminus_E)
|
||||
# define PL_minus_F (vTHX->Iminus_F)
|
||||
# define PL_minus_l (vTHX->Iminus_l)
|
||||
# define PL_minus_n (vTHX->Iminus_n)
|
||||
# define PL_minus_p (vTHX->Iminus_p)
|
||||
# define PL_modcount (vTHX->Imodcount)
|
||||
# define PL_modglobal (vTHX->Imodglobal)
|
||||
# define PL_multideref_pc (vTHX->Imultideref_pc)
|
||||
# define PL_my_cxt_list (vTHX->Imy_cxt_list)
|
||||
# define PL_my_cxt_size (vTHX->Imy_cxt_size)
|
||||
# define PL_na (vTHX->Ina)
|
||||
# define PL_nomemok (vTHX->Inomemok)
|
||||
# define PL_numeric_name (vTHX->Inumeric_name)
|
||||
# define PL_numeric_radix_sv (vTHX->Inumeric_radix_sv)
|
||||
# define PL_numeric_standard (vTHX->Inumeric_standard)
|
||||
# define PL_numeric_underlying (vTHX->Inumeric_underlying)
|
||||
# define PL_numeric_underlying_is_standard (vTHX->Inumeric_underlying_is_standard)
|
||||
# define PL_ofsgv (vTHX->Iofsgv)
|
||||
# define PL_oldname (vTHX->Ioldname)
|
||||
# define PL_op (vTHX->Iop)
|
||||
# define PL_op_exec_cnt (vTHX->Iop_exec_cnt)
|
||||
# define PL_op_mask (vTHX->Iop_mask)
|
||||
# define PL_opfreehook (vTHX->Iopfreehook)
|
||||
# define PL_origalen (vTHX->Iorigalen)
|
||||
# define PL_origargc (vTHX->Iorigargc)
|
||||
# define PL_origargv (vTHX->Iorigargv)
|
||||
# define PL_origfilename (vTHX->Iorigfilename)
|
||||
# define PL_ors_sv (vTHX->Iors_sv)
|
||||
# define PL_osname (vTHX->Iosname)
|
||||
# define PL_pad_reset_pending (vTHX->Ipad_reset_pending)
|
||||
# define PL_padix (vTHX->Ipadix)
|
||||
# define PL_padix_floor (vTHX->Ipadix_floor)
|
||||
# define PL_padlist_generation (vTHX->Ipadlist_generation)
|
||||
# define PL_padname_const (vTHX->Ipadname_const)
|
||||
# define PL_padname_undef (vTHX->Ipadname_undef)
|
||||
# define PL_parser (vTHX->Iparser)
|
||||
# define PL_patchlevel (vTHX->Ipatchlevel)
|
||||
# define PL_peepp (vTHX->Ipeepp)
|
||||
# define PL_perl_destruct_level (vTHX->Iperl_destruct_level)
|
||||
# define PL_perldb (vTHX->Iperldb)
|
||||
# define PL_perlio (vTHX->Iperlio)
|
||||
# define PL_phase (vTHX->Iphase)
|
||||
# define PL_pidstatus (vTHX->Ipidstatus)
|
||||
# define PL_Posix_ptrs (vTHX->IPosix_ptrs)
|
||||
# define PL_preambleav (vTHX->Ipreambleav)
|
||||
# define PL_prevailing_version (vTHX->Iprevailing_version)
|
||||
# define PL_Private_Use (vTHX->IPrivate_Use)
|
||||
# define PL_Proc (vTHX->IProc)
|
||||
# define PL_profiledata (vTHX->Iprofiledata)
|
||||
# define PL_psig_name (vTHX->Ipsig_name)
|
||||
# define PL_psig_pend (vTHX->Ipsig_pend)
|
||||
# define PL_psig_ptr (vTHX->Ipsig_ptr)
|
||||
# define PL_ptr_table (vTHX->Iptr_table)
|
||||
# define PL_random_state (vTHX->Irandom_state)
|
||||
# define PL_reentrant_buffer (vTHX->Ireentrant_buffer)
|
||||
# define PL_reentrant_retint (vTHX->Ireentrant_retint)
|
||||
# define PL_reg_curpm (vTHX->Ireg_curpm)
|
||||
# define PL_regex_pad (vTHX->Iregex_pad)
|
||||
# define PL_regex_padav (vTHX->Iregex_padav)
|
||||
# define PL_registered_mros (vTHX->Iregistered_mros)
|
||||
# define PL_regmatch_slab (vTHX->Iregmatch_slab)
|
||||
# define PL_regmatch_state (vTHX->Iregmatch_state)
|
||||
# define PL_replgv (vTHX->Ireplgv)
|
||||
# define PL_restartjmpenv (vTHX->Irestartjmpenv)
|
||||
# define PL_restartop (vTHX->Irestartop)
|
||||
# define PL_rpeepp (vTHX->Irpeepp)
|
||||
# define PL_rs (vTHX->Irs)
|
||||
# define PL_runops (vTHX->Irunops)
|
||||
# define PL_savebegin (vTHX->Isavebegin)
|
||||
# define PL_savestack (vTHX->Isavestack)
|
||||
# define PL_savestack_ix (vTHX->Isavestack_ix)
|
||||
# define PL_savestack_max (vTHX->Isavestack_max)
|
||||
# define PL_SB_invlist (vTHX->ISB_invlist)
|
||||
# define PL_scopestack (vTHX->Iscopestack)
|
||||
# define PL_scopestack_ix (vTHX->Iscopestack_ix)
|
||||
# define PL_scopestack_max (vTHX->Iscopestack_max)
|
||||
# define PL_scopestack_name (vTHX->Iscopestack_name)
|
||||
# define PL_scratch_langinfo (vTHX->Iscratch_langinfo)
|
||||
# define PL_scratch_locale_obj (vTHX->Iscratch_locale_obj)
|
||||
# define PL_SCX_invlist (vTHX->ISCX_invlist)
|
||||
# define PL_secondgv (vTHX->Isecondgv)
|
||||
# define PL_setlocale_buf (vTHX->Isetlocale_buf)
|
||||
# define PL_setlocale_bufsize (vTHX->Isetlocale_bufsize)
|
||||
# define PL_sharehook (vTHX->Isharehook)
|
||||
# define PL_sig_pending (vTHX->Isig_pending)
|
||||
# define PL_sighandler1p (vTHX->Isighandler1p)
|
||||
# define PL_sighandler3p (vTHX->Isighandler3p)
|
||||
# define PL_sighandlerp (vTHX->Isighandlerp)
|
||||
# define PL_signalhook (vTHX->Isignalhook)
|
||||
# define PL_signals (vTHX->Isignals)
|
||||
# define PL_Sock (vTHX->ISock)
|
||||
# define PL_sortcop (vTHX->Isortcop)
|
||||
# define PL_sortstash (vTHX->Isortstash)
|
||||
# define PL_splitstr (vTHX->Isplitstr)
|
||||
# define PL_srand_called (vTHX->Isrand_called)
|
||||
# define PL_srand_override (vTHX->Isrand_override)
|
||||
# define PL_srand_override_next (vTHX->Isrand_override_next)
|
||||
# define PL_stack_base (vTHX->Istack_base)
|
||||
# define PL_stack_max (vTHX->Istack_max)
|
||||
# define PL_stack_sp (vTHX->Istack_sp)
|
||||
# define PL_start_env (vTHX->Istart_env)
|
||||
# define PL_stashcache (vTHX->Istashcache)
|
||||
# define PL_stashpad (vTHX->Istashpad)
|
||||
# define PL_stashpadix (vTHX->Istashpadix)
|
||||
# define PL_stashpadmax (vTHX->Istashpadmax)
|
||||
# define PL_statcache (vTHX->Istatcache)
|
||||
# define PL_statgv (vTHX->Istatgv)
|
||||
# define PL_statname (vTHX->Istatname)
|
||||
# define PL_statusvalue (vTHX->Istatusvalue)
|
||||
# define PL_statusvalue_posix (vTHX->Istatusvalue_posix)
|
||||
# define PL_statusvalue_vms (vTHX->Istatusvalue_vms)
|
||||
# define PL_stderrgv (vTHX->Istderrgv)
|
||||
# define PL_stdingv (vTHX->Istdingv)
|
||||
# define PL_StdIO (vTHX->IStdIO)
|
||||
# define PL_strtab (vTHX->Istrtab)
|
||||
# define PL_strxfrm_is_behaved (vTHX->Istrxfrm_is_behaved)
|
||||
# define PL_strxfrm_max_cp (vTHX->Istrxfrm_max_cp)
|
||||
# define PL_strxfrm_NUL_replacement (vTHX->Istrxfrm_NUL_replacement)
|
||||
# define PL_sub_generation (vTHX->Isub_generation)
|
||||
# define PL_subline (vTHX->Isubline)
|
||||
# define PL_subname (vTHX->Isubname)
|
||||
# define PL_Sv (vTHX->ISv)
|
||||
# define PL_sv_arenaroot (vTHX->Isv_arenaroot)
|
||||
# define PL_sv_consts (vTHX->Isv_consts)
|
||||
# define PL_sv_count (vTHX->Isv_count)
|
||||
# define PL_sv_immortals (vTHX->Isv_immortals)
|
||||
# define PL_sv_no (vTHX->Isv_no)
|
||||
# define PL_sv_root (vTHX->Isv_root)
|
||||
# define PL_sv_serial (vTHX->Isv_serial)
|
||||
# define PL_sv_undef (vTHX->Isv_undef)
|
||||
# define PL_sv_yes (vTHX->Isv_yes)
|
||||
# define PL_sv_zero (vTHX->Isv_zero)
|
||||
# define PL_sys_intern (vTHX->Isys_intern)
|
||||
# define PL_taint_warn (vTHX->Itaint_warn)
|
||||
# define PL_tainted (vTHX->Itainted)
|
||||
# define PL_tainting (vTHX->Itainting)
|
||||
# define PL_threadhook (vTHX->Ithreadhook)
|
||||
# define PL_tmps_floor (vTHX->Itmps_floor)
|
||||
# define PL_tmps_ix (vTHX->Itmps_ix)
|
||||
# define PL_tmps_max (vTHX->Itmps_max)
|
||||
# define PL_tmps_stack (vTHX->Itmps_stack)
|
||||
# define PL_top_env (vTHX->Itop_env)
|
||||
# define PL_toptarget (vTHX->Itoptarget)
|
||||
# define PL_TR_SPECIAL_HANDLING_UTF8 (vTHX->ITR_SPECIAL_HANDLING_UTF8)
|
||||
# define PL_underlying_radix_sv (vTHX->Iunderlying_radix_sv)
|
||||
# define PL_unicode (vTHX->Iunicode)
|
||||
# define PL_unitcheckav (vTHX->Iunitcheckav)
|
||||
# define PL_unitcheckav_save (vTHX->Iunitcheckav_save)
|
||||
# define PL_unlockhook (vTHX->Iunlockhook)
|
||||
# define PL_unsafe (vTHX->Iunsafe)
|
||||
# define PL_UpperLatin1 (vTHX->IUpperLatin1)
|
||||
# define PL_utf8_charname_begin (vTHX->Iutf8_charname_begin)
|
||||
# define PL_utf8_charname_continue (vTHX->Iutf8_charname_continue)
|
||||
# define PL_utf8_foldclosures (vTHX->Iutf8_foldclosures)
|
||||
# define PL_utf8_idcont (vTHX->Iutf8_idcont)
|
||||
# define PL_utf8_idstart (vTHX->Iutf8_idstart)
|
||||
# define PL_utf8_mark (vTHX->Iutf8_mark)
|
||||
# define PL_utf8_perl_idcont (vTHX->Iutf8_perl_idcont)
|
||||
# define PL_utf8_perl_idstart (vTHX->Iutf8_perl_idstart)
|
||||
# define PL_utf8_tofold (vTHX->Iutf8_tofold)
|
||||
# define PL_utf8_tolower (vTHX->Iutf8_tolower)
|
||||
# define PL_utf8_tosimplefold (vTHX->Iutf8_tosimplefold)
|
||||
# define PL_utf8_totitle (vTHX->Iutf8_totitle)
|
||||
# define PL_utf8_toupper (vTHX->Iutf8_toupper)
|
||||
# define PL_utf8_xidcont (vTHX->Iutf8_xidcont)
|
||||
# define PL_utf8_xidstart (vTHX->Iutf8_xidstart)
|
||||
# define PL_utf8cache (vTHX->Iutf8cache)
|
||||
# define PL_utf8locale (vTHX->Iutf8locale)
|
||||
# define PL_warn_locale (vTHX->Iwarn_locale)
|
||||
# define PL_warnhook (vTHX->Iwarnhook)
|
||||
# define PL_watchaddr (vTHX->Iwatchaddr)
|
||||
# define PL_watchok (vTHX->Iwatchok)
|
||||
# define PL_WB_invlist (vTHX->IWB_invlist)
|
||||
# define PL_wcrtomb_ps (vTHX->Iwcrtomb_ps)
|
||||
# define PL_XPosix_ptrs (vTHX->IXPosix_ptrs)
|
||||
# define PL_Xpv (vTHX->IXpv)
|
||||
# define PL_xsubfilename (vTHX->Ixsubfilename)
|
||||
# if !defined(PL_sawampersand)
|
||||
# define PL_sawampersand (vTHX->Isawampersand)
|
||||
# endif
|
||||
#endif /* defined(MULTIPLICITY) */
|
||||
|
||||
/* ex: set ro ft=c: */
|
||||
|
|
@ -0,0 +1,127 @@
|
|||
/* fakesdio.h
|
||||
*
|
||||
* Copyright (C) 2000, by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* This is "source level" stdio compatibility mode.
|
||||
* We try and #define stdio functions in terms of PerlIO.
|
||||
*/
|
||||
#define _CANNOT "CANNOT"
|
||||
#undef FILE
|
||||
#define FILE PerlIO
|
||||
#undef clearerr
|
||||
#undef fclose
|
||||
#undef fdopen
|
||||
#undef feof
|
||||
#undef ferror
|
||||
#undef fflush
|
||||
#undef fgetc
|
||||
#undef fgetpos
|
||||
#undef fgets
|
||||
#undef fileno
|
||||
#undef flockfile
|
||||
#undef fopen
|
||||
#undef fprintf
|
||||
#undef fputc
|
||||
#undef fputs
|
||||
#undef fread
|
||||
#undef freopen
|
||||
#undef fscanf
|
||||
#undef fseek
|
||||
#undef fsetpos
|
||||
#undef ftell
|
||||
#undef ftrylockfile
|
||||
#undef funlockfile
|
||||
#undef fwrite
|
||||
#undef getc
|
||||
#undef getc_unlocked
|
||||
#undef getw
|
||||
#undef pclose
|
||||
#undef popen
|
||||
#undef putc
|
||||
#undef putc_unlocked
|
||||
#undef putw
|
||||
#undef rewind
|
||||
#undef setbuf
|
||||
#undef setvbuf
|
||||
#undef stderr
|
||||
#undef stdin
|
||||
#undef stdout
|
||||
#undef tmpfile
|
||||
#undef ungetc
|
||||
#undef vfprintf
|
||||
#undef printf
|
||||
|
||||
/* printf used to live in perl.h like this - more sophisticated
|
||||
than the rest
|
||||
*/
|
||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__) && !defined(PERL_GCC_PEDANTIC)
|
||||
#define printf(fmt,args...) PerlIO_stdoutf(fmt,##args)
|
||||
#else
|
||||
#define printf PerlIO_stdoutf
|
||||
#endif
|
||||
|
||||
#define fprintf PerlIO_printf
|
||||
#define stdin PerlIO_stdin()
|
||||
#define stdout PerlIO_stdout()
|
||||
#define stderr PerlIO_stderr()
|
||||
#define tmpfile() PerlIO_tmpfile()
|
||||
#define fclose(f) PerlIO_close(f)
|
||||
#define fflush(f) PerlIO_flush(f)
|
||||
#define fopen(p,m) PerlIO_open(p,m)
|
||||
#define vfprintf(f,fmt,a) PerlIO_vprintf(f,fmt,a)
|
||||
#define fgetc(f) PerlIO_getc(f)
|
||||
#define fputc(c,f) PerlIO_putc(f,c)
|
||||
#define fputs(s,f) PerlIO_puts(f,s)
|
||||
#define getc(f) PerlIO_getc(f)
|
||||
#define getc_unlocked(f) PerlIO_getc(f)
|
||||
#define putc(c,f) PerlIO_putc(f,c)
|
||||
#define putc_unlocked(c,f) PerlIO_putc(c,f)
|
||||
#define ungetc(c,f) PerlIO_ungetc(f,c)
|
||||
#if 0
|
||||
/* return values of read/write need work */
|
||||
#define fread(b,s,c,f) PerlIO_read(f,b,(s*c))
|
||||
#define fwrite(b,s,c,f) PerlIO_write(f,b,(s*c))
|
||||
#else
|
||||
#define fread(b,s,c,f) _CANNOT fread
|
||||
#define fwrite(b,s,c,f) _CANNOT fwrite
|
||||
#endif
|
||||
#define fseek(f,o,w) PerlIO_seek(f,o,w)
|
||||
#define ftell(f) PerlIO_tell(f)
|
||||
#define rewind(f) PerlIO_rewind(f)
|
||||
#define clearerr(f) PerlIO_clearerr(f)
|
||||
#define feof(f) PerlIO_eof(f)
|
||||
#define ferror(f) PerlIO_error(f)
|
||||
#define fdopen(fd,p) PerlIO_fdopen(fd,p)
|
||||
#define fileno(f) PerlIO_fileno(f)
|
||||
#define popen(c,m) my_popen(c,m)
|
||||
#define pclose(f) my_pclose(f)
|
||||
|
||||
#define fsetpos(f,p) _CANNOT _fsetpos_
|
||||
#define fgetpos(f,p) _CANNOT _fgetpos_
|
||||
|
||||
#define __filbuf(f) _CANNOT __filbuf_
|
||||
#define _filbuf(f) _CANNOT _filbuf_
|
||||
#define __flsbuf(c,f) _CANNOT __flsbuf_
|
||||
#define _flsbuf(c,f) _CANNOT _flsbuf_
|
||||
#define getw(f) _CANNOT _getw_
|
||||
#define putw(v,f) _CANNOT _putw_
|
||||
#if SFIO_VERSION < 20000101L
|
||||
#define flockfile(f) _CANNOT _flockfile_
|
||||
#define ftrylockfile(f) _CANNOT _ftrylockfile_
|
||||
#define funlockfile(f) _CANNOT _funlockfile_
|
||||
#endif
|
||||
#define freopen(p,m,f) _CANNOT _freopen_
|
||||
#define setbuf(f,b) _CANNOT _setbuf_
|
||||
#define setvbuf(f,b,x,s) _CANNOT _setvbuf_
|
||||
#define fscanf _CANNOT _fscanf_
|
||||
#define fgets(s,n,f) _CANNOT _fgets_
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
|
|
@ -0,0 +1,614 @@
|
|||
/* -*- mode: C; buffer-read-only: t -*-
|
||||
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
|
||||
This file is built by regen/feature.pl.
|
||||
Any changes made here will be lost!
|
||||
*/
|
||||
|
||||
|
||||
#ifndef PERL_FEATURE_H_
|
||||
#define PERL_FEATURE_H_
|
||||
|
||||
#if defined(PERL_CORE) || defined (PERL_EXT)
|
||||
|
||||
#define HINT_FEATURE_SHIFT 26
|
||||
|
||||
#define FEATURE_BAREWORD_FILEHANDLES_BIT 0x0001
|
||||
#define FEATURE_BITWISE_BIT 0x0002
|
||||
#define FEATURE_CLASS_BIT 0x0004
|
||||
#define FEATURE___SUB___BIT 0x0008
|
||||
#define FEATURE_MYREF_BIT 0x0010
|
||||
#define FEATURE_DEFER_BIT 0x0020
|
||||
#define FEATURE_EVALBYTES_BIT 0x0040
|
||||
#define FEATURE_MORE_DELIMS_BIT 0x0080
|
||||
#define FEATURE_FC_BIT 0x0100
|
||||
#define FEATURE_INDIRECT_BIT 0x0200
|
||||
#define FEATURE_ISA_BIT 0x0400
|
||||
#define FEATURE_MODULE_TRUE_BIT 0x0800
|
||||
#define FEATURE_MULTIDIMENSIONAL_BIT 0x1000
|
||||
#define FEATURE_POSTDEREF_QQ_BIT 0x2000
|
||||
#define FEATURE_REFALIASING_BIT 0x4000
|
||||
#define FEATURE_SAY_BIT 0x8000
|
||||
#define FEATURE_SIGNATURES_BIT 0x10000
|
||||
#define FEATURE_STATE_BIT 0x20000
|
||||
#define FEATURE_SWITCH_BIT 0x40000
|
||||
#define FEATURE_TRY_BIT 0x80000
|
||||
#define FEATURE_UNIEVAL_BIT 0x100000
|
||||
#define FEATURE_UNICODE_BIT 0x200000
|
||||
|
||||
#define FEATURE_BUNDLE_DEFAULT 0
|
||||
#define FEATURE_BUNDLE_510 1
|
||||
#define FEATURE_BUNDLE_511 2
|
||||
#define FEATURE_BUNDLE_515 3
|
||||
#define FEATURE_BUNDLE_523 4
|
||||
#define FEATURE_BUNDLE_527 5
|
||||
#define FEATURE_BUNDLE_535 6
|
||||
#define FEATURE_BUNDLE_537 7
|
||||
#define FEATURE_BUNDLE_539 8
|
||||
#define FEATURE_BUNDLE_CUSTOM (HINT_FEATURE_MASK >> HINT_FEATURE_SHIFT)
|
||||
|
||||
/* this is preserved for testing and asserts */
|
||||
#define OLD_CURRENT_HINTS \
|
||||
(PL_curcop == &PL_compiling ? PL_hints : PL_curcop->cop_hints)
|
||||
/* this is the same thing, but simpler (no if) as PL_hints expands
|
||||
to PL_compiling.cop_hints */
|
||||
#define CURRENT_HINTS \
|
||||
PL_curcop->cop_hints
|
||||
#define CURRENT_FEATURE_BUNDLE \
|
||||
((CURRENT_HINTS & HINT_FEATURE_MASK) >> HINT_FEATURE_SHIFT)
|
||||
|
||||
#define FEATURE_IS_ENABLED_MASK(mask) \
|
||||
((CURRENT_HINTS & HINT_LOCALIZE_HH) \
|
||||
? (PL_curcop->cop_features & (mask)) : FALSE)
|
||||
|
||||
/* The longest string we pass in. */
|
||||
#define MAX_FEATURE_LEN (sizeof("bareword_filehandles")-1)
|
||||
|
||||
#define FEATURE_FC_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_FC_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_ISA_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_ISA_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_SAY_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_SAY_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_TRY_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_539 \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_CLASS_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_CLASS_BIT) \
|
||||
)
|
||||
|
||||
#define FEATURE_DEFER_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_DEFER_BIT) \
|
||||
)
|
||||
|
||||
#define FEATURE_STATE_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_STATE_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_SWITCH_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_SWITCH_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_BITWISE_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_527 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_BITWISE_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_INDIRECT_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527 \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_INDIRECT_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_EVALBYTES_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_EVALBYTES_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_SIGNATURES_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_SIGNATURES_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE___SUB___IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE___SUB___BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_MODULE_TRUE_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_537 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_MODULE_TRUE_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_REFALIASING_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_REFALIASING_BIT) \
|
||||
)
|
||||
|
||||
#define FEATURE_POSTDEREF_QQ_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_523 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_POSTDEREF_QQ_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_UNIEVAL_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_UNIEVAL_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_MYREF_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_MYREF_BIT) \
|
||||
)
|
||||
|
||||
#define FEATURE_UNICODE_IS_ENABLED \
|
||||
( \
|
||||
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_539) \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_UNICODE_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_MULTIDIMENSIONAL_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527 \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_MULTIDIMENSIONAL_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535 \
|
||||
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_BAREWORD_FILEHANDLES_BIT)) \
|
||||
)
|
||||
|
||||
#define FEATURE_MORE_DELIMS_IS_ENABLED \
|
||||
( \
|
||||
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
|
||||
FEATURE_IS_ENABLED_MASK(FEATURE_MORE_DELIMS_BIT) \
|
||||
)
|
||||
|
||||
|
||||
#define SAVEFEATUREBITS() SAVEI32(PL_compiling.cop_features)
|
||||
|
||||
#define CLEARFEATUREBITS() (PL_compiling.cop_features = 0)
|
||||
|
||||
#define FETCHFEATUREBITSHH(hh) S_fetch_feature_bits_hh(aTHX_ (hh))
|
||||
|
||||
#endif /* PERL_CORE or PERL_EXT */
|
||||
|
||||
#ifdef PERL_IN_OP_C
|
||||
PERL_STATIC_INLINE void
|
||||
S_enable_feature_bundle(pTHX_ SV *ver)
|
||||
{
|
||||
SV *comp_ver = sv_newmortal();
|
||||
PL_hints = (PL_hints &~ HINT_FEATURE_MASK)
|
||||
| (
|
||||
(sv_setnv(comp_ver, 5.039),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_539 :
|
||||
(sv_setnv(comp_ver, 5.037),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_537 :
|
||||
(sv_setnv(comp_ver, 5.035),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_535 :
|
||||
(sv_setnv(comp_ver, 5.027),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_527 :
|
||||
(sv_setnv(comp_ver, 5.023),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_523 :
|
||||
(sv_setnv(comp_ver, 5.015),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_515 :
|
||||
(sv_setnv(comp_ver, 5.011),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_511 :
|
||||
(sv_setnv(comp_ver, 5.009005),
|
||||
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
|
||||
? FEATURE_BUNDLE_510 :
|
||||
FEATURE_BUNDLE_DEFAULT
|
||||
) << HINT_FEATURE_SHIFT;
|
||||
/* special case */
|
||||
assert(PL_curcop == &PL_compiling);
|
||||
if (FEATURE_UNICODE_IS_ENABLED) PL_hints |= HINT_UNI_8_BIT;
|
||||
else PL_hints &= ~HINT_UNI_8_BIT;
|
||||
}
|
||||
#endif /* PERL_IN_OP_C */
|
||||
|
||||
#if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_CTL_C)
|
||||
|
||||
#define magic_sethint_feature(keysv, keypv, keylen, valsv, valbool) \
|
||||
S_magic_sethint_feature(aTHX_ (keysv), (keypv), (keylen), (valsv), (valbool))
|
||||
PERL_STATIC_INLINE void
|
||||
S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen,
|
||||
SV *valsv, bool valbool) {
|
||||
if (keysv)
|
||||
keypv = SvPV_const(keysv, keylen);
|
||||
|
||||
if (memBEGINs(keypv, keylen, "feature_")) {
|
||||
const char *subf = keypv + (sizeof("feature_")-1);
|
||||
U32 mask = 0;
|
||||
switch (*subf) {
|
||||
case '_':
|
||||
if (keylen == sizeof("feature___SUB__")-1
|
||||
&& memcmp(subf+1, "_SUB__", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE___SUB___BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'b':
|
||||
if (keylen == sizeof("feature_bareword_filehandles")-1
|
||||
&& memcmp(subf+1, "areword_filehandles", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_BAREWORD_FILEHANDLES_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_bitwise")-1
|
||||
&& memcmp(subf+1, "itwise", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_BITWISE_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'c':
|
||||
if (keylen == sizeof("feature_class")-1
|
||||
&& memcmp(subf+1, "lass", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_CLASS_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'd':
|
||||
if (keylen == sizeof("feature_defer")-1
|
||||
&& memcmp(subf+1, "efer", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_DEFER_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'e':
|
||||
if (keylen == sizeof("feature_evalbytes")-1
|
||||
&& memcmp(subf+1, "valbytes", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_EVALBYTES_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'f':
|
||||
if (keylen == sizeof("feature_fc")-1
|
||||
&& memcmp(subf+1, "c", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_FC_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'i':
|
||||
if (keylen == sizeof("feature_indirect")-1
|
||||
&& memcmp(subf+1, "ndirect", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_INDIRECT_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_isa")-1
|
||||
&& memcmp(subf+1, "sa", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_ISA_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'm':
|
||||
if (keylen == sizeof("feature_module_true")-1
|
||||
&& memcmp(subf+1, "odule_true", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_MODULE_TRUE_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_more_delims")-1
|
||||
&& memcmp(subf+1, "ore_delims", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_MORE_DELIMS_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_multidimensional")-1
|
||||
&& memcmp(subf+1, "ultidimensional", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_MULTIDIMENSIONAL_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_myref")-1
|
||||
&& memcmp(subf+1, "yref", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_MYREF_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'p':
|
||||
if (keylen == sizeof("feature_postderef_qq")-1
|
||||
&& memcmp(subf+1, "ostderef_qq", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_POSTDEREF_QQ_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'r':
|
||||
if (keylen == sizeof("feature_refaliasing")-1
|
||||
&& memcmp(subf+1, "efaliasing", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_REFALIASING_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 's':
|
||||
if (keylen == sizeof("feature_say")-1
|
||||
&& memcmp(subf+1, "ay", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_SAY_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_signatures")-1
|
||||
&& memcmp(subf+1, "ignatures", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_SIGNATURES_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_state")-1
|
||||
&& memcmp(subf+1, "tate", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_STATE_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_switch")-1
|
||||
&& memcmp(subf+1, "witch", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_SWITCH_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 't':
|
||||
if (keylen == sizeof("feature_try")-1
|
||||
&& memcmp(subf+1, "ry", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_TRY_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
case 'u':
|
||||
if (keylen == sizeof("feature_unicode")-1
|
||||
&& memcmp(subf+1, "nicode", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_UNICODE_BIT;
|
||||
break;
|
||||
}
|
||||
else if (keylen == sizeof("feature_unieval")-1
|
||||
&& memcmp(subf+1, "nieval", keylen - sizeof("feature_")) == 0) {
|
||||
mask = FEATURE_UNIEVAL_BIT;
|
||||
break;
|
||||
}
|
||||
return;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if (valsv ? SvTRUE(valsv) : valbool)
|
||||
PL_compiling.cop_features |= mask;
|
||||
else
|
||||
PL_compiling.cop_features &= ~mask;
|
||||
}
|
||||
}
|
||||
#endif /* PERL_IN_MG_C */
|
||||
|
||||
/* subject to change */
|
||||
struct perl_feature_bit {
|
||||
const char *name;
|
||||
STRLEN namelen;
|
||||
U32 mask;
|
||||
};
|
||||
|
||||
#ifdef PERL_IN_PP_CTL_C
|
||||
|
||||
static const struct perl_feature_bit
|
||||
PL_feature_bits[] = {
|
||||
{
|
||||
/* feature bareword_filehandles */
|
||||
"feature_bareword_filehandles",
|
||||
STRLENs("feature_bareword_filehandles"),
|
||||
FEATURE_BAREWORD_FILEHANDLES_BIT
|
||||
},
|
||||
{
|
||||
/* feature bitwise */
|
||||
"feature_bitwise",
|
||||
STRLENs("feature_bitwise"),
|
||||
FEATURE_BITWISE_BIT
|
||||
},
|
||||
{
|
||||
/* feature class */
|
||||
"feature_class",
|
||||
STRLENs("feature_class"),
|
||||
FEATURE_CLASS_BIT
|
||||
},
|
||||
{
|
||||
/* feature current_sub */
|
||||
"feature___SUB__",
|
||||
STRLENs("feature___SUB__"),
|
||||
FEATURE___SUB___BIT
|
||||
},
|
||||
{
|
||||
/* feature declared_refs */
|
||||
"feature_myref",
|
||||
STRLENs("feature_myref"),
|
||||
FEATURE_MYREF_BIT
|
||||
},
|
||||
{
|
||||
/* feature defer */
|
||||
"feature_defer",
|
||||
STRLENs("feature_defer"),
|
||||
FEATURE_DEFER_BIT
|
||||
},
|
||||
{
|
||||
/* feature evalbytes */
|
||||
"feature_evalbytes",
|
||||
STRLENs("feature_evalbytes"),
|
||||
FEATURE_EVALBYTES_BIT
|
||||
},
|
||||
{
|
||||
/* feature extra_paired_delimiters */
|
||||
"feature_more_delims",
|
||||
STRLENs("feature_more_delims"),
|
||||
FEATURE_MORE_DELIMS_BIT
|
||||
},
|
||||
{
|
||||
/* feature fc */
|
||||
"feature_fc",
|
||||
STRLENs("feature_fc"),
|
||||
FEATURE_FC_BIT
|
||||
},
|
||||
{
|
||||
/* feature indirect */
|
||||
"feature_indirect",
|
||||
STRLENs("feature_indirect"),
|
||||
FEATURE_INDIRECT_BIT
|
||||
},
|
||||
{
|
||||
/* feature isa */
|
||||
"feature_isa",
|
||||
STRLENs("feature_isa"),
|
||||
FEATURE_ISA_BIT
|
||||
},
|
||||
{
|
||||
/* feature module_true */
|
||||
"feature_module_true",
|
||||
STRLENs("feature_module_true"),
|
||||
FEATURE_MODULE_TRUE_BIT
|
||||
},
|
||||
{
|
||||
/* feature multidimensional */
|
||||
"feature_multidimensional",
|
||||
STRLENs("feature_multidimensional"),
|
||||
FEATURE_MULTIDIMENSIONAL_BIT
|
||||
},
|
||||
{
|
||||
/* feature postderef_qq */
|
||||
"feature_postderef_qq",
|
||||
STRLENs("feature_postderef_qq"),
|
||||
FEATURE_POSTDEREF_QQ_BIT
|
||||
},
|
||||
{
|
||||
/* feature refaliasing */
|
||||
"feature_refaliasing",
|
||||
STRLENs("feature_refaliasing"),
|
||||
FEATURE_REFALIASING_BIT
|
||||
},
|
||||
{
|
||||
/* feature say */
|
||||
"feature_say",
|
||||
STRLENs("feature_say"),
|
||||
FEATURE_SAY_BIT
|
||||
},
|
||||
{
|
||||
/* feature signatures */
|
||||
"feature_signatures",
|
||||
STRLENs("feature_signatures"),
|
||||
FEATURE_SIGNATURES_BIT
|
||||
},
|
||||
{
|
||||
/* feature state */
|
||||
"feature_state",
|
||||
STRLENs("feature_state"),
|
||||
FEATURE_STATE_BIT
|
||||
},
|
||||
{
|
||||
/* feature switch */
|
||||
"feature_switch",
|
||||
STRLENs("feature_switch"),
|
||||
FEATURE_SWITCH_BIT
|
||||
},
|
||||
{
|
||||
/* feature try */
|
||||
"feature_try",
|
||||
STRLENs("feature_try"),
|
||||
FEATURE_TRY_BIT
|
||||
},
|
||||
{
|
||||
/* feature unicode_eval */
|
||||
"feature_unieval",
|
||||
STRLENs("feature_unieval"),
|
||||
FEATURE_UNIEVAL_BIT
|
||||
},
|
||||
{
|
||||
/* feature unicode_strings */
|
||||
"feature_unicode",
|
||||
STRLENs("feature_unicode"),
|
||||
FEATURE_UNICODE_BIT
|
||||
},
|
||||
{ NULL, 0, 0U }
|
||||
};
|
||||
|
||||
PERL_STATIC_INLINE void
|
||||
S_fetch_feature_bits_hh(pTHX_ HV *hh) {
|
||||
PL_compiling.cop_features = 0;
|
||||
|
||||
const struct perl_feature_bit *fb = PL_feature_bits;
|
||||
while (fb->name) {
|
||||
SV **svp = hv_fetch(hh, fb->name, (I32)fb->namelen, 0);
|
||||
if (svp && SvTRUE(*svp))
|
||||
PL_compiling.cop_features |= fb->mask;
|
||||
++fb;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* PERL_FEATURE_H_ */
|
||||
|
||||
/* ex: set ro ft=c: */
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/* form.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 2000, 2004, 2011 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
#define FF_END 0 /* tidy up, then return */
|
||||
#define FF_LINEMARK 1 /* start (or end) of a line */
|
||||
#define FF_LITERAL 2 /* append <arg> literal chars */
|
||||
#define FF_SKIP 3 /* skip <arg> chars in format */
|
||||
#define FF_FETCH 4 /* get next item and set field size to <arg> */
|
||||
#define FF_CHECKNL 5 /* find max len of item (up to \n) that fits field */
|
||||
#define FF_CHECKCHOP 6 /* like CHECKNL, but up to highest split point */
|
||||
#define FF_SPACE 7 /* append padding space (diff of field, item size) */
|
||||
#define FF_HALFSPACE 8 /* like FF_SPACE, but only append half as many */
|
||||
#define FF_ITEM 9 /* append a text item, while blanking ctrl chars */
|
||||
#define FF_CHOP 10 /* (for ^*) chop the current item */
|
||||
#define FF_LINEGLOB 11 /* process @* */
|
||||
#define FF_DECIMAL 12 /* do @##, ^##, where <arg>=(precision|flags) */
|
||||
#define FF_NEWLINE 13 /* delete trailing spaces, then append \n */
|
||||
#define FF_BLANK 14 /* for arg==0: do '~'; for arg>0 : do '~~' */
|
||||
#define FF_MORE 15 /* replace long end of string with '...' */
|
||||
#define FF_0DECIMAL 16 /* like FF_DECIMAL but for 0### */
|
||||
#define FF_LINESNGL 17 /* process ^* */
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
/**************************************************************************
|
||||
* WARNING: 'git_version.h' is automatically generated by make_patchnum.pl
|
||||
* DO NOT EDIT DIRECTLY - edit make_patchnum.pl instead
|
||||
***************************************************************************/
|
||||
|
||||
#define PERL_GIT_UNPUSHED_COMMITS \
|
||||
/*leave-this-comment*/
|
||||
|
||||
|
|
@ -0,0 +1,326 @@
|
|||
/* gv.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
|
||||
* 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
struct gp {
|
||||
SV * gp_sv; /* scalar value */
|
||||
struct io * gp_io; /* filehandle value */
|
||||
CV * gp_cv; /* subroutine value */
|
||||
U32 gp_cvgen; /* generational validity of cached gp_cv */
|
||||
U32 gp_refcnt; /* how many globs point to this? */
|
||||
HV * gp_hv; /* hash value */
|
||||
AV * gp_av; /* array value */
|
||||
CV * gp_form; /* format value */
|
||||
GV * gp_egv; /* effective gv, if *glob */
|
||||
PERL_BITFIELD32 gp_line:31; /* line first declared at (for -w) */
|
||||
PERL_BITFIELD32 gp_flags:1;
|
||||
HEK * gp_file_hek; /* file first declared in (for -w) */
|
||||
};
|
||||
|
||||
#define GvXPVGV(gv) ((XPVGV*)SvANY(gv))
|
||||
|
||||
|
||||
#if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) && !defined(__INTEL_COMPILER)
|
||||
# define GvGP(gv) \
|
||||
((GP *)(*({GV *const _gvgp = (GV *) (gv); \
|
||||
assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \
|
||||
assert(isGV_with_GP(_gvgp)); \
|
||||
&((_gvgp)->sv_u.svu_gp);})))
|
||||
# define GvGP_set(gv,gp) \
|
||||
{GV *const _gvgp = (GV *) (gv); \
|
||||
assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \
|
||||
assert(isGV_with_GP(_gvgp)); \
|
||||
(_gvgp)->sv_u.svu_gp = (gp); }
|
||||
# define GvFLAGS(gv) \
|
||||
(*({GV *const _gvflags = (GV *) (gv); \
|
||||
assert(SvTYPE(_gvflags) == SVt_PVGV || SvTYPE(_gvflags) == SVt_PVLV); \
|
||||
assert(isGV_with_GP(_gvflags)); \
|
||||
&(GvXPVGV(_gvflags)->xpv_cur);}))
|
||||
# define GvSTASH(gv) \
|
||||
(*({ GV * const _gvstash = (GV *) (gv); \
|
||||
assert(isGV_with_GP(_gvstash)); \
|
||||
assert(SvTYPE(_gvstash) == SVt_PVGV || SvTYPE(_gvstash) >= SVt_PVLV); \
|
||||
&(GvXPVGV(_gvstash)->xnv_u.xgv_stash); \
|
||||
}))
|
||||
# define GvNAME_HEK(gv) \
|
||||
(*({ GV * const _gvname_hek = (GV *) (gv); \
|
||||
assert(isGV_with_GP(_gvname_hek)); \
|
||||
assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \
|
||||
&(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \
|
||||
}))
|
||||
# define GvNAME_get(gv) ({ assert(GvNAME_HEK(gv)); (char *)HEK_KEY(GvNAME_HEK(gv)); })
|
||||
# define GvNAMELEN_get(gv) ({ assert(GvNAME_HEK(gv)); HEK_LEN(GvNAME_HEK(gv)); })
|
||||
# define GvNAMEUTF8(gv) ({ assert(GvNAME_HEK(gv)); HEK_UTF8(GvNAME_HEK(gv)); })
|
||||
#else
|
||||
# define GvGP(gv) (0+(gv)->sv_u.svu_gp)
|
||||
# define GvGP_set(gv,gp) ((gv)->sv_u.svu_gp = (gp))
|
||||
# define GvFLAGS(gv) (GvXPVGV(gv)->xpv_cur)
|
||||
# define GvSTASH(gv) (GvXPVGV(gv)->xnv_u.xgv_stash)
|
||||
# define GvNAME_HEK(gv) (GvXPVGV(gv)->xiv_u.xivu_namehek)
|
||||
# define GvNAME_get(gv) HEK_KEY(GvNAME_HEK(gv))
|
||||
# define GvNAMELEN_get(gv) HEK_LEN(GvNAME_HEK(gv))
|
||||
# define GvNAMEUTF8(gv) HEK_UTF8(GvNAME_HEK(gv))
|
||||
#endif
|
||||
|
||||
#define GvNAME(gv) GvNAME_get(gv)
|
||||
#define GvNAMELEN(gv) GvNAMELEN_get(gv)
|
||||
|
||||
/*
|
||||
=for apidoc Am|SV*|GvSV|GV* gv
|
||||
|
||||
Return the SV from the GV.
|
||||
|
||||
Prior to Perl v5.9.3, this would add a scalar if none existed. Nowadays, use
|
||||
C<L</GvSVn>> for that, or compile perl with S<C<-DPERL_CREATE_GVSV>>. See
|
||||
L<perl5100delta>.
|
||||
|
||||
=for apidoc Am|SV*|GvSVn|GV* gv
|
||||
Like C<L</GvSV>>, but creates an empty scalar if none already exists.
|
||||
|
||||
=for apidoc Am|AV*|GvAV|GV* gv
|
||||
|
||||
Return the AV from the GV.
|
||||
|
||||
=for apidoc Am|HV*|GvHV|GV* gv
|
||||
|
||||
Return the HV from the GV.
|
||||
|
||||
=for apidoc Am|CV*|GvCV|GV* gv
|
||||
|
||||
Return the CV from the GV.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define GvSV(gv) (GvGP(gv)->gp_sv)
|
||||
#ifdef PERL_DONT_CREATE_GVSV
|
||||
#define GvSVn(gv) (*(GvGP(gv)->gp_sv ? \
|
||||
&(GvGP(gv)->gp_sv) : \
|
||||
&(GvGP(gv_SVadd(gv))->gp_sv)))
|
||||
#else
|
||||
#define GvSVn(gv) GvSV(gv)
|
||||
#endif
|
||||
|
||||
#define GvREFCNT(gv) (GvGP(gv)->gp_refcnt)
|
||||
#define GvIO(gv) \
|
||||
( \
|
||||
(gv) \
|
||||
&& ( \
|
||||
SvTYPE((const SV*)(gv)) == SVt_PVGV \
|
||||
|| SvTYPE((const SV*)(gv)) == SVt_PVLV \
|
||||
) \
|
||||
&& GvGP(gv) \
|
||||
? GvIOp(gv) \
|
||||
: NULL \
|
||||
)
|
||||
#define GvIOp(gv) (GvGP(gv)->gp_io)
|
||||
#define GvIOn(gv) (GvIO(gv) ? GvIOp(gv) : GvIOp(gv_IOadd(gv)))
|
||||
|
||||
#define GvFORM(gv) (GvGP(gv)->gp_form)
|
||||
#define GvAV(gv) (GvGP(gv)->gp_av)
|
||||
|
||||
#define GvAVn(gv) (GvGP(gv)->gp_av ? \
|
||||
GvGP(gv)->gp_av : \
|
||||
GvGP(gv_AVadd(gv))->gp_av)
|
||||
#define GvHV(gv) ((GvGP(gv))->gp_hv)
|
||||
|
||||
#define GvHVn(gv) (GvGP(gv)->gp_hv ? \
|
||||
GvGP(gv)->gp_hv : \
|
||||
GvGP(gv_HVadd(gv))->gp_hv)
|
||||
|
||||
#define GvCV(gv) ((CV*)GvGP(gv)->gp_cv)
|
||||
#define GvCV_set(gv,cv) (GvGP(gv)->gp_cv = (cv))
|
||||
#define GvCVGEN(gv) (GvGP(gv)->gp_cvgen)
|
||||
#define GvCVu(gv) (GvGP(gv)->gp_cvgen ? NULL : GvGP(gv)->gp_cv)
|
||||
|
||||
#define GvGPFLAGS(gv) (GvGP(gv)->gp_flags)
|
||||
|
||||
#define GvLINE(gv) (GvGP(gv)->gp_line)
|
||||
#define GvFILE_HEK(gv) (GvGP(gv)->gp_file_hek)
|
||||
#define GvFILEx(gv) HEK_KEY(GvFILE_HEK(gv))
|
||||
#define GvFILE(gv) (GvFILE_HEK(gv) ? GvFILEx(gv) : NULL)
|
||||
#define GvFILEGV(gv) (GvFILE_HEK(gv) ? gv_fetchfile(GvFILEx(gv)) : NULL)
|
||||
|
||||
#define GvEGV(gv) (GvGP(gv)->gp_egv)
|
||||
#define GvEGVx(gv) (isGV_with_GP(gv) ? GvEGV(gv) : NULL)
|
||||
#define GvENAME(gv) GvNAME(GvEGV(gv) ? GvEGV(gv) : gv)
|
||||
#define GvENAMELEN(gv) GvNAMELEN(GvEGV(gv) ? GvEGV(gv) : gv)
|
||||
#define GvENAMEUTF8(gv) GvNAMEUTF8(GvEGV(gv) ? GvEGV(gv) : gv)
|
||||
#define GvENAME_HEK(gv) GvNAME_HEK(GvEGV(gv) ? GvEGV(gv) : gv)
|
||||
#define GvESTASH(gv) GvSTASH(GvEGV(gv) ? GvEGV(gv) : gv)
|
||||
|
||||
/* GVf_INTRO is one-shot flag which indicates that the next assignment
|
||||
of a reference to the glob is to be localised; it distinguishes
|
||||
'local *g = $ref' from '*g = $ref'.
|
||||
|
||||
GVf_MULTI is used to implement the "used only once" warning. It is
|
||||
always set on a glob when an existing name is referenced, and when
|
||||
a name is created when the warning is disabled. A post parse scan
|
||||
in gv_check() then reports any names where this isn't set.
|
||||
|
||||
GVf_ONCE_FATAL is set on a glob when it is created and fatal "used
|
||||
only once" warnings are enabled, since PL_curcop no longer has the
|
||||
fatal flag set at the point where the warnings are reported.
|
||||
*/
|
||||
#define GVf_INTRO 0x01
|
||||
#define GVf_MULTI 0x02
|
||||
#define GVf_ASSUMECV 0x04
|
||||
#define GVf_RESERVED 0x08 /* unused */
|
||||
#define GVf_IMPORTED 0xF0
|
||||
#define GVf_IMPORTED_SV 0x10
|
||||
#define GVf_IMPORTED_AV 0x20
|
||||
#define GVf_IMPORTED_HV 0x40
|
||||
#define GVf_IMPORTED_CV 0x80
|
||||
#define GVf_ONCE_FATAL 0x100
|
||||
|
||||
#define GvINTRO(gv) (GvFLAGS(gv) & GVf_INTRO)
|
||||
#define GvINTRO_on(gv) (GvFLAGS(gv) |= GVf_INTRO)
|
||||
#define GvINTRO_off(gv) (GvFLAGS(gv) &= ~GVf_INTRO)
|
||||
|
||||
#define GvMULTI(gv) (GvFLAGS(gv) & GVf_MULTI)
|
||||
#define GvMULTI_on(gv) (GvFLAGS(gv) |= GVf_MULTI)
|
||||
#define GvMULTI_off(gv) (GvFLAGS(gv) &= ~GVf_MULTI)
|
||||
|
||||
#define GvASSUMECV(gv) (GvFLAGS(gv) & GVf_ASSUMECV)
|
||||
#define GvASSUMECV_on(gv) (GvFLAGS(gv) |= GVf_ASSUMECV)
|
||||
#define GvASSUMECV_off(gv) (GvFLAGS(gv) &= ~GVf_ASSUMECV)
|
||||
|
||||
#define GvIMPORTED(gv) (GvFLAGS(gv) & GVf_IMPORTED)
|
||||
#define GvIMPORTED_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED)
|
||||
#define GvIMPORTED_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED)
|
||||
|
||||
#define GvIMPORTED_SV(gv) (GvFLAGS(gv) & GVf_IMPORTED_SV)
|
||||
#define GvIMPORTED_SV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_SV)
|
||||
#define GvIMPORTED_SV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_SV)
|
||||
|
||||
#define GvIMPORTED_AV(gv) (GvFLAGS(gv) & GVf_IMPORTED_AV)
|
||||
#define GvIMPORTED_AV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_AV)
|
||||
#define GvIMPORTED_AV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_AV)
|
||||
|
||||
#define GvIMPORTED_HV(gv) (GvFLAGS(gv) & GVf_IMPORTED_HV)
|
||||
#define GvIMPORTED_HV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_HV)
|
||||
#define GvIMPORTED_HV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_HV)
|
||||
|
||||
#define GvIMPORTED_CV(gv) (GvFLAGS(gv) & GVf_IMPORTED_CV)
|
||||
#define GvIMPORTED_CV_on(gv) (GvFLAGS(gv) |= GVf_IMPORTED_CV)
|
||||
#define GvIMPORTED_CV_off(gv) (GvFLAGS(gv) &= ~GVf_IMPORTED_CV)
|
||||
|
||||
#define GvONCE_FATAL(gv) (GvFLAGS(gv) & GVf_ONCE_FATAL)
|
||||
#define GvONCE_FATAL_on(gv) (GvFLAGS(gv) |= GVf_ONCE_FATAL)
|
||||
#define GvONCE_FATAL_off(gv) (GvFLAGS(gv) &= ~GVf_ONCE_FATAL)
|
||||
|
||||
#ifndef PERL_CORE
|
||||
# define GvIN_PAD(gv) 0
|
||||
# define GvIN_PAD_on(gv) NOOP
|
||||
# define GvIN_PAD_off(gv) NOOP
|
||||
# define Nullgv Null(GV*)
|
||||
#endif
|
||||
|
||||
#define DM_RUID 0x001
|
||||
#define DM_EUID 0x002
|
||||
#define DM_UID (DM_RUID|DM_EUID)
|
||||
#define DM_ARRAY_ISA 0x004
|
||||
#define DM_RGID 0x010
|
||||
#define DM_EGID 0x020
|
||||
#define DM_GID (DM_RGID|DM_EGID)
|
||||
#define DM_DELAY 0x100
|
||||
|
||||
/*
|
||||
* symbol creation flags, for use in gv_fetchpv() and get_*v()
|
||||
*/
|
||||
#define GV_ADD 0x01 /* add, if symbol not already there
|
||||
For gv_name_set, adding a HEK for the first
|
||||
time, so don't try to free what's there. */
|
||||
#define GV_ADDMULTI 0x02 /* add, pretending it has been added
|
||||
already; used also by gv_init_* */
|
||||
#define GV_ADDWARN 0x04 /* add, but warn if symbol wasn't already there */
|
||||
/* 0x08 UNUSED */
|
||||
#define GV_NOINIT 0x10 /* add, but don't init symbol, if type != PVGV */
|
||||
/* This is used by toke.c to avoid turing placeholder constants in the symbol
|
||||
table into full PVGVs with attached constant subroutines. */
|
||||
#define GV_NOADD_NOINIT 0x20 /* Don't add the symbol if it's not there.
|
||||
Don't init it if it is there but ! PVGV */
|
||||
#define GV_NOEXPAND 0x40 /* Don't expand SvOK() entries to PVGV */
|
||||
#define GV_NOTQUAL 0x80 /* A plain symbol name, not qualified with a
|
||||
package (so skip checks for :: and ') */
|
||||
#define GV_AUTOLOAD 0x100 /* gv_fetchmethod_flags() should AUTOLOAD */
|
||||
#define GV_CROAK 0x200 /* gv_fetchmethod_flags() should croak */
|
||||
#define GV_ADDMG 0x400 /* add if magical */
|
||||
#define GV_NO_SVGMAGIC 0x800 /* Skip get-magic on an SV argument;
|
||||
used only by gv_fetchsv(_nomg) */
|
||||
#define GV_CACHE_ONLY 0x1000 /* return stash only if found in cache;
|
||||
used only in flags parameter to gv_stash* family */
|
||||
|
||||
/* Flags for gv_fetchmeth_pvn and gv_autoload_pvn*/
|
||||
#define GV_SUPER 0x1000 /* SUPER::method */
|
||||
#define GV_NOUNIVERSAL 0x2000 /* Skip UNIVERSAL lookup */
|
||||
|
||||
/* Flags for gv_autoload_*/
|
||||
#define GV_AUTOLOAD_ISMETHOD 1 /* autoloading a method? */
|
||||
|
||||
/* SVf_UTF8 (more accurately the return value from SvUTF8) is also valid
|
||||
as a flag to various gv_* functions, so ensure it lies
|
||||
outside this range.
|
||||
*/
|
||||
|
||||
#define GV_NOADD_MASK \
|
||||
(SVf_UTF8|GV_NOADD_NOINIT|GV_NOEXPAND|GV_NOTQUAL|GV_ADDMG|GV_NO_SVGMAGIC)
|
||||
/* The bit flags that don't cause gv_fetchpv() to add a symbol if not
|
||||
found (with the exception GV_ADDMG, which *might* cause the symbol
|
||||
to be added) */
|
||||
|
||||
/* gv_fetchfile_flags() */
|
||||
#define GVF_NOADD 0x01 /* don't add the glob if it doesn't exist */
|
||||
|
||||
#define gv_fullname3(sv,gv,prefix) gv_fullname4(sv,gv,prefix,TRUE)
|
||||
#define gv_efullname3(sv,gv,prefix) gv_efullname4(sv,gv,prefix,TRUE)
|
||||
#define gv_fetchmethod(stash, name) gv_fetchmethod_autoload(stash, name, TRUE)
|
||||
#define gv_fetchsv_nomg(n,f,t) gv_fetchsv(n,(f)|GV_NO_SVGMAGIC,t)
|
||||
#define gv_init(gv,stash,name,len,multi) \
|
||||
gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*cBOOL(multi))
|
||||
#define gv_fetchmeth(stash,name,len,level) gv_fetchmeth_pvn(stash, name, len, level, 0)
|
||||
#define gv_fetchmeth_autoload(stash,name,len,level) gv_fetchmeth_pvn_autoload(stash, name, len, level, 0)
|
||||
#define gv_fetchmethod_flags(stash,name,flags) gv_fetchmethod_pv_flags(stash, name, flags)
|
||||
|
||||
/*
|
||||
=for apidoc gv_autoload4
|
||||
Equivalent to C<L</gv_autoload_pvn>>.
|
||||
|
||||
=cut
|
||||
*/
|
||||
#define gv_autoload4(stash, name, len, autoload) \
|
||||
gv_autoload_pvn(stash, name, len, cBOOL(autoload))
|
||||
#define newGVgen(pack) newGVgen_flags(pack, 0)
|
||||
#define gv_method_changed(gv) \
|
||||
( \
|
||||
assert_(isGV_with_GP(gv)) \
|
||||
GvREFCNT(gv) > 1 \
|
||||
? (void)++PL_sub_generation \
|
||||
: mro_method_changed_in(GvSTASH(gv)) \
|
||||
)
|
||||
|
||||
/*
|
||||
=for apidoc gv_AVadd
|
||||
=for apidoc_item gv_HVadd
|
||||
=for apidoc_item gv_IOadd
|
||||
=for apidoc_item gv_SVadd
|
||||
|
||||
Make sure there is a slot of the given type (AV, HV, IO, SV) in the GV C<gv>.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define gv_AVadd(gv) gv_add_by_type((gv), SVt_PVAV)
|
||||
#define gv_HVadd(gv) gv_add_by_type((gv), SVt_PVHV)
|
||||
#define gv_IOadd(gv) gv_add_by_type((gv), SVt_PVIO)
|
||||
#define gv_SVadd(gv) gv_add_by_type((gv), SVt_NULL)
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,711 @@
|
|||
/* hv.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999,
|
||||
* 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2008, by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/* These control hash traversal randomization and the environment variable PERL_PERTURB_KEYS.
|
||||
* Currently disabling this functionality will break a few tests, but should otherwise work fine.
|
||||
* See perlrun for more details. */
|
||||
|
||||
#if defined(PERL_PERTURB_KEYS_DISABLED)
|
||||
# define PL_HASH_RAND_BITS_ENABLED 0
|
||||
# define PERL_HASH_ITER_BUCKET(iter) ((iter)->xhv_riter)
|
||||
#else
|
||||
# define PERL_HASH_RANDOMIZE_KEYS 1
|
||||
# if defined(PERL_PERTURB_KEYS_RANDOM)
|
||||
# define PL_HASH_RAND_BITS_ENABLED 1
|
||||
# elif defined(PERL_PERTURB_KEYS_DETERMINISTIC)
|
||||
# define PL_HASH_RAND_BITS_ENABLED 2
|
||||
# else
|
||||
# define USE_PERL_PERTURB_KEYS 1
|
||||
# define PL_HASH_RAND_BITS_ENABLED PL_hash_rand_bits_enabled
|
||||
# endif
|
||||
# define PERL_HASH_ITER_BUCKET(iter) (((iter)->xhv_riter) ^ ((iter)->xhv_rand))
|
||||
#endif
|
||||
|
||||
#ifdef PERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES
|
||||
#define LARGE_HASH_HEURISTIC(hv,new_max) S_large_hash_heuristic(aTHX_ (hv), (new_max))
|
||||
#else
|
||||
#define LARGE_HASH_HEURISTIC(hv,new_max) 0
|
||||
#endif
|
||||
|
||||
|
||||
/* entry in hash value chain */
|
||||
struct he {
|
||||
/* Keep hent_next first in this structure, because sv_free_arenas take
|
||||
advantage of this to share code between the he arenas and the SV
|
||||
body arenas */
|
||||
HE *hent_next; /* next entry in chain */
|
||||
HEK *hent_hek; /* hash key */
|
||||
union {
|
||||
SV *hent_val; /* scalar value that was hashed */
|
||||
Size_t hent_refcount; /* references for this shared hash key */
|
||||
} he_valu;
|
||||
};
|
||||
|
||||
/* hash key -- defined separately for use as shared pointer */
|
||||
struct hek {
|
||||
U32 hek_hash; /* computed hash of key */
|
||||
I32 hek_len; /* length of the hash key */
|
||||
/* Be careful! Sometimes we store a pointer in the hek_key
|
||||
* buffer, which means it must be 8 byte aligned or things
|
||||
* dont work on aligned platforms like HPUX
|
||||
* Also beware, the last byte of the hek_key buffer is a
|
||||
* hidden flags byte about the key. */
|
||||
char hek_key[1]; /* variable-length hash key */
|
||||
/* the hash-key is \0-terminated */
|
||||
/* after the \0 there is a byte for flags, such as whether the key
|
||||
is UTF-8 or WAS-UTF-8, or an SV */
|
||||
};
|
||||
|
||||
struct shared_he {
|
||||
struct he shared_he_he;
|
||||
struct hek shared_he_hek;
|
||||
};
|
||||
|
||||
/* Subject to change.
|
||||
Don't access this directly.
|
||||
Use the funcs in mro_core.c
|
||||
*/
|
||||
|
||||
struct mro_alg {
|
||||
AV *(*resolve)(pTHX_ HV* stash, U32 level);
|
||||
const char *name;
|
||||
U16 length;
|
||||
U16 kflags; /* For the hash API - set HVhek_UTF8 if name is UTF-8 */
|
||||
U32 hash; /* or 0 */
|
||||
};
|
||||
|
||||
struct mro_meta {
|
||||
/* a hash holding the different MROs private data. */
|
||||
HV *mro_linear_all;
|
||||
/* a pointer directly to the current MROs private data. If mro_linear_all
|
||||
is NULL, this owns the SV reference, else it is just a pointer to a
|
||||
value stored in and owned by mro_linear_all. */
|
||||
SV *mro_linear_current;
|
||||
HV *mro_nextmethod; /* next::method caching */
|
||||
U32 cache_gen; /* Bumping this invalidates our method cache */
|
||||
U32 pkg_gen; /* Bumps when local methods/@ISA change */
|
||||
const struct mro_alg *mro_which; /* which mro alg is in use? */
|
||||
HV *isa; /* Everything this class @ISA */
|
||||
HV *super; /* SUPER method cache */
|
||||
CV *destroy; /* DESTROY method if destroy_gen non-zero */
|
||||
U32 destroy_gen; /* Generation number of DESTROY cache */
|
||||
};
|
||||
|
||||
#define MRO_GET_PRIVATE_DATA(smeta, which) \
|
||||
(((smeta)->mro_which && (which) == (smeta)->mro_which) \
|
||||
? (smeta)->mro_linear_current \
|
||||
: Perl_mro_get_private_data(aTHX_ (smeta), (which)))
|
||||
|
||||
/* Subject to change.
|
||||
Don't access this directly.
|
||||
*/
|
||||
|
||||
union _xhvnameu {
|
||||
HEK *xhvnameu_name; /* When xhv_name_count is 0 */
|
||||
HEK **xhvnameu_names; /* When xhv_name_count is non-0 */
|
||||
};
|
||||
|
||||
/* A struct defined by pad.h and used within class.c */
|
||||
struct suspended_compcv;
|
||||
|
||||
struct xpvhv_aux {
|
||||
union _xhvnameu xhv_name_u; /* name, if a symbol table */
|
||||
AV *xhv_backreferences; /* back references for weak references */
|
||||
HE *xhv_eiter; /* current entry of iterator */
|
||||
I32 xhv_riter; /* current root of iterator */
|
||||
|
||||
/* Concerning xhv_name_count: When non-zero, xhv_name_u contains a pointer
|
||||
* to an array of HEK pointers, this being the length. The first element is
|
||||
* the name of the stash, which may be NULL. If xhv_name_count is positive,
|
||||
* then *xhv_name is one of the effective names. If xhv_name_count is nega-
|
||||
* tive, then xhv_name_u.xhvnameu_names[1] is the first effective name.
|
||||
*/
|
||||
I32 xhv_name_count;
|
||||
struct mro_meta *xhv_mro_meta;
|
||||
#ifdef PERL_HASH_RANDOMIZE_KEYS
|
||||
U32 xhv_rand; /* random value for hash traversal */
|
||||
U32 xhv_last_rand; /* last random value for hash traversal,
|
||||
used to detect each() after insert for warnings */
|
||||
#endif
|
||||
U32 xhv_aux_flags; /* assorted extra flags */
|
||||
|
||||
/* The following fields are only valid if we have the flag HvAUXf_IS_CLASS */
|
||||
HV *xhv_class_superclass; /* STASH of the :isa() base class */
|
||||
CV *xhv_class_initfields_cv; /* CV for running initfields */
|
||||
AV *xhv_class_adjust_blocks; /* CVs containing the ADJUST blocks */
|
||||
PADNAMELIST *xhv_class_fields; /* PADNAMEs with PadnameIsFIELD() */
|
||||
PADOFFSET xhv_class_next_fieldix;
|
||||
HV *xhv_class_param_map; /* Maps param names to field index stored in UV */
|
||||
|
||||
struct suspended_compcv
|
||||
*xhv_class_suspended_initfields_compcv;
|
||||
};
|
||||
|
||||
#define HvAUXf_SCAN_STASH 0x1 /* stash is being scanned by gv_check */
|
||||
#define HvAUXf_NO_DEREF 0x2 /* @{}, %{} etc (and nomethod) not present */
|
||||
#define HvAUXf_IS_CLASS 0x4 /* the package is a 'class' */
|
||||
|
||||
#define HvSTASH_IS_CLASS(hv) \
|
||||
(HvHasAUX(hv) && HvAUX(hv)->xhv_aux_flags & HvAUXf_IS_CLASS)
|
||||
|
||||
/* hash structure: */
|
||||
/* This structure must match the beginning of struct xpvmg in sv.h. */
|
||||
struct xpvhv {
|
||||
HV* xmg_stash; /* class package */
|
||||
union _xmgu xmg_u;
|
||||
STRLEN xhv_keys; /* total keys, including placeholders */
|
||||
STRLEN xhv_max; /* subscript of last element of xhv_array */
|
||||
};
|
||||
|
||||
struct xpvhv_with_aux {
|
||||
HV *xmg_stash; /* class package */
|
||||
union _xmgu xmg_u;
|
||||
STRLEN xhv_keys; /* total keys, including placeholders */
|
||||
STRLEN xhv_max; /* subscript of last element of xhv_array */
|
||||
struct xpvhv_aux xhv_aux;
|
||||
};
|
||||
|
||||
/*
|
||||
=for apidoc AmnU||HEf_SVKEY
|
||||
This flag, used in the length slot of hash entries and magic structures,
|
||||
specifies the structure contains an C<SV*> pointer where a C<char*> pointer
|
||||
is to be expected. (For information only--not to be used).
|
||||
|
||||
=for apidoc ADmnU||Nullhv
|
||||
Null HV pointer.
|
||||
|
||||
(deprecated - use C<(HV *)NULL> instead)
|
||||
|
||||
=for apidoc Am|char*|HvNAME|HV* stash
|
||||
Returns the package name of a stash, or C<NULL> if C<stash> isn't a stash.
|
||||
See C<L</SvSTASH>>, C<L</CvSTASH>>.
|
||||
|
||||
=for apidoc Am|STRLEN|HvNAMELEN|HV *stash
|
||||
Returns the length of the stash's name.
|
||||
|
||||
Disfavored forms of HvNAME and HvNAMELEN; suppress mention of them
|
||||
=for apidoc Cmh|char*|HvNAME_get|HV* stash
|
||||
=for apidoc Amh|I32|HvNAMELEN_get|HV* stash
|
||||
|
||||
=for apidoc Am|unsigned char|HvNAMEUTF8|HV *stash
|
||||
Returns true if the name is in UTF-8 encoding.
|
||||
|
||||
=for apidoc Am|char*|HvENAME|HV* stash
|
||||
Returns the effective name of a stash, or NULL if there is none. The
|
||||
effective name represents a location in the symbol table where this stash
|
||||
resides. It is updated automatically when packages are aliased or deleted.
|
||||
A stash that is no longer in the symbol table has no effective name. This
|
||||
name is preferable to C<HvNAME> for use in MRO linearisations and isa
|
||||
caches.
|
||||
|
||||
=for apidoc Am|STRLEN|HvENAMELEN|HV *stash
|
||||
Returns the length of the stash's effective name.
|
||||
|
||||
=for apidoc Am|unsigned char|HvENAMEUTF8|HV *stash
|
||||
Returns true if the effective name is in UTF-8 encoding.
|
||||
|
||||
=for apidoc Am|void*|HeKEY|HE* he
|
||||
Returns the actual pointer stored in the key slot of the hash entry. The
|
||||
pointer may be either C<char*> or C<SV*>, depending on the value of
|
||||
C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are
|
||||
usually preferable for finding the value of a key.
|
||||
|
||||
=for apidoc Am|STRLEN|HeKLEN|HE* he
|
||||
If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
|
||||
holds an C<SV*> key. Otherwise, holds the actual length of the key. Can
|
||||
be assigned to. The C<HePV()> macro is usually preferable for finding key
|
||||
lengths.
|
||||
|
||||
=for apidoc Am|SV*|HeVAL|HE* he
|
||||
Returns the value slot (type C<SV*>)
|
||||
stored in the hash entry. Can be assigned
|
||||
to.
|
||||
|
||||
SV *foo= HeVAL(hv);
|
||||
HeVAL(hv)= sv;
|
||||
|
||||
|
||||
=for apidoc Am|U32|HeHASH|HE* he
|
||||
Returns the computed hash stored in the hash entry.
|
||||
|
||||
=for apidoc Am|char*|HePV|HE* he|STRLEN len
|
||||
Returns the key slot of the hash entry as a C<char*> value, doing any
|
||||
necessary dereferencing of possibly C<SV*> keys. The length of the string
|
||||
is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do
|
||||
not care about what the length of the key is, you may use the global
|
||||
variable C<PL_na>, though this is rather less efficient than using a local
|
||||
variable. Remember though, that hash keys in perl are free to contain
|
||||
embedded nulls, so using C<strlen()> or similar is not a good way to find
|
||||
the length of hash keys. This is very similar to the C<SvPV()> macro
|
||||
described elsewhere in this document. See also C<L</HeUTF8>>.
|
||||
|
||||
If you are using C<HePV> to get values to pass to C<newSVpvn()> to create a
|
||||
new SV, you should consider using C<newSVhek(HeKEY_hek(he))> as it is more
|
||||
efficient.
|
||||
|
||||
=for apidoc Am|U32|HeUTF8|HE* he
|
||||
Returns whether the C<char *> value returned by C<HePV> is encoded in UTF-8,
|
||||
doing any necessary dereferencing of possibly C<SV*> keys. The value returned
|
||||
will be 0 or non-0, not necessarily 1 (or even a value with any low bits set),
|
||||
so B<do not> blindly assign this to a C<bool> variable, as C<bool> may be a
|
||||
typedef for C<char>.
|
||||
|
||||
=for apidoc Am|SV*|HeSVKEY|HE* he
|
||||
Returns the key as an C<SV*>, or C<NULL> if the hash entry does not
|
||||
contain an C<SV*> key.
|
||||
|
||||
=for apidoc Am|SV*|HeSVKEY_force|HE* he
|
||||
Returns the key as an C<SV*>. Will create and return a temporary mortal
|
||||
C<SV*> if the hash entry contains only a C<char*> key.
|
||||
|
||||
=for apidoc Am|SV*|HeSVKEY_set|HE* he|SV* sv
|
||||
Sets the key to a given C<SV*>, taking care to set the appropriate flags to
|
||||
indicate the presence of an C<SV*> key, and returns the same
|
||||
C<SV*>.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define PERL_HASH_DEFAULT_HvMAX 7
|
||||
|
||||
/* these hash entry flags ride on hent_klen (for use only in magic/tied HVs) */
|
||||
#define HEf_SVKEY -2 /* hent_key is an SV* */
|
||||
|
||||
#ifndef PERL_CORE
|
||||
# define Nullhv Null(HV*)
|
||||
#endif
|
||||
#define HvARRAY(hv) ((hv)->sv_u.svu_hash)
|
||||
|
||||
/*
|
||||
|
||||
=for apidoc Am|STRLEN|HvFILL|HV *const hv
|
||||
|
||||
Returns the number of hash buckets that happen to be in use.
|
||||
|
||||
As of perl 5.25 this function is used only for debugging
|
||||
purposes, and the number of used hash buckets is not
|
||||
in any way cached, thus this function can be costly
|
||||
to execute as it must iterate over all the buckets in the
|
||||
hash.
|
||||
|
||||
=cut
|
||||
|
||||
*/
|
||||
|
||||
#define HvFILL(hv) Perl_hv_fill(aTHX_ MUTABLE_HV(hv))
|
||||
#define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max
|
||||
|
||||
/*
|
||||
|
||||
=for apidoc Am|bool|HvHasAUX|HV *const hv
|
||||
|
||||
Returns true if the HV has a C<struct xpvhv_aux> extension. Use this to check
|
||||
whether it is valid to call C<HvAUX()>.
|
||||
|
||||
=cut
|
||||
|
||||
*/
|
||||
#define HvHasAUX(hv) (SvFLAGS(hv) & SVphv_HasAUX)
|
||||
|
||||
/* This quite intentionally does no flag checking first. That's your
|
||||
responsibility. Use HvHasAUX() first */
|
||||
#define HvAUX(hv) (&(((struct xpvhv_with_aux*) SvANY(hv))->xhv_aux))
|
||||
#define HvRITER(hv) (*Perl_hv_riter_p(aTHX_ MUTABLE_HV(hv)))
|
||||
#define HvEITER(hv) (*Perl_hv_eiter_p(aTHX_ MUTABLE_HV(hv)))
|
||||
#define HvRITER_set(hv,r) Perl_hv_riter_set(aTHX_ MUTABLE_HV(hv), r)
|
||||
#define HvEITER_set(hv,e) Perl_hv_eiter_set(aTHX_ MUTABLE_HV(hv), e)
|
||||
#define HvRITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_riter : -1)
|
||||
#define HvEITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_eiter : NULL)
|
||||
#define HvRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_rand : 0)
|
||||
#define HvLASTRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_last_rand : 0)
|
||||
|
||||
#define HvNAME(hv) HvNAME_get(hv)
|
||||
#define HvNAMELEN(hv) HvNAMELEN_get(hv)
|
||||
#define HvENAME(hv) HvENAME_get(hv)
|
||||
#define HvENAMELEN(hv) HvENAMELEN_get(hv)
|
||||
|
||||
/* Checking that hv is a valid package stash is the
|
||||
caller's responsibility */
|
||||
#define HvMROMETA(hv) (HvAUX(hv)->xhv_mro_meta \
|
||||
? HvAUX(hv)->xhv_mro_meta \
|
||||
: Perl_mro_meta_init(aTHX_ hv))
|
||||
|
||||
#define HvNAME_HEK_NN(hv) \
|
||||
( \
|
||||
HvAUX(hv)->xhv_name_count \
|
||||
? *HvAUX(hv)->xhv_name_u.xhvnameu_names \
|
||||
: HvAUX(hv)->xhv_name_u.xhvnameu_name \
|
||||
)
|
||||
/* This macro may go away without notice. */
|
||||
#define HvNAME_HEK(hv) \
|
||||
(HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL)
|
||||
#define HvHasNAME(hv) \
|
||||
(HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv))
|
||||
#define HvNAME_get(hv) \
|
||||
(HvHasNAME(hv) ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL)
|
||||
#define HvNAMELEN_get(hv) \
|
||||
((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
|
||||
? HEK_LEN(HvNAME_HEK_NN(hv)) : 0)
|
||||
#define HvNAMEUTF8(hv) \
|
||||
((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
|
||||
? HEK_UTF8(HvNAME_HEK_NN(hv)) : 0)
|
||||
#define HvENAME_HEK_NN(hv) \
|
||||
( \
|
||||
HvAUX(hv)->xhv_name_count > 0 ? HvAUX(hv)->xhv_name_u.xhvnameu_names[0] : \
|
||||
HvAUX(hv)->xhv_name_count < -1 ? HvAUX(hv)->xhv_name_u.xhvnameu_names[1] : \
|
||||
HvAUX(hv)->xhv_name_count == -1 ? NULL : \
|
||||
HvAUX(hv)->xhv_name_u.xhvnameu_name \
|
||||
)
|
||||
#define HvHasENAME_HEK(hv) \
|
||||
(HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name)
|
||||
#define HvENAME_HEK(hv) \
|
||||
(HvHasENAME_HEK(hv) ? HvENAME_HEK_NN(hv) : NULL)
|
||||
#define HvHasENAME(hv) \
|
||||
(HvHasENAME_HEK(hv) && HvAUX(hv)->xhv_name_count != -1)
|
||||
#define HvENAME_get(hv) \
|
||||
(HvHasENAME(hv) ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL)
|
||||
#define HvENAMELEN_get(hv) \
|
||||
(HvHasENAME(hv) ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0)
|
||||
#define HvENAMEUTF8(hv) \
|
||||
(HvHasENAME(hv) ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0)
|
||||
|
||||
/*
|
||||
* HvKEYS gets the number of keys that actually exist(), and is provided
|
||||
* for backwards compatibility with old XS code. The core uses HvUSEDKEYS
|
||||
* (keys, excluding placeholders) and HvTOTALKEYS (including placeholders)
|
||||
*/
|
||||
#define HvKEYS(hv) HvUSEDKEYS(hv)
|
||||
#define HvUSEDKEYS(hv) (HvTOTALKEYS(hv) - HvPLACEHOLDERS_get(hv))
|
||||
#define HvTOTALKEYS(hv) (((XPVHV*) SvANY(hv))->xhv_keys)
|
||||
#define HvPLACEHOLDERS(hv) (*Perl_hv_placeholders_p(aTHX_ MUTABLE_HV(hv)))
|
||||
#define HvPLACEHOLDERS_get(hv) (SvMAGIC(hv) ? Perl_hv_placeholders_get(aTHX_ (const HV *)hv) : 0)
|
||||
#define HvPLACEHOLDERS_set(hv,p) Perl_hv_placeholders_set(aTHX_ MUTABLE_HV(hv), p)
|
||||
|
||||
/* This (now) flags whether *new* keys in the hash will be allocated from the
|
||||
* shared string table. We have a heuristic to call HvSHAREKEYS_off() if a hash
|
||||
* is "getting large". After which, the first keys in that hash will be from
|
||||
* the shared string table, but subsequent keys will not be.
|
||||
*
|
||||
* If we didn't do this, we'd have to reallocate all keys when we switched this
|
||||
* flag, which would be work for no real gain. */
|
||||
#define HvSHAREKEYS(hv) (SvFLAGS(hv) & SVphv_SHAREKEYS)
|
||||
#define HvSHAREKEYS_on(hv) (SvFLAGS(hv) |= SVphv_SHAREKEYS)
|
||||
#define HvSHAREKEYS_off(hv) (SvFLAGS(hv) &= ~SVphv_SHAREKEYS)
|
||||
|
||||
/* This is an optimisation flag. It won't be set if all hash keys have a 0
|
||||
* flag. Currently the only flags relate to utf8.
|
||||
* Hence it won't be set if all keys are 8 bit only. It will be set if any key
|
||||
* is utf8 (including 8 bit keys that were entered as utf8, and need upgrading
|
||||
* when retrieved during iteration. It may still be set when there are no longer
|
||||
* any utf8 keys.
|
||||
* See HVhek_ENABLEHVKFLAGS for the trigger.
|
||||
*/
|
||||
#define HvHASKFLAGS(hv) (SvFLAGS(hv) & SVphv_HASKFLAGS)
|
||||
#define HvHASKFLAGS_on(hv) (SvFLAGS(hv) |= SVphv_HASKFLAGS)
|
||||
#define HvHASKFLAGS_off(hv) (SvFLAGS(hv) &= ~SVphv_HASKFLAGS)
|
||||
|
||||
#define HvLAZYDEL(hv) (SvFLAGS(hv) & SVphv_LAZYDEL)
|
||||
#define HvLAZYDEL_on(hv) (SvFLAGS(hv) |= SVphv_LAZYDEL)
|
||||
#define HvLAZYDEL_off(hv) (SvFLAGS(hv) &= ~SVphv_LAZYDEL)
|
||||
|
||||
#ifndef PERL_CORE
|
||||
# define Nullhe Null(HE*)
|
||||
#endif
|
||||
#define HeNEXT(he) (he)->hent_next
|
||||
#define HeKEY_hek(he) (he)->hent_hek
|
||||
#define HeKEY(he) HEK_KEY(HeKEY_hek(he))
|
||||
#define HeKEY_sv(he) (*(SV**)HeKEY(he))
|
||||
#define HeKLEN(he) HEK_LEN(HeKEY_hek(he))
|
||||
#define HeKUTF8(he) HEK_UTF8(HeKEY_hek(he))
|
||||
#define HeKWASUTF8(he) HEK_WASUTF8(HeKEY_hek(he))
|
||||
#define HeKLEN_UTF8(he) (HeKUTF8(he) ? -HeKLEN(he) : HeKLEN(he))
|
||||
#define HeKFLAGS(he) HEK_FLAGS(HeKEY_hek(he))
|
||||
#define HeVAL(he) (he)->he_valu.hent_val
|
||||
#define HeHASH(he) HEK_HASH(HeKEY_hek(he))
|
||||
#define HePV(he,lp) ((HeKLEN(he) == HEf_SVKEY) ? \
|
||||
SvPV(HeKEY_sv(he),lp) : \
|
||||
((lp = HeKLEN(he)), HeKEY(he)))
|
||||
#define HeUTF8(he) ((HeKLEN(he) == HEf_SVKEY) ? \
|
||||
SvUTF8(HeKEY_sv(he)) : \
|
||||
(U32)HeKUTF8(he))
|
||||
|
||||
#define HeSVKEY(he) ((HeKEY(he) && \
|
||||
HeKLEN(he) == HEf_SVKEY) ? \
|
||||
HeKEY_sv(he) : NULL)
|
||||
|
||||
#define HeSVKEY_force(he) (HeKEY(he) ? \
|
||||
((HeKLEN(he) == HEf_SVKEY) ? \
|
||||
HeKEY_sv(he) : \
|
||||
newSVpvn_flags(HeKEY(he), \
|
||||
HeKLEN(he), \
|
||||
SVs_TEMP | \
|
||||
( HeKUTF8(he) ? SVf_UTF8 : 0 ))) : \
|
||||
&PL_sv_undef)
|
||||
#define HeSVKEY_set(he,sv) ((HeKLEN(he) = HEf_SVKEY), (HeKEY_sv(he) = sv))
|
||||
|
||||
#ifndef PERL_CORE
|
||||
# define Nullhek Null(HEK*)
|
||||
#endif
|
||||
#define HEK_BASESIZE STRUCT_OFFSET(HEK, hek_key[0])
|
||||
#define HEK_HASH(hek) (hek)->hek_hash
|
||||
#define HEK_LEN(hek) (hek)->hek_len
|
||||
#define HEK_KEY(hek) (hek)->hek_key
|
||||
#define HEK_FLAGS(hek) (*((unsigned char *)(HEK_KEY(hek))+HEK_LEN(hek)+1))
|
||||
|
||||
#define HVhek_UTF8 0x01 /* Key is utf8 encoded. */
|
||||
#define HVhek_WASUTF8 0x02 /* Key is bytes here, but was supplied as utf8. */
|
||||
#define HVhek_NOTSHARED 0x04 /* This key isn't a shared hash key. */
|
||||
/* the following flags are options for functions, they are not stored in heks */
|
||||
#define HVhek_FREEKEY 0x100 /* Internal flag to say key is Newx()ed. */
|
||||
#define HVhek_PLACEHOLD 0x200 /* Internal flag to create placeholder.
|
||||
* (may change, but Storable is a core module) */
|
||||
#define HVhek_KEYCANONICAL 0x400 /* Internal flag - key is in canonical form.
|
||||
If the string is UTF-8, it cannot be
|
||||
converted to bytes. */
|
||||
#define HVhek_ENABLEHVKFLAGS (HVhek_UTF8|HVhek_WASUTF8)
|
||||
|
||||
#define HEK_UTF8(hek) (HEK_FLAGS(hek) & HVhek_UTF8)
|
||||
#define HEK_UTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_UTF8)
|
||||
#define HEK_UTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_UTF8)
|
||||
#define HEK_WASUTF8(hek) (HEK_FLAGS(hek) & HVhek_WASUTF8)
|
||||
#define HEK_WASUTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_WASUTF8)
|
||||
#define HEK_WASUTF8_off(hek) (HEK_FLAGS(hek) &= ~HVhek_WASUTF8)
|
||||
|
||||
/* calculate HV array allocation */
|
||||
#ifndef PERL_USE_LARGE_HV_ALLOC
|
||||
/* Default to allocating the correct size - default to assuming that malloc()
|
||||
is not broken and is efficient at allocating blocks sized at powers-of-two.
|
||||
*/
|
||||
# define PERL_HV_ARRAY_ALLOC_BYTES(size) ((size) * sizeof(HE*))
|
||||
#else
|
||||
# define MALLOC_OVERHEAD 16
|
||||
# define PERL_HV_ARRAY_ALLOC_BYTES(size) \
|
||||
(((size) < 64) \
|
||||
? (size) * sizeof(HE*) \
|
||||
: (size) * sizeof(HE*) * 2 - MALLOC_OVERHEAD)
|
||||
#endif
|
||||
|
||||
/* Flags for hv_iternext_flags. */
|
||||
#define HV_ITERNEXT_WANTPLACEHOLDERS 0x01 /* Don't skip placeholders. */
|
||||
|
||||
#define hv_iternext(hv) hv_iternext_flags(hv, 0)
|
||||
#define hv_magic(hv, gv, how) sv_magic(MUTABLE_SV(hv), MUTABLE_SV(gv), how, NULL, 0)
|
||||
#define hv_undef(hv) Perl_hv_undef_flags(aTHX_ hv, 0)
|
||||
|
||||
#define Perl_sharepvn(pv, len, hash) HEK_KEY(share_hek(pv, len, hash))
|
||||
#define sharepvn(pv, len, hash) Perl_sharepvn(pv, len, hash)
|
||||
|
||||
#define share_hek_hek(hek) \
|
||||
(++(((struct shared_he *)(((char *)hek) \
|
||||
- STRUCT_OFFSET(struct shared_he, \
|
||||
shared_he_hek))) \
|
||||
->shared_he_he.he_valu.hent_refcount), \
|
||||
hek)
|
||||
|
||||
#define hv_store_ent(hv, keysv, val, hash) \
|
||||
((HE *) hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISSTORE, \
|
||||
(val), (hash)))
|
||||
|
||||
#define hv_exists_ent(hv, keysv, hash) \
|
||||
cBOOL(hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash)))
|
||||
#define hv_fetch_ent(hv, keysv, lval, hash) \
|
||||
((HE *) hv_common((hv), (keysv), NULL, 0, 0, \
|
||||
((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash)))
|
||||
#define hv_delete_ent(hv, key, flags, hash) \
|
||||
(MUTABLE_SV(hv_common((hv), (key), NULL, 0, 0, (flags) | HV_DELETE, \
|
||||
NULL, (hash))))
|
||||
|
||||
#define hv_store_flags(hv, key, klen, val, hash, flags) \
|
||||
((SV**) hv_common((hv), NULL, (key), (klen), (flags), \
|
||||
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), \
|
||||
(hash)))
|
||||
|
||||
#define hv_store(hv, key, klen, val, hash) \
|
||||
((SV**) hv_common_key_len((hv), (key), (klen), \
|
||||
(HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \
|
||||
(val), (hash)))
|
||||
|
||||
|
||||
|
||||
#define hv_exists(hv, key, klen) \
|
||||
cBOOL(hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0))
|
||||
|
||||
#define hv_fetch(hv, key, klen, lval) \
|
||||
((SV**) hv_common_key_len((hv), (key), (klen), (lval) \
|
||||
? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \
|
||||
: HV_FETCH_JUST_SV, NULL, 0))
|
||||
|
||||
#define hv_delete(hv, key, klen, flags) \
|
||||
(MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \
|
||||
(flags) | HV_DELETE, NULL, 0)))
|
||||
|
||||
/* Provide 's' suffix subs for constant strings (and avoid needing to count
|
||||
* chars). See STR_WITH_LEN in handy.h - because these are macros we cant use
|
||||
* STR_WITH_LEN to do the work, we have to unroll it. */
|
||||
#define hv_existss(hv, key) \
|
||||
hv_exists((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1))
|
||||
|
||||
#define hv_fetchs(hv, key, lval) \
|
||||
hv_fetch((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (lval))
|
||||
|
||||
#define hv_deletes(hv, key, flags) \
|
||||
hv_delete((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (flags))
|
||||
|
||||
#define hv_name_sets(hv, name, flags) \
|
||||
hv_name_set((hv),ASSERT_IS_LITERAL(name),(sizeof(name)-1), flags)
|
||||
|
||||
#define hv_stores(hv, key, val) \
|
||||
hv_store((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (val), 0)
|
||||
|
||||
#ifdef PERL_CORE
|
||||
# define hv_storehek(hv, hek, val) \
|
||||
hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \
|
||||
HV_FETCH_ISSTORE|HV_FETCH_JUST_SV, (val), HEK_HASH(hek))
|
||||
# define hv_fetchhek(hv, hek, lval) \
|
||||
((SV **) \
|
||||
hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \
|
||||
(lval) \
|
||||
? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \
|
||||
: HV_FETCH_JUST_SV, \
|
||||
NULL, HEK_HASH(hek)))
|
||||
# define hv_deletehek(hv, hek, flags) \
|
||||
hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \
|
||||
(flags)|HV_DELETE, NULL, HEK_HASH(hek))
|
||||
#define hv_existshek(hv, hek) \
|
||||
cBOOL(hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \
|
||||
HV_FETCH_ISEXISTS, NULL, HEK_HASH(hek)))
|
||||
#endif
|
||||
|
||||
/* This refcounted he structure is used for storing the hints used for lexical
|
||||
pragmas. Without threads, it's basically struct he + refcount.
|
||||
With threads, life gets more complex as the structure needs to be shared
|
||||
between threads (because it hangs from OPs, which are shared), hence the
|
||||
alternate definition and mutex. */
|
||||
|
||||
struct refcounted_he;
|
||||
|
||||
/* flags for the refcounted_he API */
|
||||
#define REFCOUNTED_HE_KEY_UTF8 0x00000001
|
||||
#define REFCOUNTED_HE_EXISTS 0x00000002
|
||||
|
||||
#ifdef PERL_CORE
|
||||
|
||||
/* Gosh. This really isn't a good name any longer. */
|
||||
struct refcounted_he {
|
||||
struct refcounted_he *refcounted_he_next; /* next entry in chain */
|
||||
#ifdef USE_ITHREADS
|
||||
U32 refcounted_he_hash;
|
||||
U32 refcounted_he_keylen;
|
||||
#else
|
||||
HEK *refcounted_he_hek; /* hint key */
|
||||
#endif
|
||||
union {
|
||||
IV refcounted_he_u_iv;
|
||||
UV refcounted_he_u_uv;
|
||||
STRLEN refcounted_he_u_len;
|
||||
void *refcounted_he_u_ptr; /* Might be useful in future */
|
||||
} refcounted_he_val;
|
||||
U32 refcounted_he_refcnt; /* reference count */
|
||||
/* First byte is flags. Then NUL-terminated value. Then for ithreads,
|
||||
non-NUL terminated key. */
|
||||
char refcounted_he_data[1];
|
||||
};
|
||||
|
||||
/*
|
||||
=for apidoc m|SV *|refcounted_he_fetch_pvs|const struct refcounted_he *chain|"key"|U32 flags
|
||||
|
||||
Like L</refcounted_he_fetch_pvn>, but takes a literal string
|
||||
instead of a string/length pair, and no precomputed hash.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define refcounted_he_fetch_pvs(chain, key, flags) \
|
||||
Perl_refcounted_he_fetch_pvn(aTHX_ chain, STR_WITH_LEN(key), 0, flags)
|
||||
|
||||
/*
|
||||
=for apidoc m|struct refcounted_he *|refcounted_he_new_pvs|struct refcounted_he *parent|"key"|SV *value|U32 flags
|
||||
|
||||
Like L</refcounted_he_new_pvn>, but takes a literal string
|
||||
instead of a string/length pair, and no precomputed hash.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define refcounted_he_new_pvs(parent, key, value, flags) \
|
||||
Perl_refcounted_he_new_pvn(aTHX_ parent, STR_WITH_LEN(key), 0, value, flags)
|
||||
|
||||
/* Flag bits are HVhek_UTF8, HVhek_WASUTF8, then */
|
||||
#define HVrhek_undef 0x00 /* Value is undef. */
|
||||
#define HVrhek_delete 0x10 /* Value is placeholder - signifies delete. */
|
||||
#define HVrhek_IV 0x20 /* Value is IV. */
|
||||
#define HVrhek_UV 0x30 /* Value is UV. */
|
||||
#define HVrhek_PV 0x40 /* Value is a (byte) string. */
|
||||
#define HVrhek_PV_UTF8 0x50 /* Value is a (utf8) string. */
|
||||
/* Two spare. As these have to live in the optree, you can't store anything
|
||||
interpreter specific, such as SVs. :-( */
|
||||
#define HVrhek_typemask 0x70
|
||||
|
||||
#ifdef USE_ITHREADS
|
||||
/* A big expression to find the key offset */
|
||||
#define REF_HE_KEY(chain) \
|
||||
((((chain->refcounted_he_data[0] & 0x60) == 0x40) \
|
||||
? chain->refcounted_he_val.refcounted_he_u_len + 1 : 0) \
|
||||
+ 1 + chain->refcounted_he_data)
|
||||
#endif
|
||||
|
||||
# ifdef USE_ITHREADS
|
||||
# define HINTS_REFCNT_LOCK MUTEX_LOCK(&PL_hints_mutex)
|
||||
# define HINTS_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_hints_mutex)
|
||||
# else
|
||||
# define HINTS_REFCNT_LOCK NOOP
|
||||
# define HINTS_REFCNT_UNLOCK NOOP
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef USE_ITHREADS
|
||||
# define HINTS_REFCNT_INIT MUTEX_INIT(&PL_hints_mutex)
|
||||
# define HINTS_REFCNT_TERM MUTEX_DESTROY(&PL_hints_mutex)
|
||||
#else
|
||||
# define HINTS_REFCNT_INIT NOOP
|
||||
# define HINTS_REFCNT_TERM NOOP
|
||||
#endif
|
||||
|
||||
/* Hash actions
|
||||
* Passed in PERL_MAGIC_uvar calls
|
||||
*/
|
||||
#define HV_DISABLE_UVAR_XKEY 0x01
|
||||
/* We need to ensure that these don't clash with G_DISCARD, which is 2, as it
|
||||
is documented as being passed to hv_delete(). */
|
||||
#define HV_FETCH_ISSTORE 0x04
|
||||
#define HV_FETCH_ISEXISTS 0x08
|
||||
#define HV_FETCH_LVALUE 0x10
|
||||
#define HV_FETCH_JUST_SV 0x20
|
||||
#define HV_DELETE 0x40
|
||||
#define HV_FETCH_EMPTY_HE 0x80 /* Leave HeVAL null. */
|
||||
|
||||
/* Must not conflict with HVhek_UTF8 */
|
||||
#define HV_NAME_SETALL 0x02
|
||||
|
||||
/*
|
||||
=for apidoc newHV
|
||||
|
||||
Creates a new HV. The reference count is set to 1.
|
||||
|
||||
=cut
|
||||
*/
|
||||
|
||||
#define newHV() MUTABLE_HV(newSV_type(SVt_PVHV))
|
||||
|
||||
#include "hv_func.h"
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
|
|
@ -0,0 +1,189 @@
|
|||
/* hash a key
|
||||
*--------------------------------------------------------------------------------------
|
||||
* The "hash seed" feature was added in Perl 5.8.1 to perturb the results
|
||||
* to avoid "algorithmic complexity attacks".
|
||||
*
|
||||
* If USE_HASH_SEED is defined, hash randomisation is done by default
|
||||
* (see also perl.c:perl_parse() and S_init_tls_and_interp() and util.c:get_hash_seed())
|
||||
*/
|
||||
#ifndef PERL_SEEN_HV_FUNC_H_ /* compile once */
|
||||
#define PERL_SEEN_HV_FUNC_H_
|
||||
#include "hv_macro.h"
|
||||
|
||||
#if !( 0 \
|
||||
|| defined(PERL_HASH_FUNC_SIPHASH) \
|
||||
|| defined(PERL_HASH_FUNC_SIPHASH13) \
|
||||
|| defined(PERL_HASH_FUNC_ZAPHOD32) \
|
||||
)
|
||||
# ifdef CAN64BITHASH
|
||||
# define PERL_HASH_FUNC_SIPHASH13
|
||||
# else
|
||||
# define PERL_HASH_FUNC_ZAPHOD32
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef PERL_HASH_USE_SBOX32_ALSO
|
||||
# if defined(PERL_HASH_USE_SBOX32) || !defined(PERL_HASH_NO_SBOX32)
|
||||
# define PERL_HASH_USE_SBOX32_ALSO 1
|
||||
# else
|
||||
# define PERL_HASH_USE_SBOX32_ALSO 0
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#undef PERL_HASH_USE_SBOX32
|
||||
#undef PERL_HASH_NO_SBOX32
|
||||
#if PERL_HASH_USE_SBOX32_ALSO != 0
|
||||
# define PERL_HASH_USE_SBOX32
|
||||
#else
|
||||
# define PERL_HASH_NO_SBOX32
|
||||
#endif
|
||||
|
||||
#ifndef SBOX32_MAX_LEN
|
||||
#define SBOX32_MAX_LEN 24
|
||||
#endif
|
||||
|
||||
/* this must be after the SBOX32_MAX_LEN define */
|
||||
#include "sbox32_hash.h"
|
||||
|
||||
#if defined(PERL_HASH_FUNC_SIPHASH)
|
||||
# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_SIPHASH"
|
||||
# define PVT__PERL_HASH_FUNC "SIPHASH_2_4"
|
||||
# define PVT__PERL_HASH_WORD_TYPE U64
|
||||
# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE)
|
||||
# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 2)
|
||||
# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 4)
|
||||
# define PVT__PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
|
||||
# define PVT__PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_2_4_with_state((state),(U8*)(str),(len))
|
||||
#elif defined(PERL_HASH_FUNC_SIPHASH13)
|
||||
# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_SIPHASH13"
|
||||
# define PVT__PERL_HASH_FUNC "SIPHASH_1_3"
|
||||
# define PVT__PERL_HASH_WORD_TYPE U64
|
||||
# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE)
|
||||
# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 2)
|
||||
# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 4)
|
||||
# define PVT__PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
|
||||
# define PVT__PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_1_3_with_state((state),(const U8*)(str),(len))
|
||||
#elif defined(PERL_HASH_FUNC_ZAPHOD32)
|
||||
# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_ZAPHOD32"
|
||||
# define PVT__PERL_HASH_FUNC "ZAPHOD32"
|
||||
# define PVT__PERL_HASH_WORD_TYPE U32
|
||||
# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE)
|
||||
# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 3)
|
||||
# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 3)
|
||||
# define PVT__PERL_HASH_SEED_STATE(seed,state) zaphod32_seed_state(seed,state)
|
||||
# define PVT__PERL_HASH_WITH_STATE(state,str,len) (U32)zaphod32_hash_with_state((state),(U8*)(str),(len))
|
||||
# include "zaphod32_hash.h"
|
||||
#endif
|
||||
|
||||
#ifndef PVT__PERL_HASH_WITH_STATE
|
||||
#error "No hash function defined!"
|
||||
#endif
|
||||
#ifndef PVT__PERL_HASH_SEED_BYTES
|
||||
#error "PVT__PERL_HASH_SEED_BYTES not defined"
|
||||
#endif
|
||||
#ifndef PVT__PERL_HASH_FUNC
|
||||
#error "PVT__PERL_HASH_FUNC not defined"
|
||||
#endif
|
||||
|
||||
/* Some siphash static functions are needed by XS::APItest even when
|
||||
siphash isn't the current hash. For SipHash builds this needs to
|
||||
be before the S_perl_hash_with_seed() definition.
|
||||
*/
|
||||
#include "perl_siphash.h"
|
||||
|
||||
#define PVT__PERL_HASH_SEED_roundup(x, y) ( ( ( (x) + ( (y) - 1 ) ) / (y) ) * (y) )
|
||||
#define PVT_PERL_HASH_SEED_roundup(x) PVT__PERL_HASH_SEED_roundup(x,PVT__PERL_HASH_WORD_SIZE)
|
||||
|
||||
#define PL_hash_seed ((U8 *)PL_hash_seed_w)
|
||||
#define PL_hash_state ((U8 *)PL_hash_state_w)
|
||||
|
||||
#if PERL_HASH_USE_SBOX32_ALSO == 0
|
||||
# define PVT_PERL_HASH_FUNC PVT__PERL_HASH_FUNC
|
||||
# define PVT_PERL_HASH_SEED_BYTES PVT__PERL_HASH_SEED_BYTES
|
||||
# define PVT_PERL_HASH_STATE_BYTES PVT__PERL_HASH_STATE_BYTES
|
||||
# define PVT_PERL_HASH_SEED_STATE(seed,state) PVT__PERL_HASH_SEED_STATE(seed,state)
|
||||
# define PVT_PERL_HASH_WITH_STATE(state,str,len) PVT__PERL_HASH_WITH_STATE(state,str,len)
|
||||
#else
|
||||
|
||||
#define PVT_PERL_HASH_FUNC "SBOX32_WITH_" PVT__PERL_HASH_FUNC
|
||||
/* note the 4 in the below code comes from the fact the seed to initialize the SBOX is 128 bits */
|
||||
#define PVT_PERL_HASH_SEED_BYTES ( PVT__PERL_HASH_SEED_BYTES + (int)( 4 * sizeof(U32)) )
|
||||
|
||||
#define PVT_PERL_HASH_STATE_BYTES \
|
||||
( PVT__PERL_HASH_STATE_BYTES + ( ( 1 + ( 256 * SBOX32_MAX_LEN ) ) * sizeof(U32) ) )
|
||||
|
||||
#define PVT_PERL_HASH_SEED_STATE(seed,state) STMT_START { \
|
||||
PVT__PERL_HASH_SEED_STATE(seed,state); \
|
||||
sbox32_seed_state128(seed + PVT__PERL_HASH_SEED_BYTES, state + PVT__PERL_HASH_STATE_BYTES); \
|
||||
} STMT_END
|
||||
|
||||
#define PVT_PERL_HASH_WITH_STATE(state,str,len) \
|
||||
(LIKELY(len <= SBOX32_MAX_LEN) \
|
||||
? sbox32_hash_with_state((state + PVT__PERL_HASH_STATE_BYTES),(const U8*)(str),(len)) \
|
||||
: PVT__PERL_HASH_WITH_STATE((state),(str),(len)))
|
||||
|
||||
#endif
|
||||
|
||||
#define PERL_HASH_WITH_SEED(seed,hash,str,len) \
|
||||
(hash) = S_perl_hash_with_seed((const U8 *) seed, (const U8 *) str,len)
|
||||
#define PERL_HASH_WITH_STATE(state,hash,str,len) \
|
||||
(hash) = PVT_PERL_HASH_WITH_STATE((state),(const U8*)(str),(len))
|
||||
|
||||
#define PERL_HASH_SEED_STATE(seed,state) PVT_PERL_HASH_SEED_STATE(seed,state)
|
||||
#define PERL_HASH_SEED_BYTES PVT_PERL_HASH_SEED_roundup(PVT_PERL_HASH_SEED_BYTES)
|
||||
#define PERL_HASH_STATE_BYTES PVT_PERL_HASH_SEED_roundup(PVT_PERL_HASH_STATE_BYTES)
|
||||
#define PERL_HASH_FUNC PVT_PERL_HASH_FUNC
|
||||
|
||||
#define PERL_HASH_SEED_WORDS (PERL_HASH_SEED_BYTES/PVT__PERL_HASH_WORD_SIZE)
|
||||
#define PERL_HASH_STATE_WORDS (PERL_HASH_STATE_BYTES/PVT__PERL_HASH_WORD_SIZE)
|
||||
|
||||
#ifdef PERL_USE_SINGLE_CHAR_HASH_CACHE
|
||||
#define PERL_HASH(state,str,len) \
|
||||
(hash) = ((len) < 2 ? ( (len) == 0 ? PL_hash_chars[256] : PL_hash_chars[(U8)(str)[0]] ) \
|
||||
: PVT_PERL_HASH_WITH_STATE(PL_hash_state,(U8*)(str),(len)))
|
||||
#else
|
||||
#define PERL_HASH(hash,str,len) \
|
||||
PERL_HASH_WITH_STATE(PL_hash_state,hash,(U8*)(str),(len))
|
||||
#endif
|
||||
|
||||
/* Setup the hash seed, either we do things dynamically at start up,
|
||||
* including reading from the environment, or we randomly setup the
|
||||
* seed. The seed will be passed into the PERL_HASH_SEED_STATE() function
|
||||
* defined for the configuration defined for this perl, which will then
|
||||
* initialize whatever state it might need later in hashing. */
|
||||
|
||||
#ifndef PERL_HASH_SEED
|
||||
# if defined(USE_HASH_SEED)
|
||||
# define PERL_HASH_SEED PL_hash_seed
|
||||
# else
|
||||
/* this is a 512 bit seed, which should be more than enough for the
|
||||
* configuration of any of our hash functions (with or without sbox).
|
||||
* If you actually use a hard coded seed, you are strongly encouraged
|
||||
* to replace this with something else of the correct length
|
||||
* for the hash function you are using (24-32 bytes depending on build
|
||||
* options). Repeat, you are *STRONGLY* encouraged not to use the value
|
||||
* provided here.
|
||||
*/
|
||||
# define PERL_HASH_SEED \
|
||||
((const U8 *)"A long string of pseudorandomly " \
|
||||
"chosen bytes for hashing in Perl")
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* legacy - only mod_perl should be doing this. */
|
||||
#ifdef PERL_HASH_INTERNAL_ACCESS
|
||||
#define PERL_HASH_INTERNAL(hash,str,len) PERL_HASH(hash,str,len)
|
||||
#endif
|
||||
|
||||
PERL_STATIC_INLINE U32
|
||||
S_perl_hash_with_seed(const U8 * seed, const U8 *str, STRLEN len) {
|
||||
PVT__PERL_HASH_WORD_TYPE state[PERL_HASH_STATE_WORDS];
|
||||
PVT_PERL_HASH_SEED_STATE(seed,(U8*)state);
|
||||
return PVT_PERL_HASH_WITH_STATE((U8*)state,str,len);
|
||||
}
|
||||
|
||||
#endif /*compile once*/
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
#ifndef PERL_SEEN_HV_MACRO_H_ /* compile once */
|
||||
#define PERL_SEEN_HV_MACRO_H_
|
||||
|
||||
#if IVSIZE == 8
|
||||
#define CAN64BITHASH
|
||||
#endif
|
||||
|
||||
#ifdef CAN64BITHASH
|
||||
#ifndef U64TYPE
|
||||
/* This probably isn't going to work, but failing with a compiler error due to
|
||||
lack of uint64_t is no worse than failing right now with an #error. */
|
||||
#define U64 uint64_t
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------
|
||||
* Endianess and util macros
|
||||
*
|
||||
* The following 3 macros are defined in this section. The other macros defined
|
||||
* are only needed to help derive these 3.
|
||||
*
|
||||
* U8TO16_LE(x) Read a little endian unsigned 16-bit int
|
||||
* U8TO32_LE(x) Read a little endian unsigned 32-bit int
|
||||
* U8TO64_LE(x) Read a little endian unsigned 64-bit int
|
||||
* ROTL32(x,r) Rotate x left by r bits
|
||||
* ROTL64(x,r) Rotate x left by r bits
|
||||
* ROTR32(x,r) Rotate x right by r bits
|
||||
* ROTR64(x,r) Rotate x right by r bits
|
||||
*/
|
||||
|
||||
#ifndef U8TO16_LE
|
||||
#define _shifted_octet(type,ptr,idx,shift) (((type)(((const U8*)(ptr))[(idx)]))<<(shift))
|
||||
#if defined(USE_UNALIGNED_PTR_DEREF) && (BYTEORDER == 0x1234 || BYTEORDER == 0x12345678)
|
||||
#define U8TO16_LE(ptr) (*((const U16*)(ptr)))
|
||||
#define U8TO32_LE(ptr) (*((const U32*)(ptr)))
|
||||
#define U8TO64_LE(ptr) (*((const U64*)(ptr)))
|
||||
#else
|
||||
#define U8TO16_LE(ptr) (_shifted_octet(U16,(ptr),0, 0)|\
|
||||
_shifted_octet(U16,(ptr),1, 8))
|
||||
|
||||
#define U8TO32_LE(ptr) (_shifted_octet(U32,(ptr),0, 0)|\
|
||||
_shifted_octet(U32,(ptr),1, 8)|\
|
||||
_shifted_octet(U32,(ptr),2,16)|\
|
||||
_shifted_octet(U32,(ptr),3,24))
|
||||
|
||||
#define U8TO64_LE(ptr) (_shifted_octet(U64,(ptr),0, 0)|\
|
||||
_shifted_octet(U64,(ptr),1, 8)|\
|
||||
_shifted_octet(U64,(ptr),2,16)|\
|
||||
_shifted_octet(U64,(ptr),3,24)|\
|
||||
_shifted_octet(U64,(ptr),4,32)|\
|
||||
_shifted_octet(U64,(ptr),5,40)|\
|
||||
_shifted_octet(U64,(ptr),6,48)|\
|
||||
_shifted_octet(U64,(ptr),7,56))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* Find best way to ROTL32/ROTL64 */
|
||||
#if defined(_MSC_VER)
|
||||
#include <stdlib.h> /* Microsoft put _rotl declaration in here */
|
||||
#define ROTL32(x,r) _rotl(x,r)
|
||||
#define ROTR32(x,r) _rotr(x,r)
|
||||
#define ROTL64(x,r) _rotl64(x,r)
|
||||
#define ROTR64(x,r) _rotr64(x,r)
|
||||
#else
|
||||
/* gcc recognises this code and generates a rotate instruction for CPUs with one */
|
||||
#define ROTL32(x,r) (((U32)(x) << (r)) | ((U32)(x) >> (32 - (r))))
|
||||
#define ROTR32(x,r) (((U32)(x) << (32 - (r))) | ((U32)(x) >> (r)))
|
||||
#define ROTL64(x,r) ( ( (U64)(x) << (r) ) | ( (U64)(x) >> ( 64 - (r) ) ) )
|
||||
#define ROTR64(x,r) ( ( (U64)(x) << ( 64 - (r) ) ) | ( (U64)(x) >> (r) ) )
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef UV_IS_QUAD
|
||||
#define ROTL_UV(x,r) ROTL64(x,r)
|
||||
#define ROTR_UV(x,r) ROTL64(x,r)
|
||||
#else
|
||||
#define ROTL_UV(x,r) ROTL32(x,r)
|
||||
#define ROTR_UV(x,r) ROTR32(x,r)
|
||||
#endif
|
||||
#if IVSIZE == 8
|
||||
#define CAN64BITHASH
|
||||
#endif
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,375 @@
|
|||
/* invlist_inline.h
|
||||
*
|
||||
* Copyright (C) 2012 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*/
|
||||
|
||||
#ifndef PERL_INVLIST_INLINE_H_
|
||||
#define PERL_INVLIST_INLINE_H_
|
||||
|
||||
#if defined(PERL_IN_UTF8_C) \
|
||||
|| defined(PERL_IN_REGCOMP_ANY) \
|
||||
|| defined(PERL_IN_REGEXEC_C) \
|
||||
|| defined(PERL_IN_TOKE_C) \
|
||||
|| defined(PERL_IN_PP_C) \
|
||||
|| defined(PERL_IN_OP_C) \
|
||||
|| defined(PERL_IN_DOOP_C)
|
||||
|
||||
/* An element is in an inversion list iff its index is even numbered: 0, 2, 4,
|
||||
* etc */
|
||||
#define ELEMENT_RANGE_MATCHES_INVLIST(i) (! ((i) & 1))
|
||||
#define PREV_RANGE_MATCHES_INVLIST(i) (! ELEMENT_RANGE_MATCHES_INVLIST(i))
|
||||
|
||||
/* This converts to/from our UVs to what the SV code is expecting: bytes. */
|
||||
#define TO_INTERNAL_SIZE(x) ((x) * sizeof(UV))
|
||||
#define FROM_INTERNAL_SIZE(x) ((x)/ sizeof(UV))
|
||||
|
||||
PERL_STATIC_INLINE bool
|
||||
S_is_invlist(const SV* const invlist)
|
||||
{
|
||||
return invlist != NULL && SvTYPE(invlist) == SVt_INVLIST;
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE bool*
|
||||
S_get_invlist_offset_addr(SV* invlist)
|
||||
{
|
||||
/* Return the address of the field that says whether the inversion list is
|
||||
* offset (it contains 1) or not (contains 0) */
|
||||
PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR;
|
||||
|
||||
assert(is_invlist(invlist));
|
||||
|
||||
return &(((XINVLIST*) SvANY(invlist))->is_offset);
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE UV
|
||||
S__invlist_len(SV* const invlist)
|
||||
{
|
||||
/* Returns the current number of elements stored in the inversion list's
|
||||
* array */
|
||||
|
||||
PERL_ARGS_ASSERT__INVLIST_LEN;
|
||||
|
||||
assert(is_invlist(invlist));
|
||||
|
||||
return (SvCUR(invlist) == 0)
|
||||
? 0
|
||||
: FROM_INTERNAL_SIZE(SvCUR(invlist)) - *get_invlist_offset_addr(invlist);
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE bool
|
||||
S__invlist_contains_cp(SV* const invlist, const UV cp)
|
||||
{
|
||||
/* Does <invlist> contain code point <cp> as part of the set? */
|
||||
|
||||
IV index = _invlist_search(invlist, cp);
|
||||
|
||||
PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP;
|
||||
|
||||
return index >= 0 && ELEMENT_RANGE_MATCHES_INVLIST(index);
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE UV*
|
||||
S_invlist_array(SV* const invlist)
|
||||
{
|
||||
/* Returns the pointer to the inversion list's array. Every time the
|
||||
* length changes, this needs to be called in case malloc or realloc moved
|
||||
* it */
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_ARRAY;
|
||||
|
||||
/* Must not be empty. If these fail, you probably didn't check for <len>
|
||||
* being non-zero before trying to get the array */
|
||||
assert(_invlist_len(invlist));
|
||||
|
||||
/* The very first element always contains zero, The array begins either
|
||||
* there, or if the inversion list is offset, at the element after it.
|
||||
* The offset header field determines which; it contains 0 or 1 to indicate
|
||||
* how much additionally to add */
|
||||
assert(0 == *(SvPVX(invlist)));
|
||||
return ((UV *) SvPVX(invlist) + *get_invlist_offset_addr(invlist));
|
||||
}
|
||||
|
||||
#endif
|
||||
#if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C)
|
||||
|
||||
PERL_STATIC_INLINE void
|
||||
S_invlist_extend(pTHX_ SV* const invlist, const UV new_max)
|
||||
{
|
||||
/* Grow the maximum size of an inversion list */
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_EXTEND;
|
||||
|
||||
assert(SvTYPE(invlist) == SVt_INVLIST);
|
||||
|
||||
/* Add one to account for the zero element at the beginning which may not
|
||||
* be counted by the calling parameters */
|
||||
SvGROW((SV *)invlist, TO_INTERNAL_SIZE(new_max + 1));
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE void
|
||||
S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset)
|
||||
{
|
||||
/* Sets the current number of elements stored in the inversion list.
|
||||
* Updates SvCUR correspondingly */
|
||||
PERL_UNUSED_CONTEXT;
|
||||
PERL_ARGS_ASSERT_INVLIST_SET_LEN;
|
||||
|
||||
assert(SvTYPE(invlist) == SVt_INVLIST);
|
||||
|
||||
SvCUR_set(invlist,
|
||||
(len == 0)
|
||||
? 0
|
||||
: TO_INTERNAL_SIZE(len + offset));
|
||||
assert(SvLEN(invlist) == 0 || SvCUR(invlist) <= SvLEN(invlist));
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE SV*
|
||||
S_add_cp_to_invlist(pTHX_ SV* invlist, const UV cp) {
|
||||
return _add_range_to_invlist(invlist, cp, cp);
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE UV
|
||||
S_invlist_highest(SV* const invlist)
|
||||
{
|
||||
/* Returns the highest code point that matches an inversion list. This API
|
||||
* has an ambiguity, as it returns 0 under either the highest is actually
|
||||
* 0, or if the list is empty. If this distinction matters to you, check
|
||||
* for emptiness before calling this function */
|
||||
|
||||
UV len = _invlist_len(invlist);
|
||||
UV *array;
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_HIGHEST;
|
||||
|
||||
if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
array = invlist_array(invlist);
|
||||
|
||||
/* The last element in the array in the inversion list always starts a
|
||||
* range that goes to infinity. That range may be for code points that are
|
||||
* matched in the inversion list, or it may be for ones that aren't
|
||||
* matched. In the latter case, the highest code point in the set is one
|
||||
* less than the beginning of this range; otherwise it is the final element
|
||||
* of this range: infinity */
|
||||
return (ELEMENT_RANGE_MATCHES_INVLIST(len - 1))
|
||||
? UV_MAX
|
||||
: array[len - 1] - 1;
|
||||
}
|
||||
|
||||
# if defined(PERL_IN_REGCOMP_ANY)
|
||||
|
||||
PERL_STATIC_INLINE UV
|
||||
S_invlist_highest_range_start(SV* const invlist)
|
||||
{
|
||||
/* Returns the lowest code point of the highest range in the inversion
|
||||
* list parameter. This API has an ambiguity: it returns 0 either when
|
||||
* the lowest such point is actually 0 or when the list is empty. If this
|
||||
* distinction matters to you, check for emptiness before calling this
|
||||
* function. */
|
||||
|
||||
UV len = _invlist_len(invlist);
|
||||
UV *array;
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_HIGHEST_RANGE_START;
|
||||
|
||||
if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
array = invlist_array(invlist);
|
||||
|
||||
/* The last element in the array in the inversion list always starts a
|
||||
* range that goes to infinity. That range may be for code points that are
|
||||
* matched in the inversion list, or it may be for ones that aren't
|
||||
* matched. In the first case, the lowest code point in the matching range
|
||||
* is that the one that started the range. If the other case, the final
|
||||
* matching range begins at the next element down (which may be 0 in the
|
||||
* edge case). */
|
||||
return (ELEMENT_RANGE_MATCHES_INVLIST(len - 1))
|
||||
? array[len - 1]
|
||||
: len == 1
|
||||
? 0
|
||||
: array[len - 2];
|
||||
}
|
||||
|
||||
# endif
|
||||
#endif
|
||||
#if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_OP_C)
|
||||
|
||||
PERL_STATIC_INLINE STRLEN*
|
||||
S_get_invlist_iter_addr(SV* invlist)
|
||||
{
|
||||
/* Return the address of the UV that contains the current iteration
|
||||
* position */
|
||||
|
||||
PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR;
|
||||
|
||||
assert(is_invlist(invlist));
|
||||
|
||||
return &(((XINVLIST*) SvANY(invlist))->iterator);
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE void
|
||||
S_invlist_iterinit(SV* invlist) /* Initialize iterator for invlist */
|
||||
{
|
||||
PERL_ARGS_ASSERT_INVLIST_ITERINIT;
|
||||
|
||||
*get_invlist_iter_addr(invlist) = 0;
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE void
|
||||
S_invlist_iterfinish(SV* invlist)
|
||||
{
|
||||
/* Terminate iterator for invlist. This is to catch development errors.
|
||||
* Any iteration that is interrupted before completed should call this
|
||||
* function. Functions that add code points anywhere else but to the end
|
||||
* of an inversion list assert that they are not in the middle of an
|
||||
* iteration. If they were, the addition would make the iteration
|
||||
* problematical: if the iteration hadn't reached the place where things
|
||||
* were being added, it would be ok */
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_ITERFINISH;
|
||||
|
||||
*get_invlist_iter_addr(invlist) = (STRLEN) UV_MAX;
|
||||
}
|
||||
|
||||
STATIC bool
|
||||
S_invlist_iternext(SV* invlist, UV* start, UV* end)
|
||||
{
|
||||
/* An C<invlist_iterinit> call on <invlist> must be used to set this up.
|
||||
* This call sets in <*start> and <*end>, the next range in <invlist>.
|
||||
* Returns <TRUE> if successful and the next call will return the next
|
||||
* range; <FALSE> if was already at the end of the list. If the latter,
|
||||
* <*start> and <*end> are unchanged, and the next call to this function
|
||||
* will start over at the beginning of the list */
|
||||
|
||||
STRLEN* pos = get_invlist_iter_addr(invlist);
|
||||
UV len = _invlist_len(invlist);
|
||||
UV *array;
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_ITERNEXT;
|
||||
|
||||
if (*pos >= len) {
|
||||
*pos = (STRLEN) UV_MAX; /* Force iterinit() to be required next time */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
array = invlist_array(invlist);
|
||||
|
||||
*start = array[(*pos)++];
|
||||
|
||||
if (*pos >= len) {
|
||||
*end = UV_MAX;
|
||||
}
|
||||
else {
|
||||
*end = array[(*pos)++] - 1;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifndef PERL_IN_REGCOMP_ANY
|
||||
|
||||
/* These symbols are only needed later in regcomp.c */
|
||||
# undef TO_INTERNAL_SIZE
|
||||
# undef FROM_INTERNAL_SIZE
|
||||
#endif
|
||||
|
||||
#ifdef PERL_IN_REGCOMP_ANY
|
||||
PERL_STATIC_INLINE
|
||||
bool
|
||||
S_invlist_is_iterating(const SV* const invlist)
|
||||
{
|
||||
PERL_ARGS_ASSERT_INVLIST_IS_ITERATING;
|
||||
|
||||
/* get_invlist_iter_addr()'s sv is non-const only because it returns a
|
||||
* value that can be used to modify the invlist, it doesn't modify the
|
||||
* invlist itself */
|
||||
return *(get_invlist_iter_addr((SV*)invlist)) < (STRLEN) UV_MAX;
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE
|
||||
SV *
|
||||
S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style)
|
||||
{
|
||||
/* Get the contents of an inversion list into a string SV so that they can
|
||||
* be printed out. If 'traditional_style' is TRUE, it uses the format
|
||||
* traditionally done for debug tracing; otherwise it uses a format
|
||||
* suitable for just copying to the output, with blanks between ranges and
|
||||
* a dash between range components */
|
||||
|
||||
UV start, end;
|
||||
SV* output;
|
||||
const char intra_range_delimiter = (traditional_style ? '\t' : '-');
|
||||
const char inter_range_delimiter = (traditional_style ? '\n' : ' ');
|
||||
|
||||
if (traditional_style) {
|
||||
output = newSVpvs("\n");
|
||||
}
|
||||
else {
|
||||
output = newSVpvs("");
|
||||
}
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_CONTENTS;
|
||||
|
||||
assert(! invlist_is_iterating(invlist));
|
||||
|
||||
invlist_iterinit(invlist);
|
||||
while (invlist_iternext(invlist, &start, &end)) {
|
||||
if (end == UV_MAX) {
|
||||
Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%cINFTY%c",
|
||||
start, intra_range_delimiter,
|
||||
inter_range_delimiter);
|
||||
}
|
||||
else if (end != start) {
|
||||
Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%c%04" UVXf "%c",
|
||||
start,
|
||||
intra_range_delimiter,
|
||||
end, inter_range_delimiter);
|
||||
}
|
||||
else {
|
||||
Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%c",
|
||||
start, inter_range_delimiter);
|
||||
}
|
||||
}
|
||||
|
||||
if (SvCUR(output) && ! traditional_style) {/* Get rid of trailing blank */
|
||||
SvCUR_set(output, SvCUR(output) - 1);
|
||||
}
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
PERL_STATIC_INLINE
|
||||
UV
|
||||
S_invlist_lowest(SV* const invlist)
|
||||
{
|
||||
/* Returns the lowest code point that matches an inversion list. This API
|
||||
* has an ambiguity, as it returns 0 under either the lowest is actually
|
||||
* 0, or if the list is empty. If this distinction matters to you, check
|
||||
* for emptiness before calling this function */
|
||||
|
||||
UV len = _invlist_len(invlist);
|
||||
UV *array;
|
||||
|
||||
PERL_ARGS_ASSERT_INVLIST_LOWEST;
|
||||
|
||||
if (len == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
array = invlist_array(invlist);
|
||||
|
||||
return array[0];
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* PERL_INVLIST_INLINE_H_ */
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -0,0 +1,284 @@
|
|||
/* -*- mode: C; buffer-read-only: t -*-
|
||||
*
|
||||
* keywords.h
|
||||
*
|
||||
* Copyright (C) 1994, 1995, 1996, 1997, 1999, 2000, 2001, 2002, 2005,
|
||||
* 2006, 2007 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
|
||||
* This file is built by regen/keywords.pl from its data.
|
||||
* Any changes made here will be lost!
|
||||
*/
|
||||
|
||||
#define KEY_NULL 0
|
||||
#define KEY___FILE__ 1
|
||||
#define KEY___LINE__ 2
|
||||
#define KEY___PACKAGE__ 3
|
||||
#define KEY___CLASS__ 4
|
||||
#define KEY___DATA__ 5
|
||||
#define KEY___END__ 6
|
||||
#define KEY___SUB__ 7
|
||||
#define KEY_ADJUST 8
|
||||
#define KEY_AUTOLOAD 9
|
||||
#define KEY_BEGIN 10
|
||||
#define KEY_UNITCHECK 11
|
||||
#define KEY_DESTROY 12
|
||||
#define KEY_END 13
|
||||
#define KEY_INIT 14
|
||||
#define KEY_CHECK 15
|
||||
#define KEY_abs 16
|
||||
#define KEY_accept 17
|
||||
#define KEY_alarm 18
|
||||
#define KEY_and 19
|
||||
#define KEY_atan2 20
|
||||
#define KEY_bind 21
|
||||
#define KEY_binmode 22
|
||||
#define KEY_bless 23
|
||||
#define KEY_break 24
|
||||
#define KEY_caller 25
|
||||
#define KEY_catch 26
|
||||
#define KEY_chdir 27
|
||||
#define KEY_chmod 28
|
||||
#define KEY_chomp 29
|
||||
#define KEY_chop 30
|
||||
#define KEY_chown 31
|
||||
#define KEY_chr 32
|
||||
#define KEY_chroot 33
|
||||
#define KEY_class 34
|
||||
#define KEY_close 35
|
||||
#define KEY_closedir 36
|
||||
#define KEY_cmp 37
|
||||
#define KEY_connect 38
|
||||
#define KEY_continue 39
|
||||
#define KEY_cos 40
|
||||
#define KEY_crypt 41
|
||||
#define KEY_dbmclose 42
|
||||
#define KEY_dbmopen 43
|
||||
#define KEY_default 44
|
||||
#define KEY_defer 45
|
||||
#define KEY_defined 46
|
||||
#define KEY_delete 47
|
||||
#define KEY_die 48
|
||||
#define KEY_do 49
|
||||
#define KEY_dump 50
|
||||
#define KEY_each 51
|
||||
#define KEY_else 52
|
||||
#define KEY_elsif 53
|
||||
#define KEY_endgrent 54
|
||||
#define KEY_endhostent 55
|
||||
#define KEY_endnetent 56
|
||||
#define KEY_endprotoent 57
|
||||
#define KEY_endpwent 58
|
||||
#define KEY_endservent 59
|
||||
#define KEY_eof 60
|
||||
#define KEY_eq 61
|
||||
#define KEY_eval 62
|
||||
#define KEY_evalbytes 63
|
||||
#define KEY_exec 64
|
||||
#define KEY_exists 65
|
||||
#define KEY_exit 66
|
||||
#define KEY_exp 67
|
||||
#define KEY_fc 68
|
||||
#define KEY_fcntl 69
|
||||
#define KEY_field 70
|
||||
#define KEY_fileno 71
|
||||
#define KEY_finally 72
|
||||
#define KEY_flock 73
|
||||
#define KEY_for 74
|
||||
#define KEY_foreach 75
|
||||
#define KEY_fork 76
|
||||
#define KEY_format 77
|
||||
#define KEY_formline 78
|
||||
#define KEY_ge 79
|
||||
#define KEY_getc 80
|
||||
#define KEY_getgrent 81
|
||||
#define KEY_getgrgid 82
|
||||
#define KEY_getgrnam 83
|
||||
#define KEY_gethostbyaddr 84
|
||||
#define KEY_gethostbyname 85
|
||||
#define KEY_gethostent 86
|
||||
#define KEY_getlogin 87
|
||||
#define KEY_getnetbyaddr 88
|
||||
#define KEY_getnetbyname 89
|
||||
#define KEY_getnetent 90
|
||||
#define KEY_getpeername 91
|
||||
#define KEY_getpgrp 92
|
||||
#define KEY_getppid 93
|
||||
#define KEY_getpriority 94
|
||||
#define KEY_getprotobyname 95
|
||||
#define KEY_getprotobynumber 96
|
||||
#define KEY_getprotoent 97
|
||||
#define KEY_getpwent 98
|
||||
#define KEY_getpwnam 99
|
||||
#define KEY_getpwuid 100
|
||||
#define KEY_getservbyname 101
|
||||
#define KEY_getservbyport 102
|
||||
#define KEY_getservent 103
|
||||
#define KEY_getsockname 104
|
||||
#define KEY_getsockopt 105
|
||||
#define KEY_given 106
|
||||
#define KEY_glob 107
|
||||
#define KEY_gmtime 108
|
||||
#define KEY_goto 109
|
||||
#define KEY_grep 110
|
||||
#define KEY_gt 111
|
||||
#define KEY_hex 112
|
||||
#define KEY_if 113
|
||||
#define KEY_index 114
|
||||
#define KEY_int 115
|
||||
#define KEY_ioctl 116
|
||||
#define KEY_isa 117
|
||||
#define KEY_join 118
|
||||
#define KEY_keys 119
|
||||
#define KEY_kill 120
|
||||
#define KEY_last 121
|
||||
#define KEY_lc 122
|
||||
#define KEY_lcfirst 123
|
||||
#define KEY_le 124
|
||||
#define KEY_length 125
|
||||
#define KEY_link 126
|
||||
#define KEY_listen 127
|
||||
#define KEY_local 128
|
||||
#define KEY_localtime 129
|
||||
#define KEY_lock 130
|
||||
#define KEY_log 131
|
||||
#define KEY_lstat 132
|
||||
#define KEY_lt 133
|
||||
#define KEY_m 134
|
||||
#define KEY_map 135
|
||||
#define KEY_method 136
|
||||
#define KEY_mkdir 137
|
||||
#define KEY_msgctl 138
|
||||
#define KEY_msgget 139
|
||||
#define KEY_msgrcv 140
|
||||
#define KEY_msgsnd 141
|
||||
#define KEY_my 142
|
||||
#define KEY_ne 143
|
||||
#define KEY_next 144
|
||||
#define KEY_no 145
|
||||
#define KEY_not 146
|
||||
#define KEY_oct 147
|
||||
#define KEY_open 148
|
||||
#define KEY_opendir 149
|
||||
#define KEY_or 150
|
||||
#define KEY_ord 151
|
||||
#define KEY_our 152
|
||||
#define KEY_pack 153
|
||||
#define KEY_package 154
|
||||
#define KEY_pipe 155
|
||||
#define KEY_pop 156
|
||||
#define KEY_pos 157
|
||||
#define KEY_print 158
|
||||
#define KEY_printf 159
|
||||
#define KEY_prototype 160
|
||||
#define KEY_push 161
|
||||
#define KEY_q 162
|
||||
#define KEY_qq 163
|
||||
#define KEY_qr 164
|
||||
#define KEY_quotemeta 165
|
||||
#define KEY_qw 166
|
||||
#define KEY_qx 167
|
||||
#define KEY_rand 168
|
||||
#define KEY_read 169
|
||||
#define KEY_readdir 170
|
||||
#define KEY_readline 171
|
||||
#define KEY_readlink 172
|
||||
#define KEY_readpipe 173
|
||||
#define KEY_recv 174
|
||||
#define KEY_redo 175
|
||||
#define KEY_ref 176
|
||||
#define KEY_rename 177
|
||||
#define KEY_require 178
|
||||
#define KEY_reset 179
|
||||
#define KEY_return 180
|
||||
#define KEY_reverse 181
|
||||
#define KEY_rewinddir 182
|
||||
#define KEY_rindex 183
|
||||
#define KEY_rmdir 184
|
||||
#define KEY_s 185
|
||||
#define KEY_say 186
|
||||
#define KEY_scalar 187
|
||||
#define KEY_seek 188
|
||||
#define KEY_seekdir 189
|
||||
#define KEY_select 190
|
||||
#define KEY_semctl 191
|
||||
#define KEY_semget 192
|
||||
#define KEY_semop 193
|
||||
#define KEY_send 194
|
||||
#define KEY_setgrent 195
|
||||
#define KEY_sethostent 196
|
||||
#define KEY_setnetent 197
|
||||
#define KEY_setpgrp 198
|
||||
#define KEY_setpriority 199
|
||||
#define KEY_setprotoent 200
|
||||
#define KEY_setpwent 201
|
||||
#define KEY_setservent 202
|
||||
#define KEY_setsockopt 203
|
||||
#define KEY_shift 204
|
||||
#define KEY_shmctl 205
|
||||
#define KEY_shmget 206
|
||||
#define KEY_shmread 207
|
||||
#define KEY_shmwrite 208
|
||||
#define KEY_shutdown 209
|
||||
#define KEY_sin 210
|
||||
#define KEY_sleep 211
|
||||
#define KEY_socket 212
|
||||
#define KEY_socketpair 213
|
||||
#define KEY_sort 214
|
||||
#define KEY_splice 215
|
||||
#define KEY_split 216
|
||||
#define KEY_sprintf 217
|
||||
#define KEY_sqrt 218
|
||||
#define KEY_srand 219
|
||||
#define KEY_stat 220
|
||||
#define KEY_state 221
|
||||
#define KEY_study 222
|
||||
#define KEY_sub 223
|
||||
#define KEY_substr 224
|
||||
#define KEY_symlink 225
|
||||
#define KEY_syscall 226
|
||||
#define KEY_sysopen 227
|
||||
#define KEY_sysread 228
|
||||
#define KEY_sysseek 229
|
||||
#define KEY_system 230
|
||||
#define KEY_syswrite 231
|
||||
#define KEY_tell 232
|
||||
#define KEY_telldir 233
|
||||
#define KEY_tie 234
|
||||
#define KEY_tied 235
|
||||
#define KEY_time 236
|
||||
#define KEY_times 237
|
||||
#define KEY_tr 238
|
||||
#define KEY_try 239
|
||||
#define KEY_truncate 240
|
||||
#define KEY_uc 241
|
||||
#define KEY_ucfirst 242
|
||||
#define KEY_umask 243
|
||||
#define KEY_undef 244
|
||||
#define KEY_unless 245
|
||||
#define KEY_unlink 246
|
||||
#define KEY_unpack 247
|
||||
#define KEY_unshift 248
|
||||
#define KEY_untie 249
|
||||
#define KEY_until 250
|
||||
#define KEY_use 251
|
||||
#define KEY_utime 252
|
||||
#define KEY_values 253
|
||||
#define KEY_vec 254
|
||||
#define KEY_wait 255
|
||||
#define KEY_waitpid 256
|
||||
#define KEY_wantarray 257
|
||||
#define KEY_warn 258
|
||||
#define KEY_when 259
|
||||
#define KEY_while 260
|
||||
#define KEY_write 261
|
||||
#define KEY_x 262
|
||||
#define KEY_xor 263
|
||||
#define KEY_y 264
|
||||
|
||||
/* Generated from:
|
||||
* c8b75109fa56ce3ea3f30503a3b398f02e49036dc60d5fb36ea5ba9ffd6c596e regen/keywords.pl
|
||||
* ex: set ro ft=c: */
|
||||
|
|
@ -0,0 +1,796 @@
|
|||
/* -*- mode: C; buffer-read-only: t -*-
|
||||
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
|
||||
* This file is built by regen/mk_PL_charclass.pl from Unicode::UCD.
|
||||
* Any changes made here will be lost!
|
||||
*/
|
||||
|
||||
/* For code points whose position is not the same as Unicode, both are shown
|
||||
* in the comment*/
|
||||
|
||||
#if 'A' == 65 /* ASCII/Latin1 */
|
||||
/* U+00 NUL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+01 SOH */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+02 STX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+03 ETX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+04 EOT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+05 ENQ */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+06 ACK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+07 BEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+08 BS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+09 HT */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* U+0A LF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0B VT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0C FF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0D CR */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0E SO */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+0F SI */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+10 DLE */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+11 DC1 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+12 DC2 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+13 DC3 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+14 DC4 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+15 NAK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+16 SYN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+17 ETB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+18 CAN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+19 EOM */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1A SUB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1B ESC */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1C FS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1D GS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1E RS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1F US */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+20 SP */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* U+21 '!' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+22 '"' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+23 '#' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+24 '$' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+25 '%' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+26 '&' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+27 "'" */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+28 '(' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+29 ')' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+2A '*' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+2B '+' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+2C ',' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+2D '-' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+2E '.' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+2F '/' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+30 '0' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+31 '1' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+32 '2' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+33 '3' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+34 '4' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+35 '5' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+36 '6' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+37 '7' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+38 '8' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+39 '9' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+3A ':' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+3B ';' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+3C '<' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+3D '=' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+3E '>' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+3F '?' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+40 '@' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+41 'A' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+42 'B' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+43 'C' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+44 'D' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+45 'E' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+46 'F' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+47 'G' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+48 'H' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+49 'I' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+4A 'J' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+4B 'K' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+4C 'L' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+4D 'M' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+4E 'N' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+4F 'O' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+50 'P' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+51 'Q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+52 'R' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+53 'S' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+54 'T' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+55 'U' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+56 'V' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+57 'W' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+58 'X' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+59 'Y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+5A 'Z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+5B '[' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+5C '\' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+5D ']' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+5E '^' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+5F '_' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+60 '`' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+61 'a' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+62 'b' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+63 'c' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+64 'd' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+65 'e' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+66 'f' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* U+67 'g' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+68 'h' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+69 'i' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+6A 'j' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+6B 'k' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+6C 'l' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+6D 'm' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+6E 'n' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+6F 'o' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+70 'p' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+71 'q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+72 'r' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+73 's' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+74 't' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+75 'u' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+76 'v' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+77 'w' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+78 'x' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+79 'y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+7A 'z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+7B '{' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+7C '|' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+7D '}' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+7E '~' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+7F DEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+80 PAD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+81 HOP */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+82 BPH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+83 NBH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+84 IND */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+85 NEL */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+86 SSA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+87 ESA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+88 HTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+89 HTJ */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+8A VTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+8B PLD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+8C PLU */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+8D RI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+8E SS2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+8F SS3 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+90 DCS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+91 PU1 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+92 PU2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+93 STS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+94 CCH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+95 MW */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+96 SPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+97 EPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+98 SOS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+99 SGC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+9A SCI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+9B CSI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+9C ST */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+9D OSC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+9E PM */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+9F APC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A0 NBSP */ (1U<<CC_BLANK_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* U+A1 INVERTED '!' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A2 CENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A3 POUND */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A4 CURRENCY */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A5 YEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A6 BROKEN BAR */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A7 SECTION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+A8 DIAERESIS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+A9 COPYRIGHT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+AA FEMININE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+AB LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+AC NOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+AD SOFT HYPHEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+AE REGISTERED */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+AF MACRON */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+B0 DEGREE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+B1 PLUS-MINUS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+B2 SUPERSCRIPT 2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+B3 SUPERSCRIPT 3 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+B4 ACUTE ACCENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+B5 MICRO */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+B6 PILCROW */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+B7 MIDDLE DOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_),
|
||||
/* U+B8 CEDILLA */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+B9 SUPERSCRIPT 1 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+BA MASCULINE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+BB RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+BC 1/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+BD 1/2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+BE 3/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* U+BF INVERTED '?' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+C0 A with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C1 A with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C2 A with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C3 A with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C4 A with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C5 A with RING */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C6 AE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C7 C with CEDILLA */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C8 E with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+C9 E with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+CA E with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+CB E with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+CC I with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+CD I with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+CE I with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+CF I with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D0 ETH */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D1 N with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D2 O with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D3 O with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D4 O with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D5 O with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D6 O with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D7 MULTIPLICATION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+D8 O with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+D9 U with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+DA U with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+DB U with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+DC U with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+DD Y with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+DE THORN */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+DF sharp s */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E0 a with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E1 a with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E2 a with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E3 a with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E4 a with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E5 a with ring */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E6 ae */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E7 c with cedilla */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E8 e with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+E9 e with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+EA e with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+EB e with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+EC i with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+ED i with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+EE i with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+EF i with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F0 eth */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F1 n with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F2 o with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F3 o with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F4 o with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F5 o with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F6 o with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F7 DIVISION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+F8 o with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+F9 u with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+FA u with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+FB u with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+FC u with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+FD y with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+FE thorn */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* U+FF y with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)
|
||||
|
||||
#endif /* ASCII/Latin1 */
|
||||
|
||||
#if 'A' == 193 /* EBCDIC 1047 */ \
|
||||
&& '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
|
||||
&& '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
|
||||
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
|
||||
/* U+00 NUL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+01 SOH */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+02 STX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+03 ETX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x04 U+9C ST */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x05 U+09 HT */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* 0x06 U+86 SSA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x07 U+7F DEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x08 U+97 EPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x09 U+8D RI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x0A U+8E SS2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+0B VT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0C FF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0D CR */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0E SO */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+0F SI */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+10 DLE */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+11 DC1 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+12 DC2 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+13 DC3 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x14 U+9D OSC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x15 U+0A LF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* 0x16 U+08 BS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x17 U+87 ESA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+18 CAN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+19 EOM */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x1A U+92 PU2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x1B U+8F SS3 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1C FS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1D GS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1E RS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1F US */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x20 U+80 PAD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x21 U+81 HOP */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x22 U+82 BPH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x23 U+83 NBH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x24 U+84 IND */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x25 U+85 NEL */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* 0x26 U+17 ETB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x27 U+1B ESC */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x28 U+88 HTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x29 U+89 HTJ */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2A U+8A VTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2B U+8B PLD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2C U+8C PLU */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2D U+05 ENQ */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2E U+06 ACK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2F U+07 BEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x30 U+90 DCS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x31 U+91 PU1 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x32 U+16 SYN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x33 U+93 STS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x34 U+94 CCH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x35 U+95 MW */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x36 U+96 SPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x37 U+04 EOT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x38 U+98 SOS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x39 U+99 SGC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3A U+9A SCI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3B U+9B CSI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3C U+14 DC4 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3D U+15 NAK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3E U+9E PM */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3F U+1A SUB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x40 U+20 SP */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* 0x41 U+A0 NBSP */ (1U<<CC_BLANK_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* 0x42 U+E2 I8=A1 a with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x44 U+E0 I8=A3 a with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x45 U+E1 I8=A4 a with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x46 U+E3 I8=A5 a with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x47 U+E5 I8=A6 a with ring */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x48 U+E7 I8=A7 c with cedilla */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x49 U+F1 I8=A8 n with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x4A U+A2 I8=A9 CENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4B U+2E '.' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4C U+3C '<' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4D U+28 '(' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4E U+2B '+' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4F U+7C '|' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x50 U+26 '&' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x51 U+E9 I8=AA e with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x52 U+EA I8=AB e with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x53 U+EB I8=AC e with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x54 U+E8 I8=AD e with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x55 U+ED I8=AE i with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x56 U+EE I8=AF i with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x57 U+EF I8=B0 i with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x58 U+EC I8=B1 i with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x59 U+DF I8=B2 sharp s */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x5A U+21 '!' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5B U+24 '$' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5C U+2A '*' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5D U+29 ')' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5E U+3B ';' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5F U+5E '^' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x60 U+2D '-' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x61 U+2F '/' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x62 U+C2 I8=B3 A with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x63 U+C4 I8=B4 A with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x64 U+C0 I8=B5 A with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x65 U+C1 I8=B6 A with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x66 U+C3 I8=B7 A with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x67 U+C5 I8=B8 A with RING */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x68 U+C7 I8=B9 C with CEDILLA */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x69 U+D1 I8=BA N with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x6A U+A6 I8=BB BROKEN BAR */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6B U+2C ',' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6C U+25 '%' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6D U+5F '_' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x6E U+3E '>' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6F U+3F '?' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x70 U+F8 I8=BC o with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x71 U+C9 I8=BD E with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x72 U+CA I8=BE E with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x73 U+CB I8=BF E with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x74 U+C8 I8=C0 E with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x75 U+CD I8=C1 I with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x76 U+CE I8=C2 I with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x77 U+CF I8=C3 I with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x78 U+CC I8=C4 I with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x79 U+60 '`' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7A U+3A ':' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7B U+23 '#' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7C U+40 '@' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7D U+27 "'" */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7E U+3D '=' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7F U+22 '"' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x80 U+D8 I8=C5 O with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x81 U+61 'a' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x82 U+62 'b' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x83 U+63 'c' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x84 U+64 'd' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x85 U+65 'e' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x86 U+66 'f' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x87 U+67 'g' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x88 U+68 'h' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x89 U+69 'i' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8A U+AB I8=C6 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x8B U+BB I8=C7 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x8C U+F0 I8=C8 eth */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8D U+FD I8=C9 y with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8E U+FE I8=CA thorn */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8F U+B1 I8=CB PLUS-MINUS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x90 U+B0 I8=CC DEGREE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x91 U+6A 'j' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x92 U+6B 'k' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x93 U+6C 'l' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x94 U+6D 'm' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x95 U+6E 'n' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x96 U+6F 'o' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x97 U+70 'p' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x98 U+71 'q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x99 U+72 'r' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9A U+AA I8=CD FEMININE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9B U+BA I8=CE MASCULINE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9C U+E6 I8=CF ae */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9D U+B8 I8=D0 CEDILLA */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0x9E U+C6 I8=D1 AE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9F U+A4 I8=D2 CURRENCY */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xA0 U+B5 I8=D3 MICRO */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA1 U+7E '~' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xA2 U+73 's' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA3 U+74 't' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA4 U+75 'u' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA5 U+76 'v' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA6 U+77 'w' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA7 U+78 'x' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA8 U+79 'y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA9 U+7A 'z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xAA U+A1 I8=D4 INVERTED '!' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xAB U+BF I8=D5 INVERTED '?' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xAC U+D0 I8=D6 ETH */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xAD U+5B '[' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xAE U+DE I8=D7 THORN */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xAF U+AE I8=D8 REGISTERED */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB0 U+AC I8=D9 NOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB1 U+A3 I8=DA POUND */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB2 U+A5 I8=DB YEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB3 U+B7 I8=DC MIDDLE DOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_),
|
||||
/* 0xB4 U+A9 I8=DD COPYRIGHT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB5 U+A7 I8=DE SECTION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+B6 I8=DF PILCROW */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB7 U+BC I8=E0 1/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xB8 U+BD I8=E1 1/2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xB9 U+BE I8=E2 3/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBA U+DD I8=E3 Y with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xBB U+A8 I8=E4 DIAERESIS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBC U+AF I8=E5 MACRON */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBD U+5D ']' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xC0 U+7B '{' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xC1 U+41 'A' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC2 U+42 'B' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC3 U+43 'C' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC4 U+44 'D' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC5 U+45 'E' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC6 U+46 'F' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC7 U+47 'G' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xC8 U+48 'H' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xC9 U+49 'I' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCD U+F2 I8=EB o with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCE U+F3 I8=EC o with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCF U+F5 I8=ED o with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD0 U+7D '}' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xD1 U+4A 'J' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD2 U+4B 'K' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD3 U+4C 'L' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD4 U+4D 'M' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD5 U+4E 'N' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD6 U+4F 'O' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD7 U+50 'P' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD8 U+51 'Q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD9 U+52 'R' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xDB U+FB I8=EF u with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDD U+F9 I8=F1 u with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDE U+FA I8=F2 u with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE0 U+5C '\' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xE2 U+53 'S' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE3 U+54 'T' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE4 U+55 'U' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE5 U+56 'V' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE6 U+57 'W' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE7 U+58 'X' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE8 U+59 'Y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE9 U+5A 'Z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEF U+D5 I8=FA O with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xF0 U+30 '0' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF1 U+31 '1' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF2 U+32 '2' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF3 U+33 '3' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF4 U+34 '4' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF5 U+35 '5' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF6 U+36 '6' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF7 U+37 '7' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF8 U+38 '8' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF9 U+39 '9' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xFB U+DB I8=FC U with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFF U+9F APC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)
|
||||
|
||||
#endif /* EBCDIC 1047 */
|
||||
|
||||
#if 'A' == 193 /* EBCDIC 037 */ \
|
||||
&& '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
|
||||
&& '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
|
||||
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
|
||||
/* U+00 NUL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+01 SOH */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+02 STX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+03 ETX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x04 U+9C ST */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x05 U+09 HT */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* 0x06 U+86 SSA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x07 U+7F DEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x08 U+97 EPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x09 U+8D RI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x0A U+8E SS2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+0B VT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0C FF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0D CR */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* U+0E SO */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+0F SI */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+10 DLE */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+11 DC1 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+12 DC2 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+13 DC3 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x14 U+9D OSC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x15 U+85 NEL */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* 0x16 U+08 BS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x17 U+87 ESA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+18 CAN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+19 EOM */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x1A U+92 PU2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x1B U+8F SS3 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1C FS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1D GS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1E RS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+1F US */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x20 U+80 PAD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x21 U+81 HOP */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x22 U+82 BPH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x23 U+83 NBH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x24 U+84 IND */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x25 U+0A LF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
|
||||
/* 0x26 U+17 ETB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x27 U+1B ESC */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x28 U+88 HTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x29 U+89 HTJ */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2A U+8A VTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2B U+8B PLD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2C U+8C PLU */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2D U+05 ENQ */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2E U+06 ACK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x2F U+07 BEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x30 U+90 DCS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x31 U+91 PU1 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x32 U+16 SYN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x33 U+93 STS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x34 U+94 CCH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x35 U+95 MW */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x36 U+96 SPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x37 U+04 EOT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x38 U+98 SOS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x39 U+99 SGC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3A U+9A SCI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3B U+9B CSI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3C U+14 DC4 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3D U+15 NAK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3E U+9E PM */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x3F U+1A SUB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x40 U+20 SP */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* 0x41 U+A0 NBSP */ (1U<<CC_BLANK_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
|
||||
/* 0x42 U+E2 I8=A1 a with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x44 U+E0 I8=A3 a with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x45 U+E1 I8=A4 a with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x46 U+E3 I8=A5 a with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x47 U+E5 I8=A6 a with ring */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x48 U+E7 I8=A7 c with cedilla */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x49 U+F1 I8=A8 n with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x4A U+A2 I8=A9 CENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4B U+2E '.' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4C U+3C '<' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4D U+28 '(' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4E U+2B '+' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x4F U+7C '|' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x50 U+26 '&' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x51 U+E9 I8=AA e with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x52 U+EA I8=AB e with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x53 U+EB I8=AC e with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x54 U+E8 I8=AD e with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x55 U+ED I8=AE i with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x56 U+EE I8=AF i with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x57 U+EF I8=B0 i with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x58 U+EC I8=B1 i with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x59 U+DF I8=B2 sharp s */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x5A U+21 '!' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5B U+24 '$' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5C U+2A '*' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5D U+29 ')' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5E U+3B ';' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x5F U+AC I8=B3 NOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x60 U+2D '-' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x61 U+2F '/' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x62 U+C2 I8=B4 A with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x63 U+C4 I8=B5 A with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x64 U+C0 I8=B6 A with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x65 U+C1 I8=B7 A with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x66 U+C3 I8=B8 A with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x67 U+C5 I8=B9 A with RING */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x68 U+C7 I8=BA C with CEDILLA */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x69 U+D1 I8=BB N with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x6A U+A6 I8=BC BROKEN BAR */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6B U+2C ',' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6C U+25 '%' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6D U+5F '_' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x6E U+3E '>' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x6F U+3F '?' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x70 U+F8 I8=BD o with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x71 U+C9 I8=BE E with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x72 U+CA I8=BF E with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x73 U+CB I8=C0 E with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x74 U+C8 I8=C1 E with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x75 U+CD I8=C2 I with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x76 U+CE I8=C3 I with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x77 U+CF I8=C4 I with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x78 U+CC I8=C5 I with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x79 U+60 '`' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7A U+3A ':' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7B U+23 '#' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7C U+40 '@' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7D U+27 "'" */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7E U+3D '=' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x7F U+22 '"' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x80 U+D8 I8=C6 O with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x81 U+61 'a' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x82 U+62 'b' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x83 U+63 'c' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x84 U+64 'd' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x85 U+65 'e' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x86 U+66 'f' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0x87 U+67 'g' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x88 U+68 'h' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x89 U+69 'i' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8A U+AB I8=C7 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x8B U+BB I8=C8 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x8C U+F0 I8=C9 eth */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8D U+FD I8=CA y with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8E U+FE I8=CB thorn */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x8F U+B1 I8=CC PLUS-MINUS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x90 U+B0 I8=CD DEGREE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0x91 U+6A 'j' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x92 U+6B 'k' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x93 U+6C 'l' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x94 U+6D 'm' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x95 U+6E 'n' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x96 U+6F 'o' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x97 U+70 'p' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x98 U+71 'q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x99 U+72 'r' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9A U+AA I8=CE FEMININE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9B U+BA I8=CF MASCULINE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9C U+E6 I8=D0 ae */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9D U+B8 I8=D1 CEDILLA */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0x9E U+C6 I8=D2 AE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0x9F U+A4 I8=D3 CURRENCY */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xA0 U+B5 I8=D4 MICRO */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA1 U+7E '~' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xA2 U+73 's' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA3 U+74 't' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA4 U+75 'u' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA5 U+76 'v' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA6 U+77 'w' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA7 U+78 'x' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA8 U+79 'y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xA9 U+7A 'z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xAA U+A1 I8=D5 INVERTED '!' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xAB U+BF I8=D6 INVERTED '?' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xAC U+D0 I8=D7 ETH */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xAD U+DD I8=D8 Y with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xAE U+DE I8=D9 THORN */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xAF U+AE I8=DA REGISTERED */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB0 U+5E '^' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB1 U+A3 I8=DB POUND */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB2 U+A5 I8=DC YEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB3 U+B7 I8=DD MIDDLE DOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_),
|
||||
/* 0xB4 U+A9 I8=DE COPYRIGHT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB5 U+A7 I8=DF SECTION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* U+B6 I8=E0 PILCROW */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xB7 U+BC I8=E1 1/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xB8 U+BD I8=E2 1/2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xB9 U+BE I8=E3 3/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBA U+5B '[' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xBB U+5D ']' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xBC U+AF I8=E4 MACRON */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBD U+A8 I8=E5 DIAERESIS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xC0 U+7B '{' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xC1 U+41 'A' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC2 U+42 'B' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC3 U+43 'C' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC4 U+44 'D' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC5 U+45 'E' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC6 U+46 'F' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xC7 U+47 'G' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xC8 U+48 'H' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xC9 U+49 'I' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCD U+F2 I8=EB o with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCE U+F3 I8=EC o with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xCF U+F5 I8=ED o with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD0 U+7D '}' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xD1 U+4A 'J' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD2 U+4B 'K' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD3 U+4C 'L' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD4 U+4D 'M' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD5 U+4E 'N' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD6 U+4F 'O' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD7 U+50 'P' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD8 U+51 'Q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xD9 U+52 'R' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xDB U+FB I8=EF u with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDD U+F9 I8=F1 u with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDE U+FA I8=F2 u with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE0 U+5C '\' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
|
||||
/* 0xE2 U+53 'S' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE3 U+54 'T' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE4 U+55 'U' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE5 U+56 'V' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE6 U+57 'W' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE7 U+58 'X' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE8 U+59 'Y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xE9 U+5A 'Z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xEF U+D5 I8=FA O with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xF0 U+30 '0' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF1 U+31 '1' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF2 U+32 '2' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF3 U+33 '3' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF4 U+34 '4' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF5 U+35 '5' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF6 U+36 '6' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF7 U+37 '7' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF8 U+38 '8' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xF9 U+39 '9' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
|
||||
/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
|
||||
/* 0xFB U+DB I8=FC U with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
|
||||
/* 0xFF U+9F APC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)
|
||||
|
||||
#endif /* EBCDIC 037 */
|
||||
|
||||
/* ex: set ro ft=c: */
|
||||
Binary file not shown.
|
|
@ -0,0 +1,242 @@
|
|||
/* -*- mode: C; buffer-read-only: t -*-
|
||||
*
|
||||
* locale_table.h
|
||||
*
|
||||
* Copyright (C) 2023, 2024 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
|
||||
* This file is built by regen/locale.pl from data in regen/locale.pl.
|
||||
* Any changes made here will be lost!
|
||||
*/
|
||||
|
||||
/* This defines a macro for each individual locale category used on the this
|
||||
* system. (The congomerate category LC_ALL is not included.) This
|
||||
* file will be #included as the interior of various parallel arrays and in
|
||||
* other constructs; each usage will re-#define the macro to generate its
|
||||
* appropriate data.
|
||||
*
|
||||
* This guarantees the arrays will be parallel, and populated in the order
|
||||
* given here. That order is mostly arbitrary. LC_CTYPE is first because when
|
||||
* we are setting multiple categories, CTYPE often needs to match the other(s),
|
||||
* and the way the code is constructed, if we set the other category first, we
|
||||
* might otherwise have to set CTYPE twice.
|
||||
*
|
||||
* Each entry takes the token giving the category name, and either the name of
|
||||
* a function to call that does specialized set up for this category when it is
|
||||
* changed into, or NULL if no such set up is needed
|
||||
*/
|
||||
|
||||
#ifdef LC_CTYPE
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_CTYPE)
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(CTYPE, NULL)
|
||||
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_CTYPE_AVAIL_ 0
|
||||
# else
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(CTYPE, S_new_ctype)
|
||||
|
||||
# define LC_CTYPE_AVAIL_ 1
|
||||
# define USE_LOCALE_CTYPE
|
||||
# endif
|
||||
#else
|
||||
# define LC_CTYPE_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_NUMERIC
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_NUMERIC)
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(NUMERIC, NULL)
|
||||
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_NUMERIC_AVAIL_ 0
|
||||
# else
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(NUMERIC, S_new_numeric)
|
||||
|
||||
# define LC_NUMERIC_AVAIL_ 1
|
||||
# define USE_LOCALE_NUMERIC
|
||||
# endif
|
||||
#else
|
||||
# define LC_NUMERIC_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_COLLATE
|
||||
|
||||
/* Perl outsources all its collation efforts to the libc strxfrm(), so
|
||||
* if it isn't available on the system, default "C" locale collation
|
||||
* gets used */
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_COLLATE) || ! defined(HAS_STRXFRM)
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(COLLATE, NULL)
|
||||
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_COLLATE_AVAIL_ 0
|
||||
# else
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(COLLATE, S_new_collate)
|
||||
|
||||
# define LC_COLLATE_AVAIL_ 1
|
||||
# define USE_LOCALE_COLLATE
|
||||
# endif
|
||||
#else
|
||||
# define LC_COLLATE_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_TIME
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(TIME, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_TIME)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_TIME_AVAIL_ 0
|
||||
# else
|
||||
# define LC_TIME_AVAIL_ 1
|
||||
# define USE_LOCALE_TIME
|
||||
# endif
|
||||
#else
|
||||
# define LC_TIME_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_MESSAGES
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(MESSAGES, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_MESSAGES)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_MESSAGES_AVAIL_ 0
|
||||
# else
|
||||
# define LC_MESSAGES_AVAIL_ 1
|
||||
# define USE_LOCALE_MESSAGES
|
||||
# endif
|
||||
#else
|
||||
# define LC_MESSAGES_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_MONETARY
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(MONETARY, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_MONETARY)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_MONETARY_AVAIL_ 0
|
||||
# else
|
||||
# define LC_MONETARY_AVAIL_ 1
|
||||
# define USE_LOCALE_MONETARY
|
||||
# endif
|
||||
#else
|
||||
# define LC_MONETARY_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_ADDRESS
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(ADDRESS, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_ADDRESS)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_ADDRESS_AVAIL_ 0
|
||||
# else
|
||||
# define LC_ADDRESS_AVAIL_ 1
|
||||
# define USE_LOCALE_ADDRESS
|
||||
# endif
|
||||
#else
|
||||
# define LC_ADDRESS_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_IDENTIFICATION
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(IDENTIFICATION, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_IDENTIFICATION)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_IDENTIFICATION_AVAIL_ 0
|
||||
# else
|
||||
# define LC_IDENTIFICATION_AVAIL_ 1
|
||||
# define USE_LOCALE_IDENTIFICATION
|
||||
# endif
|
||||
#else
|
||||
# define LC_IDENTIFICATION_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_MEASUREMENT
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(MEASUREMENT, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_MEASUREMENT)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_MEASUREMENT_AVAIL_ 0
|
||||
# else
|
||||
# define LC_MEASUREMENT_AVAIL_ 1
|
||||
# define USE_LOCALE_MEASUREMENT
|
||||
# endif
|
||||
#else
|
||||
# define LC_MEASUREMENT_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_PAPER
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(PAPER, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_PAPER)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_PAPER_AVAIL_ 0
|
||||
# else
|
||||
# define LC_PAPER_AVAIL_ 1
|
||||
# define USE_LOCALE_PAPER
|
||||
# endif
|
||||
#else
|
||||
# define LC_PAPER_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_TELEPHONE
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(TELEPHONE, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_TELEPHONE)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_TELEPHONE_AVAIL_ 0
|
||||
# else
|
||||
# define LC_TELEPHONE_AVAIL_ 1
|
||||
# define USE_LOCALE_TELEPHONE
|
||||
# endif
|
||||
#else
|
||||
# define LC_TELEPHONE_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_NAME
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(NAME, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_NAME)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_NAME_AVAIL_ 0
|
||||
# else
|
||||
# define LC_NAME_AVAIL_ 1
|
||||
# define USE_LOCALE_NAME
|
||||
# endif
|
||||
#else
|
||||
# define LC_NAME_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_SYNTAX
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(SYNTAX, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_SYNTAX)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_SYNTAX_AVAIL_ 0
|
||||
# else
|
||||
# define LC_SYNTAX_AVAIL_ 1
|
||||
# define USE_LOCALE_SYNTAX
|
||||
# endif
|
||||
#else
|
||||
# define LC_SYNTAX_AVAIL_ 0
|
||||
#endif
|
||||
#ifdef LC_TOD
|
||||
|
||||
PERL_LOCALE_TABLE_ENTRY(TOD, NULL)
|
||||
|
||||
# if defined(NO_LOCALE) || defined(NO_LOCALE_TOD)
|
||||
# define HAS_IGNORED_LOCALE_CATEGORIES_
|
||||
# define LC_TOD_AVAIL_ 0
|
||||
# else
|
||||
# define LC_TOD_AVAIL_ 1
|
||||
# define USE_LOCALE_TOD
|
||||
# endif
|
||||
#else
|
||||
# define LC_TOD_AVAIL_ 0
|
||||
#endif
|
||||
|
||||
/* ex: set ro ft=c: */
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
#ifndef PERL_MALLOC_CTL_H_
|
||||
# define PERL_MALLOC_CTL_H_
|
||||
|
||||
struct perl_mstats {
|
||||
UV *nfree;
|
||||
UV *ntotal;
|
||||
IV topbucket, topbucket_ev, topbucket_odd, totfree, total, total_chain;
|
||||
IV total_sbrk, sbrks, sbrk_good, sbrk_slack, start_slack, sbrked_remains;
|
||||
IV minbucket;
|
||||
/* Level 1 info */
|
||||
UV *bucket_mem_size;
|
||||
UV *bucket_available_size;
|
||||
UV nbuckets;
|
||||
};
|
||||
typedef struct perl_mstats perl_mstats_t;
|
||||
|
||||
PERL_CALLCONV Malloc_t Perl_malloc (MEM_SIZE nbytes);
|
||||
PERL_CALLCONV Malloc_t Perl_calloc (MEM_SIZE elements, MEM_SIZE size);
|
||||
PERL_CALLCONV Malloc_t Perl_realloc (Malloc_t where, MEM_SIZE nbytes);
|
||||
/* 'mfree' rather than 'free', since there is already a 'perl_free'
|
||||
* that causes clashes with case-insensitive linkers */
|
||||
PERL_CALLCONV Free_t Perl_mfree (Malloc_t where);
|
||||
|
||||
#ifndef NO_MALLOC_DYNAMIC_CFG
|
||||
|
||||
/* IV configuration data */
|
||||
enum {
|
||||
MallocCfg_FIRST_SBRK,
|
||||
MallocCfg_MIN_SBRK,
|
||||
MallocCfg_MIN_SBRK_FRAC1000,
|
||||
MallocCfg_SBRK_ALLOW_FAILURES,
|
||||
MallocCfg_SBRK_FAILURE_PRICE,
|
||||
MallocCfg_sbrk_goodness,
|
||||
|
||||
MallocCfg_filldead,
|
||||
MallocCfg_fillalive,
|
||||
MallocCfg_fillcheck,
|
||||
|
||||
MallocCfg_skip_cfg_env,
|
||||
MallocCfg_cfg_env_read,
|
||||
|
||||
MallocCfg_emergency_buffer_size,
|
||||
MallocCfg_emergency_buffer_last_req,
|
||||
|
||||
MallocCfg_emergency_buffer_prepared_size,
|
||||
|
||||
MallocCfg_last
|
||||
};
|
||||
/* char* configuration data */
|
||||
enum {
|
||||
MallocCfgP_emergency_buffer,
|
||||
MallocCfgP_emergency_buffer_prepared,
|
||||
MallocCfgP_last
|
||||
};
|
||||
START_EXTERN_C
|
||||
extern IV *MallocCfg_ptr;
|
||||
extern char **MallocCfgP_ptr;
|
||||
END_EXTERN_C
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,124 @@
|
|||
/* This is a placeholder file for symbols that should be exported
|
||||
* into config_h.SH and Porting/Glossary. See also metaconfig.SH
|
||||
*
|
||||
* First version was created from the part in handy.h
|
||||
* H.Merijn Brand 21 Dec 2010 (Tux)
|
||||
*
|
||||
* Mentioned variables are forced to be included into config_h.SH
|
||||
* as they are only included if meta finds them referenced. That
|
||||
* implies that noone can use them unless they are available and
|
||||
* they won't be available unless used. When new symbols are probed
|
||||
* in Configure, this is the way to force them into availability.
|
||||
*
|
||||
* Symbols should only be here temporarily. Once they are actually used,
|
||||
* they should be removed from here.
|
||||
*
|
||||
* BIN
|
||||
* CASTI32
|
||||
* CASTNEGFLOAT
|
||||
* CPPLAST
|
||||
* CPPMINUS
|
||||
* CPPRUN
|
||||
* CPPSTDIN
|
||||
* DOSUID
|
||||
* DOUBLE_HAS_NEGATIVE_ZERO
|
||||
* DOUBLE_HAS_SUBNORMALS
|
||||
* DOUBLEMANTBITS
|
||||
* DOUBLE_STYLE_CRAY
|
||||
* DOUBLE_STYLE_IBM
|
||||
* DOUBLE_STYLE_IEEE
|
||||
* DOUBLE_STYLE_VAX
|
||||
* DRAND48_R_PROTO
|
||||
* Gid_t_f
|
||||
* HAS_ASCTIME64
|
||||
* HAS_ATOLF
|
||||
* HAS_BUILTIN_ADD_OVERFLOW
|
||||
* HAS_BUILTIN_MUL_OVERFLOW
|
||||
* HAS_BUILTIN_SUB_OVERFLOW
|
||||
* HAS_CSH
|
||||
* HAS_CTERMID
|
||||
* HAS_CTIME64
|
||||
* HAS_DIFFTIME64
|
||||
* HAS_DRAND48_PROTO
|
||||
* HAS_DRAND48_R
|
||||
* HAS_FD_SET
|
||||
* HAS_FFS
|
||||
* HAS_FFSL
|
||||
* HAS_GETMNT
|
||||
* HAS_GMTIME64
|
||||
* HAS_GNULIBC
|
||||
* HAS_INT64_T
|
||||
* HAS_IPV6_MREQ_SOURCE
|
||||
* HAS_ISLESS
|
||||
* HAS_ISNORMAL
|
||||
* HAS_LGAMMA_R
|
||||
* HAS_LOCALECONV_L
|
||||
* HAS_LOCALTIME64
|
||||
* HAS_LSEEK_PROTO
|
||||
* HAS_MKTIME64
|
||||
* HAS_NANOSLEEP
|
||||
* HAS_OPEN3
|
||||
* HAS_OPENAT
|
||||
* HAS_PRCTL
|
||||
* HAS_PSEUDOFORK
|
||||
* HAS_RANDOM_R
|
||||
* HAS_SIGINFO_SI_VALUE
|
||||
* HAS_SIGSETJMP
|
||||
* HAS_SRAND48_R
|
||||
* HAS_SRANDOM_R
|
||||
* HAS_STRTOD_L
|
||||
* HAS_STRTOLD_L
|
||||
* HAS_STRUCT_FS_DATA
|
||||
* HAS_STRUCT_STATFS
|
||||
* HAS_STRUCT_STATFS_F_FLAGS
|
||||
* HAS_TIME
|
||||
* HAS_USTAT
|
||||
* HAS_VFORK
|
||||
* HAS_WCSCMP
|
||||
* HAS_WCSXFRM
|
||||
* I16SIZE
|
||||
* I32SIZE
|
||||
* I64SIZE
|
||||
* I8SIZE
|
||||
* I_GDBM
|
||||
* INSTALL_USR_BIN_PERL
|
||||
* I_STDBOOL
|
||||
* I_SYS_MOUNT
|
||||
* I_SYS_STATFS
|
||||
* I_SYS_STATVFS
|
||||
* I_SYS_VFS
|
||||
* I_TIME
|
||||
* I_USTAT
|
||||
* I_VFORK
|
||||
* I_XLOCALE
|
||||
* LOCALTIME_R_NEEDS_TZSET
|
||||
* LOC_SED
|
||||
* LONGDBLMANTBITS
|
||||
* LONG_DOUBLE_STYLE_IEEE
|
||||
* LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE
|
||||
* LONG_DOUBLE_STYLE_IEEE_EXTENDED
|
||||
* LONG_DOUBLE_STYLE_IEEE_STD
|
||||
* LONG_DOUBLE_STYLE_VAX
|
||||
* OSVERS
|
||||
* PERL_LC_ALL_CATEGORY_POSITIONS_INIT
|
||||
* PERL_LC_ALL_SEPARATOR
|
||||
* PERL_LC_ALL_USES_NAME_VALUE_PAIRS
|
||||
* PERL_PRIeldbl
|
||||
* PERL_SCNfldbl
|
||||
* PERL_TARGETARCH
|
||||
* PERL_VENDORARCH
|
||||
* RANDOM_R_PROTO
|
||||
* SRAND48_R_PROTO
|
||||
* SRANDOM_R_PROTO
|
||||
* STARTPERL
|
||||
* ST_INO_SIGN
|
||||
* ST_INO_SIZE
|
||||
* U32_ALIGNMENT_REQUIRED
|
||||
* U32of
|
||||
* U32xf
|
||||
* U32Xf
|
||||
* U8SIZE
|
||||
* Uid_t_f
|
||||
* USE_CROSS_COMPILE
|
||||
* USE_MORE_BITS
|
||||
*/
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
/* mg.h
|
||||
*
|
||||
* Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999,
|
||||
* 2000, 2002, 2005, 2006, 2007, 2008 by Larry Wall and others
|
||||
*
|
||||
* You may distribute under the terms of either the GNU General Public
|
||||
* License or the Artistic License, as specified in the README file.
|
||||
*
|
||||
*/
|
||||
|
||||
struct mgvtbl {
|
||||
int (*svt_get) (pTHX_ SV *sv, MAGIC* mg);
|
||||
int (*svt_set) (pTHX_ SV *sv, MAGIC* mg);
|
||||
U32 (*svt_len) (pTHX_ SV *sv, MAGIC* mg);
|
||||
int (*svt_clear) (pTHX_ SV *sv, MAGIC* mg);
|
||||
int (*svt_free) (pTHX_ SV *sv, MAGIC* mg);
|
||||
int (*svt_copy) (pTHX_ SV *sv, MAGIC* mg,
|
||||
SV *nsv, const char *name, I32 namlen);
|
||||
int (*svt_dup) (pTHX_ MAGIC *mg, CLONE_PARAMS *param);
|
||||
int (*svt_local)(pTHX_ SV *nsv, MAGIC *mg);
|
||||
};
|
||||
|
||||
struct magic {
|
||||
MAGIC* mg_moremagic;
|
||||
MGVTBL* mg_virtual; /* pointer to magic functions */
|
||||
U16 mg_private;
|
||||
char mg_type;
|
||||
U8 mg_flags;
|
||||
SSize_t mg_len;
|
||||
SV* mg_obj;
|
||||
char* mg_ptr;
|
||||
};
|
||||
|
||||
#define MGf_TAINTEDDIR 1 /* PERL_MAGIC_envelem only */
|
||||
#define MGf_MINMATCH 1 /* PERL_MAGIC_regex_global only */
|
||||
#define MGf_REQUIRE_GV 1 /* PERL_MAGIC_checkcall only */
|
||||
#define MGf_REFCOUNTED 2
|
||||
#define MGf_GSKIP 4 /* skip further GETs until after next SET */
|
||||
#define MGf_COPY 8 /* has an svt_copy MGVTBL entry */
|
||||
#define MGf_DUP 0x10 /* has an svt_dup MGVTBL entry */
|
||||
#define MGf_LOCAL 0x20 /* has an svt_local MGVTBL entry */
|
||||
#define MGf_BYTES 0x40 /* PERL_MAGIC_regex_global only */
|
||||
#define MGf_PERSIST 0x80 /* PERL_MAGIC_lvref only */
|
||||
|
||||
#define MgTAINTEDDIR(mg) (mg->mg_flags & MGf_TAINTEDDIR)
|
||||
#define MgTAINTEDDIR_on(mg) (mg->mg_flags |= MGf_TAINTEDDIR)
|
||||
#define MgTAINTEDDIR_off(mg) (mg->mg_flags &= ~MGf_TAINTEDDIR)
|
||||
|
||||
/* Extracts the SV stored in mg, or NULL. */
|
||||
#define MgSV(mg) (((int)((mg)->mg_len) == HEf_SVKEY) ? \
|
||||
MUTABLE_SV((mg)->mg_ptr) : \
|
||||
NULL)
|
||||
|
||||
/* If mg contains an SV, these extract the PV stored in that SV;
|
||||
otherwise, these extract the mg's mg_ptr/mg_len.
|
||||
These do NOT account for the SV's UTF8 flag, so handle with care.
|
||||
*/
|
||||
#define MgPV(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \
|
||||
SvPV(MUTABLE_SV((mg)->mg_ptr),lp) : \
|
||||
(mg)->mg_ptr)
|
||||
#define MgPV_const(mg,lp) ((((int)(lp = (mg)->mg_len)) == HEf_SVKEY) ? \
|
||||
SvPV_const(MUTABLE_SV((mg)->mg_ptr),lp) : \
|
||||
(const char*)(mg)->mg_ptr)
|
||||
#define MgPV_nolen_const(mg) (((((int)(mg)->mg_len)) == HEf_SVKEY) ? \
|
||||
SvPV_nolen_const(MUTABLE_SV((mg)->mg_ptr)) : \
|
||||
(const char*)(mg)->mg_ptr)
|
||||
|
||||
#define SvTIED_mg(sv,how) (SvRMAGICAL(sv) ? mg_find((sv),(how)) : NULL)
|
||||
#define SvTIED_obj(sv,mg) \
|
||||
((mg)->mg_obj ? (mg)->mg_obj : sv_2mortal(newRV(sv)))
|
||||
|
||||
#if defined(PERL_CORE) || defined(PERL_EXT)
|
||||
# define MgBYTEPOS(mg,sv,pv,len) S_MgBYTEPOS(aTHX_ mg,sv,pv,len)
|
||||
/* assumes get-magic and stringification have already occurred */
|
||||
# define MgBYTEPOS_set(mg,sv,pv,off) ( \
|
||||
assert_((mg)->mg_type == PERL_MAGIC_regex_global) \
|
||||
SvPOK(sv) && (!SvGMAGICAL(sv) || sv_only_taint_gmagic(sv)) \
|
||||
? (mg)->mg_len = (off), (mg)->mg_flags |= MGf_BYTES \
|
||||
: ((mg)->mg_len = DO_UTF8(sv) \
|
||||
? (SSize_t)utf8_length((U8 *)(pv), (U8 *)(pv)+(off)) \
|
||||
: (SSize_t)(off), \
|
||||
(mg)->mg_flags &= ~MGf_BYTES))
|
||||
#endif
|
||||
|
||||
#define whichsig(pv) whichsig_pv(pv)
|
||||
|
||||
/*
|
||||
* ex: set ts=8 sts=4 sw=4 et:
|
||||
*/
|
||||
|
|
@ -0,0 +1,312 @@
|
|||
/* mg_data.h:
|
||||
* THIS FILE IS AUTO-GENERATED DURING THE BUILD by: ./generate_uudmap
|
||||
*
|
||||
* These values will populate PL_magic_data[]: this is an array of
|
||||
* per-magic U8 values containing an index into PL_magic_vtables[]
|
||||
* plus two flags:
|
||||
* PERL_MAGIC_READONLY_ACCEPTABLE
|
||||
* PERL_MAGIC_VALUE_MAGIC
|
||||
*/
|
||||
{
|
||||
/* sv '\0' Special scalar variable */
|
||||
want_vtbl_sv | PERL_MAGIC_READONLY_ACCEPTABLE,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* arylen '#' Array length ($#ary) */
|
||||
want_vtbl_arylen | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
/* rhash '%' Extra data for restricted hashes */
|
||||
magic_vtable_max | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* debugvar '*' $DB::single, signal, trace vars */
|
||||
want_vtbl_debugvar,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* pos '.' pos() lvalue */
|
||||
want_vtbl_pos | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* symtab ':' Extra data for symbol tables */
|
||||
magic_vtable_max | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
/* backref '<' For weak ref data */
|
||||
want_vtbl_backref | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* arylen_p '@' To move arylen out of XPVAV */
|
||||
magic_vtable_max | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
/* bm 'B' Boyer-Moore (fast string search) */
|
||||
want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
/* regdata 'D' Regex match position data (@+ and @- vars) */
|
||||
want_vtbl_regdata,
|
||||
/* env 'E' %ENV hash */
|
||||
want_vtbl_env,
|
||||
0,
|
||||
0,
|
||||
/* hints 'H' %^H hash */
|
||||
want_vtbl_hints,
|
||||
/* isa 'I' @ISA array */
|
||||
want_vtbl_isa,
|
||||
0,
|
||||
0,
|
||||
/* dbfile 'L' Debugger %_<filename */
|
||||
magic_vtable_max,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* tied 'P' Tied array or hash */
|
||||
want_vtbl_pack | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
0,
|
||||
/* sig 'S' %SIG hash */
|
||||
want_vtbl_sig,
|
||||
0,
|
||||
/* uvar 'U' Available for use by extensions */
|
||||
want_vtbl_uvar,
|
||||
/* vstring 'V' SV was vstring literal */
|
||||
magic_vtable_max | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
/* destruct 'X' destruct callback */
|
||||
want_vtbl_destruct | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* nonelem 'Y' Array element that does not exist */
|
||||
want_vtbl_nonelem | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* hook 'Z' %{^HOOK} hash */
|
||||
want_vtbl_hook,
|
||||
0,
|
||||
/* lvref '\' Lvalue reference constructor */
|
||||
want_vtbl_lvref,
|
||||
/* checkcall ']' Inlining/mutation of call to this CV */
|
||||
want_vtbl_checkcall | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* extvalue '^' Value magic available for use by extensions */
|
||||
magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* overload_table 'c' Holds overload table (AMT) on stash */
|
||||
want_vtbl_ovrld,
|
||||
/* regdatum 'd' Regex match position data element */
|
||||
want_vtbl_regdatum,
|
||||
/* envelem 'e' %ENV hash element */
|
||||
want_vtbl_envelem,
|
||||
/* fm 'f' Formline ('compiled' format) */
|
||||
want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* regex_global 'g' m//g target */
|
||||
want_vtbl_mglob | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* hintselem 'h' %^H hash element */
|
||||
want_vtbl_hintselem,
|
||||
/* isaelem 'i' @ISA array element */
|
||||
want_vtbl_isaelem,
|
||||
0,
|
||||
/* nkeys 'k' scalar(keys()) lvalue */
|
||||
want_vtbl_nkeys | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* dbline 'l' Debugger %_<filename element */
|
||||
want_vtbl_dbline,
|
||||
0,
|
||||
0,
|
||||
/* collxfrm 'o' Locale transformation */
|
||||
want_vtbl_collxfrm | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* tiedelem 'p' Tied array or hash element */
|
||||
want_vtbl_packelem,
|
||||
/* tiedscalar 'q' Tied scalar or handle */
|
||||
want_vtbl_packelem,
|
||||
/* qr 'r' Precompiled qr// regex */
|
||||
want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* sigelem 's' %SIG hash element */
|
||||
want_vtbl_sigelem,
|
||||
/* taint 't' Taintedness */
|
||||
want_vtbl_taint | PERL_MAGIC_VALUE_MAGIC,
|
||||
0,
|
||||
/* vec 'v' vec() lvalue */
|
||||
want_vtbl_vec | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* utf8 'w' Cached UTF-8 information */
|
||||
want_vtbl_utf8 | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* substr 'x' substr() lvalue */
|
||||
want_vtbl_substr | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* defelem 'y' Shadow "foreach" iterator variable / smart parameter vivification */
|
||||
want_vtbl_defelem | PERL_MAGIC_VALUE_MAGIC,
|
||||
/* hookelem 'z' %{^HOOK} hash element */
|
||||
want_vtbl_hookelem,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
/* ext '~' Variable magic available for use by extensions */
|
||||
magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0
|
||||
}
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
/* -*- mode: C; buffer-read-only: t -*-
|
||||
*
|
||||
* mg_raw.h
|
||||
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
|
||||
* This file is built by regen/mg_vtable.pl.
|
||||
* Any changes made here will be lost!
|
||||
*/
|
||||
|
||||
{ '\0', "want_vtbl_sv | PERL_MAGIC_READONLY_ACCEPTABLE",
|
||||
"/* sv '\\0' Special scalar variable */" },
|
||||
{ '#', "want_vtbl_arylen | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* arylen '#' Array length ($#ary) */" },
|
||||
{ '%', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* rhash '%' Extra data for restricted hashes */" },
|
||||
{ '*', "want_vtbl_debugvar",
|
||||
"/* debugvar '*' $DB::single, signal, trace vars */" },
|
||||
{ '.', "want_vtbl_pos | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* pos '.' pos() lvalue */" },
|
||||
{ ':', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* symtab ':' Extra data for symbol tables */" },
|
||||
{ '<', "want_vtbl_backref | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* backref '<' For weak ref data */" },
|
||||
{ '@', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* arylen_p '@' To move arylen out of XPVAV */" },
|
||||
{ 'B', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* bm 'B' Boyer-Moore (fast string search) */" },
|
||||
{ 'c', "want_vtbl_ovrld",
|
||||
"/* overload_table 'c' Holds overload table (AMT) on stash */" },
|
||||
{ 'D', "want_vtbl_regdata",
|
||||
"/* regdata 'D' Regex match position data (@+ and @- vars) */" },
|
||||
{ 'd', "want_vtbl_regdatum",
|
||||
"/* regdatum 'd' Regex match position data element */" },
|
||||
{ 'E', "want_vtbl_env",
|
||||
"/* env 'E' %ENV hash */" },
|
||||
{ 'e', "want_vtbl_envelem",
|
||||
"/* envelem 'e' %ENV hash element */" },
|
||||
{ 'f', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* fm 'f' Formline ('compiled' format) */" },
|
||||
{ 'g', "want_vtbl_mglob | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* regex_global 'g' m//g target */" },
|
||||
{ 'H', "want_vtbl_hints",
|
||||
"/* hints 'H' %^H hash */" },
|
||||
{ 'h', "want_vtbl_hintselem",
|
||||
"/* hintselem 'h' %^H hash element */" },
|
||||
{ 'I', "want_vtbl_isa",
|
||||
"/* isa 'I' @ISA array */" },
|
||||
{ 'i', "want_vtbl_isaelem",
|
||||
"/* isaelem 'i' @ISA array element */" },
|
||||
{ 'k', "want_vtbl_nkeys | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* nkeys 'k' scalar(keys()) lvalue */" },
|
||||
{ 'L', "magic_vtable_max",
|
||||
"/* dbfile 'L' Debugger %_<filename */" },
|
||||
{ 'l', "want_vtbl_dbline",
|
||||
"/* dbline 'l' Debugger %_<filename element */" },
|
||||
{ 'o', "want_vtbl_collxfrm | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* collxfrm 'o' Locale transformation */" },
|
||||
{ 'P', "want_vtbl_pack | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* tied 'P' Tied array or hash */" },
|
||||
{ 'p', "want_vtbl_packelem",
|
||||
"/* tiedelem 'p' Tied array or hash element */" },
|
||||
{ 'q', "want_vtbl_packelem",
|
||||
"/* tiedscalar 'q' Tied scalar or handle */" },
|
||||
{ 'r', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* qr 'r' Precompiled qr// regex */" },
|
||||
{ 'S', "want_vtbl_sig",
|
||||
"/* sig 'S' %SIG hash */" },
|
||||
{ 's', "want_vtbl_sigelem",
|
||||
"/* sigelem 's' %SIG hash element */" },
|
||||
{ 't', "want_vtbl_taint | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* taint 't' Taintedness */" },
|
||||
{ 'U', "want_vtbl_uvar",
|
||||
"/* uvar 'U' Available for use by extensions */" },
|
||||
{ 'V', "magic_vtable_max | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* vstring 'V' SV was vstring literal */" },
|
||||
{ 'v', "want_vtbl_vec | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* vec 'v' vec() lvalue */" },
|
||||
{ 'w', "want_vtbl_utf8 | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* utf8 'w' Cached UTF-8 information */" },
|
||||
{ 'X', "want_vtbl_destruct | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* destruct 'X' destruct callback */" },
|
||||
{ 'x', "want_vtbl_substr | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* substr 'x' substr() lvalue */" },
|
||||
{ 'Y', "want_vtbl_nonelem | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* nonelem 'Y' Array element that does not exist */" },
|
||||
{ 'y', "want_vtbl_defelem | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* defelem 'y' Shadow \"foreach\" iterator variable / smart parameter vivification */" },
|
||||
{ 'Z', "want_vtbl_hook",
|
||||
"/* hook 'Z' %{^HOOK} hash */" },
|
||||
{ 'z', "want_vtbl_hookelem",
|
||||
"/* hookelem 'z' %{^HOOK} hash element */" },
|
||||
{ '\\', "want_vtbl_lvref",
|
||||
"/* lvref '\\' Lvalue reference constructor */" },
|
||||
{ ']', "want_vtbl_checkcall | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* checkcall ']' Inlining/mutation of call to this CV */" },
|
||||
{ '^', "magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
|
||||
"/* extvalue '^' Value magic available for use by extensions */" },
|
||||
{ '~', "magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE",
|
||||
"/* ext '~' Variable magic available for use by extensions */" },
|
||||
|
||||
/* ex: set ro ft=c: */
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue