epoc32/include/stdapis/stlport/stl/_ios_base.h
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
     1.1 --- a/epoc32/include/stdapis/stlport/stl/_ios_base.h	Tue Mar 16 16:12:26 2010 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,439 +0,0 @@
     1.4 -/*
     1.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
     1.6 - * Copyright (c) 1999
     1.7 - * Silicon Graphics Computer Systems, Inc.
     1.8 - *
     1.9 - * Copyright (c) 1999 
    1.10 - * Boris Fomitchev
    1.11 - *
    1.12 - * This material is provided "as is", with absolutely no warranty expressed
    1.13 - * or implied. Any use is at your own risk.
    1.14 - *
    1.15 - * Permission to use or copy this software for any purpose is hereby granted 
    1.16 - * without fee, provided the above notices are retained on all copies.
    1.17 - * Permission to modify the code and to distribute modified code is granted,
    1.18 - * provided the above notices are retained, and a notice that the code was
    1.19 - * modified is included with the above copyright notice.
    1.20 - *
    1.21 - */ 
    1.22 -#ifndef _STLP_IOS_BASE_H
    1.23 -#define _STLP_IOS_BASE_H
    1.24 -
    1.25 -#ifndef _STLP_STDEXCEPT
    1.26 -#include <stdexcept>
    1.27 -#endif
    1.28 -#ifndef _STLP_UTILITY
    1.29 -#include <utility>
    1.30 -#endif
    1.31 -#ifndef _STLP_INTERNAL_LOCALE_H
    1.32 -#include <stl/_locale.h>
    1.33 -#endif
    1.34 -#ifndef _STLP_STRING_H
    1.35 -# include <stl/_string.h>
    1.36 -#endif
    1.37 -
    1.38 -_STLP_BEGIN_NAMESPACE
    1.39 -
    1.40 -// ----------------------------------------------------------------------
    1.41 -
    1.42 -// Class ios_base.  This is the base class of the ios hierarchy, which
    1.43 -// includes basic_istream and basic_ostream.  Classes in the ios
    1.44 -// hierarchy are actually quite simple: they are just glorified
    1.45 -// wrapper classes.  They delegate buffering and physical character
    1.46 -// manipulation to the streambuf classes, and they delegate most
    1.47 -// formatting tasks to a locale.
    1.48 -
    1.49 -#ifdef __SYMBIAN32__
    1.50 -class ios_base {
    1.51 -#else
    1.52 -class _STLP_CLASS_DECLSPEC ios_base {
    1.53 -#endif
    1.54 -public:
    1.55 -  
    1.56 -  class _STLP_CLASS_DECLSPEC failure : public __Named_exception {
    1.57 -  public:
    1.58 -    _STLP_DECLSPEC explicit failure(const string&);
    1.59 -    _STLP_DECLSPEC virtual ~failure() _STLP_NOTHROW_INHERENTLY;
    1.60 -  };
    1.61 -
    1.62 -  typedef int fmtflags;
    1.63 -  typedef int iostate;
    1.64 -  typedef int openmode;
    1.65 -  typedef int seekdir;
    1.66 -
    1.67 -# ifndef _STLP_NO_ANACHRONISMS
    1.68 -  typedef fmtflags fmt_flags;
    1.69 -# endif
    1.70 -
    1.71 -  // Formatting flags.
    1.72 -# ifdef _STLP_STATIC_CONST_INIT_BUG
    1.73 -  enum  {
    1.74 -# else
    1.75 -  // boris : type for all those constants is int   
    1.76 -  static const int
    1.77 -# endif
    1.78 -    left       = 0x0001,
    1.79 -    right      = 0x0002,
    1.80 -    internal   = 0x0004,
    1.81 -    dec        = 0x0008,
    1.82 -    hex        = 0x0010,
    1.83 -    oct        = 0x0020,
    1.84 -    fixed      = 0x0040,
    1.85 -    scientific = 0x0080,
    1.86 -    boolalpha  = 0x0100,
    1.87 -    showbase   = 0x0200,
    1.88 -    showpoint  = 0x0400,
    1.89 -    showpos    = 0x0800,
    1.90 -    skipws     = 0x1000,
    1.91 -    unitbuf    = 0x2000,
    1.92 -    uppercase  = 0x4000,
    1.93 -    adjustfield = left | right | internal,
    1.94 -    basefield   = dec | hex | oct,
    1.95 -    floatfield  = scientific | fixed,
    1.96 -    
    1.97 -    // State flags.
    1.98 -    goodbit = 0x00,
    1.99 -    badbit  = 0x01,
   1.100 -    eofbit  = 0x02,
   1.101 -    failbit = 0x04,
   1.102 -    
   1.103 -    // Openmode flags.
   1.104 -    __default_mode = 0x0, /* implementation detail */
   1.105 -    app    = 0x01,
   1.106 -    ate    = 0x02,
   1.107 -    binary = 0x04,
   1.108 -    in     = 0x08,
   1.109 -    out    = 0x10,
   1.110 -    trunc  = 0x20,
   1.111 -    
   1.112 -    // Seekdir flags
   1.113 -    
   1.114 -    beg = 0x01,
   1.115 -    cur = 0x02,
   1.116 -    end = 0x04
   1.117 -# ifdef _STLP_STATIC_CONST_INIT_BUG
   1.118 -  }
   1.119 -# endif
   1.120 -  ;
   1.121 -
   1.122 -public:                         // Flag-manipulation functions.
   1.123 -  fmtflags flags() const { return _M_fmtflags; }
   1.124 -  fmtflags flags(fmtflags __flags) {
   1.125 -    fmtflags __tmp = _M_fmtflags;
   1.126 -    _M_fmtflags = __flags;
   1.127 -    return __tmp;
   1.128 -  }
   1.129 -
   1.130 -  fmtflags setf(fmtflags __flag) {
   1.131 -    fmtflags __tmp = _M_fmtflags;
   1.132 -    _M_fmtflags |= __flag;
   1.133 -    return __tmp;
   1.134 -  }
   1.135 -  fmtflags setf(fmtflags __flag, fmtflags __mask) {
   1.136 -    fmtflags __tmp = _M_fmtflags;
   1.137 -    _M_fmtflags &= ~__mask;
   1.138 -    _M_fmtflags |= __flag & __mask;
   1.139 -    return __tmp;
   1.140 -  }
   1.141 -  void unsetf(fmtflags __mask) { _M_fmtflags &= ~__mask; }
   1.142 -
   1.143 -  streamsize precision() const { return _M_precision; }
   1.144 -  streamsize precision(streamsize __newprecision) {
   1.145 -    streamsize __tmp = _M_precision;
   1.146 -    _M_precision = __newprecision;
   1.147 -    return __tmp;
   1.148 -  }
   1.149 -
   1.150 -  streamsize width() const { return _M_width; }
   1.151 -  streamsize width(streamsize __newwidth) {
   1.152 -    streamsize __tmp = _M_width;
   1.153 -    _M_width = __newwidth;
   1.154 -    return __tmp;
   1.155 -  }
   1.156 -
   1.157 -public:                         // Locales
   1.158 -  _STLP_DECLSPEC locale imbue(const locale&);
   1.159 -  _STLP_DECLSPEC locale getloc() const;// { return _M_locale; }
   1.160 -
   1.161 -public:                         // Auxiliary storage.
   1.162 -  _STLP_DECLSPEC static int _STLP_CALL xalloc();
   1.163 -  _STLP_DECLSPEC long&  iword(int __index);
   1.164 -  _STLP_DECLSPEC void*& pword(int __index);
   1.165 -
   1.166 -public:                         // Destructor.
   1.167 -  _STLP_DECLSPEC virtual ~ios_base();
   1.168 -
   1.169 -public:                         // Callbacks.
   1.170 -  enum event { erase_event, imbue_event, copyfmt_event };
   1.171 -  typedef void (*event_callback)(event, ios_base&, int __index);
   1.172 -  _STLP_DECLSPEC void register_callback(event_callback __fn, int __index);
   1.173 -
   1.174 -public:                         // This member function affects only
   1.175 -                                // the eight predefined ios objects:
   1.176 -                                // cin, cout, etc.
   1.177 -  _STLP_DECLSPEC static bool _STLP_CALL sync_with_stdio(bool __sync = true);
   1.178 -
   1.179 -public:                         // The C++ standard requires only that these
   1.180 -                                // member functions be defined in basic_ios.
   1.181 -                                // We define them in the non-template
   1.182 -                                // base class to avoid code duplication.
   1.183 -  operator void*() const { return !fail() ? (void*) __CONST_CAST(ios_base*,this) : (void*) 0; }
   1.184 -  bool operator!() const { return fail(); }
   1.185 -
   1.186 -  iostate rdstate() const { return _M_iostate; }
   1.187 -
   1.188 -  bool good() const { return _M_iostate == 0; }
   1.189 -  bool eof() const { return (_M_iostate & eofbit) != 0; }
   1.190 -  bool fail() const { return (_M_iostate & (failbit | badbit)) != 0; }
   1.191 -  bool bad() const { return (_M_iostate & badbit) != 0; }
   1.192 -
   1.193 -protected:                      // The functional protected interface.
   1.194 -
   1.195 -  // Copies the state of __x to *this.  This member function makes it
   1.196 -  // possible to implement basic_ios::copyfmt without having to expose
   1.197 -  // ios_base's private data members.  Does not copy _M_exception_mask
   1.198 -  // or _M_iostate.
   1.199 -  _STLP_DECLSPEC void _M_copy_state(const ios_base& __x);
   1.200 -
   1.201 -  void _M_setstate_nothrow(iostate __state) { _M_iostate |= __state; }
   1.202 -  void _M_clear_nothrow(iostate __state) { _M_iostate = __state; }
   1.203 -  iostate _M_get_exception_mask() const { return _M_exception_mask; }
   1.204 -  void _M_set_exception_mask(iostate __mask) { _M_exception_mask = __mask; }
   1.205 -  void _M_check_exception_mask() { 
   1.206 -    if (_M_iostate & _M_exception_mask)
   1.207 -      _M_throw_failure(); 
   1.208 -  }
   1.209 -
   1.210 -  _STLP_DECLSPEC void _M_invoke_callbacks(event);
   1.211 -  _STLP_DECLSPEC void _M_throw_failure();
   1.212 -
   1.213 -  _STLP_DECLSPEC ios_base();                   // Default constructor.
   1.214 -
   1.215 -protected:                        // Initialization of the I/O system
   1.216 -  static void _STLP_CALL _S_initialize();
   1.217 -  static void _STLP_CALL _S_uninitialize();
   1.218 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
   1.219 -	static bool _S_was_synced;
   1.220 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
   1.221 -  friend void CallIosInit();
   1.222 -private:                        // Invalidate the copy constructor and
   1.223 -                                // assignment operator.
   1.224 -  ios_base(const ios_base&);
   1.225 -  void operator=(const ios_base&);
   1.226 -
   1.227 -private:                        // Data members.
   1.228 -
   1.229 -  fmtflags _M_fmtflags;         // Flags
   1.230 -  iostate _M_iostate;
   1.231 -  openmode _M_openmode;
   1.232 -  seekdir _M_seekdir;
   1.233 -  iostate _M_exception_mask;
   1.234 -
   1.235 -  streamsize _M_precision;
   1.236 -  streamsize _M_width;
   1.237 -
   1.238 -  locale _M_locale;
   1.239 -
   1.240 -  pair<event_callback, int>* _M_callbacks;
   1.241 -  size_t _M_num_callbacks;      // Size of the callback array.
   1.242 -  size_t _M_callback_index;     // Index of the next available callback;
   1.243 -                                // initially zero.
   1.244 -
   1.245 -  long* _M_iwords;              // Auxiliary storage.  The count is zero
   1.246 -  size_t _M_num_iwords;         // if and only if the pointer is null.
   1.247 -
   1.248 -  void** _M_pwords;
   1.249 -  size_t _M_num_pwords;
   1.250 -
   1.251 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
   1.252 -	static int _S_index;
   1.253 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
   1.254 -
   1.255 -
   1.256 -protected:
   1.257 -  // Cached copies of the curent locale's facets.  Set by init() and imbue().
   1.258 -  locale::facet* _M_cached_ctype;
   1.259 -  locale::facet* _M_cached_numpunct;
   1.260 -  string         _M_cached_grouping;
   1.261 -public:
   1.262 -  // Equivalent to &use_facet< Facet >(getloc()), but faster.
   1.263 -  const locale::facet* _M_ctype_facet() const { return _M_cached_ctype; }
   1.264 -  const locale::facet* _M_numpunct_facet() const { return _M_cached_numpunct; }
   1.265 -  const string&  _M_grouping() const { return _M_cached_grouping; }
   1.266 -public:
   1.267 -
   1.268 -  // ----------------------------------------------------------------------
   1.269 -  // Nested initializer class.  This is an implementation detail, but it's
   1.270 -  // prescribed by the standard.  The static initializer object (on 
   1.271 -  // implementations where such a thing is required) is declared in
   1.272 -  // <iostream>
   1.273 -  
   1.274 -  class _STLP_CLASS_DECLSPEC Init {
   1.275 -  public:
   1.276 -    _STLP_DECLSPEC Init();
   1.277 -    _STLP_DECLSPEC ~Init();
   1.278 -  private:
   1.279 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
   1.280 -    static long _S_count;
   1.281 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
   1.282 -    friend class ios_base;
   1.283 -  };
   1.284 -
   1.285 -  // this class is needed to ensure locale initialization w/o <iostream> inclusion
   1.286 -  class _STLP_CLASS_DECLSPEC _Loc_init {
   1.287 -  public:
   1.288 -    _STLP_DECLSPEC _Loc_init();
   1.289 -    _STLP_DECLSPEC ~_Loc_init();
   1.290 -  private:
   1.291 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
   1.292 -	static long _S_count;
   1.293 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
   1.294 -    friend class locale;
   1.295 -    friend class ios_base;
   1.296 -  };
   1.297 -
   1.298 -  friend class Init;
   1.299 -
   1.300 -public:
   1.301 -# ifndef _STLP_NO_ANACHRONISMS
   1.302 -  //  31.6  Old iostreams members                         [depr.ios.members]
   1.303 -  typedef iostate  io_state;
   1.304 -  typedef openmode open_mode;
   1.305 -  typedef seekdir  seek_dir;
   1.306 -  typedef _STLP_STD::streamoff  streamoff;
   1.307 -  typedef _STLP_STD::streampos  streampos;
   1.308 -# endif  
   1.309 -};
   1.310 -
   1.311 -inline _STLP_EXP_DECLSPEC locale ios_base::getloc() const 
   1.312 -    { 
   1.313 -    return _M_locale; 
   1.314 -    }
   1.315 -
   1.316 -// ----------------------------------------------------------------------
   1.317 -// ios_base manipulator functions, from section 27.4.5 of the C++ standard.
   1.318 -// All of them are trivial one-line wrapper functions.
   1.319 -
   1.320 -// fmtflag manipulators, section 27.4.5.1
   1.321 -inline ios_base& _STLP_CALL boolalpha(ios_base& __s)
   1.322 -  { __s.setf(ios_base::boolalpha); return __s;}
   1.323 -
   1.324 -inline ios_base& _STLP_CALL noboolalpha(ios_base& __s)
   1.325 -  { __s.unsetf(ios_base::boolalpha); return __s;}
   1.326 -
   1.327 -inline ios_base& _STLP_CALL showbase(ios_base& __s)
   1.328 -  { __s.setf(ios_base::showbase); return __s;}
   1.329 -
   1.330 -inline ios_base& _STLP_CALL noshowbase(ios_base& __s)
   1.331 -  { __s.unsetf(ios_base::showbase); return __s;}
   1.332 -
   1.333 -inline ios_base& _STLP_CALL showpoint(ios_base& __s)
   1.334 -  { __s.setf(ios_base::showpoint); return __s;}
   1.335 -
   1.336 -inline ios_base& _STLP_CALL noshowpoint(ios_base& __s)
   1.337 -  { __s.unsetf(ios_base::showpoint); return __s;}
   1.338 -
   1.339 -inline ios_base& _STLP_CALL showpos(ios_base& __s)
   1.340 -  { __s.setf(ios_base::showpos); return __s;}
   1.341 -
   1.342 -inline ios_base& _STLP_CALL noshowpos(ios_base& __s) 
   1.343 -  { __s.unsetf(ios_base::showpos); return __s;}
   1.344 -
   1.345 -inline ios_base& _STLP_CALL skipws(ios_base& __s)
   1.346 -  { __s.setf(ios_base::skipws); return __s;}
   1.347 -
   1.348 -inline ios_base& _STLP_CALL noskipws(ios_base& __s)
   1.349 -  { __s.unsetf(ios_base::skipws); return __s;}
   1.350 -
   1.351 -inline ios_base& _STLP_CALL uppercase(ios_base& __s)
   1.352 -  { __s.setf(ios_base::uppercase); return __s;}
   1.353 -
   1.354 -inline ios_base& _STLP_CALL nouppercase(ios_base& __s)
   1.355 -  { __s.unsetf(ios_base::uppercase); return __s;}
   1.356 -
   1.357 -inline ios_base& _STLP_CALL unitbuf(ios_base& __s)
   1.358 -  { __s.setf(ios_base::unitbuf); return __s;}
   1.359 -
   1.360 -inline ios_base& _STLP_CALL nounitbuf(ios_base& __s)
   1.361 -  { __s.unsetf(ios_base::unitbuf); return __s;}
   1.362 -
   1.363 -
   1.364 -// adjustfield manipulators, section 27.4.5.2
   1.365 -inline ios_base& _STLP_CALL internal(ios_base& __s)
   1.366 -  { __s.setf(ios_base::internal, ios_base::adjustfield); return __s; }
   1.367 -
   1.368 -inline ios_base& _STLP_CALL left(ios_base& __s)
   1.369 -  { __s.setf(ios_base::left, ios_base::adjustfield); return __s; }
   1.370 -
   1.371 -inline ios_base& _STLP_CALL right(ios_base& __s)
   1.372 -  { __s.setf(ios_base::right, ios_base::adjustfield); return __s; }
   1.373 -
   1.374 -// basefield manipulators, section 27.4.5.3
   1.375 -inline ios_base& _STLP_CALL dec(ios_base& __s)
   1.376 -  { __s.setf(ios_base::dec, ios_base::basefield); return __s; }
   1.377 -
   1.378 -inline ios_base& _STLP_CALL hex(ios_base& __s) 
   1.379 -  { __s.setf(ios_base::hex, ios_base::basefield); return __s; }
   1.380 -
   1.381 -inline ios_base& _STLP_CALL oct(ios_base& __s)
   1.382 -  { __s.setf(ios_base::oct, ios_base::basefield); return __s; }
   1.383 -
   1.384 -
   1.385 -// floatfield manipulators, section 27.4.5.3
   1.386 -inline ios_base& _STLP_CALL fixed(ios_base& __s)
   1.387 -  { __s.setf(ios_base::fixed, ios_base::floatfield); return __s; }
   1.388 -
   1.389 -inline ios_base& _STLP_CALL scientific(ios_base& __s)
   1.390 -  { __s.setf(ios_base::scientific, ios_base::floatfield); return __s; }
   1.391 -
   1.392 -#if defined(__BORLANDC__) && defined(_RTLDLL)
   1.393 -
   1.394 -long ios_base::_Loc_init::_S_count = 0;
   1.395 -
   1.396 -void _STLP_CALL _Stl_loc_init_num_put();
   1.397 -void _STLP_CALL _Stl_loc_init_num_get();
   1.398 -void _STLP_CALL _Stl_loc_init_monetary();
   1.399 -void _STLP_CALL _Stl_loc_init_time_facets();
   1.400 -
   1.401 -inline ios_base::_Loc_init::_Loc_init() {
   1.402 -  if (_S_count++ == 0) {
   1.403 -      _Stl_loc_init_num_put();
   1.404 -      _Stl_loc_init_num_get();
   1.405 -      _Stl_loc_init_monetary();
   1.406 -      _Stl_loc_init_time_facets();
   1.407 -      locale::_S_initialize();
   1.408 -  }
   1.409 -}
   1.410 -
   1.411 -inline ios_base::_Loc_init::~_Loc_init() {
   1.412 -    if (--_S_count == 0)
   1.413 -      locale::_S_uninitialize();
   1.414 -}
   1.415 -
   1.416 -#endif /* __BORLANDC__ */
   1.417 -
   1.418 -#if 0
   1.419 -#ifdef __SYMBIAN32__
   1.420 -#pragma message("Symbian I/O stream support on progress.")
   1.421 -inline ios_base::_Loc_init::_Loc_init() {
   1.422 -}
   1.423 -
   1.424 -inline ios_base::_Loc_init::~_Loc_init() {
   1.425 -}
   1.426 -#endif
   1.427 -
   1.428 -inline ios_base::Init::Init() {
   1.429 -}
   1.430 -
   1.431 -inline ios_base::Init::~Init() {
   1.432 -}
   1.433 -#endif
   1.434 -
   1.435 -_STLP_END_NAMESPACE
   1.436 -
   1.437 -#endif /* _STLP_IOS_BASE */
   1.438 -
   1.439 -// Local Variables:
   1.440 -// mode:C++
   1.441 -// End:
   1.442 -