blob: 50df539b9c3e2de9f436fa6e1255abb18b97cea4 [file] [log] [blame]
/* Copyright (C) 2008 Denys Vlasenko <>
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
/* Taking advantage of the C99 mutual-exclusion guarantees for the various
* (w)ctype classes, including the descriptions of printing and control
* (w)chars, we can place each in one of the following mutually-exlusive
* subsets. Since there are less than 16, we can store the data for
* each (w)chars in a nibble. In contrast, glibc uses an unsigned int
* per (w)char, with one bit flag for each is* type. While this allows
* a simple '&' operation to determine the type vs. a range test and a
* little special handling for the "blank" and "xdigit" types in my
* approach, it also uses 8 times the space for the tables on the typical
* 32-bit archs we supported.*/
enum {
__CTYPE_unclassified = 0,