epoc32/include/stdapis/stlport/stl/_codecvt.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
 * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
williamr@4
     3
 *
williamr@4
     4
 * Copyright (c) 1999
williamr@4
     5
 * Silicon Graphics Computer Systems, Inc.
williamr@4
     6
 *
williamr@4
     7
 * Copyright (c) 1999 
williamr@4
     8
 * Boris Fomitchev
williamr@4
     9
 *
williamr@4
    10
 * This material is provided "as is", with absolutely no warranty expressed
williamr@4
    11
 * or implied. Any use is at your own risk.
williamr@4
    12
 *
williamr@4
    13
 * Permission to use or copy this software for any purpose is hereby granted 
williamr@4
    14
 * without fee, provided the above notices are retained on all copies.
williamr@4
    15
 * Permission to modify the code and to distribute modified code is granted,
williamr@4
    16
 * provided the above notices are retained, and a notice that the code was
williamr@4
    17
 * modified is included with the above copyright notice.
williamr@4
    18
 *
williamr@4
    19
 */ 
williamr@4
    20
// WARNING: This is an internal header file, included by other C++
williamr@4
    21
// standard library headers.  You should not attempt to use this header
williamr@4
    22
// file directly.
williamr@4
    23
williamr@4
    24
williamr@4
    25
#ifndef _STLP_INTERNAL_CODECVT_H
williamr@4
    26
#define _STLP_INTERNAL_CODECVT_H
williamr@4
    27
williamr@4
    28
# ifndef _STLP_C_LOCALE_H
williamr@4
    29
#  include <stl/c_locale.h>
williamr@4
    30
# endif
williamr@4
    31
# ifndef _STLP_INTERNAL_LOCALE_H
williamr@4
    32
#  include <stl/_locale.h>
williamr@4
    33
# endif
williamr@4
    34
williamr@4
    35
_STLP_BEGIN_NAMESPACE
williamr@4
    36
williamr@4
    37
class _STLP_CLASS_DECLSPEC codecvt_base {
williamr@4
    38
public:
williamr@4
    39
  enum result {ok, partial, error, noconv};
williamr@4
    40
};
williamr@4
    41
williamr@4
    42
template <class _InternT, class _ExternT, class _StateT>
williamr@4
    43
class codecvt : public locale::facet, public codecvt_base {
williamr@4
    44
  typedef _InternT intern_type;
williamr@4
    45
  typedef _ExternT extern_type;
williamr@4
    46
  typedef _StateT state_type;
williamr@4
    47
};
williamr@4
    48
 
williamr@4
    49
template <class _InternT, class _ExternT, class _StateT>
williamr@4
    50
class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> {};
williamr@4
    51
williamr@4
    52
_STLP_TEMPLATE_NULL
williamr@4
    53
#ifdef __SYMBIAN32__
williamr@4
    54
class codecvt<char, char, mbstate_t> : public locale::facet, public codecvt_base
williamr@4
    55
#else
williamr@4
    56
class _STLP_CLASS_DECLSPEC codecvt<char, char, mbstate_t> : public locale::facet, public codecvt_base
williamr@4
    57
#endif
williamr@4
    58
{
williamr@4
    59
  friend class _Locale;
williamr@4
    60
public:
williamr@4
    61
  typedef char       intern_type;
williamr@4
    62
  typedef char       extern_type;
williamr@4
    63
  typedef mbstate_t  state_type;
williamr@4
    64
williamr@4
    65
  explicit codecvt(size_t __refs = 0) : _BaseFacet(__refs) {}
williamr@4
    66
williamr@4
    67
  result out(state_type&  __state,
williamr@4
    68
             const char*  __from,
williamr@4
    69
             const char*  __from_end,
williamr@4
    70
             const char*& __from_next,
williamr@4
    71
             char*        __to,
williamr@4
    72
             char*        __to_limit, 
williamr@4
    73
             char*&       __to_next) const {
williamr@4
    74
    return do_out(__state, 
williamr@4
    75
                  __from, __from_end, __from_next,
williamr@4
    76
                  __to,   __to_limit, __to_next);
williamr@4
    77
  }
williamr@4
    78
williamr@4
    79
  result unshift(mbstate_t& __state,
williamr@4
    80
                 char* __to, char* __to_limit, char*& __to_next) const
williamr@4
    81
    { return do_unshift(__state, __to, __to_limit, __to_next); }
williamr@4
    82
    
williamr@4
    83
  result in(state_type&   __state,
williamr@4
    84
            const char*  __from,
williamr@4
    85
            const char*  __from_end,  
williamr@4
    86
            const char*& __from_next,
williamr@4
    87
            char*        __to, 
williamr@4
    88
            char*        __to_limit, 
williamr@4
    89
            char*&       __to_next) const {
williamr@4
    90
    return do_in(__state,
williamr@4
    91
                 __from, __from_end, __from_next,
williamr@4
    92
                 __to,   __to_limit, __to_next);
williamr@4
    93
  }
williamr@4
    94
williamr@4
    95
  int encoding() const _STLP_NOTHROW { return do_encoding(); }
williamr@4
    96
williamr@4
    97
  bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); }
