epoc32/include/stdapis/stlport/stl/c_locale.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 /*
     2  * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
     3  *
     4  * Copyright (c) 1999
     5  * Silicon Graphics Computer Systems, Inc.
     6  *
     7  * Copyright (c) 1999 
     8  * Boris Fomitchev
     9  *
    10  * This material is provided "as is", with absolutely no warranty expressed
    11  * or implied. Any use is at your own risk.
    12  *
    13  * Permission to use or copy this software for any purpose is hereby granted 
    14  * without fee, provided the above notices are retained on all copies.
    15  * Permission to modify the code and to distribute modified code is granted,
    16  * provided the above notices are retained, and a notice that the code was
    17  * modified is included with the above copyright notice.
    18  *
    19  */ 
    20 
    21 
    22 #ifndef _STLP_C_LOCALE_H
    23 # define _STLP_C_LOCALE_H
    24 
    25 /*
    26  * Implementation dependent definitions
    27  */
    28 #ifdef __cplusplus
    29 #  include <stl/_config.h>
    30 #endif
    31 
    32 #if defined(__sgi) 
    33 # if defined(ROOT_65) /* IRIX 6.5.x */
    34 #  include <sgidefs.h>
    35 #  include <standards.h>
    36 #  include <wchar.h>
    37 #  include <ctype.h>
    38 
    39 # else
    40                   /* IRIX pre-6.5 */
    41 #  include <sgidefs.h>
    42 #  include <standards.h>
    43 
    44 #  if !defined(_SIZE_T) && !defined(_SIZE_T_)
    45 #   define _SIZE_T
    46 #    if (_MIPS_SZLONG == 32)
    47 typedef unsigned int    size_t;
    48 #    endif
    49 #    if (_MIPS_SZLONG == 64)
    50 typedef unsigned long   size_t;
    51 #    endif
    52 #   endif
    53 
    54 #   ifndef _WCHAR_T
    55 #    define _WCHAR_T
    56 #     if (_MIPS_SZLONG == 32)
    57 typedef long wchar_t;
    58 #     endif
    59 #     if (_MIPS_SZLONG == 64)
    60 typedef __int32_t wchar_t;
    61 #     endif
    62 #    endif /* _WCHAR_T */
    63 
    64 #    ifndef _WINT_T
    65 #     define _WINT_T
    66 #     if (_MIPS_SZLONG == 32)
    67         typedef long    wint_t;
    68 #     endif
    69 #     if (_MIPS_SZLONG == 64)
    70         typedef __int32_t wint_t;
    71 #     endif
    72 #    endif /* _WINT_T */
    73 
    74 #    ifndef _MBSTATE_T
    75 #    define _MBSTATE_T
    76 #    ifdef _MSC_VER
    77 		typedef int		mbstate_t;
    78 #    else
    79         typedef char    mbstate_t;
    80 #    endif
    81 #    endif /* _MBSTATE_T */
    82 
    83 #   endif /* ROOT65 */ 
    84 
    85 #  else /* __sgi */
    86 
    87 # ifdef __cplusplus
    88 # ifndef _STLP_CSTDDEF
    89 #  include <cstddef>
    90 # endif
    91 # ifndef _STLP_CWCHAR_H
    92 #  include <stl/_cwchar.h>
    93 # endif
    94 # ifndef _STLP_CCTYPE
    95 #  include <cctype>
    96 # endif
    97 # else
    98 #  include <stddef.h>
    99 #  include <wchar.h>
   100 #  include <ctype.h>
   101 # endif
   102 
   103 #endif /* __sgi */
   104 
   105 /*
   106  * GENERAL FRAMEWORK
   107  */
   108 
   109 struct _Locale_ctype;
   110 struct _Locale_numeric;
   111 struct _Locale_time;
   112 struct _Locale_collate;
   113 struct _Locale_monetary;
   114 struct _Locale_messages;
   115 
   116 /*
   117   Bitmask macros.  
   118 */
   119 
   120 /*
   121  * For narrow characters, we expose the lookup table interface.
   122  */
   123 
   124 /* Internal bitmask macros, os-specific. */
   125 
   126 #if defined(__sgi)              /* IRIX */
   127 
   128 #define _Locale_S      0x00000008      /* Spacing character */
   129 #define _Locale_A      0x00004000      /* Alphabetical characters only */
   130 #define _Locale_B      0x00000040      /* Obsolete: was space char only */
   131 #define _Locale_PR     0x00008000      /* Printable characters only */
   132 #define _Locale_G      0x40000000      /* Graphic characters only */
   133 #define _Locale_BL     0x80000000      /* The blank character class */
   134 
   135 /* Public bitmask macros, must be defined for every OS. These values, of
   136  * course, are specific to IRIX. */
   137 
   138 #define _Locale_CNTRL  0x00000020      /* Control character */
   139 #define _Locale_UPPER  0x00000001      /* Upper case */
   140 #define _Locale_LOWER  0x00000002      /* Lower case */
   141 #define _Locale_DIGIT  0x00000004      /* Numeral (digit) */
   142 #define _Locale_XDIGIT 0x00000080      /* heXadecimal digit */
   143 #define _Locale_PUNCT  0x00000010      /* Punctuation */
   144 #define _Locale_SPACE  (_Locale_S | _Locale_BL)
   145 #define _Locale_PRINT  (_Locale_PUNCT | _Locale_UPPER | _Locale_LOWER | \
   146                         _Locale_DIGIT | _Locale_A | _Locale_XDIGIT | \
   147                         _Locale_PR)
   148 #define _Locale_ALPHA  _Locale_A
   149 
   150 /*
   151 * All of these except for graph and blank are from the C standard;
   152 * graph and blank are XPG4.  (graph in XPG4 doesn't mean quite the
   153 * same thing as graph in the C++ library)
   154 */
   155 
   156 #endif /* IRIX */
   157 
   158 
   159 #if defined( __Lynx__ )
   160  /* azov: On Lynx isalpha defined as (_U | _L), which gives us a mask 
   161   * unusable in ctype_table. So we have to redefine it and use hard-coded 
   162   * numbers (to avoid potential clashes if system headers change).
   163   *
   164   * P.S. Actually, I see no reason in using platform-specific masks - 
   165   * having just one set of masks for all platforms should work just as
   166   * well - we only use them internally and they don't have to be equal 
   167   * to whatever defined in local ctype.h
   168   *
   169   */ 
   170 #   define _Locale_CNTRL  040     /* _C, Control character */
   171 #   define _Locale_UPPER  01      /* _U, Upper case */
   172 #   define _Locale_LOWER  02      /* _L, Lower case */
   173 #   define _Locale_DIGIT  04      /* _N, Numeral (digit) */
   174 #   define _Locale_XDIGIT 0200    /* _X, heXadecimal digit */
   175 #   define _Locale_PUNCT  020     /* _P, Punctuation */
   176 #   define _Locale_SPACE  010     /* _S, Spacing */
   177 #   define _Locale_ALPHA  040000  /* none, Alphanumerical */
   178 #   define _Locale_PRINT  (_Locale_PUNCT | _Locale_UPPER | _Locale_LOWER | \
   179                            _Locale_DIGIT | _Locale_ALPHA | _Locale_XDIGIT |\
   180                            _Locale_SPACE ) /* Printable */
   181 # endif /* __Lynx__ */
   182 
   183 #if defined(__GNUC__) || defined (__BORLANDC__) || defined (__COMO__)
   184 
   185 # if defined (__CYGWIN__)
   186 
   187 #  define _Locale_CNTRL  040
   188 #  define _Locale_UPPER  02
   189 #  define _Locale_LOWER  01
   190 #  define _Locale_DIGIT  04
   191 #  define _Locale_XDIGIT ( 0100 | _Locale_DIGIT )
   192 #  define _Locale_PUNCT  020
   193 #  define _Locale_SPACE  010
   194 #  define _Locale_ALPHA  (_Locale_UPPER | _Locale_LOWER)
   195 #  define _Locale_PRINT  (_Locale_ALPHA | _Locale_DIGIT | _Locale_PUNCT | 0200 )
   196 
   197 # elif defined (__FreeBSD__)
   198 
   199 # define _Locale_CNTRL _CTYPE_C
   200 # define _Locale_UPPER _CTYPE_U
   201 # define _Locale_LOWER _CTYPE_L
   202 # define _Locale_DIGIT _CTYPE_D
   203 # define _Locale_XDIGIT _CTYPE_X
   204 # define _Locale_PUNCT _CTYPE_P
   205 # define _Locale_SPACE _CTYPE_S
   206 # define _Locale_PRINT _CTYPE_R
   207 # define _Locale_ALPHA _CTYPE_A
   208 
   209 # elif defined (__NetBSD__) || defined (__amigaos__)
   210  
   211 #  define _Locale_CNTRL _C
   212 #  define _Locale_UPPER _U
   213 #  define _Locale_LOWER _L
   214 #  define _Locale_DIGIT _N
   215 #  define _Locale_XDIGIT (_N|_X)
   216 #  define _Locale_PUNCT _P
   217 #  define _Locale_SPACE _S
   218 #  define _Locale_PRINT (_P|_U|_L|_N|_B)
   219 #  define _Locale_ALPHA (_U|_L)
   220 # elif defined(__EMX__) /* OS/2 with emx runtime */
   221 #  define _Locale_CNTRL _CNTRL
   222 #  define _Locale_UPPER _UPPER
   223 #  define _Locale_LOWER _LOWER
   224 #  define _Locale_DIGIT _DIGIT
   225 #  define _Locale_XDIGIT _XDIGIT
   226 #  define _Locale_PUNCT _PUNCT
   227 #  define _Locale_SPACE _SPACE
   228 #  define _Locale_PRINT _PRINT
   229 #  define _Locale_ALPHA (_UPPER|_LOWER)
   230 
   231 # elif defined(_STLP_USE_GLIBC) /* linux, using the gnu compiler */
   232 
   233 /* This section uses macros defined in the gnu libc ctype.h header */
   234 
   235 #  define _Locale_CNTRL  _IScntrl
   236 #  define _Locale_UPPER  _ISupper
   237 #  define _Locale_LOWER  _ISlower
   238 #  define _Locale_DIGIT  _ISdigit
   239 #  define _Locale_XDIGIT _ISxdigit
   240 #  define _Locale_PUNCT  _ISpunct
   241 #  define _Locale_SPACE  _ISspace
   242 #  define _Locale_PRINT  _ISprint
   243 #  define _Locale_ALPHA  _ISalpha
   244 
   245 #  endif /* GLIBC */
   246 
   247 #endif /* gnu */
   248 
   249 #if ( defined(__sun) && defined (__SVR4) ) \
   250     || (defined (__digital__) && defined (__unix__)) \
   251     || defined(_AIX)
   252 /* fbp : condition from AT&T code*/
   253 #if !(defined(__XPG4_CHAR_CLASS__) || defined(_XPG4_2) || \
   254     (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 == 4))) && ! defined (_ISCNTRL)
   255   /* fbp : on 2.5.1, the defines are different ;( */
   256   // # if ( defined (__sun) && defined (__SVR4) && ! defined (_ISCNTRL) )
   257 #   define _ISCNTRL _C
   258 #   define _ISUPPER _U
   259 #   define _ISLOWER _L
   260 #   define _ISDIGIT _N
   261 #   define _ISXDIGIT _X
   262 #   define _ISPUNCT _P
   263 #   define _ISSPACE _S
   264 #   define _ISPRINT (_P | _U | _L | _N | _B)
   265 #   define _ISALPHA (_U | _L)
   266 #  endif 
   267 
   268 #  define _Locale_CNTRL  _ISCNTRL
   269 #  define _Locale_UPPER  _ISUPPER
   270 #  define _Locale_LOWER  _ISLOWER
   271 #  define _Locale_DIGIT  _ISDIGIT
   272 #  define _Locale_XDIGIT _ISXDIGIT
   273 #  define _Locale_PUNCT  _ISPUNCT
   274 #  define _Locale_SPACE  _ISSPACE
   275 #  define _Locale_PRINT  _ISPRINT
   276 #  define _Locale_ALPHA  _ISALPHA
   277 # elif defined(__SYMBIAN32__)
   278 # define _Locale_CNTRL _CTYPE_C
   279 # define _Locale_UPPER _CTYPE_U
   280 # define _Locale_LOWER _CTYPE_L
   281 # define _Locale_DIGIT _CTYPE_D
   282 # define _Locale_XDIGIT _CTYPE_X
   283 # define _Locale_PUNCT _CTYPE_P
   284 # define _Locale_SPACE _CTYPE_S
   285 # define _Locale_PRINT _CTYPE_R
   286 # define _Locale_ALPHA _CTYPE_A
   287 
   288 #elif defined (__MWERKS__)
   289 #  define _Locale_CNTRL  __control_char
   290 #  define _Locale_UPPER  __upper_case
   291 #  define _Locale_LOWER  __lower_case
   292 #  define _Locale_DIGIT  __digit
   293 #  define _Locale_XDIGIT __hex_digit
   294 #  define _Locale_PUNCT  __punctuation
   295 #  define _Locale_SPACE  __space_char
   296 #  define _Locale_PRINT  __printable
   297 #  define _Locale_ALPHA  __alphanumeric
   298 #elif defined (__BORLANDC__)
   299 #  define _Locale_CNTRL  _IS_CTL
   300 #  define _Locale_UPPER  _IS_UPP
   301 #  define _Locale_LOWER  _IS_LOW
   302 #  define _Locale_DIGIT  _IS_DIG
   303 #  define _Locale_XDIGIT _IS_HEX
   304 #  define _Locale_PUNCT  _IS_PUN
   305 #  define _Locale_SPACE  _IS_SP
   306 #  define _Locale_PRINT  (_IS_SP|_IS_PUN|_IS_UPP|_IS_LOW|_IS_DIG)
   307 #  define _Locale_ALPHA  _IS_ALPHA
   308 #elif defined (_MSC_VER) || defined (__MINGW32__)
   309 #  define _Locale_CNTRL  _CONTROL
   310 #  define _Locale_UPPER  _UPPER
   311 #  define _Locale_LOWER  _LOWER
   312 #  define _Locale_DIGIT  _DIGIT
   313 #  define _Locale_XDIGIT _HEX
   314 #  define _Locale_PUNCT  _PUNCT
   315 #  define _Locale_SPACE  _SPACE
   316 #  define _Locale_PRINT  (_ALPHA | _DIGIT | _BLANK | _PUNCT)
   317 // is this one has to be so complex ?  
   318 #  define _Locale_ALPHA  ( _ALPHA & ~ (_UPPER | _LOWER )) 
   319 #elif defined (__DMC__)
   320 #  define _Locale_CNTRL  _CONTROL
   321 #  define _Locale_UPPER  _UPPER
   322 #  define _Locale_LOWER  _LOWER
   323 #  define _Locale_DIGIT  _DIGIT
   324 #  define _Locale_XDIGIT _HEX
   325 #  define _Locale_PUNCT  _PUNCT
   326 #  define _Locale_SPACE  _SPACE
   327 #  define _Locale_PRINT  (_UPPER | _LOWER | _DIGIT | _PUNCT | _SPACE)
   328 #  define _Locale_ALPHA  _ALPHA
   329 #elif defined(__MRC__) || defined(__SC__)		//*TY 02/24/2000 - added support for MPW
   330 #  define _Locale_CNTRL  _CTL
   331 #  define _Locale_UPPER  _UPP
   332 #  define _Locale_LOWER  _LOW
   333 #  define _Locale_DIGIT  _DIG
   334 #  define _Locale_XDIGIT _HEX
   335 #  define _Locale_PUNCT  _PUN
   336 #  define _Locale_SPACE  _BLA
   337 #  define _Locale_PRINT  (_UPP | _LOW | _DIG | _PUN | _BLA)
   338 #  define _Locale_ALPHA  (_UPP | _LOW)
   339 #elif defined(__MLCCPP__)
   340 #  define _Locale_CNTRL    1
   341 #  define _Locale_UPPER    2
   342 #  define _Locale_LOWER    4
   343 #  define _Locale_DIGIT    8
   344 #  define _Locale_XDIGIT  16
   345 #  define _Locale_PUNCT   32
   346 #  define _Locale_SPACE   64
   347 #  define _Locale_PRINT  128
   348 #  define _Locale_ALPHA  256
   349 
   350 # elif defined (__GNUC__) && defined (__APPLE__)
   351  
   352 # define _Locale_CNTRL _C
   353 # define _Locale_UPPER _U
   354 # define _Locale_LOWER _L
   355 # define _Locale_DIGIT _D
   356 # define _Locale_XDIGIT _X
   357 # define _Locale_PUNCT _P
   358 # define _Locale_SPACE _S
   359 # define _Locale_PRINT _R
   360 # define _Locale_ALPHA _A
   361 
   362 # elif defined (__hpux) || defined (__osf__)
   363  
   364 #   if defined(__HP_aCC) && !defined(_INCLUDE_HPUX_SOURCE)
   365 #     define _ISALPHA      0x001
   366 #     define _ISALNUM      0x002
   367 #     define _ISBLANK      0x004
   368 #     define _ISCNTRL      0x008
   369 #     define _ISDIGIT      0x010
   370 #     define _ISGRAPH      0x020
   371 #     define _ISLOWER      0x040
   372 #     define _ISPRINT      0x080
   373 #     define _ISPUNCT      0x100
   374 #     define _ISSPACE      0x200
   375 #     define _ISUPPER      0x400
   376 #     define _ISXDIGIT     0x800
   377 #  endif
   378 #  define _Locale_CNTRL  _ISCNTRL
   379 #  define _Locale_UPPER  _ISUPPER
   380 #  define _Locale_LOWER  _ISLOWER
   381 #  define _Locale_DIGIT  _ISDIGIT
   382 #  define _Locale_XDIGIT _ISXDIGIT
   383 #  define _Locale_PUNCT  _ISPUNCT
   384 #  define _Locale_SPACE  _ISSPACE
   385 #  define _Locale_PRINT  _ISPRINT
   386 #  define _Locale_ALPHA  _ISALPHA
   387 # elif defined (__MVS__) || defined(__OS400__)
   388 #  define _Locale_CNTRL __ISCNTRL
   389 #  define _Locale_UPPER __ISUPPER
   390 #  define _Locale_LOWER __ISLOWER
   391 #  define _Locale_DIGIT __ISDIGIT
   392 #  define _Locale_XDIGIT __ISXDIGIT
   393 #  define _Locale_PUNCT __ISPUNCT
   394 #  define _Locale_SPACE __ISSPACE
   395 #  define _Locale_PRINT __ISPRINT
   396 #  define _Locale_ALPHA __ISALPHA
   397 # elif defined (__QNXNTO__)  || defined (__WATCOMC__)
   398 # define _Locale_CNTRL _CNTRL
   399 # define _Locale_UPPER _UPPER
   400 # define _Locale_LOWER _LOWER
   401 # define _Locale_DIGIT _DIGIT
   402 # define _Locale_XDIGIT _XDIGT
   403 # define _Locale_PUNCT _PUNCT
   404 # define _Locale_SPACE _SPACE
   405 # define _Locale_PRINT _PRINT
   406 # define _Locale_ALPHA (_UPPER | _LOWER)
   407 #elif defined (__DJGPP)
   408 #  define _Locale_CNTRL  __dj_ISCNTRL
   409 #  define _Locale_UPPER  __dj_ISUPPER
   410 #  define _Locale_LOWER  __dj_ISLOWER
   411 #  define _Locale_DIGIT  __dj_ISDIGIT
   412 #  define _Locale_XDIGIT __dj_ISXDIGIT
   413 #  define _Locale_PUNCT  __dj_ISPUNCT
   414 #  define _Locale_SPACE  __dj_ISSPACE
   415 #  define _Locale_PRINT  __dj_ISPRINT
   416 #  define _Locale_ALPHA  __dj_ISALPHA
   417 #elif defined (_STLP_SCO_OPENSERVER)
   418 #  define _Locale_CNTRL _C
   419 #  define _Locale_UPPER _U
   420 #  define _Locale_LOWER _L
   421 #  define _Locale_DIGIT _N
   422 #  define _Locale_XDIGIT _X
   423 #  define _Locale_PUNCT _P
   424 #  define _Locale_SPACE _S
   425 #  define _Locale_PRINT _R
   426 #  define _Locale_ALPHA _A
   427 #elif defined (__NCR_SVR)
   428 #  define _Locale_CNTRL _C
   429 #  define _Locale_UPPER _U
   430 #  define _Locale_LOWER _L
   431 #  define _Locale_DIGIT _N
   432 #  define _Locale_XDIGIT _X
   433 #  define _Locale_PUNCT _P
   434 #  define _Locale_SPACE _S
   435 #  define _Locale_PRINT (_P | _U | _L | _N | _B)
   436 #  define _Locale_ALPHA (_U | _L)
   437 #elif defined (_CRAY)
   438 #  define _Locale_CNTRL  _CNTRL
   439 #  define _Locale_UPPER  _UPPER
   440 #  define _Locale_LOWER  _LOWER
   441 #  define _Locale_DIGIT  _DIGIT
   442 #  define _Locale_XDIGIT _XDIGIT
   443 #  define _Locale_PUNCT  _PUNCT
   444 #  define _Locale_SPACE  _SPACE
   445 #  define _Locale_PRINT  _PRINT
   446 #  define _Locale_ALPHA  _ALPHA
   447 #elif defined (_STLP_VXWORKS_TORNADO)
   448 #define _Locale_UPPER _C_UPPER   /* 0x01 */
   449 #define _Locale_LOWER _C_LOWER /* 0x02 */
   450 #define _Locale_DIGIT  _C_NUMBER   /* 0x04 */
   451 #define _Locale_SPACE  _C_WHITE_SPACE   /* 0x08 */
   452 #define _Locale_PUNCT _C_PUNCT   /* 0x10 */
   453 #define _Locale_CNTRL _C_CONTROL   /* 0x20 */
   454 #define _Locale_XDIGIT _C_HEX_NUMBER   /* 0x40 */
   455 #define _Locale_PRINT  (_C_B | _C_UPPER |  _C_LOWER | _C_NUMBER | _C_PUNCT)
   456 #define _Locale_ALPHA (_C_UPPER |  _C_LOWER) 
   457 #endif
   458 
   459 # endif /* _STLP_C_LOCALE_H */