os/ossrv/genericopenlibs/cppstdlib/stl/stlport/stl/_cwchar.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
 * Portions Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
sl@0
     3
 *
sl@0
     4
 * Copyright (c) 1999
sl@0
     5
 * Boris Fomitchev
sl@0
     6
 *
sl@0
     7
 * This material is provided "as is", with absolutely no warranty expressed
sl@0
     8
 * or implied. Any use is at your own risk.
sl@0
     9
 *
sl@0
    10
 * Permission to use or copy this software for any purpose is hereby granted
sl@0
    11
 * without fee, provided the above notices are retained on all copies.
sl@0
    12
 * Permission to modify the code and to distribute modified code is granted,
sl@0
    13
 * provided the above notices are retained, and a notice that the code was
sl@0
    14
 * modified is included with the above copyright notice.
sl@0
    15
 *
sl@0
    16
 */
sl@0
    17
sl@0
    18
#ifndef _STLP_INTERNAL_CWCHAR
sl@0
    19
#define _STLP_INTERNAL_CWCHAR
sl@0
    20
sl@0
    21
#if defined (_STLP_WCE_EVC3)
sl@0
    22
#  ifndef _STLP_INTERNAL_MBSTATE_T
sl@0
    23
#    include <stl/_mbstate_t.h>
sl@0
    24
#  endif
sl@0
    25
#else
sl@0
    26
#  if defined (__GNUC__) && !defined (__SYMBIAN32__)
sl@0
    27
#    include _STLP_NATIVE_CPP_C_HEADER(cstddef)
sl@0
    28
#  endif
sl@0
    29
sl@0
    30
#  if !defined (_STLP_NO_CWCHAR) && defined (_STLP_USE_NEW_C_HEADERS)
sl@0
    31
#    include _STLP_NATIVE_CPP_C_HEADER(cwchar)
sl@0
    32
#    if defined (__OpenBSD__)
sl@0
    33
typedef _BSD_WINT_T_ wint_t;
sl@0
    34
#    endif /* __OpenBSD__ */
sl@0
    35
sl@0
    36
#  elif defined (_STLP_NO_WCHAR_T) || defined (__MRC__) || (defined (__SC__) && !defined (__DMC__)) || \
sl@0
    37
       (defined (__BORLANDC__) && (__BORLANDC__ < 0x580)) || \
sl@0
    38
        defined (__OpenBSD__) || defined (__FreeBSD__) || \
sl@0
    39
       (defined (__GNUC__) && (defined (__APPLE__) || defined ( __Lynx__ )))
sl@0
    40
#    include _STLP_NATIVE_C_HEADER(stddef.h)
sl@0
    41
#    if defined (__Lynx__)
sl@0
    42
#      ifndef _WINT_T
sl@0
    43
typedef long int wint_t;
sl@0
    44
#        define _WINT_T
sl@0
    45
#      endif /* _WINT_T */
sl@0
    46
#    endif
sl@0
    47
#    if defined(__OpenBSD__)
sl@0
    48
typedef _BSD_WINT_T_ wint_t;
sl@0
    49
#    endif /* __OpenBSD__ */
sl@0
    50
#  elif defined (__MWERKS__) && defined (N_PLAT_NLM)
sl@0
    51
#    include <wchar.h>
sl@0
    52
#  else
sl@0
    53
#    include _STLP_NATIVE_C_HEADER(wchar.h)
sl@0
    54
sl@0
    55
#    if defined (__sun) && (defined (_XOPEN_SOURCE) || (_XOPEN_VERSION - 0 == 4))
sl@0
    56
extern wint_t   btowc();
sl@0
    57
extern int      fwprintf();
sl@0
    58
extern int      fwscanf();
sl@0
    59
extern int      fwide();
sl@0
    60
extern int      mbsinit();
sl@0
    61
extern size_t   mbrlen();
sl@0
    62
extern size_t   mbrtowc();
sl@0
    63
extern size_t   mbsrtowcs();
sl@0
    64
extern int      swprintf();
sl@0
    65
extern int      swscanf();
sl@0
    66
extern int      vfwprintf();
sl@0
    67
extern int      vwprintf();
sl@0
    68
extern int      vswprintf();
sl@0
    69
extern size_t   wcrtomb();
sl@0
    70
extern size_t   wcsrtombs();
sl@0
    71
extern wchar_t  *wcsstr();
sl@0
    72
extern int      wctob();
sl@0
    73
extern wchar_t  *wmemchr();
sl@0
    74
extern int      wmemcmp();
sl@0
    75
extern wchar_t  *wmemcpy();
sl@0
    76
