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