ios_base.h revision 107606
197403Sobrien// Iostreams base classes -*- C++ -*- 297403Sobrien 397403Sobrien// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 497403Sobrien// Free Software Foundation, Inc. 597403Sobrien// 697403Sobrien// This file is part of the GNU ISO C++ Library. This library is free 797403Sobrien// software; you can redistribute it and/or modify it under the 897403Sobrien// terms of the GNU General Public License as published by the 997403Sobrien// Free Software Foundation; either version 2, or (at your option) 1097403Sobrien// any later version. 1197403Sobrien 1297403Sobrien// This library is distributed in the hope that it will be useful, 1397403Sobrien// but WITHOUT ANY WARRANTY; without even the implied warranty of 1497403Sobrien// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1597403Sobrien// GNU General Public License for more details. 1697403Sobrien 1797403Sobrien// You should have received a copy of the GNU General Public License along 1897403Sobrien// with this library; see the file COPYING. If not, write to the Free 1997403Sobrien// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, 2097403Sobrien// USA. 2197403Sobrien 2297403Sobrien// As a special exception, you may use this file as part of a free software 2397403Sobrien// library without restriction. Specifically, if other files instantiate 2497403Sobrien// templates or use macros or inline functions from this file, or you compile 2597403Sobrien// this file and link it with other files to produce an executable, this 2697403Sobrien// file does not by itself cause the resulting executable to be covered by 2797403Sobrien// the GNU General Public License. This exception does not however 2897403Sobrien// invalidate any other reasons why the executable file might be covered by 2997403Sobrien// the GNU General Public License. 3097403Sobrien 3197403Sobrien// 3297403Sobrien// ISO C++ 14882: 27.8 File-based streams 3397403Sobrien// 3497403Sobrien 3597403Sobrien/** @file ios_base.h 3697403Sobrien * This is an internal header file, included by other library headers. 3797403Sobrien * You should not attempt to use it directly. 3897403Sobrien */ 3997403Sobrien 4097403Sobrien#ifndef _CPP_BITS_IOSBASE_H 4197403Sobrien#define _CPP_BITS_IOSBASE_H 1 4297403Sobrien 4397403Sobrien#pragma GCC system_header 4497403Sobrien 4597403Sobrien#include <bits/atomicity.h> 4697403Sobrien 4797403Sobriennamespace std 4897403Sobrien{ 4997403Sobrien // The following definitions of bitmask types are enums, not ints, 5097403Sobrien // as permitted (but not required) in the standard, in order to provide 5197403Sobrien // better type safety in iostream calls. A side effect is that 5297403Sobrien // expressions involving them are no longer compile-time constants. 5397403Sobrien enum _Ios_Fmtflags { _M_ios_fmtflags_end = 1L << 16 }; 5497403Sobrien 5597403Sobrien inline _Ios_Fmtflags 5697403Sobrien operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 5797403Sobrien { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); } 5897403Sobrien 5997403Sobrien inline _Ios_Fmtflags 6097403Sobrien operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 6197403Sobrien { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); } 6297403Sobrien 6397403Sobrien inline _Ios_Fmtflags 6497403Sobrien operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b) 6597403Sobrien { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); } 6697403Sobrien 6797403Sobrien inline _Ios_Fmtflags 6897403Sobrien operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 6997403Sobrien { return __a = __a | __b; } 7097403Sobrien 7197403Sobrien inline _Ios_Fmtflags 7297403Sobrien operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 7397403Sobrien { return __a = __a & __b; } 7497403Sobrien 7597403Sobrien inline _Ios_Fmtflags 7697403Sobrien operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b) 7797403Sobrien { return __a = __a ^ __b; } 7897403Sobrien 7997403Sobrien inline _Ios_Fmtflags 8097403Sobrien operator~(_Ios_Fmtflags __a) 8197403Sobrien { return _Ios_Fmtflags(~static_cast<int>(__a)); } 8297403Sobrien 8397403Sobrien 8497403Sobrien enum _Ios_Openmode { _M_ios_openmode_end = 1L << 16 }; 8597403Sobrien 8697403Sobrien inline _Ios_Openmode 8797403Sobrien operator&(_Ios_Openmode __a, _Ios_Openmode __b) 8897403Sobrien { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); } 8997403Sobrien 9097403Sobrien inline _Ios_Openmode 9197403Sobrien operator|(_Ios_Openmode __a, _Ios_Openmode __b) 9297403Sobrien { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); } 9397403Sobrien 9497403Sobrien inline _Ios_Openmode 9597403Sobrien operator^(_Ios_Openmode __a, _Ios_Openmode __b) 9697403Sobrien { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); } 9797403Sobrien 9897403Sobrien inline _Ios_Openmode 9997403Sobrien operator|=(_Ios_Openmode& __a, _Ios_Openmode __b) 10097403Sobrien { return __a = __a | __b; } 10197403Sobrien 10297403Sobrien inline _Ios_Openmode 10397403Sobrien operator&=(_Ios_Openmode& __a, _Ios_Openmode __b) 10497403Sobrien { return __a = __a & __b; } 10597403Sobrien 10697403Sobrien inline _Ios_Openmode 10797403Sobrien operator^=(_Ios_Openmode& __a, _Ios_Openmode __b) 10897403Sobrien { return __a = __a ^ __b; } 10997403Sobrien 11097403Sobrien inline _Ios_Openmode 11197403Sobrien operator~(_Ios_Openmode __a) 11297403Sobrien { return _Ios_Openmode(~static_cast<int>(__a)); } 11397403Sobrien 11497403Sobrien 11597403Sobrien enum _Ios_Iostate { _M_ios_iostate_end = 1L << 16 }; 11697403Sobrien 11797403Sobrien inline _Ios_Iostate 11897403Sobrien operator&(_Ios_Iostate __a, _Ios_Iostate __b) 11997403Sobrien { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); } 12097403Sobrien 12197403Sobrien inline _Ios_Iostate 12297403Sobrien operator|(_Ios_Iostate __a, _Ios_Iostate __b) 12397403Sobrien { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); } 12497403Sobrien 12597403Sobrien inline _Ios_Iostate 12697403Sobrien operator^(_Ios_Iostate __a, _Ios_Iostate __b) 12797403Sobrien { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); } 12897403Sobrien 12997403Sobrien inline _Ios_Iostate 13097403Sobrien operator|=(_Ios_Iostate& __a, _Ios_Iostate __b) 13197403Sobrien { return __a = __a | __b; } 13297403Sobrien 13397403Sobrien inline _Ios_Iostate 13497403Sobrien operator&=(_Ios_Iostate& __a, _Ios_Iostate __b) 13597403Sobrien { return __a = __a & __b; } 13697403Sobrien 13797403Sobrien inline _Ios_Iostate 13897403Sobrien operator^=(_Ios_Iostate& __a, _Ios_Iostate __b) 13997403Sobrien { return __a = __a ^ __b; } 14097403Sobrien 14197403Sobrien inline _Ios_Iostate 14297403Sobrien operator~(_Ios_Iostate __a) 14397403Sobrien { return _Ios_Iostate(~static_cast<int>(__a)); } 14497403Sobrien 14597403Sobrien enum _Ios_Seekdir { _M_ios_seekdir_end = 1L << 16 }; 14697403Sobrien 14797403Sobrien // 27.4.2 Class ios_base 14897403Sobrien class ios_base 14997403Sobrien { 15097403Sobrien public: 15197403Sobrien 15297403Sobrien // 27.4.2.1.1 Class ios_base::failure 15397403Sobrien class failure : public exception 15497403Sobrien { 15597403Sobrien public: 15697403Sobrien#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS 15797403Sobrien //48. Use of non-existent exception constructor 15897403Sobrien explicit 15997403Sobrien failure(const string& __str) throw(); 16097403Sobrien 16197403Sobrien // This declaration is not useless: 16297403Sobrien // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 16397403Sobrien virtual 16497403Sobrien ~failure() throw(); 16597403Sobrien 16697403Sobrien virtual const char* 16797403Sobrien what() const throw(); 16897403Sobrien 16997403Sobrien private: 17097403Sobrien enum { _M_bufsize = 256 }; 17197403Sobrien char _M_name[_M_bufsize]; 17297403Sobrien#endif 17397403Sobrien }; 17497403Sobrien 17597403Sobrien // 27.4.2.1.2 Type ios_base::fmtflags 17697403Sobrien typedef _Ios_Fmtflags fmtflags; 17797403Sobrien // 27.4.2.1.2 Type fmtflags 17897403Sobrien static const fmtflags boolalpha = fmtflags(__ios_flags::_S_boolalpha); 17997403Sobrien static const fmtflags dec = fmtflags(__ios_flags::_S_dec); 18097403Sobrien static const fmtflags fixed = fmtflags(__ios_flags::_S_fixed); 18197403Sobrien static const fmtflags hex = fmtflags(__ios_flags::_S_hex); 18297403Sobrien static const fmtflags internal = fmtflags(__ios_flags::_S_internal); 18397403Sobrien static const fmtflags left = fmtflags(__ios_flags::_S_left); 18497403Sobrien static const fmtflags oct = fmtflags(__ios_flags::_S_oct); 18597403Sobrien static const fmtflags right = fmtflags(__ios_flags::_S_right); 18697403Sobrien static const fmtflags scientific = fmtflags(__ios_flags::_S_scientific); 18797403Sobrien static const fmtflags showbase = fmtflags(__ios_flags::_S_showbase); 18897403Sobrien static const fmtflags showpoint = fmtflags(__ios_flags::_S_showpoint); 18997403Sobrien static const fmtflags showpos = fmtflags(__ios_flags::_S_showpos); 19097403Sobrien static const fmtflags skipws = fmtflags(__ios_flags::_S_skipws); 19197403Sobrien static const fmtflags unitbuf = fmtflags(__ios_flags::_S_unitbuf); 19297403Sobrien static const fmtflags uppercase = fmtflags(__ios_flags::_S_uppercase); 19397403Sobrien static const fmtflags adjustfield = fmtflags(__ios_flags::_S_adjustfield); 19497403Sobrien static const fmtflags basefield = fmtflags(__ios_flags::_S_basefield); 19597403Sobrien static const fmtflags floatfield = fmtflags(__ios_flags::_S_floatfield); 19697403Sobrien 19797403Sobrien // 27.4.2.1.3 Type ios_base::iostate 19897403Sobrien typedef _Ios_Iostate iostate; 19997403Sobrien static const iostate badbit = iostate(__ios_flags::_S_badbit); 20097403Sobrien static const iostate eofbit = iostate(__ios_flags::_S_eofbit); 20197403Sobrien static const iostate failbit = iostate(__ios_flags::_S_failbit); 20297403Sobrien static const iostate goodbit = iostate(0); 20397403Sobrien 20497403Sobrien // 27.4.2.1.4 Type openmode 20597403Sobrien typedef _Ios_Openmode openmode; 20697403Sobrien static const openmode app = openmode(__ios_flags::_S_app); 20797403Sobrien static const openmode ate = openmode(__ios_flags::_S_ate); 20897403Sobrien static const openmode binary = openmode(__ios_flags::_S_bin); 20997403Sobrien static const openmode in = openmode(__ios_flags::_S_in); 21097403Sobrien static const openmode out = openmode(__ios_flags::_S_out); 21197403Sobrien static const openmode trunc = openmode(__ios_flags::_S_trunc); 21297403Sobrien 21397403Sobrien // 27.4.2.1.5 Type seekdir 21497403Sobrien typedef _Ios_Seekdir seekdir; 21597403Sobrien static const seekdir beg = seekdir(0); 21697403Sobrien static const seekdir cur = seekdir(SEEK_CUR); 21797403Sobrien static const seekdir end = seekdir(SEEK_END); 21897403Sobrien 21997403Sobrien#ifdef _GLIBCPP_DEPRECATED 22097403Sobrien typedef int io_state; 22197403Sobrien typedef int open_mode; 22297403Sobrien typedef int seek_dir; 223107606Sobrien 224107606Sobrien typedef std::streampos streampos; 225107606Sobrien typedef std::streamoff streamoff; 22697403Sobrien#endif 22797403Sobrien 22897403Sobrien // Callbacks; 22997403Sobrien enum event 23097403Sobrien { 23197403Sobrien erase_event, 23297403Sobrien imbue_event, 23397403Sobrien copyfmt_event 23497403Sobrien }; 23597403Sobrien 23697403Sobrien typedef void (*event_callback) (event, ios_base&, int); 23797403Sobrien 23897403Sobrien void 23997403Sobrien register_callback(event_callback __fn, int __index); 24097403Sobrien 24197403Sobrien protected: 24297403Sobrien // Data Members 24397403Sobrien streamsize _M_precision; 24497403Sobrien streamsize _M_width; 24597403Sobrien fmtflags _M_flags; 24697403Sobrien iostate _M_exception; 24797403Sobrien iostate _M_streambuf_state; 24897403Sobrien 24997403Sobrien // 27.4.2.6 Members for callbacks 25097403Sobrien // 27.4.2.6 ios_base callbacks 25197403Sobrien struct _Callback_list 25297403Sobrien { 25397403Sobrien // Data Members 25497403Sobrien _Callback_list* _M_next; 25597403Sobrien ios_base::event_callback _M_fn; 25697403Sobrien int _M_index; 25797403Sobrien _Atomic_word _M_refcount; // 0 means one reference. 25897403Sobrien 25997403Sobrien _Callback_list(ios_base::event_callback __fn, int __index, 26097403Sobrien _Callback_list* __cb) 26197403Sobrien : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { } 26297403Sobrien 26397403Sobrien void 26497403Sobrien _M_add_reference() { __atomic_add(&_M_refcount, 1); } 26597403Sobrien 26697403Sobrien // 0 => OK to delete. 26797403Sobrien int 26897403Sobrien _M_remove_reference() { return __exchange_and_add(&_M_refcount, -1); } 26997403Sobrien }; 27097403Sobrien 27197403Sobrien _Callback_list* _M_callbacks; 27297403Sobrien 27397403Sobrien void 27497403Sobrien _M_call_callbacks(event __ev) throw(); 27597403Sobrien 27697403Sobrien void 27797403Sobrien _M_dispose_callbacks(void); 27897403Sobrien 27997403Sobrien // 27.4.2.5 Members for iword/pword storage 28097403Sobrien struct _Words 28197403Sobrien { 28297403Sobrien void* _M_pword; 28397403Sobrien long _M_iword; 28497403Sobrien _Words() : _M_pword(0), _M_iword(0) { } 28597403Sobrien }; 28697403Sobrien 28797403Sobrien // Only for failed iword/pword calls. 28897403Sobrien _Words _M_word_zero; 28997403Sobrien 29097403Sobrien // Guaranteed storage. 29197403Sobrien static const int _S_local_word_size = 8; 29297403Sobrien _Words _M_local_word[_S_local_word_size]; 29397403Sobrien 29497403Sobrien // Allocated storage. 29597403Sobrien int _M_word_size; 29697403Sobrien _Words* _M_word; 29797403Sobrien 29897403Sobrien _Words& 29997403Sobrien _M_grow_words(int __index); 30097403Sobrien 30197403Sobrien // Members for locale and locale caching. 30297403Sobrien locale _M_ios_locale; 30397403Sobrien 30497403Sobrien void 30597403Sobrien _M_init(); 30697403Sobrien 30797403Sobrien public: 30897403Sobrien 30997403Sobrien // 27.4.2.1.6 Class ios_base::Init 31097403Sobrien // Used to initialize standard streams. In theory, g++ could use 31197403Sobrien // -finit-priority to order this stuff correctly without going 31297403Sobrien // through these machinations. 31397403Sobrien class Init 31497403Sobrien { 31597403Sobrien friend class ios_base; 31697403Sobrien public: 31797403Sobrien Init(); 31897403Sobrien ~Init(); 31997403Sobrien 32097403Sobrien static void 32197403Sobrien _S_ios_create(bool __sync); 32297403Sobrien 32397403Sobrien static void 32497403Sobrien _S_ios_destroy(); 32597403Sobrien 32697403Sobrien private: 32797403Sobrien static int _S_ios_base_init; 32897403Sobrien static bool _S_synced_with_stdio; 32997403Sobrien }; 33097403Sobrien 33197403Sobrien // Fmtflags state: 33297403Sobrien inline fmtflags 33397403Sobrien flags() const { return _M_flags; } 33497403Sobrien 33597403Sobrien inline fmtflags 33697403Sobrien flags(fmtflags __fmtfl) 33797403Sobrien { 33897403Sobrien fmtflags __old = _M_flags; 33997403Sobrien _M_flags = __fmtfl; 34097403Sobrien return __old; 34197403Sobrien } 34297403Sobrien 34397403Sobrien inline fmtflags 34497403Sobrien setf(fmtflags __fmtfl) 34597403Sobrien { 34697403Sobrien fmtflags __old = _M_flags; 34797403Sobrien _M_flags |= __fmtfl; 34897403Sobrien return __old; 34997403Sobrien } 35097403Sobrien 35197403Sobrien inline fmtflags 35297403Sobrien setf(fmtflags __fmtfl, fmtflags __mask) 35397403Sobrien { 35497403Sobrien fmtflags __old = _M_flags; 35597403Sobrien _M_flags &= ~__mask; 35697403Sobrien _M_flags |= (__fmtfl & __mask); 35797403Sobrien return __old; 35897403Sobrien } 35997403Sobrien 36097403Sobrien inline void 36197403Sobrien unsetf(fmtflags __mask) { _M_flags &= ~__mask; } 36297403Sobrien 36397403Sobrien inline streamsize 36497403Sobrien precision() const { return _M_precision; } 36597403Sobrien 36697403Sobrien inline streamsize 36797403Sobrien precision(streamsize __prec) 36897403Sobrien { 36997403Sobrien streamsize __old = _M_precision; 37097403Sobrien _M_precision = __prec; 37197403Sobrien return __old; 37297403Sobrien } 37397403Sobrien 37497403Sobrien inline streamsize 37597403Sobrien width() const { return _M_width; } 37697403Sobrien 37797403Sobrien inline streamsize 37897403Sobrien width(streamsize __wide) 37997403Sobrien { 38097403Sobrien streamsize __old = _M_width; 38197403Sobrien _M_width = __wide; 38297403Sobrien return __old; 38397403Sobrien } 38497403Sobrien 38597403Sobrien static bool 38697403Sobrien sync_with_stdio(bool __sync = true); 38797403Sobrien 38897403Sobrien // Locales: 38997403Sobrien locale 39097403Sobrien imbue(const locale& __loc); 39197403Sobrien 39297403Sobrien inline locale 39397403Sobrien getloc() const { return _M_ios_locale; } 39497403Sobrien 39597403Sobrien // Storage: 39697403Sobrien static int 39797403Sobrien xalloc() throw(); 39897403Sobrien 39997403Sobrien inline long& 40097403Sobrien iword(int __ix) 40197403Sobrien { 40297403Sobrien _Words& __word = (__ix < _M_word_size) 40397403Sobrien ? _M_word[__ix] : _M_grow_words(__ix); 40497403Sobrien return __word._M_iword; 40597403Sobrien } 40697403Sobrien 40797403Sobrien inline void*& 40897403Sobrien pword(int __ix) 40997403Sobrien { 41097403Sobrien _Words& __word = (__ix < _M_word_size) 41197403Sobrien ? _M_word[__ix] : _M_grow_words(__ix); 41297403Sobrien return __word._M_pword; 41397403Sobrien } 41497403Sobrien 41597403Sobrien // Destructor 41697403Sobrien ~ios_base(); 41797403Sobrien 41897403Sobrien protected: 41997403Sobrien ios_base(); 42097403Sobrien 42197403Sobrien#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS 42297403Sobrien //50. Copy constructor and assignment operator of ios_base 42397403Sobrien private: 42497403Sobrien ios_base(const ios_base&); 42597403Sobrien 42697403Sobrien ios_base& 42797403Sobrien operator=(const ios_base&); 42897403Sobrien#endif 42997403Sobrien }; 43097403Sobrien 43197403Sobrien // 27.4.5.1 fmtflags manipulators: 43297403Sobrien inline ios_base& 43397403Sobrien boolalpha(ios_base& __base) 43497403Sobrien { 43597403Sobrien __base.setf(ios_base::boolalpha); 43697403Sobrien return __base; 43797403Sobrien } 43897403Sobrien 43997403Sobrien inline ios_base& 44097403Sobrien noboolalpha(ios_base& __base) 44197403Sobrien { 44297403Sobrien __base.unsetf(ios_base::boolalpha); 44397403Sobrien return __base; 44497403Sobrien } 44597403Sobrien 44697403Sobrien inline ios_base& 44797403Sobrien showbase(ios_base& __base) 44897403Sobrien { 44997403Sobrien __base.setf(ios_base::showbase); 45097403Sobrien return __base; 45197403Sobrien } 45297403Sobrien 45397403Sobrien inline ios_base& 45497403Sobrien noshowbase(ios_base& __base) 45597403Sobrien { 45697403Sobrien __base.unsetf(ios_base::showbase); 45797403Sobrien return __base; 45897403Sobrien } 45997403Sobrien 46097403Sobrien inline ios_base& 46197403Sobrien showpoint(ios_base& __base) 46297403Sobrien { 46397403Sobrien __base.setf(ios_base::showpoint); 46497403Sobrien return __base; 46597403Sobrien } 46697403Sobrien 46797403Sobrien inline ios_base& 46897403Sobrien noshowpoint(ios_base& __base) 46997403Sobrien { 47097403Sobrien __base.unsetf(ios_base::showpoint); 47197403Sobrien return __base; 47297403Sobrien } 47397403Sobrien 47497403Sobrien inline ios_base& 47597403Sobrien showpos(ios_base& __base) 47697403Sobrien { 47797403Sobrien __base.setf(ios_base::showpos); 47897403Sobrien return __base; 47997403Sobrien } 48097403Sobrien 48197403Sobrien inline ios_base& 48297403Sobrien noshowpos(ios_base& __base) 48397403Sobrien { 48497403Sobrien __base.unsetf(ios_base::showpos); 48597403Sobrien return __base; 48697403Sobrien } 48797403Sobrien 48897403Sobrien inline ios_base& 48997403Sobrien skipws(ios_base& __base) 49097403Sobrien { 49197403Sobrien __base.setf(ios_base::skipws); 49297403Sobrien return __base; 49397403Sobrien } 49497403Sobrien 49597403Sobrien inline ios_base& 49697403Sobrien noskipws(ios_base& __base) 49797403Sobrien { 49897403Sobrien __base.unsetf(ios_base::skipws); 49997403Sobrien return __base; 50097403Sobrien } 50197403Sobrien 50297403Sobrien inline ios_base& 50397403Sobrien uppercase(ios_base& __base) 50497403Sobrien { 50597403Sobrien __base.setf(ios_base::uppercase); 50697403Sobrien return __base; 50797403Sobrien } 50897403Sobrien 50997403Sobrien inline ios_base& 51097403Sobrien nouppercase(ios_base& __base) 51197403Sobrien { 51297403Sobrien __base.unsetf(ios_base::uppercase); 51397403Sobrien return __base; 51497403Sobrien } 51597403Sobrien 51697403Sobrien inline ios_base& 51797403Sobrien unitbuf(ios_base& __base) 51897403Sobrien { 51997403Sobrien __base.setf(ios_base::unitbuf); 52097403Sobrien return __base; 52197403Sobrien } 52297403Sobrien 52397403Sobrien inline ios_base& 52497403Sobrien nounitbuf(ios_base& __base) 52597403Sobrien { 52697403Sobrien __base.unsetf(ios_base::unitbuf); 52797403Sobrien return __base; 52897403Sobrien } 52997403Sobrien 53097403Sobrien // 27.4.5.2 adjustfield anipulators: 53197403Sobrien inline ios_base& 53297403Sobrien internal(ios_base& __base) 53397403Sobrien { 53497403Sobrien __base.setf(ios_base::internal, ios_base::adjustfield); 53597403Sobrien return __base; 53697403Sobrien } 53797403Sobrien 53897403Sobrien inline ios_base& 53997403Sobrien left(ios_base& __base) 54097403Sobrien { 54197403Sobrien __base.setf(ios_base::left, ios_base::adjustfield); 54297403Sobrien return __base; 54397403Sobrien } 54497403Sobrien 54597403Sobrien inline ios_base& 54697403Sobrien right(ios_base& __base) 54797403Sobrien { 54897403Sobrien __base.setf(ios_base::right, ios_base::adjustfield); 54997403Sobrien return __base; 55097403Sobrien } 55197403Sobrien 55297403Sobrien // 27.4.5.3 basefield anipulators: 55397403Sobrien inline ios_base& 55497403Sobrien dec(ios_base& __base) 55597403Sobrien { 55697403Sobrien __base.setf(ios_base::dec, ios_base::basefield); 55797403Sobrien return __base; 55897403Sobrien } 55997403Sobrien 56097403Sobrien inline ios_base& 56197403Sobrien hex(ios_base& __base) 56297403Sobrien { 56397403Sobrien __base.setf(ios_base::hex, ios_base::basefield); 56497403Sobrien return __base; 56597403Sobrien } 56697403Sobrien 56797403Sobrien inline ios_base& 56897403Sobrien oct(ios_base& __base) 56997403Sobrien { 57097403Sobrien __base.setf(ios_base::oct, ios_base::basefield); 57197403Sobrien return __base; 57297403Sobrien } 57397403Sobrien 57497403Sobrien // 27.4.5.4 floatfield anipulators: 57597403Sobrien inline ios_base& 57697403Sobrien fixed(ios_base& __base) 57797403Sobrien { 57897403Sobrien __base.setf(ios_base::fixed, ios_base::floatfield); 57997403Sobrien return __base; 58097403Sobrien } 58197403Sobrien 58297403Sobrien inline ios_base& 58397403Sobrien scientific(ios_base& __base) 58497403Sobrien { 58597403Sobrien __base.setf(ios_base::scientific, ios_base::floatfield); 58697403Sobrien return __base; 58797403Sobrien } 58897403Sobrien 58997403Sobrien} // namespace std 59097403Sobrien 59197403Sobrien#endif /* _CPP_BITS_IOSBASE_H */ 59297403Sobrien 593