1 /* 2 * Copyright (c) 1999 3 * Silicon Graphics Computer Systems, Inc. 4 * 5 * Copyright (c) 1999 6 * Boris Fomitchev 7 * 8 * This material is provided "as is", with absolutely no warranty expressed 9 * or implied. Any use is at your own risk. 10 * 11 * Permission to use or copy this software for any purpose is hereby granted 12 * without fee, provided the above notices are retained on all copies. 13 * Permission to modify the code and to distribute modified code is granted, 14 * provided the above notices are retained, and a notice that the code was 15 * modified is included with the above copyright notice. 16 * 17 */ 18 19 #ifndef _STLP_C_LOCALE_H 20 #define _STLP_C_LOCALE_H 21 22 /* 23 * Implementation dependent definitions. 24 * Beware: This header is not a purely internal header, it is also included 25 * from the outside world when building the STLport library. So this header 26 * should not reference internal headers (stlport/stl/_*.h) directly. 27 */ 28 #if defined (__sgi) 29 # if defined (ROOT_65) /* IRIX 6.5.x */ 30 # include <sgidefs.h> 31 # include <standards.h> 32 # include <wchar.h> 33 # include <ctype.h> 34 # else /* IRIX pre-6.5 */ 35 # include <sgidefs.h> 36 # include <standards.h> 37 # if !defined(_SIZE_T) && !defined(_SIZE_T_) 38 # define _SIZE_T 39 # if (_MIPS_SZLONG == 32) 40 typedef unsigned int size_t; 41 # endif 42 # if (_MIPS_SZLONG == 64) 43 typedef unsigned long size_t; 44 # endif 45 # endif 46 # if !defined (_WCHAR_T) 47 # define _WCHAR_T 48 # if (_MIPS_SZLONG == 32) 49 typedef long wchar_t; 50 # endif 51 # if (_MIPS_SZLONG == 64) 52 typedef __int32_t wchar_t; 53 # endif 54 # endif /* _WCHAR_T */ 55 # if !defined (_WINT_T) 56 # define _WINT_T 57 # if (_MIPS_SZLONG == 32) 58 typedef long wint_t; 59 # endif 60 # if (_MIPS_SZLONG == 64) 61 typedef __int32_t wint_t; 62 # endif 63 # endif /* _WINT_T */ 64 # if !defined (_MBSTATE_T) 65 # define _MBSTATE_T 66 /* _MSC_VER check is here for historical reason and seems wrong as it is the macro defined 67 * by Microsoft compilers to give their version. But we are in a SGI platform section so it 68 * is weird. However _MSC_VER might also be a SGI compiler macro so we keep it this way.*/ 69 # if defined (_MSC_VER) 70 typedef int mbstate_t; 71 # else 72 typedef char mbstate_t; 73 # endif 74 # endif /* _MBSTATE_T */ 75 # endif /* ROOT65 */ 76 #elif defined (_STLP_USE_GLIBC) 77 # include <ctype.h> 78 #endif 79 80 /* 81 * GENERAL FRAMEWORK 82 */ 83 84 /* 85 * Opaque types, implementation (if there is one) depends 86 * on platform localisation API. 87 */ 88 struct _Locale_ctype; 89 struct _Locale_codecvt; 90 struct _Locale_numeric; 91 struct _Locale_time; 92 struct _Locale_collate; 93 struct _Locale_monetary; 94 struct _Locale_messages; 95 96 /* 97 Bitmask macros. 98 */ 99 100 /* 101 * For narrow characters, we expose the lookup table interface. 102 */ 103 104 #if defined (_STLP_USE_GLIBC) 105 /* This section uses macros defined in the gnu libc ctype.h header */ 106 # define _Locale_CNTRL _IScntrl 107 # define _Locale_UPPER _ISupper 108 # define _Locale_LOWER _ISlower 109 # define _Locale_DIGIT _ISdigit 110 # define _Locale_XDIGIT _ISxdigit 111 # define _Locale_PUNCT _ISpunct 112 # define _Locale_SPACE _ISspace 113 # define _Locale_PRINT _ISprint 114 # define _Locale_ALPHA _ISalpha 115 #else 116 /* Default values based on C++ Standard 22.2.1. 117 * Under Windows the localisation implementation take care of mapping its 118 * mask values to those internal values. For other platforms without real 119 * localization support we are free to use the most suitable values.*/ 120 # define _Locale_SPACE 0x0001 121 # define _Locale_PRINT 0x0002 122 # define _Locale_CNTRL 0x0004 123 # define _Locale_UPPER 0x0008 124 # define _Locale_LOWER 0x0010 125 # define _Locale_ALPHA 0x0020 126 # define _Locale_DIGIT 0x0040 127 # define _Locale_PUNCT 0x0080 128 # define _Locale_XDIGIT 0x0100 129 #endif 130 131 #endif /* _STLP_C_LOCALE_H */ 132