int SLwchar_isblank (SLwchar_Type ch) { if (MODE_VARIABLE) return SL_CLASSIFICATION_LOOKUP(ch) & SLCHARCLASS_BLANK; return (ch == ' ') || (ch == '\t'); }
static int wch_in_lut (SLwchar_Lut_Type *r, SLwchar_Type wch) { unsigned int i, table_len; SLwchar_Type *chmin, *chmax; if (wch < 256) return r->lut[wch]; if (r->char_class && (SL_CLASSIFICATION_LOOKUP(wch) & r->char_class)) return 1; /* FIXME. I should use a binary search for this... */ table_len = r->table_len; chmin = r->chmin; chmax = r->chmax; for (i = 0; i < table_len; i++) { if ((wch <= chmax[i]) && (wch >= chmin[i])) return 1; } return 0; }
int SLwchar_iscntrl (SLwchar_Type ch) { if (MODE_VARIABLE) return SL_CLASSIFICATION_LOOKUP(ch) & SLCHARCLASS_CNTRL; if (ch < 256) return iscntrl ((unsigned char) ch); return 0; }
int SLwchar_isspace (SLwchar_Type ch) { if (MODE_VARIABLE) return SL_CLASSIFICATION_LOOKUP(ch) & SLCHARCLASS_SPACE; if (ch < 256) return isspace ((unsigned char) ch); return 0; }
int SLwchar_isxdigit (SLwchar_Type ch) { if (MODE_VARIABLE) return SL_CLASSIFICATION_LOOKUP(ch) & SLCHARCLASS_XDIGIT; if (ch < 256) return isxdigit ((unsigned char) ch); return 0; }
int SLwchar_isalpha (SLwchar_Type ch) { if (MODE_VARIABLE) return SL_CLASSIFICATION_LOOKUP(ch) & SLCHARCLASS_ALPHA; if (ch < 256) return isalpha ((unsigned char) ch); return 0; }
int SLwchar_isupper (SLwchar_Type ch) { if (MODE_VARIABLE) return SL_CLASSIFICATION_LOOKUP(ch) & SLCHARCLASS_UPPER; if (ch < 256) return isupper ((unsigned char) ch); return 0; }
int SLwchar_ispunct (SLwchar_Type ch) { if (MODE_VARIABLE) { unsigned char t = SL_CLASSIFICATION_LOOKUP(ch); return PUNCTCLASS(t); } if ((unsigned)ch < 256) return ispunct ((unsigned char) ch); return 0; }
int SLwchar_isalnum (SLwchar_Type ch) { if (MODE_VARIABLE) { unsigned char t = SL_CLASSIFICATION_LOOKUP(ch); return ALNUMCLASS(t); } if ((unsigned)ch < 256) return isalnum ((unsigned char) ch); return 0; }
int SLwchar_isgraph (SLwchar_Type ch) { if (MODE_VARIABLE) { unsigned char t = SL_CLASSIFICATION_LOOKUP(ch); return GRAPHCLASS(t); } if ((unsigned)ch < 256) return isgraph ((unsigned char) ch); return 0; }
static void add_char_class (SLwchar_Lut_Type *r, unsigned int char_class) { unsigned int i; unsigned char *lut; r->char_class |= char_class; lut = r->lut; for (i = 0; i < 256; i++) { if (SL_CLASSIFICATION_LOOKUP(i) & char_class) lut[i] = 1; } }