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
#    endif /* UNDER_CE */
87
88
#  endif /* _STLP_CTYPE_H_SEEN */
89
90
#  if (_STLP_OUTERMOST_HEADER_ID == 0x219)
91
#    if ! defined (_STLP_DONT_POP_HEADER_ID)
92
#      include <stl/_epilog.h>
93
#      undef  _STLP_OUTERMOST_HEADER_ID
94
#    else
95
#      undef  _STLP_DONT_POP_HEADER_ID
96
#    endif
97
#  endif
98
99
#endif /* RC_INVOKED */
100
101
#endif /* _STLP_CTYPE_H */