/*
** Character types.
** Donated to the public domain.
*/#ifndef _LJ_CHAR_H
#define_LJ_CHAR_H#include"lj_def.h"#defineLJ_CHAR_CNTRL0x01#defineLJ_CHAR_SPACE0x02#defineLJ_CHAR_PUNCT0x04#defineLJ_CHAR_DIGIT0x08#defineLJ_CHAR_XDIGIT0x10#defineLJ_CHAR_UPPER0x20#defineLJ_CHAR_LOWER0x40#defineLJ_CHAR_IDENT0x80#defineLJ_CHAR_ALPHA(LJ_CHAR_LOWER|LJ_CHAR_UPPER)#defineLJ_CHAR_ALNUM(LJ_CHAR_ALPHA|LJ_CHAR_DIGIT)#defineLJ_CHAR_GRAPH(LJ_CHAR_ALNUM|LJ_CHAR_PUNCT)/* Only pass -1 or 0..255 to these macros. Never pass a signed char! */#definelj_char_isa(c,t)((lj_char_bits+1)[(c)]& t)#definelj_char_iscntrl(c)lj_char_isa((c), LJ_CHAR_CNTRL)#definelj_char_isspace(c)lj_char_isa((c), LJ_CHAR_SPACE)#definelj_char_ispunct(c)lj_char_isa((c), LJ_CHAR_PUNCT)#definelj_char_isdigit(c)lj_char_isa((c), LJ_CHAR_DIGIT)#definelj_char_isxdigit(c)lj_char_isa((c), LJ_CHAR_XDIGIT)#definelj_char_isupper(c)lj_char_isa((c), LJ_CHAR_UPPER)#definelj_char_islower(c)lj_char_isa((c), LJ_CHAR_LOWER)#definelj_char_isident(c)lj_char_isa((c), LJ_CHAR_IDENT)#definelj_char_isalpha(c)lj_char_isa((c), LJ_CHAR_ALPHA)#definelj_char_isalnum(c)lj_char_isa((c), LJ_CHAR_ALNUM)#definelj_char_isgraph(c)lj_char_isa((c), LJ_CHAR_GRAPH)#definelj_char_toupper(c)((c)-(lj_char_islower(c)>>1))#definelj_char_tolower(c)((c)+lj_char_isupper(c))
LJ_DATA constuint8_t lj_char_bits[257];#endif