williamr@4
    98
williamr@4
    99
  int length(const state_type& __state,
williamr@4
   100
             const char* __from, const char* __end,
williamr@4
   101
             size_t __max) const
williamr@4
   102
    { return do_length(__state, __from, __end, __max); }
williamr@4
   103
  
williamr@4
   104
  int max_length() const _STLP_NOTHROW { return do_max_length(); }
williamr@4
   105
williamr@4
   106
#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
williamr@4
   107
    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
williamr@4
   108
#else
williamr@4
   109
  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
williamr@4
   110
#endif
williamr@4
   111
williamr@4
   112
protected:
williamr@4
   113
_STLP_DECLSPEC  ~codecvt();
williamr@4
   114
williamr@4
   115
  _STLP_DECLSPEC virtual result do_out(mbstate_t&   /* __state */,
williamr@4
   116
                        const char*  __from,
williamr@4
   117
                        const char*  /* __from_end */,
williamr@4
   118
                        const char*& __from_next,
williamr@4
   119
                        char*        __to,
williamr@4
   120
                        char*        /* __to_limit */,
williamr@4
   121
                        char*&       __to_next) const;
williamr@4
   122
williamr@4
   123
    _STLP_DECLSPEC virtual result do_in (mbstate_t&   /* __state */ , 
williamr@4
   124
                        const char*  __from,
williamr@4
   125
                        const char*  /* __from_end */,
williamr@4
   126
                        const char*& __from_next,
williamr@4
   127
                        char*        __to,
williamr@4
   128
                        char*        /* __to_end */,
williamr@4
   129
                        char*&       __to_next) const;
williamr@4
   130
williamr@4
   131
  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t& /* __state */,
williamr@4
   132
                            char*      __to,
williamr@4
   133
                            char*      /* __to_limit */,
williamr@4
   134
                            char*&     __to_next) const;
williamr@4
   135
williamr@4
   136
  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
williamr@4
   137
  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
williamr@4
   138
  _STLP_DECLSPEC   virtual int do_length(const mbstate_t&         __state,
williamr@4
   139
                        const  char* __from, 
williamr@4
   140
                        const  char* __end,
williamr@4
   141
                        size_t __max) const;
williamr@4
   142
  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
williamr@4
   143
private:
williamr@4
   144
  codecvt(const codecvt<char, char, mbstate_t>&);
williamr@4
   145
  codecvt<char, char, mbstate_t>& operator =(const codecvt<char, char, mbstate_t>&); 
williamr@4
   146
};
williamr@4
   147
williamr@4
   148
# ifndef _STLP_NO_WCHAR_T
williamr@4
   149
 
williamr@4
   150
_STLP_TEMPLATE_NULL
williamr@4
   151
#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
williamr@4
   152
class codecvt<wchar_t, char, mbstate_t>  : public locale::facet, public codecvt_base
williamr@4
   153
#else
williamr@4
   154
class _STLP_CLASS_DECLSPEC codecvt<wchar_t, char, mbstate_t>  : public locale::facet, public codecvt_base
williamr@4
   155
