[BASESRV]
[reactos.git] / include / c++ / stlport / ctype.h
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 */