blob: cadd2bc1023755255b2ec5643c0017e6d1ae9318 [file] [log] [blame]
/*
* Copyright (c) 1999
* Silicon Graphics Computer Systems, Inc.
*
* Copyright (c) 1999
* Boris Fomitchev
*
* This material is provided "as is", with absolutely no warranty expressed
* or implied. Any use is at your own risk.
*
* Permission to use or copy this software for any purpose is hereby granted
* without fee, provided the above notices are retained on all copies.
* Permission to modify the code and to distribute modified code is granted,
* provided the above notices are retained, and a notice that the code was
* modified is included with the above copyright notice.
*
*/
#ifndef _STLP_C_LOCALE_H
#define _STLP_C_LOCALE_H
/*
* Implementation dependent definitions.
* Beware: This header is not a purely internal header, it is also included
* from the outside world when building the STLport library. So this header
* should not reference internal headers (stlport/stl/_*.h) directly.
*/
#if defined (__sgi)
# if defined (ROOT_65) /* IRIX 6.5.x */
# include <sgidefs.h>
# include <standards.h>
# include <wchar.h>
# include <ctype.h>
# else /* IRIX pre-6.5 */
# include <sgidefs.h>
# include <standards.h>
# if !defined(_SIZE_T) && !defined(_SIZE_T_)
# define _SIZE_T
# if (_MIPS_SZLONG == 32)
typedef unsigned int size_t;
# endif
# if (_MIPS_SZLONG == 64)
typedef unsigned long size_t;
# endif
# endif
# if !defined (_WCHAR_T)
# define _WCHAR_T
# if (_MIPS_SZLONG == 32)
typedef long wchar_t;
# endif
# if (_MIPS_SZLONG == 64)
typedef __int32_t wchar_t;
# endif
# endif /* _WCHAR_T */
# if !defined (_WINT_T)
# define _WINT_T
# if (_MIPS_SZLONG == 32)
typedef long wint_t;
# endif
# if (_MIPS_SZLONG == 64)
typedef __int32_t wint_t;
# endif
# endif /* _WINT_T */
# if !defined (_MBSTATE_T)
# define _MBSTATE_T
/* _MSC_VER check is here for historical reason and seems wrong as it is the macro defined
* by Microsoft compilers to give their version. But we are in a SGI platform section so it
* is weird. However _MSC_VER might also be a SGI compiler macro so we keep it this way.*/
# if defined (_MSC_VER)
typedef int mbstate_t;
# else
typedef char mbstate_t;
# endif
# endif /* _MBSTATE_T */
# endif /* ROOT65 */
#elif defined (_STLP_USE_GLIBC)
# include <ctype.h>
#endif
/*
* GENERAL FRAMEWORK
*/
/*
* Opaque types, implementation (if there is one) depends
* on platform localisation API.
*/
struct _Locale_ctype;
struct _Locale_codecvt;
struct _Locale_numeric;
struct _Locale_time;
struct _Locale_collate;
struct _Locale_monetary;
struct _Locale_messages;
/*
Bitmask macros.
*/
/*
* For narrow characters, we expose the lookup table interface.
*/
#if defined (_STLP_USE_GLIBC)
/* This section uses macros defined in the gnu libc ctype.h header */
# define _Locale_CNTRL _IScntrl
# define _Locale_UPPER _ISupper
# define _Locale_LOWER _ISlower
# define _Locale_DIGIT _ISdigit
# define _Locale_XDIGIT _ISxdigit
# define _Locale_PUNCT _ISpunct
# define _Locale_SPACE _ISspace
# define _Locale_PRINT _ISprint
# define _Locale_ALPHA _ISalpha
#else
/* Default values based on C++ Standard 22.2.1.
* Under Windows the localisation implementation take care of mapping its
* mask values to those internal values. For other platforms without real
* localization support we are free to use the most suitable values.*/
# define _Locale_SPACE 0x0001
# define _Locale_PRINT 0x0002
# define _Locale_CNTRL 0x0004
# define _Locale_UPPER 0x0008
# define _Locale_LOWER 0x0010
# define _Locale_ALPHA 0x0020
# define _Locale_DIGIT 0x0040
# define _Locale_PUNCT 0x0080
# define _Locale_XDIGIT 0x0100
#endif
#endif /* _STLP_C_LOCALE_H */