# gentable.pl.
# Generate table used by EyeDrops.pm
use strict;
my @C = map {"'" . chr() . "'"} 0..255;
$C[39] = q#"'"#;
my $q;
# 'a'..'o' (97..111)
for (33..47) {
$C[$_+64] = q#('`'|#.($q=$_==39?'"':"'").chr()."$q)";
}
# 'p'..'z' (112..122)
my $c=112;
for (43,42,41,40,47,46,45,44,35,34,33) {
$C[$c++] = q#('['^#.($q=$_==39?'"':"'").chr()."$q)";
}
# 'A'..'O' (65..79)
for (33..47) {
$C[$_+32] = q#('`'^#.($q=$_==39?'"':"'").chr()."$q)";
}
# 'P'..'Z' (80..90)
$c=80;
for (43,42,41,40,47,46,45,44,35,34,33) {
$C[$c++] = q#('{'^#.($q=$_==39?'"':"'").chr()."$q)";
}
# '0'..'9' (48..57)
$c=48;
for (46,47,44,45,42,43,40,41,38,39) {
$C[$c++] = q#('^'^('`'|#.($q=$_==39?'"':"'").chr()."$q))";
}
$C[56] = q#(':'&'=')#;
$C[57] = q#(';'&'=')#;
# 0..32, 127
$C[0] = q#('!'^'!')#;
$C[1] = q#('('^')')#;
$C[2] = q#('<'^'>')#;
$C[3] = q#('>'^'=')#;
$C[4] = q#('>'^':')#;
$C[5] = q#('>'^';')#;
$C[6] = q#('+'^'-')#;
$C[7] = q#('*'^'-')#;
$C[8] = q!('+'^'#')!;
$C[9] = q!('*'^'#')!;
$C[10] = q#('!'^'+')#; # newline
$C[11] = q#('!'^'*')#;
$C[12] = q#('!'^'-')#;
$C[13] = q#('!'^',')#;
$C[14] = q#('!'^'/')#;
$C[15] = q#('!'^'.')#;
$C[16] = q#('?'^'/')#;
$C[17] = q#('<'^'-')#;
$C[18] = q#('-'^'?')#;
$C[19] = q#('.'^'=')#;
$C[20] = q#('+'^'?')#;
$C[21] = q#('*'^'?')#;
$C[22] = q#('?'^')')#;
$C[23] = q#('<'^'+')#;
$C[24] = q#('%'^'=')#;
$C[25] = q#('&'^'?')#;
$C[26] = q#('?'^'%')#;
$C[27] = q#('>'^'%')#;
$C[28] = q#('&'^':')#;
$C[29] = q#('<'^'!')#;
$C[30] = q#('?'^'!')#;
$C[31] = q#('%'^':')#;
$C[32] = q#('{'^'[')#; # space
$C[127] = q#('!'^'^')#;
# Special escaped characters.
$C[92] = q#'\\\\'.'\\\\'#;
$C[34] = q#'\\\\'.'"'#;
$C[36] = q#'\\\\'.'$'#;
$C[64] = q#'\\\\'.'@'#;
$C[123] = q#'\\\\'.'{'#;
$C[125] = q#'\\\\'.'}'#;
# 128..255
# for my $i (128..255) {
# $C[$i] = join('.', q#'\\\\'#,
# $C[120], map($C[$_], unpack('C*', sprintf('%x', $i))));
# }
print " # This table was generated by demo/gentable.pl.\n";
print " my \@C = (";
for my $i (0..127) { $C[$i] =~ s/\\/\\\\/g }
for my $i (0..47) {
my $l = $i%4==0 ? "\n " : "";
print "${l}q Z$C[$i]Z,";
}
for my $i (48..57) {
my $l = $i%3==0 ? "\n " : "";
print "${l}q Z$C[$i]Z,";
}
for my $i (58..127) {
my $l = $i%4==0 ? "\n " : "";
print "${l}q Z$C[$i]Z,";
}
print "\n );\n";