_ios_base.h revision 013fff3524b2798e9d45aefcc13236021da234db
190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)/* 290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Copyright (c) 1999 390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Silicon Graphics Computer Systems, Inc. 490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * 590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Copyright (c) 1999 690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Boris Fomitchev 790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * 890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * This material is provided "as is", with absolutely no warranty expressed 990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * or implied. Any use is at your own risk. 1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * 1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Permission to use or copy this software for any purpose is hereby granted 1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * without fee, provided the above notices are retained on all copies. 1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * Permission to modify the code and to distribute modified code is granted, 1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * provided the above notices are retained, and a notice that the code was 1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * modified is included with the above copyright notice. 1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) * 1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) */ 1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef _STLP_IOS_BASE_H 1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define _STLP_IOS_BASE_H 2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef _STLP_INTERNAL_STDEXCEPT_BASE 2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# include <stl/_stdexcept_base.h> 2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef _STLP_INTERNAL_PAIR_H 2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# include <stl/_pair.h> 2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif 2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef _STLP_INTERNAL_LOCALE_H 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# include <stl/_locale.h> 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif 3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef _STLP_INTERNAL_STRING_H 3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# include <stl/_string.h> 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)_STLP_BEGIN_NAMESPACE 3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// ---------------------------------------------------------------------- 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Class ios_base. This is the base class of the ios hierarchy, which 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// includes basic_istream and basic_ostream. Classes in the ios 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// hierarchy are actually quite simple: they are just glorified 4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// wrapper classes. They delegate buffering and physical character 4590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// manipulation to the streambuf classes, and they delegate most 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// formatting tasks to a locale. 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class _STLP_CLASS_DECLSPEC ios_base { 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: 5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# ifdef _STLP_USE_EXCEPTIONS 5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) class _STLP_CLASS_DECLSPEC failure : public __Named_exception { 5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) explicit failure(const string&); 5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~failure() _STLP_NOTHROW_INHERENTLY; 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }; 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif 5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef int fmtflags; 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef int iostate; 6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef int openmode; 6290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef int seekdir; 6390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# ifndef _STLP_NO_ANACHRONISMS 6590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef fmtflags fmt_flags; 6690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# endif 6790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 6890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Formatting flags. 6990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, left = 0x0001); 7090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, right = 0x0002); 7190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, internal = 0x0004); 7290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, dec = 0x0008); 7390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, hex = 0x0010); 7490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, oct = 0x0020); 7590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, fixed = 0x0040); 7690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, scientific = 0x0080); 7790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, boolalpha = 0x0100); 7890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, showbase = 0x0200); 7990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, showpoint = 0x0400); 8090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, showpos = 0x0800); 8190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, skipws = 0x1000); 8290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, unitbuf = 0x2000); 8390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, uppercase = 0x4000); 8490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, adjustfield = left | right | internal); 8590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, basefield = dec | hex | oct); 8690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, floatfield = scientific | fixed); 8790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 8890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // State flags. 8990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, goodbit = 0x00); 9090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, badbit = 0x01); 9190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, eofbit = 0x02); 9290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, failbit = 0x04); 9390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 9490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Openmode flags. 9590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, __default_mode = 0x0); /* implementation detail */ 9690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, app = 0x01); 9790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, ate = 0x02); 9890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, binary = 0x04); 9990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, in = 0x08); 10090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, out = 0x10); 10190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, trunc = 0x20); 10290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 10390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Seekdir flags 10490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, beg = 0x01); 10590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, cur = 0x02); 10690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _STLP_STATIC_CONSTANT(int, end = 0x04); 10790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 10890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: // Flag-manipulation functions. 10990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags flags() const { return _M_fmtflags; } 11090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags flags(fmtflags __flags) { 11190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags __tmp = _M_fmtflags; 11290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _M_fmtflags = __flags; 11390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return __tmp; 11490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 11590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 11690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags setf(fmtflags __flag) { 11790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags __tmp = _M_fmtflags; 11890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _M_fmtflags |= __flag; 11990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return __tmp; 12090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 12190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags setf(fmtflags __flag, fmtflags __mask) { 12290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags __tmp = _M_fmtflags; 12390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _M_fmtflags &= ~__mask; 12490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _M_fmtflags |= __flag & __mask; 12590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return __tmp; 12690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 12790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void unsetf(fmtflags __mask) { _M_fmtflags &= ~__mask; } 12890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 12990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize precision() const { return _M_precision; } 13090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize precision(streamsize __newprecision) { 13190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize __tmp = _M_precision; 13290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _M_precision = __newprecision; 13390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return __tmp; 13490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 13590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 13690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize width() const { return _M_width; } 13790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize width(streamsize __newwidth) { 13890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize __tmp = _M_width; 13990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _M_width = __newwidth; 14090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return __tmp; 14190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 14290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 14390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: // Locales 14490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) locale imbue(const locale&); 14590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) locale getloc() const { return _M_locale; } 14690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 14790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: // Auxiliary storage. 14890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static int _STLP_CALL xalloc(); 14990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) long& iword(int __index); 15090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void*& pword(int __index); 15190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 15290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: // Destructor. 15390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) virtual ~ios_base(); 15490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 15590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: // Callbacks. 15690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) enum event { erase_event, imbue_event, copyfmt_event }; 15790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef void (*event_callback)(event, ios_base&, int __index); 15890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void register_callback(event_callback __fn, int __index); 15990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 16090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: // This member function affects only 16190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // the eight predefined ios objects: 16290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // cin, cout, etc. 16390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static bool _STLP_CALL sync_with_stdio(bool __sync = true); 16490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 16590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: // The C++ standard requires only that these 16690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // member functions be defined in basic_ios. 16790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // We define them in the non-template 16890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // base class to avoid code duplication. 16990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) operator void*() const { return !fail() ? (void*) __CONST_CAST(ios_base*,this) : (void*) 0; } 17090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool operator!() const { return fail(); } 17190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 17290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) iostate rdstate() const { return _M_iostate; } 17390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 17490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool good() const { return _M_iostate == 0; } 17590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool eof() const { return (_M_iostate & eofbit) != 0; } 17690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool fail() const { return (_M_iostate & (failbit | badbit)) != 0; } 17790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) bool bad() const { return (_M_iostate & badbit) != 0; } 17890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 17990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)protected: // The functional protected interface. 18090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 18190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Copies the state of __x to *this. This member function makes it 18290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // possible to implement basic_ios::copyfmt without having to expose 18390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // ios_base's private data members. Does not copy _M_exception_mask 18490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // or _M_iostate. 18590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void _M_copy_state(const ios_base& __x); 18690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 18790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void _M_setstate_nothrow(iostate __state) { _M_iostate |= __state; } 18890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void _M_clear_nothrow(iostate __state) { _M_iostate = __state; } 18990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) iostate _M_get_exception_mask() const { return _M_exception_mask; } 19090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void _M_set_exception_mask(iostate __mask) { _M_exception_mask = __mask; } 19190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void _M_check_exception_mask() { 19290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (_M_iostate & _M_exception_mask) 19390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) _M_throw_failure(); 19490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 19590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 19690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void _M_invoke_callbacks(event); 19790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void _STLP_FUNCTION_THROWS _M_throw_failure(); 19890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 19990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ios_base(); // Default constructor. 20090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 20190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)protected: // Initialization of the I/O system 20290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static void _STLP_CALL _S_initialize(); 20390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static void _STLP_CALL _S_uninitialize(); 20490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static bool _S_is_synced; 20590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 20690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)private: // Invalidate the copy constructor and 20790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // assignment operator. 20890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ios_base(const ios_base&); 20990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void operator=(const ios_base&); 21090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 21190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)private: // Data members. 21290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 21390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) fmtflags _M_fmtflags; // Flags 21490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) iostate _M_iostate; 21590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) openmode _M_openmode; 21690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) seekdir _M_seekdir; 21790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) iostate _M_exception_mask; 21890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 21990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize _M_precision; 22090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) streamsize _M_width; 22190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 22290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) locale _M_locale; 22390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 22490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) pair<event_callback, int>* _M_callbacks; 22590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t _M_num_callbacks; // Size of the callback array. 22690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t _M_callback_index; // Index of the next available callback; 22790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // initially zero. 22890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 22990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) long* _M_iwords; // Auxiliary storage. The count is zero 23090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t _M_num_iwords; // if and only if the pointer is null. 23190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 23290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) void** _M_pwords; 23390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) size_t _M_num_pwords; 23490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 23590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: 23690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // ---------------------------------------------------------------------- 23790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Nested initializer class. This is an implementation detail, but it's 23890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // prescribed by the standard. The static initializer object (on 23990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // implementations where such a thing is required) is declared in 24090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // <iostream> 24190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) class _STLP_CLASS_DECLSPEC Init 24290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { 24390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public: 24490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) Init(); 24590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) ~Init(); 24690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private: 24790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) static long _S_count; 24890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) friend class ios_base; 24990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) }; 25090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 25190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) friend class Init; 25290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 25390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)public: 25490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# ifndef _STLP_NO_ANACHRONISMS 25590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // 31.6 Old iostreams members [depr.ios.members] 25690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef iostate io_state; 25790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef openmode open_mode; 25890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef seekdir seek_dir; 25990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef _STLP_STD::streamoff streamoff; 26090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) typedef _STLP_STD::streampos streampos; 26190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)# endif 26290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}; 26390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 26490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// ---------------------------------------------------------------------- 26590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// ios_base manipulator functions, from section 27.4.5 of the C++ standard. 26690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// All of them are trivial one-line wrapper functions. 26790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 26890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// fmtflag manipulators, section 27.4.5.1 26990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL boolalpha(ios_base& __s) 27090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::boolalpha); return __s;} 27190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 27290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL noboolalpha(ios_base& __s) 27390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.unsetf(ios_base::boolalpha); return __s;} 27490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 27590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL showbase(ios_base& __s) 27690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::showbase); return __s;} 27790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 27890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL noshowbase(ios_base& __s) 27990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.unsetf(ios_base::showbase); return __s;} 28090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 28190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL showpoint(ios_base& __s) 28290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::showpoint); return __s;} 28390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 28490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL noshowpoint(ios_base& __s) 28590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.unsetf(ios_base::showpoint); return __s;} 28690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 28790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL showpos(ios_base& __s) 28890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::showpos); return __s;} 28990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 29090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL noshowpos(ios_base& __s) 29190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.unsetf(ios_base::showpos); return __s;} 29290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 29390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL skipws(ios_base& __s) 29490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::skipws); return __s;} 29590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 29690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL noskipws(ios_base& __s) 29790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.unsetf(ios_base::skipws); return __s;} 29890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 29990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL uppercase(ios_base& __s) 30090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::uppercase); return __s;} 30190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 30290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL nouppercase(ios_base& __s) 30390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.unsetf(ios_base::uppercase); return __s;} 30490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 30590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL unitbuf(ios_base& __s) 30690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::unitbuf); return __s;} 30790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 30890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL nounitbuf(ios_base& __s) 30990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.unsetf(ios_base::unitbuf); return __s;} 31090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 31190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 31290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// adjustfield manipulators, section 27.4.5.2 31390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL internal(ios_base& __s) 31490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::internal, ios_base::adjustfield); return __s; } 31590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 31690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL left(ios_base& __s) 31790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::left, ios_base::adjustfield); return __s; } 31890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 31990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL right(ios_base& __s) 32090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::right, ios_base::adjustfield); return __s; } 32190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 32290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// basefield manipulators, section 27.4.5.3 32390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL dec(ios_base& __s) 32490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::dec, ios_base::basefield); return __s; } 32590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 32690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL hex(ios_base& __s) 32790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::hex, ios_base::basefield); return __s; } 32890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 32990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL oct(ios_base& __s) 33090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::oct, ios_base::basefield); return __s; } 33190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 33290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 33390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// floatfield manipulators, section 27.4.5.3 33490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL fixed(ios_base& __s) 33590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::fixed, ios_base::floatfield); return __s; } 33690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 33790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)inline ios_base& _STLP_CALL scientific(ios_base& __s) 33890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) { __s.setf(ios_base::scientific, ios_base::floatfield); return __s; } 33990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 34090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)_STLP_END_NAMESPACE 34190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 34290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif /* _STLP_IOS_BASE */ 34390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 34490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Local Variables: 34590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// mode:C++ 34690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// End: 34790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 34890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)