19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc.
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk.
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies.
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted,
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice.
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_IOS_BASE_H
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_IOS_BASE_H
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_STDEXCEPT_BASE
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_stdexcept_base.h>
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _STLP_INTERNAL_PAIR_H
26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  include <stl/_pair.h>
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_LOCALE_H
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_locale.h>
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_STRING_H
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_string.h>
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ----------------------------------------------------------------------
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Class ios_base.  This is the base class of the ios hierarchy, which
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// includes basic_istream and basic_ostream.  Classes in the ios
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// hierarchy are actually quite simple: they are just glorified
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// wrapper classes.  They delegate buffering and physical character
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// manipulation to the streambuf classes, and they delegate most
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// formatting tasks to a locale.
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _STLP_CLASS_DECLSPEC ios_base {
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  class _STLP_CLASS_DECLSPEC failure : public __Named_exception {
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  public:
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    explicit failure(const string&);
549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    virtual ~failure() _STLP_NOTHROW_INHERENTLY;
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  };
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef int fmtflags;
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef int iostate;
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef int openmode;
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef int seekdir;
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifndef _STLP_NO_ANACHRONISMS
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef fmtflags fmt_flags;
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // Formatting flags.
67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, left = 0x0001);
68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, right = 0x0002);
69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, internal   = 0x0004);
70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, dec        = 0x0008);
71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, hex        = 0x0010);
72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, oct        = 0x0020);
73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, fixed      = 0x0040);
74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, scientific = 0x0080);
75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, boolalpha  = 0x0100);
76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, showbase   = 0x0200);
77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, showpoint  = 0x0400);
78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, showpos    = 0x0800);
79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, skipws     = 0x1000);
80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, unitbuf    = 0x2000);
81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, uppercase  = 0x4000);
82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, adjustfield = left | right | internal);
83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, basefield   = dec | hex | oct);
84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, floatfield  = scientific | fixed);
85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // State flags.
87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, goodbit = 0x00);
88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, badbit  = 0x01);
89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, eofbit  = 0x02);
90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, failbit = 0x04);
91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // Openmode flags.
93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, __default_mode = 0x0); /* implementation detail */
94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, app    = 0x01);
95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, ate    = 0x02);
96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, binary = 0x04);
97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, in     = 0x08);
98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, out    = 0x10);
99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, trunc  = 0x20);
100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  // Seekdir flags
102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, beg = 0x01);
103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, cur = 0x02);
104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  _STLP_STATIC_CONSTANT(int, end = 0x04);
1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:                         // Flag-manipulation functions.
1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  fmtflags flags() const { return _M_fmtflags; }
1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  fmtflags flags(fmtflags __flags) {
1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    fmtflags __tmp = _M_fmtflags;
1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _M_fmtflags = __flags;
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return __tmp;
1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  fmtflags setf(fmtflags __flag) {
1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    fmtflags __tmp = _M_fmtflags;
1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _M_fmtflags |= __flag;
1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return __tmp;
1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  fmtflags setf(fmtflags __flag, fmtflags __mask) {
1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    fmtflags __tmp = _M_fmtflags;
1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _M_fmtflags &= ~__mask;
1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _M_fmtflags |= __flag & __mask;
1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return __tmp;
1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void unsetf(fmtflags __mask) { _M_fmtflags &= ~__mask; }
1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  streamsize precision() const { return _M_precision; }
1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  streamsize precision(streamsize __newprecision) {
1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    streamsize __tmp = _M_precision;
1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _M_precision = __newprecision;
1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return __tmp;
1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  streamsize width() const { return _M_width; }
1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  streamsize width(streamsize __newwidth) {
1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    streamsize __tmp = _M_width;
1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _M_width = __newwidth;
1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return __tmp;
1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:                         // Locales
1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  locale imbue(const locale&);
1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  locale getloc() const { return _M_locale; }
1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:                         // Auxiliary storage.
1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  static int _STLP_CALL xalloc();
1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  long&  iword(int __index);
1489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void*& pword(int __index);
1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:                         // Destructor.
1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  virtual ~ios_base();
1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:                         // Callbacks.
1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  enum event { erase_event, imbue_event, copyfmt_event };
1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef void (*event_callback)(event, ios_base&, int __index);
1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void register_callback(event_callback __fn, int __index);
1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:                         // This member function affects only
1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                                // the eight predefined ios objects:
1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                                // cin, cout, etc.
1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  static bool _STLP_CALL sync_with_stdio(bool __sync = true);
1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:                         // The C++ standard requires only that these
1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                                // member functions be defined in basic_ios.
1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                                // We define them in the non-template
1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                                // base class to avoid code duplication.
1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  operator void*() const { return !fail() ? (void*) __CONST_CAST(ios_base*,this) : (void*) 0; }
1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  bool operator!() const { return fail(); }
1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  iostate rdstate() const { return _M_iostate; }
1719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  bool good() const { return _M_iostate == 0; }
1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  bool eof() const { return (_M_iostate & eofbit) != 0; }
1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  bool fail() const { return (_M_iostate & (failbit | badbit)) != 0; }
1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  bool bad() const { return (_M_iostate & badbit) != 0; }
1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:                      // The functional protected interface.
1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // Copies the state of __x to *this.  This member function makes it
1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // possible to implement basic_ios::copyfmt without having to expose
1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // ios_base's private data members.  Does not copy _M_exception_mask
1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // or _M_iostate.
1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void _M_copy_state(const ios_base& __x);
1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void _M_setstate_nothrow(iostate __state) { _M_iostate |= __state; }
1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void _M_clear_nothrow(iostate __state) { _M_iostate = __state; }
1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  iostate _M_get_exception_mask() const { return _M_exception_mask; }
1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void _M_set_exception_mask(iostate __mask) { _M_exception_mask = __mask; }
1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void _M_check_exception_mask() {
1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    if (_M_iostate & _M_exception_mask)
1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      _M_throw_failure();
1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void _M_invoke_callbacks(event);
1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void _STLP_FUNCTION_THROWS _M_throw_failure();
1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  ios_base();                   // Default constructor.
1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:                        // Initialization of the I/O system
2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  static void _STLP_CALL _S_initialize();
2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  static void _STLP_CALL _S_uninitialize();
202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  static bool _S_is_synced;
2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate:                        // Invalidate the copy constructor and
2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                                // assignment operator.
2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  ios_base(const ios_base&);
2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void operator=(const ios_base&);
2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate:                        // Data members.
2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  fmtflags _M_fmtflags;         // Flags
2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  iostate _M_iostate;
2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  openmode _M_openmode;
2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  seekdir _M_seekdir;
2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  iostate _M_exception_mask;
2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  streamsize _M_precision;
2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  streamsize _M_width;
2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  locale _M_locale;
2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  pair<event_callback, int>* _M_callbacks;
2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  size_t _M_num_callbacks;      // Size of the callback array.
2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  size_t _M_callback_index;     // Index of the next available callback;
2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block                                // initially zero.
2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  long* _M_iwords;              // Auxiliary storage.  The count is zero
2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  size_t _M_num_iwords;         // if and only if the pointer is null.
2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  void** _M_pwords;
2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  size_t _M_num_pwords;
2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // ----------------------------------------------------------------------
2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // Nested initializer class.  This is an implementation detail, but it's
2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // prescribed by the standard.  The static initializer object (on
2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // implementations where such a thing is required) is declared in
2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  // <iostream>
2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  class _STLP_CLASS_DECLSPEC Init
2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  {
2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    public:
2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      Init();
2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      ~Init();
2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    private:
2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      static long _S_count;
2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      friend class ios_base;
2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  };
2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  friend class Init;
2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifndef _STLP_NO_ANACHRONISMS
2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  //  31.6  Old iostreams members                         [depr.ios.members]
2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef iostate  io_state;
2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef openmode open_mode;
2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef seekdir  seek_dir;
2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef _STLP_STD::streamoff  streamoff;
2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef _STLP_STD::streampos  streampos;
2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ----------------------------------------------------------------------
2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ios_base manipulator functions, from section 27.4.5 of the C++ standard.
2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// All of them are trivial one-line wrapper functions.
2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// fmtflag manipulators, section 27.4.5.1
2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL boolalpha(ios_base& __s)
2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::boolalpha); return __s;}
2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL noboolalpha(ios_base& __s)
2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.unsetf(ios_base::boolalpha); return __s;}
2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL showbase(ios_base& __s)
2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::showbase); return __s;}
2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL noshowbase(ios_base& __s)
2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.unsetf(ios_base::showbase); return __s;}
2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL showpoint(ios_base& __s)
2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::showpoint); return __s;}
2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL noshowpoint(ios_base& __s)
2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.unsetf(ios_base::showpoint); return __s;}
2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL showpos(ios_base& __s)
2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::showpos); return __s;}
2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL noshowpos(ios_base& __s)
2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.unsetf(ios_base::showpos); return __s;}
2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL skipws(ios_base& __s)
2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::skipws); return __s;}
2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL noskipws(ios_base& __s)
2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.unsetf(ios_base::skipws); return __s;}
2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL uppercase(ios_base& __s)
2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::uppercase); return __s;}
2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL nouppercase(ios_base& __s)
3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.unsetf(ios_base::uppercase); return __s;}
3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL unitbuf(ios_base& __s)
3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::unitbuf); return __s;}
3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL nounitbuf(ios_base& __s)
3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.unsetf(ios_base::unitbuf); return __s;}
3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// adjustfield manipulators, section 27.4.5.2
3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL internal(ios_base& __s)
3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::internal, ios_base::adjustfield); return __s; }
3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL left(ios_base& __s)
3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::left, ios_base::adjustfield); return __s; }
3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL right(ios_base& __s)
3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::right, ios_base::adjustfield); return __s; }
3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// basefield manipulators, section 27.4.5.3
3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL dec(ios_base& __s)
3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::dec, ios_base::basefield); return __s; }
3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL hex(ios_base& __s)
3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::hex, ios_base::basefield); return __s; }
3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL oct(ios_base& __s)
3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::oct, ios_base::basefield); return __s; }
3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// floatfield manipulators, section 27.4.5.3
3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL fixed(ios_base& __s)
3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::fixed, ios_base::floatfield); return __s; }
3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline ios_base& _STLP_CALL scientific(ios_base& __s)
3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  { __s.setf(ios_base::scientific, ios_base::floatfield); return __s; }
3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE
3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_IOS_BASE */
3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables:
3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++
3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End:
3459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
346