19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk.
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies.
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted,
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice.
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_CTYPE_H
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Workaround for a "misbehaviour" when compiling resource scripts using
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * eMbedded Visual C++. The standard .rc file includes windows header files,
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * which in turn include ctype.h, which results in warnings and errors
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined(RC_INVOKED)
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_OUTERMOST_HEADER_ID)
259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_OUTERMOST_HEADER_ID 0x219
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    include <stl/_prolog.h>
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  elif (_STLP_OUTERMOST_HEADER_ID == 0x219)
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_DONT_POP_HEADER_ID
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_CTYPE_H
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined(_STLP_WCE_EVC3)
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockstruct _exception;
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (_STLP_HAS_INCLUDE_NEXT)
37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include_next <ctype.h>
38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  else
39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    include _STLP_NATIVE_C_HEADER(ctype.h)
40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* on evc4 including ctype.h also defines setjmp macro */
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_WCE)
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_NATIVE_SETJMP_H_INCLUDED
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_CTYPE_H_SEEN
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_CTYPE_H_SEEN
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Undef convenience interfaces */
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isspace
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isprint
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef iscntrl
549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isupper
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef islower
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isalpha
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isdigit
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef ispunct
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isxdigit
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isalnum
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef isgraph
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef toupper
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef tolower
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined (UNDER_CE)
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      if (_WIN32_WCE < 300)     /* Only wide chars for older versions */
689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define _isctype iswctype
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif
709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isalpha)(int c) { return _isctype(c, _ALPHA); }
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isupper)(int c) { return _isctype(c, _UPPER); }
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (islower)(int c) { return _isctype(c, _LOWER); }
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isdigit)(int c) { return _isctype(c, _DIGIT); }
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isxdigit)(int c) { return _isctype(c, _HEX); }
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isspace)(int c) { return _isctype(c, _SPACE); }
779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (ispunct)(int c) { return _isctype(c, _PUNCT); }
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isalnum)(int c) { return _isctype(c, _ALPHA|_DIGIT); }
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isprint)(int c) { return _isctype(c, _BLANK|_PUNCT|_ALPHA|_DIGIT); }
809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isgraph)(int c) { return _isctype(c, _PUNCT|_ALPHA|_DIGIT); }
819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (iscntrl)(int c) { return _isctype(c, _CONTROL); }
829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (isascii)(int c) { return ((unsigned)(c) < 0x80); }
839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      undef _isctype
859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswalpha)(int c) { return iswctype((unsigned short)(c), _ALPHA); }
87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswupper)(int c) { return iswctype((unsigned short)(c), _UPPER); }
88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswlower)(int c) { return iswctype((unsigned short)(c), _LOWER); }
89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswdigit)(int c) { return iswctype((unsigned short)(c), _DIGIT); }
90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswxdigit)(int c) { return iswctype((unsigned short)(c), _HEX); }
91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswspace)(int c) { return iswctype((unsigned short)(c), _SPACE); }
92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswpunct)(int c) { return iswctype((unsigned short)(c), _PUNCT); }
93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswalnum)(int c) { return iswctype((unsigned short)(c), _ALPHA|_DIGIT); }
94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswprint)(int c) { return iswctype((unsigned short)(c), _BLANK|_PUNCT|_ALPHA|_DIGIT); }
95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswgraph)(int c) { return iswctype((unsigned short)(c), _PUNCT|_ALPHA|_DIGIT); }
96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott__inline int (iswcntrl)(int c) { return iswctype((unsigned short)(c), _CONTROL); }
979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block__inline int (iswascii)(int c) { return ((unsigned)(c) < 0x80); }
989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif /* UNDER_CE */
1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* _STLP_CTYPE_H_SEEN */
1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if (_STLP_OUTERMOST_HEADER_ID == 0x219)
1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if ! defined (_STLP_DONT_POP_HEADER_ID)
1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      include <stl/_epilog.h>
1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      undef  _STLP_OUTERMOST_HEADER_ID
1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    else
1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      undef  _STLP_DONT_POP_HEADER_ID
1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* RC_INVOKED */
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_CTYPE_H */
115