1951a39d68df598db08dfced8b4707755864a0492Ying Wang/* 2951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (c) 1999 3951a39d68df598db08dfced8b4707755864a0492Ying Wang * Silicon Graphics Computer Systems, Inc. 4951a39d68df598db08dfced8b4707755864a0492Ying Wang * 5951a39d68df598db08dfced8b4707755864a0492Ying Wang * Copyright (c) 1999 6951a39d68df598db08dfced8b4707755864a0492Ying Wang * Boris Fomitchev 7951a39d68df598db08dfced8b4707755864a0492Ying Wang * 8951a39d68df598db08dfced8b4707755864a0492Ying Wang * This material is provided "as is", with absolutely no warranty expressed 9951a39d68df598db08dfced8b4707755864a0492Ying Wang * or implied. Any use is at your own risk. 10951a39d68df598db08dfced8b4707755864a0492Ying Wang * 11951a39d68df598db08dfced8b4707755864a0492Ying Wang * Permission to use or copy this software for any purpose is hereby granted 12951a39d68df598db08dfced8b4707755864a0492Ying Wang * without fee, provided the above notices are retained on all copies. 13951a39d68df598db08dfced8b4707755864a0492Ying Wang * Permission to modify the code and to distribute modified code is granted, 14951a39d68df598db08dfced8b4707755864a0492Ying Wang * provided the above notices are retained, and a notice that the code was 15951a39d68df598db08dfced8b4707755864a0492Ying Wang * modified is included with the above copyright notice. 16951a39d68df598db08dfced8b4707755864a0492Ying Wang * 17951a39d68df598db08dfced8b4707755864a0492Ying Wang */ 18951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _STLP_IOS_BASE_H 19951a39d68df598db08dfced8b4707755864a0492Ying Wang#define _STLP_IOS_BASE_H 20951a39d68df598db08dfced8b4707755864a0492Ying Wang 21951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _STLP_INTERNAL_STDEXCEPT_BASE 22951a39d68df598db08dfced8b4707755864a0492Ying Wang# include <stl/_stdexcept_base.h> 23951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 24951a39d68df598db08dfced8b4707755864a0492Ying Wang 25951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _STLP_INTERNAL_PAIR_H 26951a39d68df598db08dfced8b4707755864a0492Ying Wang# include <stl/_pair.h> 27951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 28951a39d68df598db08dfced8b4707755864a0492Ying Wang 29951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _STLP_INTERNAL_LOCALE_H 30951a39d68df598db08dfced8b4707755864a0492Ying Wang# include <stl/_locale.h> 31951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 32951a39d68df598db08dfced8b4707755864a0492Ying Wang 33951a39d68df598db08dfced8b4707755864a0492Ying Wang#ifndef _STLP_INTERNAL_STRING_H 34951a39d68df598db08dfced8b4707755864a0492Ying Wang# include <stl/_string.h> 35951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif 36951a39d68df598db08dfced8b4707755864a0492Ying Wang 37951a39d68df598db08dfced8b4707755864a0492Ying Wang_STLP_BEGIN_NAMESPACE 38951a39d68df598db08dfced8b4707755864a0492Ying Wang 39951a39d68df598db08dfced8b4707755864a0492Ying Wang// ---------------------------------------------------------------------- 40951a39d68df598db08dfced8b4707755864a0492Ying Wang 41951a39d68df598db08dfced8b4707755864a0492Ying Wang// Class ios_base. This is the base class of the ios hierarchy, which 42951a39d68df598db08dfced8b4707755864a0492Ying Wang// includes basic_istream and basic_ostream. Classes in the ios 43951a39d68df598db08dfced8b4707755864a0492Ying Wang// hierarchy are actually quite simple: they are just glorified 44951a39d68df598db08dfced8b4707755864a0492Ying Wang// wrapper classes. They delegate buffering and physical character 45951a39d68df598db08dfced8b4707755864a0492Ying Wang// manipulation to the streambuf classes, and they delegate most 46951a39d68df598db08dfced8b4707755864a0492Ying Wang// formatting tasks to a locale. 47951a39d68df598db08dfced8b4707755864a0492Ying Wang 48951a39d68df598db08dfced8b4707755864a0492Ying Wangclass _STLP_CLASS_DECLSPEC ios_base { 49951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: 50951a39d68df598db08dfced8b4707755864a0492Ying Wang 51951a39d68df598db08dfced8b4707755864a0492Ying Wang class _STLP_CLASS_DECLSPEC failure : public __Named_exception { 52951a39d68df598db08dfced8b4707755864a0492Ying Wang public: 53951a39d68df598db08dfced8b4707755864a0492Ying Wang explicit failure(const string&); 54951a39d68df598db08dfced8b4707755864a0492Ying Wang virtual ~failure() _STLP_NOTHROW_INHERENTLY; 55951a39d68df598db08dfced8b4707755864a0492Ying Wang }; 56951a39d68df598db08dfced8b4707755864a0492Ying Wang 57951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef int fmtflags; 58951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef int iostate; 59951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef int openmode; 60951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef int seekdir; 61951a39d68df598db08dfced8b4707755864a0492Ying Wang 62951a39d68df598db08dfced8b4707755864a0492Ying Wang# ifndef _STLP_NO_ANACHRONISMS 63951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef fmtflags fmt_flags; 64951a39d68df598db08dfced8b4707755864a0492Ying Wang# endif 65951a39d68df598db08dfced8b4707755864a0492Ying Wang 66951a39d68df598db08dfced8b4707755864a0492Ying Wang // Formatting flags. 67951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, left = 0x0001); 68951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, right = 0x0002); 69951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, internal = 0x0004); 70951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, dec = 0x0008); 71951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, hex = 0x0010); 72951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, oct = 0x0020); 73951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, fixed = 0x0040); 74951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, scientific = 0x0080); 75951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, boolalpha = 0x0100); 76951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, showbase = 0x0200); 77951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, showpoint = 0x0400); 78951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, showpos = 0x0800); 79951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, skipws = 0x1000); 80951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, unitbuf = 0x2000); 81951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, uppercase = 0x4000); 82951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, adjustfield = left | right | internal); 83951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, basefield = dec | hex | oct); 84951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, floatfield = scientific | fixed); 85951a39d68df598db08dfced8b4707755864a0492Ying Wang 86951a39d68df598db08dfced8b4707755864a0492Ying Wang // State flags. 87951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, goodbit = 0x00); 88951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, badbit = 0x01); 89951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, eofbit = 0x02); 90951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, failbit = 0x04); 91951a39d68df598db08dfced8b4707755864a0492Ying Wang 92951a39d68df598db08dfced8b4707755864a0492Ying Wang // Openmode flags. 93951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, __default_mode = 0x0); /* implementation detail */ 94951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, app = 0x01); 95951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, ate = 0x02); 96951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, binary = 0x04); 97951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, in = 0x08); 98951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, out = 0x10); 99951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, trunc = 0x20); 100951a39d68df598db08dfced8b4707755864a0492Ying Wang 101951a39d68df598db08dfced8b4707755864a0492Ying Wang // Seekdir flags 102951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, beg = 0x01); 103951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, cur = 0x02); 104951a39d68df598db08dfced8b4707755864a0492Ying Wang _STLP_STATIC_CONSTANT(int, end = 0x04); 105951a39d68df598db08dfced8b4707755864a0492Ying Wang 106951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: // Flag-manipulation functions. 107951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags flags() const { return _M_fmtflags; } 108951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags flags(fmtflags __flags) { 109951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags __tmp = _M_fmtflags; 110951a39d68df598db08dfced8b4707755864a0492Ying Wang _M_fmtflags = __flags; 111951a39d68df598db08dfced8b4707755864a0492Ying Wang return __tmp; 112951a39d68df598db08dfced8b4707755864a0492Ying Wang } 113951a39d68df598db08dfced8b4707755864a0492Ying Wang 114951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags setf(fmtflags __flag) { 115951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags __tmp = _M_fmtflags; 116951a39d68df598db08dfced8b4707755864a0492Ying Wang _M_fmtflags |= __flag; 117951a39d68df598db08dfced8b4707755864a0492Ying Wang return __tmp; 118951a39d68df598db08dfced8b4707755864a0492Ying Wang } 119951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags setf(fmtflags __flag, fmtflags __mask) { 120951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags __tmp = _M_fmtflags; 121951a39d68df598db08dfced8b4707755864a0492Ying Wang _M_fmtflags &= ~__mask; 122951a39d68df598db08dfced8b4707755864a0492Ying Wang _M_fmtflags |= __flag & __mask; 123951a39d68df598db08dfced8b4707755864a0492Ying Wang return __tmp; 124951a39d68df598db08dfced8b4707755864a0492Ying Wang } 125951a39d68df598db08dfced8b4707755864a0492Ying Wang void unsetf(fmtflags __mask) { _M_fmtflags &= ~__mask; } 126951a39d68df598db08dfced8b4707755864a0492Ying Wang 127951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize precision() const { return _M_precision; } 128951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize precision(streamsize __newprecision) { 129951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize __tmp = _M_precision; 130951a39d68df598db08dfced8b4707755864a0492Ying Wang _M_precision = __newprecision; 131951a39d68df598db08dfced8b4707755864a0492Ying Wang return __tmp; 132951a39d68df598db08dfced8b4707755864a0492Ying Wang } 133951a39d68df598db08dfced8b4707755864a0492Ying Wang 134951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize width() const { return _M_width; } 135951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize width(streamsize __newwidth) { 136951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize __tmp = _M_width; 137951a39d68df598db08dfced8b4707755864a0492Ying Wang _M_width = __newwidth; 138951a39d68df598db08dfced8b4707755864a0492Ying Wang return __tmp; 139951a39d68df598db08dfced8b4707755864a0492Ying Wang } 140951a39d68df598db08dfced8b4707755864a0492Ying Wang 141951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: // Locales 142951a39d68df598db08dfced8b4707755864a0492Ying Wang locale imbue(const locale&); 143951a39d68df598db08dfced8b4707755864a0492Ying Wang locale getloc() const { return _M_locale; } 144951a39d68df598db08dfced8b4707755864a0492Ying Wang 145951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: // Auxiliary storage. 146951a39d68df598db08dfced8b4707755864a0492Ying Wang static int _STLP_CALL xalloc(); 147951a39d68df598db08dfced8b4707755864a0492Ying Wang long& iword(int __index); 148951a39d68df598db08dfced8b4707755864a0492Ying Wang void*& pword(int __index); 149951a39d68df598db08dfced8b4707755864a0492Ying Wang 150951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: // Destructor. 151951a39d68df598db08dfced8b4707755864a0492Ying Wang virtual ~ios_base(); 152951a39d68df598db08dfced8b4707755864a0492Ying Wang 153951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: // Callbacks. 154951a39d68df598db08dfced8b4707755864a0492Ying Wang enum event { erase_event, imbue_event, copyfmt_event }; 155951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef void (*event_callback)(event, ios_base&, int __index); 156951a39d68df598db08dfced8b4707755864a0492Ying Wang void register_callback(event_callback __fn, int __index); 157951a39d68df598db08dfced8b4707755864a0492Ying Wang 158951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: // This member function affects only 159951a39d68df598db08dfced8b4707755864a0492Ying Wang // the eight predefined ios objects: 160951a39d68df598db08dfced8b4707755864a0492Ying Wang // cin, cout, etc. 161951a39d68df598db08dfced8b4707755864a0492Ying Wang static bool _STLP_CALL sync_with_stdio(bool __sync = true); 162951a39d68df598db08dfced8b4707755864a0492Ying Wang 163951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: // The C++ standard requires only that these 164951a39d68df598db08dfced8b4707755864a0492Ying Wang // member functions be defined in basic_ios. 165951a39d68df598db08dfced8b4707755864a0492Ying Wang // We define them in the non-template 166951a39d68df598db08dfced8b4707755864a0492Ying Wang // base class to avoid code duplication. 167951a39d68df598db08dfced8b4707755864a0492Ying Wang operator void*() const { return !fail() ? (void*) __CONST_CAST(ios_base*,this) : (void*) 0; } 168951a39d68df598db08dfced8b4707755864a0492Ying Wang bool operator!() const { return fail(); } 169951a39d68df598db08dfced8b4707755864a0492Ying Wang 170951a39d68df598db08dfced8b4707755864a0492Ying Wang iostate rdstate() const { return _M_iostate; } 171951a39d68df598db08dfced8b4707755864a0492Ying Wang 172951a39d68df598db08dfced8b4707755864a0492Ying Wang bool good() const { return _M_iostate == 0; } 173951a39d68df598db08dfced8b4707755864a0492Ying Wang bool eof() const { return (_M_iostate & eofbit) != 0; } 174951a39d68df598db08dfced8b4707755864a0492Ying Wang bool fail() const { return (_M_iostate & (failbit | badbit)) != 0; } 175951a39d68df598db08dfced8b4707755864a0492Ying Wang bool bad() const { return (_M_iostate & badbit) != 0; } 176951a39d68df598db08dfced8b4707755864a0492Ying Wang 177951a39d68df598db08dfced8b4707755864a0492Ying Wangprotected: // The functional protected interface. 178951a39d68df598db08dfced8b4707755864a0492Ying Wang 179951a39d68df598db08dfced8b4707755864a0492Ying Wang // Copies the state of __x to *this. This member function makes it 180951a39d68df598db08dfced8b4707755864a0492Ying Wang // possible to implement basic_ios::copyfmt without having to expose 181951a39d68df598db08dfced8b4707755864a0492Ying Wang // ios_base's private data members. Does not copy _M_exception_mask 182951a39d68df598db08dfced8b4707755864a0492Ying Wang // or _M_iostate. 183951a39d68df598db08dfced8b4707755864a0492Ying Wang void _M_copy_state(const ios_base& __x); 184951a39d68df598db08dfced8b4707755864a0492Ying Wang 185951a39d68df598db08dfced8b4707755864a0492Ying Wang void _M_setstate_nothrow(iostate __state) { _M_iostate |= __state; } 186951a39d68df598db08dfced8b4707755864a0492Ying Wang void _M_clear_nothrow(iostate __state) { _M_iostate = __state; } 187951a39d68df598db08dfced8b4707755864a0492Ying Wang iostate _M_get_exception_mask() const { return _M_exception_mask; } 188951a39d68df598db08dfced8b4707755864a0492Ying Wang void _M_set_exception_mask(iostate __mask) { _M_exception_mask = __mask; } 189951a39d68df598db08dfced8b4707755864a0492Ying Wang void _M_check_exception_mask() { 190951a39d68df598db08dfced8b4707755864a0492Ying Wang if (_M_iostate & _M_exception_mask) 191951a39d68df598db08dfced8b4707755864a0492Ying Wang _M_throw_failure(); 192951a39d68df598db08dfced8b4707755864a0492Ying Wang } 193951a39d68df598db08dfced8b4707755864a0492Ying Wang 194951a39d68df598db08dfced8b4707755864a0492Ying Wang void _M_invoke_callbacks(event); 195951a39d68df598db08dfced8b4707755864a0492Ying Wang void _STLP_FUNCTION_THROWS _M_throw_failure(); 196951a39d68df598db08dfced8b4707755864a0492Ying Wang 197951a39d68df598db08dfced8b4707755864a0492Ying Wang ios_base(); // Default constructor. 198951a39d68df598db08dfced8b4707755864a0492Ying Wang 199951a39d68df598db08dfced8b4707755864a0492Ying Wangprotected: // Initialization of the I/O system 200951a39d68df598db08dfced8b4707755864a0492Ying Wang static void _STLP_CALL _S_initialize(); 201951a39d68df598db08dfced8b4707755864a0492Ying Wang static void _STLP_CALL _S_uninitialize(); 202951a39d68df598db08dfced8b4707755864a0492Ying Wang static bool _S_is_synced; 203951a39d68df598db08dfced8b4707755864a0492Ying Wang 204951a39d68df598db08dfced8b4707755864a0492Ying Wangprivate: // Invalidate the copy constructor and 205951a39d68df598db08dfced8b4707755864a0492Ying Wang // assignment operator. 206951a39d68df598db08dfced8b4707755864a0492Ying Wang ios_base(const ios_base&); 207951a39d68df598db08dfced8b4707755864a0492Ying Wang void operator=(const ios_base&); 208951a39d68df598db08dfced8b4707755864a0492Ying Wang 209951a39d68df598db08dfced8b4707755864a0492Ying Wangprivate: // Data members. 210951a39d68df598db08dfced8b4707755864a0492Ying Wang 211951a39d68df598db08dfced8b4707755864a0492Ying Wang fmtflags _M_fmtflags; // Flags 212951a39d68df598db08dfced8b4707755864a0492Ying Wang iostate _M_iostate; 213951a39d68df598db08dfced8b4707755864a0492Ying Wang openmode _M_openmode; 214951a39d68df598db08dfced8b4707755864a0492Ying Wang seekdir _M_seekdir; 215951a39d68df598db08dfced8b4707755864a0492Ying Wang iostate _M_exception_mask; 216951a39d68df598db08dfced8b4707755864a0492Ying Wang 217951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize _M_precision; 218951a39d68df598db08dfced8b4707755864a0492Ying Wang streamsize _M_width; 219951a39d68df598db08dfced8b4707755864a0492Ying Wang 220951a39d68df598db08dfced8b4707755864a0492Ying Wang locale _M_locale; 221951a39d68df598db08dfced8b4707755864a0492Ying Wang 222951a39d68df598db08dfced8b4707755864a0492Ying Wang pair<event_callback, int>* _M_callbacks; 223951a39d68df598db08dfced8b4707755864a0492Ying Wang size_t _M_num_callbacks; // Size of the callback array. 224951a39d68df598db08dfced8b4707755864a0492Ying Wang size_t _M_callback_index; // Index of the next available callback; 225951a39d68df598db08dfced8b4707755864a0492Ying Wang // initially zero. 226951a39d68df598db08dfced8b4707755864a0492Ying Wang 227951a39d68df598db08dfced8b4707755864a0492Ying Wang long* _M_iwords; // Auxiliary storage. The count is zero 228951a39d68df598db08dfced8b4707755864a0492Ying Wang size_t _M_num_iwords; // if and only if the pointer is null. 229951a39d68df598db08dfced8b4707755864a0492Ying Wang 230951a39d68df598db08dfced8b4707755864a0492Ying Wang void** _M_pwords; 231951a39d68df598db08dfced8b4707755864a0492Ying Wang size_t _M_num_pwords; 232951a39d68df598db08dfced8b4707755864a0492Ying Wang 233951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: 234951a39d68df598db08dfced8b4707755864a0492Ying Wang // ---------------------------------------------------------------------- 235951a39d68df598db08dfced8b4707755864a0492Ying Wang // Nested initializer class. This is an implementation detail, but it's 236951a39d68df598db08dfced8b4707755864a0492Ying Wang // prescribed by the standard. The static initializer object (on 237951a39d68df598db08dfced8b4707755864a0492Ying Wang // implementations where such a thing is required) is declared in 238951a39d68df598db08dfced8b4707755864a0492Ying Wang // <iostream> 239951a39d68df598db08dfced8b4707755864a0492Ying Wang class _STLP_CLASS_DECLSPEC Init 240951a39d68df598db08dfced8b4707755864a0492Ying Wang { 241951a39d68df598db08dfced8b4707755864a0492Ying Wang public: 242951a39d68df598db08dfced8b4707755864a0492Ying Wang Init(); 243951a39d68df598db08dfced8b4707755864a0492Ying Wang ~Init(); 244951a39d68df598db08dfced8b4707755864a0492Ying Wang private: 245951a39d68df598db08dfced8b4707755864a0492Ying Wang static long _S_count; 246951a39d68df598db08dfced8b4707755864a0492Ying Wang friend class ios_base; 247951a39d68df598db08dfced8b4707755864a0492Ying Wang }; 248951a39d68df598db08dfced8b4707755864a0492Ying Wang 249951a39d68df598db08dfced8b4707755864a0492Ying Wang friend class Init; 250951a39d68df598db08dfced8b4707755864a0492Ying Wang 251951a39d68df598db08dfced8b4707755864a0492Ying Wangpublic: 252951a39d68df598db08dfced8b4707755864a0492Ying Wang# ifndef _STLP_NO_ANACHRONISMS 253951a39d68df598db08dfced8b4707755864a0492Ying Wang // 31.6 Old iostreams members [depr.ios.members] 254951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef iostate io_state; 255951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef openmode open_mode; 256951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef seekdir seek_dir; 257951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef _STLP_STD::streamoff streamoff; 258951a39d68df598db08dfced8b4707755864a0492Ying Wang typedef _STLP_STD::streampos streampos; 259951a39d68df598db08dfced8b4707755864a0492Ying Wang# endif 260951a39d68df598db08dfced8b4707755864a0492Ying Wang}; 261951a39d68df598db08dfced8b4707755864a0492Ying Wang 262951a39d68df598db08dfced8b4707755864a0492Ying Wang// ---------------------------------------------------------------------- 263951a39d68df598db08dfced8b4707755864a0492Ying Wang// ios_base manipulator functions, from section 27.4.5 of the C++ standard. 264951a39d68df598db08dfced8b4707755864a0492Ying Wang// All of them are trivial one-line wrapper functions. 265951a39d68df598db08dfced8b4707755864a0492Ying Wang 266951a39d68df598db08dfced8b4707755864a0492Ying Wang// fmtflag manipulators, section 27.4.5.1 267951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL boolalpha(ios_base& __s) 268951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::boolalpha); return __s;} 269951a39d68df598db08dfced8b4707755864a0492Ying Wang 270951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL noboolalpha(ios_base& __s) 271951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.unsetf(ios_base::boolalpha); return __s;} 272951a39d68df598db08dfced8b4707755864a0492Ying Wang 273951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL showbase(ios_base& __s) 274951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::showbase); return __s;} 275951a39d68df598db08dfced8b4707755864a0492Ying Wang 276951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL noshowbase(ios_base& __s) 277951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.unsetf(ios_base::showbase); return __s;} 278951a39d68df598db08dfced8b4707755864a0492Ying Wang 279951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL showpoint(ios_base& __s) 280951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::showpoint); return __s;} 281951a39d68df598db08dfced8b4707755864a0492Ying Wang 282951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL noshowpoint(ios_base& __s) 283951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.unsetf(ios_base::showpoint); return __s;} 284951a39d68df598db08dfced8b4707755864a0492Ying Wang 285951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL showpos(ios_base& __s) 286951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::showpos); return __s;} 287951a39d68df598db08dfced8b4707755864a0492Ying Wang 288951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL noshowpos(ios_base& __s) 289951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.unsetf(ios_base::showpos); return __s;} 290951a39d68df598db08dfced8b4707755864a0492Ying Wang 291951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL skipws(ios_base& __s) 292951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::skipws); return __s;} 293951a39d68df598db08dfced8b4707755864a0492Ying Wang 294951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL noskipws(ios_base& __s) 295951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.unsetf(ios_base::skipws); return __s;} 296951a39d68df598db08dfced8b4707755864a0492Ying Wang 297951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL uppercase(ios_base& __s) 298951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::uppercase); return __s;} 299951a39d68df598db08dfced8b4707755864a0492Ying Wang 300951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL nouppercase(ios_base& __s) 301951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.unsetf(ios_base::uppercase); return __s;} 302951a39d68df598db08dfced8b4707755864a0492Ying Wang 303951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL unitbuf(ios_base& __s) 304951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::unitbuf); return __s;} 305951a39d68df598db08dfced8b4707755864a0492Ying Wang 306951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL nounitbuf(ios_base& __s) 307951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.unsetf(ios_base::unitbuf); return __s;} 308951a39d68df598db08dfced8b4707755864a0492Ying Wang 309951a39d68df598db08dfced8b4707755864a0492Ying Wang 310951a39d68df598db08dfced8b4707755864a0492Ying Wang// adjustfield manipulators, section 27.4.5.2 311951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL internal(ios_base& __s) 312951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::internal, ios_base::adjustfield); return __s; } 313951a39d68df598db08dfced8b4707755864a0492Ying Wang 314951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL left(ios_base& __s) 315951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::left, ios_base::adjustfield); return __s; } 316951a39d68df598db08dfced8b4707755864a0492Ying Wang 317951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL right(ios_base& __s) 318951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::right, ios_base::adjustfield); return __s; } 319951a39d68df598db08dfced8b4707755864a0492Ying Wang 320951a39d68df598db08dfced8b4707755864a0492Ying Wang// basefield manipulators, section 27.4.5.3 321951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL dec(ios_base& __s) 322951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::dec, ios_base::basefield); return __s; } 323951a39d68df598db08dfced8b4707755864a0492Ying Wang 324951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL hex(ios_base& __s) 325951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::hex, ios_base::basefield); return __s; } 326951a39d68df598db08dfced8b4707755864a0492Ying Wang 327951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL oct(ios_base& __s) 328951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::oct, ios_base::basefield); return __s; } 329951a39d68df598db08dfced8b4707755864a0492Ying Wang 330951a39d68df598db08dfced8b4707755864a0492Ying Wang 331951a39d68df598db08dfced8b4707755864a0492Ying Wang// floatfield manipulators, section 27.4.5.3 332951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL fixed(ios_base& __s) 333951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::fixed, ios_base::floatfield); return __s; } 334951a39d68df598db08dfced8b4707755864a0492Ying Wang 335951a39d68df598db08dfced8b4707755864a0492Ying Wanginline ios_base& _STLP_CALL scientific(ios_base& __s) 336951a39d68df598db08dfced8b4707755864a0492Ying Wang { __s.setf(ios_base::scientific, ios_base::floatfield); return __s; } 337951a39d68df598db08dfced8b4707755864a0492Ying Wang 338951a39d68df598db08dfced8b4707755864a0492Ying Wang_STLP_END_NAMESPACE 339951a39d68df598db08dfced8b4707755864a0492Ying Wang 340951a39d68df598db08dfced8b4707755864a0492Ying Wang#endif /* _STLP_IOS_BASE */ 341951a39d68df598db08dfced8b4707755864a0492Ying Wang 342951a39d68df598db08dfced8b4707755864a0492Ying Wang// Local Variables: 343951a39d68df598db08dfced8b4707755864a0492Ying Wang// mode:C++ 344951a39d68df598db08dfced8b4707755864a0492Ying Wang// End: 345951a39d68df598db08dfced8b4707755864a0492Ying Wang 346