extern wchar_t  *wmemmove();
sl@0
    77
extern wchar_t  *wmemset();
sl@0
    78
extern int      wprintf();
sl@0
    79
extern int      wscanf();
sl@0
    80
#    endif
sl@0
    81
#  endif
sl@0
    82
sl@0
    83
#  if defined (__MSL__) && (__MSL__ <= 0x51FF)  /* dwa 2/28/99 - not yet implemented by MSL  */
sl@0
    84
#    define _STLP_WCHAR_MSL_EXCLUDE 1
sl@0
    85
namespace std {
sl@0
    86
  extern "C" size_t wcsftime(wchar_t * str, size_t max_size, const wchar_t * format_str, const struct tm * timeptr);
sl@0
    87
}
sl@0
    88
#    define _STLP_NO_MBSTATE_T 1
sl@0
    89
#  elif defined (__BORLANDC__)
sl@0
    90
#    if !defined (_STLP_USE_NO_IOSTREAMS)
sl@0
    91
#      define _STLP_NO_NATIVE_MBSTATE_T
sl@0
    92
#    endif
sl@0
    93
#    define _STLP_WCHAR_BORLAND_EXCLUDE 1
sl@0
    94
#  endif
sl@0
    95
sl@0
    96
#  ifndef _STLP_INTERNAL_MBSTATE_T
sl@0
    97
#    include <stl/_mbstate_t.h>
sl@0
    98
#  endif
sl@0
    99
sl@0
   100
#  if !defined (_STLP_NO_WCHAR_T)
sl@0
   101
#    ifndef WCHAR_MIN
sl@0
   102
#      define WCHAR_MIN 0
sl@0
   103
/* SUNpro has some bugs with casts. wchar_t is size of int there anyway. */
sl@0
   104
#      if defined (__SUNPRO_CC) || defined (__DJGPP)
sl@0
   105
#        define WCHAR_MAX (~0)
sl@0
   106
#      else
sl@0
   107
#        define WCHAR_MAX ((wchar_t)~0)
sl@0
   108
#      endif
sl@0
   109
#    endif
sl@0
   110
#    if defined (__GNUC__) && defined (__alpha__)
sl@0
   111
/* Definition of WCHAR_MIN and MAX are wrong for alpha platform
sl@0
   112
 * as gcc consider wchar_t as an unsigned type. Static assertion are
sl@0
   113
 * here to check that a future alpha SDK or a future gcc won't change the
sl@0
   114
 * situation making this workaround useless.
sl@0
   115
 */
sl@0
   116
_STLP_STATIC_ASSERT(((wchar_t)-1 > 0) && (WCHAR_MIN < 0))
sl@0
   117
#      undef WCHAR_MIN
sl@0
   118
#      define WCHAR_MIN 0
sl@0
   119
#      undef WCHAR_MAX
sl@0
   120
#      define WCHAR_MAX ((wchar_t)~0)
sl@0
   121
#    endif
sl@0
   122
#    if defined(__HP_aCC) && (__HP_aCC >= 60000)
sl@0
   123
/* Starting with B.11.31, HP-UX/ia64 provides C99-compliant definitions
sl@0
   124
 * of WCHAR_MIN/MAX macros without having to define
sl@0
   125
 * _INCLUDE_STDC__SOURCE_199901 macro (which aCC compiler does not
sl@0
   126
 * predefine). Let STLport provide B.11.31 definitions on any version of
sl@0
   127
 * HP-UX/ia64.
sl@0
   128
 */
sl@0
   129
#      undef WCHAR_MIN
sl@0
   130
#      define WCHAR_MIN 0
sl@0
   131
#      undef WCHAR_MAX
sl@0
   132
#      define WCHAR_MAX UINT_MAX 
sl@0
   133
#    endif
sl@0
   134
#  endif
sl@0
   135
sl@0
   136
#  if defined (_STLP_IMPORT_VENDOR_CSTD)
sl@0
   137
sl@0
   138
#    if defined (__SUNPRO_CC) && !defined (_STLP_HAS_NO_NEW_C_HEADERS)
sl@0
   139
using _STLP_VENDOR_CSTD::wint_t;
sl@0
   140
#    endif
sl@0
   141
sl@0
   142
_STLP_BEGIN_NAMESPACE
sl@0
   143
#    if defined (_STLP_NO_WCHAR_T)
sl@0
   144
typedef int wint_t;
sl@0
   145
#    else
sl@0
   146
// gcc 3.0 has a glitch : wint_t only sucked into the global namespace if _GLIBCPP_USE_WCHAR_T is defined
sl@0
   147
