Viewing file: ctype.h (2.14 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* * ctype.h * * This assumes ISO 8859-1, being a reasonable superset of ASCII. */
#ifndef _CTYPE_H #define _CTYPE_H
#ifndef __CTYPE_NO_INLINE # define __ctype_inline extern __inline__ #else # define __ctype_inline #endif
/* * This relies on the following definitions: * * cntrl = !print * alpha = upper|lower * graph = punct|alpha|digit * blank = '\t' || ' ' (per POSIX requirement) */ enum { __ctype_upper = (1 << 0), __ctype_lower = (1 << 1), __ctype_digit = (1 << 2), __ctype_xdigit = (1 << 3), __ctype_space = (1 << 4), __ctype_print = (1 << 5), __ctype_punct = (1 << 6), __ctype_cntrl = (1 << 7), };
extern const unsigned char __ctypes[];
__ctype_inline int isalnum(int __c) { return __ctypes[__c+1] & (__ctype_upper|__ctype_lower|__ctype_digit); }
__ctype_inline int isalpha(int __c) { return __ctypes[__c+1] & (__ctype_upper|__ctype_lower); }
__ctype_inline int isascii(int __c) { return !(__c & ~0x7f); }
__ctype_inline int isblank(int __c) { return (__c == '\t') || (__c == ' '); }
__ctype_inline int iscntrl(int __c) { return __ctypes[__c+1] & __ctype_cntrl; }
__ctype_inline int isdigit(int __c) { return ((unsigned)__c - '0') <= 9; }
__ctype_inline int isgraph(int __c) { return __ctypes[__c+1] & (__ctype_upper|__ctype_lower|__ctype_digit|__ctype_punct); }
__ctype_inline int islower(int __c) { return __ctypes[__c+1] & __ctype_lower; }
__ctype_inline int isprint(int __c) { return __ctypes[__c+1] & __ctype_print; }
__ctype_inline int ispunct(int __c) { return __ctypes[__c+1] & __ctype_punct; }
__ctype_inline int isspace(int __c) { return __ctypes[__c+1] & __ctype_space; }
__ctype_inline int isupper(int __c) { return __ctypes[__c+1] & __ctype_upper; }
__ctype_inline int isxdigit(int __c) { return __ctypes[__c+1] & __ctype_xdigit; }
/* Note: this is decimal, not hex, to avoid accidental promotion to unsigned */ #define _toupper(__c) ((__c) & ~32) #define _tolower(__c) ((__c) | 32)
__ctype_inline int toupper(int __c) { return islower(__c) ? _toupper(__c) : __c; }
__ctype_inline int tolower(int __c) { return isupper(__c) ? _tolower(__c) : __c; }
#endif /* _CTYPE_H */
|