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