Added Cyg-Win

This commit is contained in:
Frank Harris 2026-06-06 18:46:40 -04:00
parent 82cbc206eb
commit 413c315806
10586 changed files with 3806249 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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

View file

@ -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:
*/

View file

@ -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:
*/

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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:
*/

View file

@ -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:
*/

View file

@ -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

View file

@ -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: */

View file

@ -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:
*/

View file

@ -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: */

View file

@ -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 ^* */

View file

@ -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*/

View file

@ -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

View file

@ -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:
*/

View file

@ -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:
*/

View file

@ -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

View file

@ -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

View file

@ -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: */

View file

@ -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: */

View file

@ -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: */

View file

@ -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

View file

@ -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
*/

View file

@ -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:
*/

View file

@ -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
}

View file

@ -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