#ifndef _MSL_CCTYPE
#define _MSL_CCTYPE		

#include <ansi_params.h>

#if !_MSL_USING_MW_C_HEADERS
	#include <ctype.h>
	
	#if _MSL_PUT_THIRD_PARTY_C_IN_STD
		#include <msl_cpp_std_ctype.h>
	#endif
#else

#include <eof.h>
#include <ctype_api.h>
#include <locale_api.h>
#include <msl_thread_local_data.h>

#ifndef RC_INVOKED

_MSL_BEGIN_NAMESPACE_STD
_MSL_BEGIN_EXTERN_C

_MSL_IMP_EXP_C int _MSL_CDECL isalnum(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL isalpha(int) _MSL_CANT_THROW;
#if _MSL_C99						
_MSL_IMP_EXP_C int _MSL_CDECL isblank(int) _MSL_CANT_THROW;
#endif 				
_MSL_IMP_EXP_C int _MSL_CDECL iscntrl(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL isdigit(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL isgraph(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL islower(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL isprint(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL ispunct(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL isspace(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL isupper(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL isxdigit(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL tolower(int) _MSL_CANT_THROW;
_MSL_IMP_EXP_C int _MSL_CDECL toupper(int) _MSL_CANT_THROW;

_MSL_END_EXTERN_C

#if _MSL_USE_INLINE

	_MSL_INLINE int _MSL_CDECL isalnum(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_alnum); }
	_MSL_INLINE int _MSL_CDECL isalpha(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_alpha); }
#if _MSL_C99						
	_MSL_INLINE int _MSL_CDECL isblank(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_blank); }
#endif 				
	_MSL_INLINE int _MSL_CDECL iscntrl(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_cntrl); }
	_MSL_INLINE int _MSL_CDECL isdigit(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_digit); }
	_MSL_INLINE int _MSL_CDECL isgraph(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_graph); }
	_MSL_INLINE int _MSL_CDECL islower(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_lower); }
	_MSL_INLINE int _MSL_CDECL isprint(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_print); }
	_MSL_INLINE int _MSL_CDECL ispunct(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_punct); }
	_MSL_INLINE int _MSL_CDECL isspace(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_space); }
	_MSL_INLINE int _MSL_CDECL isupper(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_upper); }
	_MSL_INLINE int _MSL_CDECL isxdigit(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? 0 : (int) (_MSL_CMAP_ACCESS[c] & __msl_xdigit); }
	_MSL_INLINE int _MSL_CDECL tolower(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? c : (int) (_MSL_CLOWER_ACCESS[c]); }
	_MSL_INLINE int _MSL_CDECL toupper(int c) _MSL_CANT_THROW	{ return ((c < 0) || (c >= __msl_cmap_size)) ? c : (int) (_MSL_CUPPER_ACCESS[c]); }

#endif 

_MSL_END_NAMESPACE_STD

#endif 

#endif 

#endif 
