hbase

heirloom base
git clone git://git.2f30.org/hbase
Log | Files | Refs | README

asciitype.h (2347B)


      1 /*
      2  * Copyright (c) 2003 Gunnar Ritter
      3  *
      4  * This software is provided 'as-is', without any express or implied
      5  * warranty. In no event will the authors be held liable for any damages
      6  * arising from the use of this software.
      7  *
      8  * Permission is granted to anyone to use this software for any purpose,
      9  * including commercial applications, and to alter it and redistribute
     10  * it freely, subject to the following restrictions:
     11  *
     12  * 1. The origin of this software must not be misrepresented; you must not
     13  *    claim that you wrote the original software. If you use this software
     14  *    in a product, an acknowledgment in the product documentation would be
     15  *    appreciated but is not required.
     16  *
     17  * 2. Altered source versions must be plainly marked as such, and must not be
     18  *    misrepresented as being the original software.
     19  *
     20  * 3. This notice may not be removed or altered from any source distribution.
     21  */
     22 /*	Sccsid @(#)asciitype.h	1.6 (gritter) 9/9/05	*/
     23 
     24 /*
     25  * Locale-independent character classes.
     26  */
     27 enum {
     28 	C_CNTRL	= 0000,
     29 	C_BLANK	= 0001,
     30 	C_WHITE = 0002,
     31 	C_SPACE	= 0004,
     32 	C_PUNCT	= 0010,
     33 	C_OCTAL	= 0020,
     34 	C_DIGIT	= 0040,
     35 	C_UPPER	= 0100,
     36 	C_LOWER	= 0200
     37 };
     38 
     39 extern const unsigned char	class_char[];
     40 
     41 #define	asciichar(c) ((unsigned)(c) <= 0177)
     42 #define	alnumchar(c) (asciichar(c)&&(class_char[c]&\
     43 			(C_DIGIT|C_OCTAL|C_UPPER|C_LOWER)))
     44 #define	alphachar(c) (asciichar(c)&&(class_char[c]&(C_UPPER|C_LOWER)))
     45 #define	blankchar(c) (asciichar(c)&&(class_char[c]&(C_BLANK)))
     46 #define	cntrlchar(c) (asciichar(c)&&(class_char[c]==C_CNTRL)
     47 #define	digitchar(c) (asciichar(c)&&(class_char[c]&(C_DIGIT|C_OCTAL)))
     48 #define	lowerchar(c) (asciichar(c)&&(class_char[c]&(C_LOWER)))
     49 #define	punctchar(c) (asciichar(c)&&(class_char[c]&(C_PUNCT)))
     50 #define	spacechar(c) (asciichar(c)&&(class_char[c]&(C_BLANK|C_SPACE|C_WHITE)))
     51 #define	upperchar(c) (asciichar(c)&&(class_char[c]&(C_UPPER)))
     52 #define	whitechar(c) (asciichar(c)&&(class_char[c]&(C_BLANK|C_WHITE)))
     53 #define	octalchar(c) (asciichar(c)&&(class_char[c]&(C_OCTAL)))
     54 #define	graphchar(c) (asciichar(c)&&(class_char[c]&\
     55 			(C_UPPER|C_LOWER|C_DIGIT|C_OCTAL|C_PUNCT)))
     56 #define	printchar(c) ((c)==' ' || asciichar(c)&&(class_char[c]&\
     57 			(C_UPPER|C_LOWER|C_DIGIT|C_OCTAL|C_PUNCT)))
     58 
     59 #define	upperconv(c) (lowerchar(c) ? (c)-'a'+'A' : (c))
     60 #define	lowerconv(c) (upperchar(c) ? (c)-'A'+'a' : (c))