// __MWERKS__ has definition in wchar_t.h (MSL C++), but ones differ from definition
sl@0
   148
// in stdio.h; I prefer settings from last file.
sl@0
   149
#      if (defined (__GNUC__) && ! defined (_GLIBCPP_USE_WCHAR_T)) // || (defined(__MWERKS__) && defined(N_PLAT_NLM))
sl@0
   150
using ::wint_t;
sl@0
   151
#      else
sl@0
   152
using _STLP_VENDOR_CSTD::wint_t;
sl@0
   153
#      endif
sl@0
   154
#    endif
sl@0
   155
sl@0
   156
using _STLP_VENDOR_CSTD::size_t;
sl@0
   157
sl@0
   158
#    if !defined (_STLP_NO_NATIVE_MBSTATE_T) && !defined (_STLP_USE_OWN_MBSTATE_T)
sl@0
   159
using _STLP_VENDOR_MB_NAMESPACE::mbstate_t;
sl@0
   160
sl@0
   161
#      if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) && !defined(_STLP_WCHAR_BORLAND_EXCLUDE) && \
sl@0
   162
         (!defined(__MSL__) || __MSL__ > 0x6001)
sl@0
   163
#        if defined (__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION >= 8))) || \
sl@0
   164
          !(defined (__KCC) || defined (__GNUC__)) && !defined(_STLP_WCE_NET) && !(defined(__MWERKS__) && defined(N_PLAT_NLM))
sl@0
   165
using _STLP_VENDOR_MB_NAMESPACE::btowc;
sl@0
   166
#          if (!defined(__MSL__) || __MSL__ > 0x7001)
sl@0
   167
using _STLP_VENDOR_MB_NAMESPACE::mbsinit;
sl@0
   168
#          endif
sl@0
   169
#        endif
sl@0
   170
#        if defined (__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION >= 8))) || \
sl@0
   171
           !defined (__GNUC__) && !defined(_STLP_WCE_NET) && !(defined(__MWERKS__) && defined(N_PLAT_NLM))
sl@0
   172
using _STLP_VENDOR_MB_NAMESPACE::mbrlen;
sl@0
   173
using _STLP_VENDOR_MB_NAMESPACE::mbrtowc;
sl@0
   174
using _STLP_VENDOR_MB_NAMESPACE::mbsrtowcs;
sl@0
   175
using _STLP_VENDOR_MB_NAMESPACE::wcrtomb;
sl@0
   176
using _STLP_VENDOR_MB_NAMESPACE::wcsrtombs;
sl@0
   177
#        endif
sl@0
   178
#      endif /* BORLAND && !__MSL__ || __MSL__ > 0x6001 */
sl@0
   179
sl@0
   180
#    endif /* _STLP_NO_NATIVE_MBSTATE_T */
sl@0
   181
sl@0
   182
#    if !defined (_STLP_NO_NATIVE_WIDE_FUNCTIONS) && ! defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
sl@0
   183
sl@0
   184
#      if !defined (_STLP_WCHAR_BORLAND_EXCLUDE) && ! defined (_STLP_NO_CSTD_FUNCTION_IMPORTS) && !(defined(__MWERKS__) && defined(N_PLAT_NLM))
sl@0
   185
using _STLP_VENDOR_CSTD::fgetwc;
sl@0
   186
using _STLP_VENDOR_CSTD::fgetws;
sl@0
   187
using _STLP_VENDOR_CSTD::fputwc;
sl@0
   188
using _STLP_VENDOR_CSTD::fputws;
sl@0
   189
#      endif
sl@0
   190
sl@0
   191
#      if !(defined (_STLP_WCHAR_SUNPRO_EXCLUDE) || defined (_STLP_WCHAR_BORLAND_EXCLUDE) || \
sl@0
   192
            defined(_STLP_WCHAR_HPACC_EXCLUDE) || (defined(__MWERKS__) && defined(N_PLAT_NLM)))
sl@0
   193
#        if !defined (__DECCXX)
sl@0
   194
using _STLP_VENDOR_CSTD::fwide;
sl@0
   195
#        endif
sl@0
   196
using _STLP_VENDOR_CSTD::fwprintf;
sl@0
   197
using _STLP_VENDOR_CSTD::fwscanf;
sl@0
   198
using _STLP_VENDOR_CSTD::getwchar;
sl@0
   199
#      endif
sl@0
   200
sl@0
   201
#      if !defined(_STLP_WCHAR_BORLAND_EXCLUDE) && !(defined(__MWERKS__) && defined(N_PLAT_NLM))
sl@0
   202
#        ifndef _STLP_WCE_NET
sl@0
   203
