new wcwidth implementation (fast table-based)
authorRich Felker <dalias@aerifal.cx>
Tue, 24 Apr 2012 08:23:55 +0000 (04:23 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 24 Apr 2012 08:23:55 +0000 (04:23 -0400)
commit1b0ce9af6d2aa7b92edaf3e9c631cb635bae22bd
treef12e7798d36bc9679d1f86c64340419d9569f909
parent1a63a9fc30e7a1f1239e3cedcb5041e5ec1c5351
new wcwidth implementation (fast table-based)

i tried to go with improving the old binary-search-based algorithm,
but between growth in the number of ranges, bad performance, and lack
of confidence in the binary search code's stability under changes in
the table, i decided it was worth the extra 1.8k to have something
clean and maintainable.

also note that, like the alpha and punct tables, there's definitely
room to optimize the nonspacing/wide tables by overlapping subtables.
this is not a high priority, but i've begun looking into how to do it,
and i suspect the table sizes can be roughly halved. if that turns out
to be true, the new, fast, table-based implementation will be roughly
the same size as if i had just extended the old binary search one.
src/ctype/nonspacing.h [new file with mode: 0644]
src/ctype/wcwidth.c
src/ctype/wide.h [new file with mode: 0644]