1951a39d68df598db08dfced8b4707755864a0492Ying Wang/*
2951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (c) 1999
3951a39d68df598db08dfced8b4707755864a0492Ying Wang * Boris Fomitchev
4951a39d68df598db08dfced8b4707755864a0492Ying Wang *
5951a39d68df598db08dfced8b4707755864a0492Ying Wang * This material is provided "as is", with absolutely no warranty expressed
6951a39d68df598db08dfced8b4707755864a0492Ying Wang * or implied. Any use is at your own risk.
7951a39d68df598db08dfced8b4707755864a0492Ying Wang *
8951a39d68df598db08dfced8b4707755864a0492Ying Wang * Permission to use or copy this software for any purpose is hereby granted
9951a39d68df598db08dfced8b4707755864a0492Ying Wang * without fee, provided the above notices are retained on all copies.
10951a39d68df598db08dfced8b4707755864a0492Ying Wang * Permission to modify the code and to distribute modified code is granted,
11951a39d68df598db08dfced8b4707755864a0492Ying Wang * provided the above notices are retained, and a notice that the code was
12951a39d68df598db08dfced8b4707755864a0492Ying Wang * modified is included with the above copyright notice.
13951a39d68df598db08dfced8b4707755864a0492Ying Wang *
14951a39d68df598db08dfced8b4707755864a0492Ying Wang */
15951a39d68df598db08dfced8b4707755864a0492Ying Wang
16951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _STLP_CTYPE_H
17951a39d68df598db08dfced8b4707755864a0492Ying Wang
18951a39d68df598db08dfced8b4707755864a0492Ying Wang/* Workaround for a "misbehaviour" when compiling resource scripts using
19951a39d68df598db08dfced8b4707755864a0492Ying Wang * eMbedded Visual C++. The standard .rc file includes windows header files,
20951a39d68df598db08dfced8b4707755864a0492Ying Wang * which in turn include ctype.h, which results in warnings and errors
21951a39d68df598db08dfced8b4707755864a0492Ying Wang */
22951a39d68df598db08dfced8b4707755864a0492Ying Wang#if !defined(RC_INVOKED)
23951a39d68df598db08dfced8b4707755864a0492Ying Wang
24951a39d68df598db08dfced8b4707755864a0492Ying Wang#  if !defined (_STLP_OUTERMOST_HEADER_ID)
25951a39d68df598db08dfced8b4707755864a0492Ying Wang#    define _STLP_OUTERMOST_HEADER_ID 0x219
26951a39d68df598db08dfced8b4707755864a0492Ying Wang#    include <stl/_prolog.h>
27951a39d68df598db08dfced8b4707755864a0492Ying Wang#  elif (_STLP_OUTERMOST_HEADER_ID == 0x219)
28951a39d68df598db08dfced8b4707755864a0492Ying Wang#    define _STLP_DONT_POP_HEADER_ID
29951a39d68df598db08dfced8b4707755864a0492Ying Wang#    define _STLP_CTYPE_H
30951a39d68df598db08dfced8b4707755864a0492Ying Wang#  endif
31951a39d68df598db08dfced8b4707755864a0492Ying Wang
32951a39d68df598db08dfced8b4707755864a0492Ying Wang#  if defined(_STLP_WCE_EVC3)
33951a39d68df598db08dfced8b4707755864a0492Ying Wangstruct _exception;
34951a39d68df598db08dfced8b4707755864a0492Ying Wang#  endif
35951a39d68df598db08dfced8b4707755864a0492Ying Wang
36951a39d68df598db08dfced8b4707755864a0492Ying Wang#  if defined (_STLP_HAS_INCLUDE_NEXT)
37951a39d68df598db08dfced8b4707755864a0492Ying Wang#    include_next <ctype.h>
38951a39d68df598db08dfced8b4707755864a0492Ying Wang#  else
39951a39d68df598db08dfced8b4707755864a0492Ying Wang#    include _STLP_NATIVE_C_HEADER(ctype.h)
40951a39d68df598db08dfced8b4707755864a0492Ying Wang#  endif
41951a39d68df598db08dfced8b4707755864a0492Ying Wang
42951a39d68df598db08dfced8b4707755864a0492Ying Wang/* on evc4 including ctype.h also defines setjmp macro */
43951a39d68df598db08dfced8b4707755864a0492Ying Wang#  if defined (_STLP_WCE)
44951a39d68df598db08dfced8b4707755864a0492Ying Wang#    define _STLP_NATIVE_SETJMP_H_INCLUDED
45951a39d68df598db08dfced8b4707755864a0492Ying Wang#  endif
46951a39d68df598db08dfced8b4707755864a0492Ying Wang
47951a39d68df598db08dfced8b4707755864a0492Ying Wang#  ifndef _STLP_CTYPE_H_SEEN
48951a39d68df598db08dfced8b4707755864a0492Ying Wang#    define _STLP_CTYPE_H_SEEN
49951a39d68df598db08dfced8b4707755864a0492Ying Wang
50951a39d68df598db08dfced8b4707755864a0492Ying Wang/* Undef convenience interfaces */
51951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isspace
52951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isprint
53951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef iscntrl
54951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isupper
55951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef islower
56951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isalpha
57951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isdigit
58951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef ispunct
59951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isxdigit
60951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isalnum
61951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef isgraph
62951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef toupper
63951a39d68df598db08dfced8b4707755864a0492Ying Wang#    undef tolower
64951a39d68df598db08dfced8b4707755864a0492Ying Wang
65951a39d68df598db08dfced8b4707755864a0492Ying Wang#    if defined (UNDER_CE)
66951a39d68df598db08dfced8b4707755864a0492Ying Wang
67951a39d68df598db08dfced8b4707755864a0492Ying Wang#      if (_WIN32_WCE < 300)     /* Only wide chars for older versions */
68951a39d68df598db08dfced8b4707755864a0492Ying Wang#        define _isctype iswctype
69951a39d68df598db08dfced8b4707755864a0492Ying Wang#      endif
70951a39d68df598db08dfced8b4707755864a0492Ying Wang
71951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isalpha)(int c) { return _isctype(c, _ALPHA); }
72951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isupper)(int c) { return _isctype(c, _UPPER); }
73951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (islower)(int c) { return _isctype(c, _LOWER); }
74951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isdigit)(int c) { return _isctype(c, _DIGIT); }
75951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isxdigit)(int c) { return _isctype(c, _HEX); }
76951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isspace)(int c) { return _isctype(c, _SPACE); }
77951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (ispunct)(int c) { return _isctype(c, _PUNCT); }
78951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isalnum)(int c) { return _isctype(c, _ALPHA|_DIGIT); }
79951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isprint)(int c) { return _isctype(c, _BLANK|_PUNCT|_ALPHA|_DIGIT); }
80951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isgraph)(int c) { return _isctype(c, _PUNCT|_ALPHA|_DIGIT); }
81951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iscntrl)(int c) { return _isctype(c, _CONTROL); }
82951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (isascii)(int c) { return ((unsigned)(c) < 0x80); }
83951a39d68df598db08dfced8b4707755864a0492Ying Wang
84951a39d68df598db08dfced8b4707755864a0492Ying Wang#      undef _isctype
85951a39d68df598db08dfced8b4707755864a0492Ying Wang
86951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswalpha)(int c) { return iswctype((unsigned short)(c), _ALPHA); }
87951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswupper)(int c) { return iswctype((unsigned short)(c), _UPPER); }
88951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswlower)(int c) { return iswctype((unsigned short)(c), _LOWER); }
89951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswdigit)(int c) { return iswctype((unsigned short)(c), _DIGIT); }
90951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswxdigit)(int c) { return iswctype((unsigned short)(c), _HEX); }
91951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswspace)(int c) { return iswctype((unsigned short)(c), _SPACE); }
92951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswpunct)(int c) { return iswctype((unsigned short)(c), _PUNCT); }
93951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswalnum)(int c) { return iswctype((unsigned short)(c), _ALPHA|_DIGIT); }
94951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswprint)(int c) { return iswctype((unsigned short)(c), _BLANK|_PUNCT|_ALPHA|_DIGIT); }
95951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswgraph)(int c) { return iswctype((unsigned short)(c), _PUNCT|_ALPHA|_DIGIT); }
96951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswcntrl)(int c) { return iswctype((unsigned short)(c), _CONTROL); }
97951a39d68df598db08dfced8b4707755864a0492Ying Wang__inline int (iswascii)(int c) { return ((unsigned)(c) < 0x80); }
98951a39d68df598db08dfced8b4707755864a0492Ying Wang
99951a39d68df598db08dfced8b4707755864a0492Ying Wang#    endif /* UNDER_CE */
100951a39d68df598db08dfced8b4707755864a0492Ying Wang
101951a39d68df598db08dfced8b4707755864a0492Ying Wang#  endif /* _STLP_CTYPE_H_SEEN */
102951a39d68df598db08dfced8b4707755864a0492Ying Wang
103951a39d68df598db08dfced8b4707755864a0492Ying Wang#  if (_STLP_OUTERMOST_HEADER_ID == 0x219)
104951a39d68df598db08dfced8b4707755864a0492Ying Wang#    if ! defined (_STLP_DONT_POP_HEADER_ID)
105951a39d68df598db08dfced8b4707755864a0492Ying Wang#      include <stl/_epilog.h>
106951a39d68df598db08dfced8b4707755864a0492Ying Wang#      undef  _STLP_OUTERMOST_HEADER_ID
107951a39d68df598db08dfced8b4707755864a0492Ying Wang#    else
108951a39d68df598db08dfced8b4707755864a0492Ying Wang#      undef  _STLP_DONT_POP_HEADER_ID
109951a39d68df598db08dfced8b4707755864a0492Ying Wang#    endif
110951a39d68df598db08dfced8b4707755864a0492Ying Wang#  endif
111951a39d68df598db08dfced8b4707755864a0492Ying Wang
112951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* RC_INVOKED */
113951a39d68df598db08dfced8b4707755864a0492Ying Wang
114951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* _STLP_CTYPE_H */
115