#endif
williamr@4
   156
{
williamr@4
   157
  friend class _Locale;
williamr@4
   158
public:
williamr@4
   159
  typedef wchar_t    intern_type;
williamr@4
   160
  typedef char       extern_type;
williamr@4
   161
  typedef mbstate_t  state_type;
williamr@4
   162
williamr@4
   163
  explicit codecvt(size_t __refs = 0) : _BaseFacet(__refs) {}
williamr@4
   164
williamr@4
   165
  result out(mbstate_t&       __state,
williamr@4
   166
             const wchar_t*  __from,
williamr@4
   167
             const wchar_t*  __from_end,
williamr@4
   168
             const wchar_t*& __from_next,
williamr@4
   169
             char*           __to,
williamr@4
   170
             char*           __to_limit,
williamr@4
   171
             char*&          __to_next) const {
williamr@4
   172
    return do_out(__state,
williamr@4
   173
                  __from, __from_end, __from_next, 
williamr@4
   174
                  __to,   __to_limit, __to_next);
williamr@4
   175
  }
williamr@4
   176
williamr@4
   177
  result unshift(mbstate_t& __state,
williamr@4
   178
                 char*  __to, char*  __to_limit, char*& __to_next) const {
williamr@4
   179
    return do_unshift(__state, __to, __to_limit, __to_next);
williamr@4
   180
  }
williamr@4
   181
    
williamr@4
   182
  result in(mbstate_t&    __state,
williamr@4
   183
            const char*  __from,
williamr@4
   184
            const char*  __from_end,  
williamr@4
   185
            const char*& __from_next,
williamr@4
   186
            wchar_t*     __to, 
williamr@4
   187
            wchar_t*     __to_limit, 
williamr@4
   188
            wchar_t*&    __to_next) const {
williamr@4
   189
    return do_in(__state, 
williamr@4
   190
                 __from, __from_end, __from_next,
williamr@4
   191
                 __to,  __to_limit, __to_next);
williamr@4
   192
  }
williamr@4
   193
williamr@4
   194
  int encoding() const _STLP_NOTHROW { return do_encoding(); }
williamr@4
   195
williamr@4
   196
  bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); }
williamr@4
   197
williamr@4
   198
  int length(const mbstate_t&        __state,
williamr@4
   199
             const char* __from,
williamr@4
   200
             const char* __end,
williamr@4
   201
             size_t             __max) const
williamr@4
   202
    { return do_length(__state, __from, __end, __max); }
williamr@4
   203
  
williamr@4
   204
  int max_length() const _STLP_NOTHROW { return do_max_length(); }
williamr@4
   205
williamr@4
   206
#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
williamr@4
   207
	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
williamr@4
   208
#else
williamr@4
   209
  	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
williamr@4
   210
#endif
williamr@4
   211
williamr@4
   212
protected:
williamr@4
   213
    _STLP_DECLSPEC  ~codecvt();
williamr@4
   214
williamr@4
   215
  _STLP_DECLSPEC   virtual result do_out(mbstate_t&         __state,
williamr@4
   216
                        const wchar_t*  __from,
williamr@4
   217
                        const wchar_t*  __from_end,
williamr@4
   218
                        const wchar_t*& __from_next,
williamr@4
   219
                        char*        __to,
williamr@4
   220
                        char*        __to_limit,
williamr@4
   221
                        char*&       __to_next) const;
williamr@4
   222
williamr@4
   223
  _STLP_DECLSPEC   virtual result do_in (mbstate_t&         __state,
williamr@4
   224
                        const char*  __from,
williamr@4
   225
                        const char*  __from_end,
williamr@4
   226
                        const char*& __from_next,
williamr@4
   227
                        wchar_t*        __to,
williamr@4
   228
                        wchar_t*        __to_limit,
williamr@4
   229
                        wchar_t*&       __to_next) const;
williamr@4
   230
williamr@4
   231
  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t&   __state,
williamr@4
   232
                            char*  __to, 
williamr@4
   233
                            char*  __to_limit,
williamr@4
   234
                            char*& __to_next) const;
williamr@4
   235
williamr@4
   236
  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
williamr@4
   237
williamr@4
   238
  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
williamr@4
   239
  
williamr@4
   240
  _STLP_DECLSPEC   virtual int do_length(const mbstate_t& __state,
williamr@4
   241
                        const  char* __from, 
williamr@4
   242
                        const  char* __end,
williamr@4
   243
                        size_t __max) const;
williamr@4
   244
williamr@4
   245
  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
williamr@4
   246
williamr@4
   247
