X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=ucw%2Fchartype.h;h=055b540ac9168ea6f8be1b1bd1a12eb17bebf8f2;hb=634be141f3f014e31d5931a968c0c0f7e07205fb;hp=1770709c3b0d970fa157ab248a0ec23ff2fe4a53;hpb=b904ef3cdff12ad7be9bd307a6e86b2594728020;p=libucw.git diff --git a/ucw/chartype.h b/ucw/chartype.h index 1770709c..055b540a 100644 --- a/ucw/chartype.h +++ b/ucw/chartype.h @@ -15,7 +15,8 @@ * This way we bypass most possible problems with different compilation environments. * * All functions and macros accept any numbers and if it is necessary, they simply ignore higher bits. - * It does not matter whether a parameter is signed or unsigned. + * It does not matter whether a parameter is signed or unsigned. Parameters are evaluated exactly once, + * so they can have side-effects. ***/ #define _C_UPPER 1 /* Upper-case letters */ @@ -32,9 +33,9 @@ #define _C_WORD (_C_ALNUM | _C_INNER) #define _C_WSTART (_C_ALPHA | _C_INNER) -extern const unsigned char _c_cat[256], _c_upper[256], _c_lower[256]; +extern const byte _c_cat[256], _c_upper[256], _c_lower[256]; -#define Category(x) (_c_cat[(unsigned char)(x)]) +#define Category(x) (_c_cat[(byte)(x)]) #define Ccat(x,y) (Category(x) & y) #define Cupper(x) Ccat(x, _C_UPPER) /** Checks for an upper-case character (`A-Z`). **/ @@ -49,8 +50,8 @@ extern const unsigned char _c_cat[256], _c_upper[256], _c_lower[256]; #define Cctrl(x) Ccat(x, _C_CTRL) /** Checks for control characters (`0x0-0x1F`, `0x7F`). **/ #define Cspace(x) Cblank(x) -#define Cupcase(x) (_c_upper[(unsigned char)(x)]) /** Convert a letter to upper case, leave non-letter characters unchanged. **/ -#define Clocase(x) (_c_lower[(unsigned char)(x)]) /** Convert a letter to lower case, leave non-letter characters unchanged. **/ +#define Cupcase(x) (_c_upper[(byte)(x)]) /** Convert a letter to upper case, leave non-letter characters unchanged. **/ +#define Clocase(x) (_c_lower[(byte)(x)]) /** Convert a letter to lower case, leave non-letter characters unchanged. **/ /** * Compute the value of a valid hexadecimal character (ie. passed the @Cxdigit() check).