struct encpage_s
{
/* fields ordered to pack nicely on 32-bit machines */
- const U8 *seq; /* Packed output sequences we generate
+ const U8 *const seq; /* Packed output sequences we generate
if we match */
- const encpage_t *next; /* Page to go to if we match */
- U8 min; /* Min value of octet to match this entry */
- U8 max; /* Max value of octet to match this entry */
- U8 dlen; /* destination length -
+ const encpage_t *const next; /* Page to go to if we match */
+ const U8 min; /* Min value of octet to match this entry */
+ const U8 max; /* Max value of octet to match this entry */
+ const U8 dlen; /* destination length -
size of entries in seq */
- U8 slen; /* source length -
+ const U8 slen; /* source length -
number of source octets needed */
};
typedef struct encode_s encode_t;
struct encode_s
{
- const encpage_t *t_utf8; /* Starting table for translation from
- the encoding to UTF-8 form */
- const encpage_t *f_utf8; /* Starting table for translation
- from UTF-8 to the encoding */
- const U8 *rep; /* Replacement character in this encoding
- e.g. "?" */
- int replen; /* Number of octets in rep */
- U8 min_el; /* Minimum octets to represent a character */
- U8 max_el; /* Maximum octets to represent a character */
- const char *name[2]; /* name(s) of this encoding */
+ const encpage_t *const t_utf8; /* Starting table for translation from
+ the encoding to UTF-8 form */
+ const encpage_t *const f_utf8; /* Starting table for translation
+ from UTF-8 to the encoding */
+ const U8 *const rep; /* Replacement character in this
+ encoding e.g. "?" */
+ int replen; /* Number of octets in rep */
+ U8 min_el; /* Minimum octets to represent a
+ character */
+ U8 max_el; /* Maximum octets to represent a
+ character */
+ const char *const name[2]; /* name(s) of this encoding */
};
#ifdef U8
#my @info = ($e2u->{Cname},$u2e->{Cname},$rsym,length($rep),$min_el,$max_el);
my $replen = 0;
$replen++ while($rep =~ /\G\\x[0-9A-Fa-f]/g);
- my @info = ($e2u->{Cname},$u2e->{Cname},qq((U8 *)"$rep"),$replen,$min_el,$max_el);
my $sym = "${enc}_encoding";
$sym =~ s/\W+/_/g;
+ my @info = ($e2u->{Cname},$u2e->{Cname},"${sym}_rep_character",$replen,
+ $min_el,$max_el);
+ print C "static const U8 ${sym}_rep_character[] = \"$rep\";\n";
+ print C "static const char ${sym}_enc_name[] = \"$enc\";\n\n";
print C "const encode_t $sym = \n";
# This is to make null encoding work -- dankogai
for (my $i = (scalar @info) - 1; $i >= 0; --$i){
$info[$i] ||= 1;
}
# end of null tweak -- dankogai
- print C " {",join(',',@info,"{\"$enc\",(const char *)0}"),"};\n\n";
+ print C " {",join(',',@info,"{${sym}_enc_name,(const char *)0}"),"};\n\n";
}
foreach my $enc (sort cmp_name keys %encoding)