private:
williamr@4
   248
  codecvt(const codecvt<wchar_t, char, mbstate_t>&);
williamr@4
   249
  codecvt<wchar_t, char, mbstate_t>& operator = (const codecvt<wchar_t, char, mbstate_t>&);  
williamr@4
   250
};
williamr@4
   251
williamr@4
   252
# endif
williamr@4
   253
williamr@4
   254
_STLP_TEMPLATE_NULL
williamr@4
   255
class _STLP_CLASS_DECLSPEC codecvt_byname<char, char, mbstate_t>
williamr@4
   256
  : public codecvt<char, char, mbstate_t> {
williamr@4
   257
public:
williamr@4
   258
  explicit _STLP_DECLSPEC codecvt_byname(const char* __name, size_t __refs = 0);
williamr@4
   259
  ~codecvt_byname();
williamr@4
   260
private:
williamr@4
   261
  codecvt_byname(const codecvt_byname<char, char, mbstate_t>&);
williamr@4
   262
  codecvt_byname<char, char, mbstate_t>& operator =(const codecvt_byname<char, char, mbstate_t>&);  
williamr@4
   263
};
williamr@4
   264
williamr@4
   265
# ifndef _STLP_NO_WCHAR_T
williamr@4
   266
_STLP_TEMPLATE_NULL
williamr@4
   267
class codecvt_byname<wchar_t, char, mbstate_t>
williamr@4
   268
  : public codecvt<wchar_t, char, mbstate_t> 
williamr@4
   269
{
williamr@4
   270
public:
williamr@4
   271
  explicit _STLP_DECLSPEC codecvt_byname(const char * __name, size_t __refs = 0);    
williamr@4
   272
williamr@4
   273
protected:
williamr@4
   274
    _STLP_DECLSPEC ~codecvt_byname();
williamr@4
   275
williamr@4
   276
  _STLP_DECLSPEC   virtual result do_out(mbstate_t&         __state,
williamr@4
   277
                        const wchar_t*  __from,
williamr@4
   278
                        const wchar_t*  __from_end,
williamr@4
   279
                        const wchar_t*& __from_next,
williamr@4
   280
                        char*        __to,
williamr@4
   281
                        char*        __to_limit,
williamr@4
   282
                        char*&       __to_next) const;
williamr@4
   283
williamr@4
   284
  _STLP_DECLSPEC   virtual result do_in (mbstate_t&         __state,
williamr@4
   285
                        const char*  __from,
williamr@4
   286
                        const char*  __from_end,
williamr@4
   287
                        const char*& __from_next,
williamr@4
   288
                        wchar_t*        __to,
williamr@4
   289
                        wchar_t*        __to_limit,
williamr@4
   290
                        wchar_t*&       __to_next) const;
williamr@4
   291
williamr@4
   292
  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t&   __state,
williamr@4
   293
                            char*  __to, 
williamr@4
   294
                            char*  __to_limit,
williamr@4
   295
                            char*& __to_next) const;
williamr@4
   296
williamr@4
   297
  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
williamr@4
   298
williamr@4
   299
  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
williamr@4
   300
  
williamr@4
   301
  _STLP_DECLSPEC   virtual int do_length(const mbstate_t&         __state,
williamr@4
   302
                        const  char* __from, 
williamr@4
   303
                        const  char* __end,
williamr@4
   304
                        size_t __max) const;
williamr@4
   305
williamr@4
   306
  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
williamr@4
   307
williamr@4
   308
private:
williamr@4
   309
  _Locale_ctype* _M_ctype;
williamr@4
   310
  codecvt_byname(const codecvt_byname<wchar_t, char, mbstate_t>&);
williamr@4
   311
  codecvt_byname<wchar_t, char, mbstate_t>& operator =(const codecvt_byname<wchar_t, char, mbstate_t>&);  
williamr@4
   312
};
williamr@4
   313
williamr@4
   314
# endif
williamr@4
   315
williamr@4
   316
_STLP_END_NAMESPACE
williamr@4
   317
williamr@4
   318
#endif /* _STLP_INTERNAL_CODECVT_H */
williamr@4
   319
williamr@4
   320
// Local Variables:
williamr@4
   321
// mode:C++
williamr@4
   322
// End:
williamr@4
   323