using _STLP_VENDOR_CSTD::getwc;
sl@0
   204
#        endif
sl@0
   205
using _STLP_VENDOR_CSTD::ungetwc;
sl@0
   206
#        ifndef _STLP_WCE_NET
sl@0
   207
using _STLP_VENDOR_CSTD::putwc;
sl@0
   208
#        endif
sl@0
   209
using _STLP_VENDOR_CSTD::putwchar;
sl@0
   210
#      endif
sl@0
   211
sl@0
   212
#      if !(defined (_STLP_WCHAR_SUNPRO_EXCLUDE) || defined (_STLP_WCHAR_BORLAND_EXCLUDE) || \
sl@0
   213
            defined (_STLP_WCHAR_HPACC_EXCLUDE) || (defined (__MWERKS__) && defined (N_PLAT_NLM)))
sl@0
   214
#        if defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB <= 1300) || \
sl@0
   215
            (defined (__MINGW32__) && !(defined (__SYMBIAN32__) && defined (__GCCXML__)))
sl@0
   216
#          undef swprintf
sl@0
   217
#          define swprintf _snwprintf
sl@0
   218
#          undef vswprintf
sl@0
   219
#          define vswprintf _vsnwprintf
sl@0
   220
using ::swprintf;
sl@0
   221
using ::vswprintf;
sl@0
   222
#        else
sl@0
   223
using _STLP_VENDOR_CSTD::swprintf;
sl@0
   224
using _STLP_VENDOR_CSTD::vswprintf;
sl@0
   225
#        endif
sl@0
   226
using _STLP_VENDOR_CSTD::swscanf;
sl@0
   227
using _STLP_VENDOR_CSTD::vfwprintf;
sl@0
   228
using _STLP_VENDOR_CSTD::vwprintf;
sl@0
   229
sl@0
   230
#        if (!defined(__MSL__) || __MSL__ > 0x7001 ) && !defined(_STLP_WCE_NET) && \
sl@0
   231
             !defined(_STLP_USE_UCLIBC) /* at least in uClibc 0.9.26 */
sl@0
   232
sl@0
   233
using _STLP_VENDOR_CSTD::wcsftime;
sl@0
   234
#        endif
sl@0
   235
using _STLP_VENDOR_CSTD::wcstok;
sl@0
   236
sl@0
   237
#      endif
sl@0
   238
sl@0
   239
#      if !(defined(__MWERKS__) && defined(N_PLAT_NLM))
sl@0
   240
#        if !defined (_STLP_WCE_NET)
sl@0
   241
using _STLP_VENDOR_CSTD::wcscoll;
sl@0
   242
using _STLP_VENDOR_CSTD::wcsxfrm;
sl@0
   243
#        endif
sl@0
   244
using _STLP_VENDOR_CSTD::wcscat;
sl@0
   245
using _STLP_VENDOR_CSTD::wcsrchr;
sl@0
   246
using _STLP_VENDOR_CSTD::wcscmp;
sl@0
   247
sl@0
   248
using _STLP_VENDOR_CSTD::wcscpy;
sl@0
   249
using _STLP_VENDOR_CSTD::wcscspn;
sl@0
   250
sl@0
   251
using _STLP_VENDOR_CSTD::wcslen;
sl@0
   252
using _STLP_VENDOR_CSTD::wcsncat;
sl@0
   253
using _STLP_VENDOR_CSTD::wcsncmp;
sl@0
   254
using _STLP_VENDOR_CSTD::wcsncpy;
sl@0
   255
using _STLP_VENDOR_CSTD::wcspbrk;
sl@0
   256
using _STLP_VENDOR_CSTD::wcschr;
sl@0
   257
sl@0
   258
using _STLP_VENDOR_CSTD::wcsspn;
sl@0
   259
#      endif
sl@0
   260
sl@0
   261
#      if !defined (_STLP_WCHAR_BORLAND_EXCLUDE) && !(defined(__MWERKS__) && defined(N_PLAT_NLM))
sl@0
   262
using _STLP_VENDOR_CSTD::wcstod;
sl@0
   263
using _STLP_VENDOR_CSTD::wcstol;
sl@0
   264
#      endif
sl@0
   265
sl@0
   266
#      if !(defined (_STLP_WCHAR_SUNPRO_EXCLUDE) || defined (_STLP_WCHAR_HPACC_EXCLUDE) || \
sl@0
   267
            (defined (__MWERKS__) && defined (N_PLAT_NLM)))
sl@0
   268
using _STLP_VENDOR_CSTD::wcsstr;
sl@0
   269
using _STLP_VENDOR_CSTD::wmemchr;
sl@0
   270
