summaryrefslogtreecommitdiffstats
path: root/usr.bin/tr/cset.c
Commit message (Collapse)AuthorAgeFilesLines
* Splay the left and right subtrees on min - 1 and max + 1, respectively,tjr2004-07-141-34/+20
| | | | | before trying to coalesce. Forgetting to splay caused us to miss many opportunities for coalescing.
* Initialize cs_invert to "false" in new csets.tjr2004-07-101-0/+1
|
* Add support for multibyte characters. The challenge here was to usetjr2004-07-091-0/+303
data structures that scale better with large character sets, instead of arrays indexed by character value: - Sets of characters to delete/squeeze are stored in a new "cset" structure, which is implemented as a splay tree of extents. This structure has the ability to store character classes (ala wctype(3)), but this is not currently fully utilized. - Mappings between characters are stored in a new "cmap" structure, which is also a splay tree. - The parser no longer builds arrays containing all the characters in a particular class; instead, next() determines them on-the-fly using nextwctype(3).
OpenPOWER on IntegriCloud