1 /* 2 * Copyright (c) 1999 3 * Boris Fomitchev 4 * 5 * This material is provided "as is", with absolutely no warranty expressed 6 * or implied. Any use is at your own risk. 7 * 8 * Permission to use or copy this software for any purpose is hereby granted 9 * without fee, provided the above notices are retained on all copies. 10 * Permission to modify the code and to distribute modified code is granted, 11 * provided the above notices are retained, and a notice that the code was 12 * modified is included with the above copyright notice. 13 * 14 */ 15 16 #ifndef _STLP_CTYPE_H 17 18 /* Workaround for a "misbehaviour" when compiling resource scripts using 19 * eMbedded Visual C++. The standard .rc file includes windows header files, 20 * which in turn include ctype.h, which results in warnings and errors 21 */ 22 #if !defined(RC_INVOKED) 23 24 # if !defined (_STLP_OUTERMOST_HEADER_ID) 25 # define _STLP_OUTERMOST_HEADER_ID 0x219 26 # include <stl/_prolog.h> 27 # elif (_STLP_OUTERMOST_HEADER_ID == 0x219) 28 # define _STLP_DONT_POP_HEADER_ID 29 # define _STLP_CTYPE_H 30 # endif 31 32 # if defined(_STLP_WCE_EVC3) 33 struct _exception; 34 # endif 35 36 # if defined (_STLP_HAS_INCLUDE_NEXT) 37 # include_next <ctype.h> 38 # else 39 # include _STLP_NATIVE_C_HEADER(ctype.h) 40 # endif 41 42 /* on evc4 including ctype.h also defines setjmp macro */ 43 # if defined (_STLP_WCE) 44 # define _STLP_NATIVE_SETJMP_H_INCLUDED 45 # endif 46 47 # ifndef _STLP_CTYPE_H_SEEN 48 # define _STLP_CTYPE_H_SEEN 49 50 /* Undef convenience interfaces */ 51 # undef isspace 52 # undef isprint 53 # undef iscntrl 54 # undef isupper 55 # undef islower 56 # undef isalpha 57 # undef isdigit 58 # undef ispunct 59 # undef isxdigit 60 # undef isalnum 61 # undef isgraph 62 # undef toupper 63 # undef tolower 64 65 # if defined (UNDER_CE) 66 67 # if (_WIN32_WCE < 300) /* Only wide chars for older versions */ 68 # define _isctype iswctype 69 # endif 70 71 __inline int (isalpha)(int c) { return _isctype(c, _ALPHA); } 72 __inline int (isupper)(int c) { return _isctype(c, _UPPER); } 73 __inline int (islower)(int c) { return _isctype(c, _LOWER); } 74 __inline int (isdigit)(int c) { return _isctype(c, _DIGIT); } 75 __inline int (isxdigit)(int c) { return _isctype(c, _HEX); } 76 __inline int (isspace)(int c) { return _isctype(c, _SPACE); } 77 __inline int (ispunct)(int c) { return _isctype(c, _PUNCT); } 78 __inline int (isalnum)(int c) { return _isctype(c, _ALPHA|_DIGIT); } 79 __inline int (isprint)(int c) { return _isctype(c, _BLANK|_PUNCT|_ALPHA|_DIGIT); } 80 __inline int (isgraph)(int c) { return _isctype(c, _PUNCT|_ALPHA|_DIGIT); } 81 __inline int (iscntrl)(int c) { return _isctype(c, _CONTROL); } 82 __inline int (isascii)(int c) { return ((unsigned)(c) < 0x80); } 83 84 # undef _isctype 85 86 __inline int (iswalpha)(int c) { return iswctype((unsigned short)(c), _ALPHA); } 87 __inline int (iswupper)(int c) { return iswctype((unsigned short)(c), _UPPER); } 88 __inline int (iswlower)(int c) { return iswctype((unsigned short)(c), _LOWER); } 89 __inline int (iswdigit)(int c) { return iswctype((unsigned short)(c), _DIGIT); } 90 __inline int (iswxdigit)(int c) { return iswctype((unsigned short)(c), _HEX); } 91 __inline int (iswspace)(int c) { return iswctype((unsigned short)(c), _SPACE); } 92 __inline int (iswpunct)(int c) { return iswctype((unsigned short)(c), _PUNCT); } 93 __inline int (iswalnum)(int c) { return iswctype((unsigned short)(c), _ALPHA|_DIGIT); } 94 __inline int (iswprint)(int c) { return iswctype((unsigned short)(c), _BLANK|_PUNCT|_ALPHA|_DIGIT); } 95 __inline int (iswgraph)(int c) { return iswctype((unsigned short)(c), _PUNCT|_ALPHA|_DIGIT); } 96 __inline int (iswcntrl)(int c) { return iswctype((unsigned short)(c), _CONTROL); } 97 __inline int (iswascii)(int c) { return ((unsigned)(c) < 0x80); } 98 99 # endif /* UNDER_CE */ 100 101 # endif /* _STLP_CTYPE_H_SEEN */ 102 103 # if (_STLP_OUTERMOST_HEADER_ID == 0x219) 104 # if ! defined (_STLP_DONT_POP_HEADER_ID) 105 # include <stl/_epilog.h> 106 # undef _STLP_OUTERMOST_HEADER_ID 107 # else 108 # undef _STLP_DONT_POP_HEADER_ID 109 # endif 110 # endif 111 112 #endif /* RC_INVOKED */ 113 114 #endif /* _STLP_CTYPE_H */ 115