sl@0
   271
#        if !defined (_STLP_WCHAR_BORLAND_EXCLUDE)
sl@0
   272
#            if !defined (_STLP_WCE_NET)
sl@0
   273
using _STLP_VENDOR_CSTD::wctob;
sl@0
   274
#            endif
sl@0
   275
#          if !defined (__DMC__)
sl@0
   276
using _STLP_VENDOR_CSTD::wmemcmp;
sl@0
   277
using _STLP_VENDOR_CSTD::wmemmove;
sl@0
   278
#          endif
sl@0
   279
using _STLP_VENDOR_CSTD::wprintf;
sl@0
   280
using _STLP_VENDOR_CSTD::wscanf;
sl@0
   281
#        endif
sl@0
   282
sl@0
   283
#        if defined (__BORLANDC__)
sl@0
   284
inline wchar_t* _STLP_wmemcpy(wchar_t* __wdst, const wchar_t* __wsrc, size_t __n)
sl@0
   285
{ return __STATIC_CAST(wchar_t*, _STLP_VENDOR_CSTD::wmemcpy(__wdst, __wsrc, __n)); }
sl@0
   286
inline wchar_t* _STLP_wmemset(wchar_t* __wdst, wchar_t __wc, size_t __n)
sl@0
   287
{ return __STATIC_CAST(wchar_t*, _STLP_VENDOR_CSTD::memset(__wdst, __wc, __n)); }
sl@0
   288
#          undef wmemcpy
sl@0
   289
#          undef wmemset
sl@0
   290
inline wchar_t* wmemcpy(wchar_t* __wdst, const wchar_t* __wsrc, size_t __n)
sl@0
   291
{ return _STLP_wmemcpy(__wdst, __wsrc, __n); }
sl@0
   292
inline wchar_t* wmemset(wchar_t* __wdst, wchar_t __wc, size_t __n)
sl@0
   293
{ return _STLP_wmemset(__wdst, __wc, __n); }
sl@0
   294
#        elif defined (__DMC__)
sl@0
   295
inline wchar_t* wmemcpy(wchar_t* __RESTRICT __wdst, const wchar_t* __RESTRICT __wsrc, size_t __n)
sl@0
   296
{ return __STATIC_CAST(wchar_t*, memcpy(__wdst, __wsrc, __n * sizeof(wchar_t))); }
sl@0
   297
inline wchar_t* wmemmove(wchar_t* __RESTRICT __wdst, const wchar_t * __RESTRICT __wc, size_t __n)
sl@0
   298
{ return __STATIC_CAST(wchar_t*, memmove(__wdst, __wc, __n * sizeof(wchar_t))); }
sl@0
   299
inline wchar_t* wmemset(wchar_t* __wdst, wchar_t __wc, size_t __n)
sl@0
   300
{ for (size_t i = 0; i < __n; i++) __wdst[i] = __wc; return __wdst; }
sl@0
   301
#        else
sl@0
   302
using _STLP_VENDOR_CSTD::wmemcpy;
sl@0
   303
using _STLP_VENDOR_CSTD::wmemset;
sl@0
   304
#        endif
sl@0
   305
#      endif
sl@0
   306
sl@0
   307
#    elif defined (__MWERKS__) && defined (N_PLAT_NLM) /* _STLP_NO_NATIVE_WIDE_FUNCTIONS */
sl@0
   308
using _STLP_VENDOR_CSTD::wcslen;
sl@0
   309
using _STLP_VENDOR_CSTD::wcscmp;
sl@0
   310
using _STLP_VENDOR_CSTD::wcscpy;
sl@0
   311
using _STLP_VENDOR_CSTD::wcsstr;
sl@0
   312
using _STLP_VENDOR_CSTD::wcschr;
sl@0
   313
using _STLP_VENDOR_CSTD::wcsrchr;
sl@0
   314
using _STLP_VENDOR_CSTD::wcspbrk;
sl@0
   315
#    endif /* _STLP_NO_NATIVE_WIDE_FUNCTIONS */
sl@0
   316
_STLP_END_NAMESPACE
sl@0
   317
sl@0
   318
#  endif /* _STLP_IMPORT_VENDOR_CSTD */
sl@0
   319
sl@0
   320
#  undef _STLP_WCHAR_SUNPRO_EXCLUDE
sl@0
   321
#  undef _STLP_WCHAR_MSL_EXCLUDE
sl@0
   322
sl@0
   323
#  endif /* !defined(_STLP_WCE_EVC3) */
sl@0
   324
sl@0
   325
#endif /* _STLP_INTERNAL_CWCHAR */