146035553Spatrick// -*- C++ -*- 2*4bdff4beSrobert//===----------------------------------------------------------------------===// 346035553Spatrick// 446035553Spatrick// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 546035553Spatrick// See https://llvm.org/LICENSE.txt for license information. 646035553Spatrick// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 746035553Spatrick// 846035553Spatrick//===----------------------------------------------------------------------===// 946035553Spatrick 1046035553Spatrick#ifndef _LIBCPP_IOS 1146035553Spatrick#define _LIBCPP_IOS 1246035553Spatrick 1346035553Spatrick/* 1446035553Spatrick ios synopsis 1546035553Spatrick 1646035553Spatrick#include <iosfwd> 1746035553Spatrick 1846035553Spatricknamespace std 1946035553Spatrick{ 2046035553Spatrick 2146035553Spatricktypedef OFF_T streamoff; 2246035553Spatricktypedef SZ_T streamsize; 2346035553Spatricktemplate <class stateT> class fpos; 2446035553Spatrick 2546035553Spatrickclass ios_base 2646035553Spatrick{ 2746035553Spatrickpublic: 2846035553Spatrick class failure; 2946035553Spatrick 3046035553Spatrick typedef T1 fmtflags; 3146035553Spatrick static constexpr fmtflags boolalpha; 3246035553Spatrick static constexpr fmtflags dec; 3346035553Spatrick static constexpr fmtflags fixed; 3446035553Spatrick static constexpr fmtflags hex; 3546035553Spatrick static constexpr fmtflags internal; 3646035553Spatrick static constexpr fmtflags left; 3746035553Spatrick static constexpr fmtflags oct; 3846035553Spatrick static constexpr fmtflags right; 3946035553Spatrick static constexpr fmtflags scientific; 4046035553Spatrick static constexpr fmtflags showbase; 4146035553Spatrick static constexpr fmtflags showpoint; 4246035553Spatrick static constexpr fmtflags showpos; 4346035553Spatrick static constexpr fmtflags skipws; 4446035553Spatrick static constexpr fmtflags unitbuf; 4546035553Spatrick static constexpr fmtflags uppercase; 4646035553Spatrick static constexpr fmtflags adjustfield; 4746035553Spatrick static constexpr fmtflags basefield; 4846035553Spatrick static constexpr fmtflags floatfield; 4946035553Spatrick 5046035553Spatrick typedef T2 iostate; 5146035553Spatrick static constexpr iostate badbit; 5246035553Spatrick static constexpr iostate eofbit; 5346035553Spatrick static constexpr iostate failbit; 5446035553Spatrick static constexpr iostate goodbit; 5546035553Spatrick 5646035553Spatrick typedef T3 openmode; 5746035553Spatrick static constexpr openmode app; 5846035553Spatrick static constexpr openmode ate; 5946035553Spatrick static constexpr openmode binary; 6046035553Spatrick static constexpr openmode in; 6146035553Spatrick static constexpr openmode out; 6246035553Spatrick static constexpr openmode trunc; 6346035553Spatrick 6446035553Spatrick typedef T4 seekdir; 6546035553Spatrick static constexpr seekdir beg; 6646035553Spatrick static constexpr seekdir cur; 6746035553Spatrick static constexpr seekdir end; 6846035553Spatrick 6946035553Spatrick class Init; 7046035553Spatrick 7146035553Spatrick // 27.5.2.2 fmtflags state: 7246035553Spatrick fmtflags flags() const; 7346035553Spatrick fmtflags flags(fmtflags fmtfl); 7446035553Spatrick fmtflags setf(fmtflags fmtfl); 7546035553Spatrick fmtflags setf(fmtflags fmtfl, fmtflags mask); 7646035553Spatrick void unsetf(fmtflags mask); 7746035553Spatrick 7846035553Spatrick streamsize precision() const; 7946035553Spatrick streamsize precision(streamsize prec); 8046035553Spatrick streamsize width() const; 8146035553Spatrick streamsize width(streamsize wide); 8246035553Spatrick 8346035553Spatrick // 27.5.2.3 locales: 8446035553Spatrick locale imbue(const locale& loc); 8546035553Spatrick locale getloc() const; 8646035553Spatrick 8746035553Spatrick // 27.5.2.5 storage: 8846035553Spatrick static int xalloc(); 8946035553Spatrick long& iword(int index); 9046035553Spatrick void*& pword(int index); 9146035553Spatrick 9246035553Spatrick // destructor 9346035553Spatrick virtual ~ios_base(); 9446035553Spatrick 9546035553Spatrick // 27.5.2.6 callbacks; 9646035553Spatrick enum event { erase_event, imbue_event, copyfmt_event }; 9746035553Spatrick typedef void (*event_callback)(event, ios_base&, int index); 9846035553Spatrick void register_callback(event_callback fn, int index); 9946035553Spatrick 10046035553Spatrick ios_base(const ios_base&) = delete; 10146035553Spatrick ios_base& operator=(const ios_base&) = delete; 10246035553Spatrick 10346035553Spatrick static bool sync_with_stdio(bool sync = true); 10446035553Spatrick 10546035553Spatrickprotected: 10646035553Spatrick ios_base(); 10746035553Spatrick}; 10846035553Spatrick 10946035553Spatricktemplate <class charT, class traits = char_traits<charT> > 11046035553Spatrickclass basic_ios 11146035553Spatrick : public ios_base 11246035553Spatrick{ 11346035553Spatrickpublic: 11446035553Spatrick // types: 11546035553Spatrick typedef charT char_type; 11646035553Spatrick typedef typename traits::int_type int_type; // removed in C++17 11746035553Spatrick typedef typename traits::pos_type pos_type; // removed in C++17 11846035553Spatrick typedef typename traits::off_type off_type; // removed in C++17 11946035553Spatrick typedef traits traits_type; 12046035553Spatrick 12146035553Spatrick operator unspecified-bool-type() const; 12246035553Spatrick bool operator!() const; 12346035553Spatrick iostate rdstate() const; 12446035553Spatrick void clear(iostate state = goodbit); 12546035553Spatrick void setstate(iostate state); 12646035553Spatrick bool good() const; 12746035553Spatrick bool eof() const; 12846035553Spatrick bool fail() const; 12946035553Spatrick bool bad() const; 13046035553Spatrick 13146035553Spatrick iostate exceptions() const; 13246035553Spatrick void exceptions(iostate except); 13346035553Spatrick 13446035553Spatrick // 27.5.4.1 Constructor/destructor: 13546035553Spatrick explicit basic_ios(basic_streambuf<charT,traits>* sb); 13646035553Spatrick virtual ~basic_ios(); 13746035553Spatrick 13846035553Spatrick // 27.5.4.2 Members: 13946035553Spatrick basic_ostream<charT,traits>* tie() const; 14046035553Spatrick basic_ostream<charT,traits>* tie(basic_ostream<charT,traits>* tiestr); 14146035553Spatrick 14246035553Spatrick basic_streambuf<charT,traits>* rdbuf() const; 14346035553Spatrick basic_streambuf<charT,traits>* rdbuf(basic_streambuf<charT,traits>* sb); 14446035553Spatrick 14546035553Spatrick basic_ios& copyfmt(const basic_ios& rhs); 14646035553Spatrick 14746035553Spatrick char_type fill() const; 14846035553Spatrick char_type fill(char_type ch); 14946035553Spatrick 15046035553Spatrick locale imbue(const locale& loc); 15146035553Spatrick 15246035553Spatrick char narrow(char_type c, char dfault) const; 15346035553Spatrick char_type widen(char c) const; 15446035553Spatrick 15546035553Spatrick basic_ios(const basic_ios& ) = delete; 15646035553Spatrick basic_ios& operator=(const basic_ios&) = delete; 15746035553Spatrick 15846035553Spatrickprotected: 15946035553Spatrick basic_ios(); 16046035553Spatrick void init(basic_streambuf<charT,traits>* sb); 16146035553Spatrick void move(basic_ios& rhs); 16246035553Spatrick void swap(basic_ios& rhs) noexcept; 16346035553Spatrick void set_rdbuf(basic_streambuf<charT, traits>* sb); 16446035553Spatrick}; 16546035553Spatrick 16646035553Spatrick// 27.5.5, manipulators: 16746035553Spatrickios_base& boolalpha (ios_base& str); 16846035553Spatrickios_base& noboolalpha(ios_base& str); 16946035553Spatrickios_base& showbase (ios_base& str); 17046035553Spatrickios_base& noshowbase (ios_base& str); 17146035553Spatrickios_base& showpoint (ios_base& str); 17246035553Spatrickios_base& noshowpoint(ios_base& str); 17346035553Spatrickios_base& showpos (ios_base& str); 17446035553Spatrickios_base& noshowpos (ios_base& str); 17546035553Spatrickios_base& skipws (ios_base& str); 17646035553Spatrickios_base& noskipws (ios_base& str); 17746035553Spatrickios_base& uppercase (ios_base& str); 17846035553Spatrickios_base& nouppercase(ios_base& str); 17946035553Spatrickios_base& unitbuf (ios_base& str); 18046035553Spatrickios_base& nounitbuf (ios_base& str); 18146035553Spatrick 18246035553Spatrick// 27.5.5.2 adjustfield: 18346035553Spatrickios_base& internal (ios_base& str); 18446035553Spatrickios_base& left (ios_base& str); 18546035553Spatrickios_base& right (ios_base& str); 18646035553Spatrick 18746035553Spatrick// 27.5.5.3 basefield: 18846035553Spatrickios_base& dec (ios_base& str); 18946035553Spatrickios_base& hex (ios_base& str); 19046035553Spatrickios_base& oct (ios_base& str); 19146035553Spatrick 19246035553Spatrick// 27.5.5.4 floatfield: 19346035553Spatrickios_base& fixed (ios_base& str); 19446035553Spatrickios_base& scientific (ios_base& str); 19546035553Spatrickios_base& hexfloat (ios_base& str); 19646035553Spatrickios_base& defaultfloat(ios_base& str); 19746035553Spatrick 19846035553Spatrick// 27.5.5.5 error reporting: 19946035553Spatrickenum class io_errc 20046035553Spatrick{ 20146035553Spatrick stream = 1 20246035553Spatrick}; 20346035553Spatrick 20446035553Spatrickconcept_map ErrorCodeEnum<io_errc> { }; 20546035553Spatrickerror_code make_error_code(io_errc e) noexcept; 20646035553Spatrickerror_condition make_error_condition(io_errc e) noexcept; 20746035553Spatrickstorage-class-specifier const error_category& iostream_category() noexcept; 20846035553Spatrick 20946035553Spatrick} // std 21046035553Spatrick 21146035553Spatrick*/ 21246035553Spatrick 21346035553Spatrick#include <__config> 214*4bdff4beSrobert 215*4bdff4beSrobert#if defined(_LIBCPP_HAS_NO_LOCALIZATION) 216*4bdff4beSrobert# error "The iostreams library is not supported since libc++ has been configured without support for localization." 217*4bdff4beSrobert#endif 218*4bdff4beSrobert 219*4bdff4beSrobert#include <__assert> // all public C++ headers provide the assertion handler 220*4bdff4beSrobert#include <__ios/fpos.h> 22146035553Spatrick#include <__locale> 222*4bdff4beSrobert#include <__utility/swap.h> 22346035553Spatrick#include <system_error> 224*4bdff4beSrobert#include <version> 225*4bdff4beSrobert 226*4bdff4beSrobert// standard-mandated includes 227*4bdff4beSrobert 228*4bdff4beSrobert// [ios.syn] 229*4bdff4beSrobert#include <iosfwd> 23046035553Spatrick 23146035553Spatrick#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) 23246035553Spatrick#include <atomic> // for __xindex_ 23346035553Spatrick#endif 23446035553Spatrick 23546035553Spatrick#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 23646035553Spatrick# pragma GCC system_header 23746035553Spatrick#endif 23846035553Spatrick 23946035553Spatrick_LIBCPP_BEGIN_NAMESPACE_STD 24046035553Spatrick 24146035553Spatricktypedef ptrdiff_t streamsize; 24246035553Spatrick 24346035553Spatrickclass _LIBCPP_TYPE_VIS ios_base 24446035553Spatrick{ 24546035553Spatrickpublic: 24646035553Spatrick class _LIBCPP_EXCEPTION_ABI failure; 24746035553Spatrick 24846035553Spatrick typedef unsigned int fmtflags; 24946035553Spatrick static const fmtflags boolalpha = 0x0001; 25046035553Spatrick static const fmtflags dec = 0x0002; 25146035553Spatrick static const fmtflags fixed = 0x0004; 25246035553Spatrick static const fmtflags hex = 0x0008; 25346035553Spatrick static const fmtflags internal = 0x0010; 25446035553Spatrick static const fmtflags left = 0x0020; 25546035553Spatrick static const fmtflags oct = 0x0040; 25646035553Spatrick static const fmtflags right = 0x0080; 25746035553Spatrick static const fmtflags scientific = 0x0100; 25846035553Spatrick static const fmtflags showbase = 0x0200; 25946035553Spatrick static const fmtflags showpoint = 0x0400; 26046035553Spatrick static const fmtflags showpos = 0x0800; 26146035553Spatrick static const fmtflags skipws = 0x1000; 26246035553Spatrick static const fmtflags unitbuf = 0x2000; 26346035553Spatrick static const fmtflags uppercase = 0x4000; 26446035553Spatrick static const fmtflags adjustfield = left | right | internal; 26546035553Spatrick static const fmtflags basefield = dec | oct | hex; 26646035553Spatrick static const fmtflags floatfield = scientific | fixed; 26746035553Spatrick 26846035553Spatrick typedef unsigned int iostate; 26946035553Spatrick static const iostate badbit = 0x1; 27046035553Spatrick static const iostate eofbit = 0x2; 27146035553Spatrick static const iostate failbit = 0x4; 27246035553Spatrick static const iostate goodbit = 0x0; 27346035553Spatrick 27446035553Spatrick typedef unsigned int openmode; 27546035553Spatrick static const openmode app = 0x01; 27646035553Spatrick static const openmode ate = 0x02; 27746035553Spatrick static const openmode binary = 0x04; 27846035553Spatrick static const openmode in = 0x08; 27946035553Spatrick static const openmode out = 0x10; 28046035553Spatrick static const openmode trunc = 0x20; 28146035553Spatrick 28246035553Spatrick enum seekdir {beg, cur, end}; 28346035553Spatrick 28446035553Spatrick#if _LIBCPP_STD_VER <= 14 28546035553Spatrick typedef iostate io_state; 28646035553Spatrick typedef openmode open_mode; 28746035553Spatrick typedef seekdir seek_dir; 28846035553Spatrick 28946035553Spatrick typedef _VSTD::streamoff streamoff; 29046035553Spatrick typedef _VSTD::streampos streampos; 29146035553Spatrick#endif 29246035553Spatrick 29346035553Spatrick class _LIBCPP_TYPE_VIS Init; 29446035553Spatrick 29546035553Spatrick // 27.5.2.2 fmtflags state: 29646035553Spatrick _LIBCPP_INLINE_VISIBILITY fmtflags flags() const; 29746035553Spatrick _LIBCPP_INLINE_VISIBILITY fmtflags flags(fmtflags __fmtfl); 29846035553Spatrick _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl); 29946035553Spatrick _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl, fmtflags __mask); 30046035553Spatrick _LIBCPP_INLINE_VISIBILITY void unsetf(fmtflags __mask); 30146035553Spatrick 30246035553Spatrick _LIBCPP_INLINE_VISIBILITY streamsize precision() const; 30346035553Spatrick _LIBCPP_INLINE_VISIBILITY streamsize precision(streamsize __prec); 30446035553Spatrick _LIBCPP_INLINE_VISIBILITY streamsize width() const; 30546035553Spatrick _LIBCPP_INLINE_VISIBILITY streamsize width(streamsize __wide); 30646035553Spatrick 30746035553Spatrick // 27.5.2.3 locales: 30846035553Spatrick locale imbue(const locale& __loc); 30946035553Spatrick locale getloc() const; 31046035553Spatrick 31146035553Spatrick // 27.5.2.5 storage: 31246035553Spatrick static int xalloc(); 31346035553Spatrick long& iword(int __index); 31446035553Spatrick void*& pword(int __index); 31546035553Spatrick 31646035553Spatrick // destructor 31746035553Spatrick virtual ~ios_base(); 31846035553Spatrick 31946035553Spatrick // 27.5.2.6 callbacks; 32046035553Spatrick enum event { erase_event, imbue_event, copyfmt_event }; 32146035553Spatrick typedef void (*event_callback)(event, ios_base&, int __index); 32246035553Spatrick void register_callback(event_callback __fn, int __index); 32346035553Spatrick 324*4bdff4beSrobert ios_base(const ios_base&) = delete; 325*4bdff4beSrobert ios_base& operator=(const ios_base&) = delete; 32646035553Spatrick 32746035553Spatrick static bool sync_with_stdio(bool __sync = true); 32846035553Spatrick 32946035553Spatrick _LIBCPP_INLINE_VISIBILITY iostate rdstate() const; 33046035553Spatrick void clear(iostate __state = goodbit); 33146035553Spatrick _LIBCPP_INLINE_VISIBILITY void setstate(iostate __state); 33246035553Spatrick 33346035553Spatrick _LIBCPP_INLINE_VISIBILITY bool good() const; 33446035553Spatrick _LIBCPP_INLINE_VISIBILITY bool eof() const; 33546035553Spatrick _LIBCPP_INLINE_VISIBILITY bool fail() const; 33646035553Spatrick _LIBCPP_INLINE_VISIBILITY bool bad() const; 33746035553Spatrick 33846035553Spatrick _LIBCPP_INLINE_VISIBILITY iostate exceptions() const; 33946035553Spatrick _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate); 34046035553Spatrick 34146035553Spatrick void __set_badbit_and_consider_rethrow(); 34246035553Spatrick void __set_failbit_and_consider_rethrow(); 34346035553Spatrick 34446035553Spatrick _LIBCPP_INLINE_VISIBILITY 34546035553Spatrick void __setstate_nothrow(iostate __state) 34646035553Spatrick { 34746035553Spatrick if (__rdbuf_) 34846035553Spatrick __rdstate_ |= __state; 34946035553Spatrick else 35046035553Spatrick __rdstate_ |= __state | ios_base::badbit; 35146035553Spatrick } 35246035553Spatrick 35346035553Spatrickprotected: 35446035553Spatrick _LIBCPP_INLINE_VISIBILITY 35546035553Spatrick ios_base() {// purposefully does no initialization 35646035553Spatrick } 35746035553Spatrick 35846035553Spatrick void init(void* __sb); 35946035553Spatrick _LIBCPP_INLINE_VISIBILITY void* rdbuf() const {return __rdbuf_;} 36046035553Spatrick 36146035553Spatrick _LIBCPP_INLINE_VISIBILITY 36246035553Spatrick void rdbuf(void* __sb) 36346035553Spatrick { 36446035553Spatrick __rdbuf_ = __sb; 36546035553Spatrick clear(); 36646035553Spatrick } 36746035553Spatrick 36846035553Spatrick void __call_callbacks(event); 36946035553Spatrick void copyfmt(const ios_base&); 37046035553Spatrick void move(ios_base&); 37146035553Spatrick void swap(ios_base&) _NOEXCEPT; 37246035553Spatrick 37346035553Spatrick _LIBCPP_INLINE_VISIBILITY 37446035553Spatrick void set_rdbuf(void* __sb) 37546035553Spatrick { 37646035553Spatrick __rdbuf_ = __sb; 37746035553Spatrick } 37846035553Spatrick 37946035553Spatrickprivate: 38046035553Spatrick // All data members must be scalars 38146035553Spatrick fmtflags __fmtflags_; 38246035553Spatrick streamsize __precision_; 38346035553Spatrick streamsize __width_; 38446035553Spatrick iostate __rdstate_; 38546035553Spatrick iostate __exceptions_; 38646035553Spatrick void* __rdbuf_; 38746035553Spatrick void* __loc_; 38846035553Spatrick event_callback* __fn_; 38946035553Spatrick int* __index_; 39046035553Spatrick size_t __event_size_; 39146035553Spatrick size_t __event_cap_; 39246035553Spatrick// TODO(EricWF): Enable this for both Clang and GCC. Currently it is only 39346035553Spatrick// enabled with clang. 39446035553Spatrick#if defined(_LIBCPP_HAS_C_ATOMIC_IMP) && !defined(_LIBCPP_HAS_NO_THREADS) 39546035553Spatrick static atomic<int> __xindex_; 39646035553Spatrick#else 39746035553Spatrick static int __xindex_; 39846035553Spatrick#endif 39946035553Spatrick long* __iarray_; 40046035553Spatrick size_t __iarray_size_; 40146035553Spatrick size_t __iarray_cap_; 40246035553Spatrick void** __parray_; 40346035553Spatrick size_t __parray_size_; 40446035553Spatrick size_t __parray_cap_; 40546035553Spatrick}; 40646035553Spatrick 40746035553Spatrick//enum class io_errc 40846035553Spatrick_LIBCPP_DECLARE_STRONG_ENUM(io_errc) 40946035553Spatrick{ 41046035553Spatrick stream = 1 41146035553Spatrick}; 41246035553Spatrick_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(io_errc) 41346035553Spatrick 41446035553Spatricktemplate <> 41546035553Spatrickstruct _LIBCPP_TEMPLATE_VIS is_error_code_enum<io_errc> : public true_type { }; 41646035553Spatrick 417*4bdff4beSrobert#ifdef _LIBCPP_CXX03_LANG 41846035553Spatricktemplate <> 41946035553Spatrickstruct _LIBCPP_TEMPLATE_VIS is_error_code_enum<io_errc::__lx> : public true_type { }; 42046035553Spatrick#endif 42146035553Spatrick 42246035553Spatrick_LIBCPP_FUNC_VIS 42346035553Spatrickconst error_category& iostream_category() _NOEXCEPT; 42446035553Spatrick 42546035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 42646035553Spatrickerror_code 42746035553Spatrickmake_error_code(io_errc __e) _NOEXCEPT 42846035553Spatrick{ 42946035553Spatrick return error_code(static_cast<int>(__e), iostream_category()); 43046035553Spatrick} 43146035553Spatrick 43246035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 43346035553Spatrickerror_condition 43446035553Spatrickmake_error_condition(io_errc __e) _NOEXCEPT 43546035553Spatrick{ 43646035553Spatrick return error_condition(static_cast<int>(__e), iostream_category()); 43746035553Spatrick} 43846035553Spatrick 43946035553Spatrickclass _LIBCPP_EXCEPTION_ABI ios_base::failure 44046035553Spatrick : public system_error 44146035553Spatrick{ 44246035553Spatrickpublic: 44346035553Spatrick explicit failure(const string& __msg, const error_code& __ec = io_errc::stream); 44446035553Spatrick explicit failure(const char* __msg, const error_code& __ec = io_errc::stream); 445037e7968Spatrick failure(const failure&) _NOEXCEPT = default; 446*4bdff4beSrobert ~failure() _NOEXCEPT override; 44746035553Spatrick}; 44846035553Spatrick 44946035553Spatrick_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY 45046035553Spatrickvoid __throw_failure(char const* __msg) { 45146035553Spatrick#ifndef _LIBCPP_NO_EXCEPTIONS 45246035553Spatrick throw ios_base::failure(__msg); 45346035553Spatrick#else 45446035553Spatrick ((void)__msg); 45546035553Spatrick _VSTD::abort(); 45646035553Spatrick#endif 45746035553Spatrick} 45846035553Spatrick 45946035553Spatrickclass _LIBCPP_TYPE_VIS ios_base::Init 46046035553Spatrick{ 46146035553Spatrickpublic: 46246035553Spatrick Init(); 46346035553Spatrick ~Init(); 46446035553Spatrick}; 46546035553Spatrick 46646035553Spatrick// fmtflags 46746035553Spatrick 46846035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 46946035553Spatrickios_base::fmtflags 47046035553Spatrickios_base::flags() const 47146035553Spatrick{ 47246035553Spatrick return __fmtflags_; 47346035553Spatrick} 47446035553Spatrick 47546035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 47646035553Spatrickios_base::fmtflags 47746035553Spatrickios_base::flags(fmtflags __fmtfl) 47846035553Spatrick{ 47946035553Spatrick fmtflags __r = __fmtflags_; 48046035553Spatrick __fmtflags_ = __fmtfl; 48146035553Spatrick return __r; 48246035553Spatrick} 48346035553Spatrick 48446035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 48546035553Spatrickios_base::fmtflags 48646035553Spatrickios_base::setf(fmtflags __fmtfl) 48746035553Spatrick{ 48846035553Spatrick fmtflags __r = __fmtflags_; 48946035553Spatrick __fmtflags_ |= __fmtfl; 49046035553Spatrick return __r; 49146035553Spatrick} 49246035553Spatrick 49346035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 49446035553Spatrickvoid 49546035553Spatrickios_base::unsetf(fmtflags __mask) 49646035553Spatrick{ 49746035553Spatrick __fmtflags_ &= ~__mask; 49846035553Spatrick} 49946035553Spatrick 50046035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 50146035553Spatrickios_base::fmtflags 50246035553Spatrickios_base::setf(fmtflags __fmtfl, fmtflags __mask) 50346035553Spatrick{ 50446035553Spatrick fmtflags __r = __fmtflags_; 50546035553Spatrick unsetf(__mask); 50646035553Spatrick __fmtflags_ |= __fmtfl & __mask; 50746035553Spatrick return __r; 50846035553Spatrick} 50946035553Spatrick 51046035553Spatrick// precision 51146035553Spatrick 51246035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 51346035553Spatrickstreamsize 51446035553Spatrickios_base::precision() const 51546035553Spatrick{ 51646035553Spatrick return __precision_; 51746035553Spatrick} 51846035553Spatrick 51946035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 52046035553Spatrickstreamsize 52146035553Spatrickios_base::precision(streamsize __prec) 52246035553Spatrick{ 52346035553Spatrick streamsize __r = __precision_; 52446035553Spatrick __precision_ = __prec; 52546035553Spatrick return __r; 52646035553Spatrick} 52746035553Spatrick 52846035553Spatrick// width 52946035553Spatrick 53046035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 53146035553Spatrickstreamsize 53246035553Spatrickios_base::width() const 53346035553Spatrick{ 53446035553Spatrick return __width_; 53546035553Spatrick} 53646035553Spatrick 53746035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 53846035553Spatrickstreamsize 53946035553Spatrickios_base::width(streamsize __wide) 54046035553Spatrick{ 54146035553Spatrick streamsize __r = __width_; 54246035553Spatrick __width_ = __wide; 54346035553Spatrick return __r; 54446035553Spatrick} 54546035553Spatrick 54646035553Spatrick// iostate 54746035553Spatrick 54846035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 54946035553Spatrickios_base::iostate 55046035553Spatrickios_base::rdstate() const 55146035553Spatrick{ 55246035553Spatrick return __rdstate_; 55346035553Spatrick} 55446035553Spatrick 55546035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 55646035553Spatrickvoid 55746035553Spatrickios_base::setstate(iostate __state) 55846035553Spatrick{ 55946035553Spatrick clear(__rdstate_ | __state); 56046035553Spatrick} 56146035553Spatrick 56246035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 56346035553Spatrickbool 56446035553Spatrickios_base::good() const 56546035553Spatrick{ 56646035553Spatrick return __rdstate_ == 0; 56746035553Spatrick} 56846035553Spatrick 56946035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 57046035553Spatrickbool 57146035553Spatrickios_base::eof() const 57246035553Spatrick{ 57346035553Spatrick return (__rdstate_ & eofbit) != 0; 57446035553Spatrick} 57546035553Spatrick 57646035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 57746035553Spatrickbool 57846035553Spatrickios_base::fail() const 57946035553Spatrick{ 58046035553Spatrick return (__rdstate_ & (failbit | badbit)) != 0; 58146035553Spatrick} 58246035553Spatrick 58346035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 58446035553Spatrickbool 58546035553Spatrickios_base::bad() const 58646035553Spatrick{ 58746035553Spatrick return (__rdstate_ & badbit) != 0; 58846035553Spatrick} 58946035553Spatrick 59046035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 59146035553Spatrickios_base::iostate 59246035553Spatrickios_base::exceptions() const 59346035553Spatrick{ 59446035553Spatrick return __exceptions_; 59546035553Spatrick} 59646035553Spatrick 59746035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 59846035553Spatrickvoid 59946035553Spatrickios_base::exceptions(iostate __iostate) 60046035553Spatrick{ 60146035553Spatrick __exceptions_ = __iostate; 60246035553Spatrick clear(__rdstate_); 60346035553Spatrick} 60446035553Spatrick 60546035553Spatricktemplate <class _CharT, class _Traits> 60646035553Spatrickclass _LIBCPP_TEMPLATE_VIS basic_ios 60746035553Spatrick : public ios_base 60846035553Spatrick{ 60946035553Spatrickpublic: 61046035553Spatrick // types: 61146035553Spatrick typedef _CharT char_type; 61246035553Spatrick typedef _Traits traits_type; 61346035553Spatrick 61446035553Spatrick typedef typename traits_type::int_type int_type; 61546035553Spatrick typedef typename traits_type::pos_type pos_type; 61646035553Spatrick typedef typename traits_type::off_type off_type; 61746035553Spatrick 61846035553Spatrick static_assert((is_same<_CharT, typename traits_type::char_type>::value), 61946035553Spatrick "traits_type::char_type must be the same type as CharT"); 62046035553Spatrick 62176d0caaeSpatrick#ifdef _LIBCPP_CXX03_LANG 62276d0caaeSpatrick // Preserve the ability to compare with literal 0, 62376d0caaeSpatrick // and implicitly convert to bool, but not implicitly convert to int. 62446035553Spatrick _LIBCPP_INLINE_VISIBILITY 62576d0caaeSpatrick operator void*() const {return fail() ? nullptr : (void*)this;} 62646035553Spatrick#else 62746035553Spatrick _LIBCPP_INLINE_VISIBILITY 62876d0caaeSpatrick explicit operator bool() const {return !fail();} 62946035553Spatrick#endif 63046035553Spatrick 63146035553Spatrick _LIBCPP_INLINE_VISIBILITY bool operator!() const {return fail();} 63246035553Spatrick _LIBCPP_INLINE_VISIBILITY iostate rdstate() const {return ios_base::rdstate();} 63346035553Spatrick _LIBCPP_INLINE_VISIBILITY void clear(iostate __state = goodbit) {ios_base::clear(__state);} 63446035553Spatrick _LIBCPP_INLINE_VISIBILITY void setstate(iostate __state) {ios_base::setstate(__state);} 63546035553Spatrick _LIBCPP_INLINE_VISIBILITY bool good() const {return ios_base::good();} 63646035553Spatrick _LIBCPP_INLINE_VISIBILITY bool eof() const {return ios_base::eof();} 63746035553Spatrick _LIBCPP_INLINE_VISIBILITY bool fail() const {return ios_base::fail();} 63846035553Spatrick _LIBCPP_INLINE_VISIBILITY bool bad() const {return ios_base::bad();} 63946035553Spatrick 64046035553Spatrick _LIBCPP_INLINE_VISIBILITY iostate exceptions() const {return ios_base::exceptions();} 64146035553Spatrick _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate) {ios_base::exceptions(__iostate);} 64246035553Spatrick 64346035553Spatrick // 27.5.4.1 Constructor/destructor: 64446035553Spatrick _LIBCPP_INLINE_VISIBILITY 64546035553Spatrick explicit basic_ios(basic_streambuf<char_type,traits_type>* __sb); 646*4bdff4beSrobert ~basic_ios() override; 64746035553Spatrick 64846035553Spatrick // 27.5.4.2 Members: 64946035553Spatrick _LIBCPP_INLINE_VISIBILITY 65046035553Spatrick basic_ostream<char_type, traits_type>* tie() const; 65146035553Spatrick _LIBCPP_INLINE_VISIBILITY 65246035553Spatrick basic_ostream<char_type, traits_type>* tie(basic_ostream<char_type, traits_type>* __tiestr); 65346035553Spatrick 65446035553Spatrick _LIBCPP_INLINE_VISIBILITY 65546035553Spatrick basic_streambuf<char_type, traits_type>* rdbuf() const; 65646035553Spatrick _LIBCPP_INLINE_VISIBILITY 65746035553Spatrick basic_streambuf<char_type, traits_type>* rdbuf(basic_streambuf<char_type, traits_type>* __sb); 65846035553Spatrick 65946035553Spatrick basic_ios& copyfmt(const basic_ios& __rhs); 66046035553Spatrick 66146035553Spatrick _LIBCPP_INLINE_VISIBILITY 66246035553Spatrick char_type fill() const; 66346035553Spatrick _LIBCPP_INLINE_VISIBILITY 66446035553Spatrick char_type fill(char_type __ch); 66546035553Spatrick 66646035553Spatrick _LIBCPP_INLINE_VISIBILITY 66746035553Spatrick locale imbue(const locale& __loc); 66846035553Spatrick 66946035553Spatrick _LIBCPP_INLINE_VISIBILITY 67046035553Spatrick char narrow(char_type __c, char __dfault) const; 67146035553Spatrick _LIBCPP_INLINE_VISIBILITY 67246035553Spatrick char_type widen(char __c) const; 67346035553Spatrick 67446035553Spatrickprotected: 67546035553Spatrick _LIBCPP_INLINE_VISIBILITY 67646035553Spatrick basic_ios() {// purposefully does no initialization 67746035553Spatrick } 67846035553Spatrick _LIBCPP_INLINE_VISIBILITY 67946035553Spatrick void init(basic_streambuf<char_type, traits_type>* __sb); 68046035553Spatrick 68146035553Spatrick _LIBCPP_INLINE_VISIBILITY 68246035553Spatrick void move(basic_ios& __rhs); 68346035553Spatrick _LIBCPP_INLINE_VISIBILITY 68446035553Spatrick void move(basic_ios&& __rhs) {move(__rhs);} 68546035553Spatrick _LIBCPP_INLINE_VISIBILITY 68646035553Spatrick void swap(basic_ios& __rhs) _NOEXCEPT; 68746035553Spatrick _LIBCPP_INLINE_VISIBILITY 68846035553Spatrick void set_rdbuf(basic_streambuf<char_type, traits_type>* __sb); 68946035553Spatrickprivate: 69046035553Spatrick basic_ostream<char_type, traits_type>* __tie_; 69146035553Spatrick mutable int_type __fill_; 69246035553Spatrick}; 69346035553Spatrick 69446035553Spatricktemplate <class _CharT, class _Traits> 69546035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 69646035553Spatrickbasic_ios<_CharT, _Traits>::basic_ios(basic_streambuf<char_type,traits_type>* __sb) 69746035553Spatrick{ 69846035553Spatrick init(__sb); 69946035553Spatrick} 70046035553Spatrick 70146035553Spatricktemplate <class _CharT, class _Traits> 70246035553Spatrickbasic_ios<_CharT, _Traits>::~basic_ios() 70346035553Spatrick{ 70446035553Spatrick} 70546035553Spatrick 70646035553Spatricktemplate <class _CharT, class _Traits> 70746035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 70846035553Spatrickvoid 70946035553Spatrickbasic_ios<_CharT, _Traits>::init(basic_streambuf<char_type, traits_type>* __sb) 71046035553Spatrick{ 71146035553Spatrick ios_base::init(__sb); 71276d0caaeSpatrick __tie_ = nullptr; 71346035553Spatrick __fill_ = traits_type::eof(); 71446035553Spatrick} 71546035553Spatrick 71646035553Spatricktemplate <class _CharT, class _Traits> 71746035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 71846035553Spatrickbasic_ostream<_CharT, _Traits>* 71946035553Spatrickbasic_ios<_CharT, _Traits>::tie() const 72046035553Spatrick{ 72146035553Spatrick return __tie_; 72246035553Spatrick} 72346035553Spatrick 72446035553Spatricktemplate <class _CharT, class _Traits> 72546035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 72646035553Spatrickbasic_ostream<_CharT, _Traits>* 72746035553Spatrickbasic_ios<_CharT, _Traits>::tie(basic_ostream<char_type, traits_type>* __tiestr) 72846035553Spatrick{ 72946035553Spatrick basic_ostream<char_type, traits_type>* __r = __tie_; 73046035553Spatrick __tie_ = __tiestr; 73146035553Spatrick return __r; 73246035553Spatrick} 73346035553Spatrick 73446035553Spatricktemplate <class _CharT, class _Traits> 73546035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 73646035553Spatrickbasic_streambuf<_CharT, _Traits>* 73746035553Spatrickbasic_ios<_CharT, _Traits>::rdbuf() const 73846035553Spatrick{ 73946035553Spatrick return static_cast<basic_streambuf<char_type, traits_type>*>(ios_base::rdbuf()); 74046035553Spatrick} 74146035553Spatrick 74246035553Spatricktemplate <class _CharT, class _Traits> 74346035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 74446035553Spatrickbasic_streambuf<_CharT, _Traits>* 74546035553Spatrickbasic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<char_type, traits_type>* __sb) 74646035553Spatrick{ 74746035553Spatrick basic_streambuf<char_type, traits_type>* __r = rdbuf(); 74846035553Spatrick ios_base::rdbuf(__sb); 74946035553Spatrick return __r; 75046035553Spatrick} 75146035553Spatrick 75246035553Spatricktemplate <class _CharT, class _Traits> 75346035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 75446035553Spatricklocale 75546035553Spatrickbasic_ios<_CharT, _Traits>::imbue(const locale& __loc) 75646035553Spatrick{ 75746035553Spatrick locale __r = getloc(); 75846035553Spatrick ios_base::imbue(__loc); 75946035553Spatrick if (rdbuf()) 76046035553Spatrick rdbuf()->pubimbue(__loc); 76146035553Spatrick return __r; 76246035553Spatrick} 76346035553Spatrick 76446035553Spatricktemplate <class _CharT, class _Traits> 76546035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 76646035553Spatrickchar 76746035553Spatrickbasic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const 76846035553Spatrick{ 769*4bdff4beSrobert return std::use_facet<ctype<char_type> >(getloc()).narrow(__c, __dfault); 77046035553Spatrick} 77146035553Spatrick 77246035553Spatricktemplate <class _CharT, class _Traits> 77346035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 77446035553Spatrick_CharT 77546035553Spatrickbasic_ios<_CharT, _Traits>::widen(char __c) const 77646035553Spatrick{ 777*4bdff4beSrobert return std::use_facet<ctype<char_type> >(getloc()).widen(__c); 77846035553Spatrick} 77946035553Spatrick 78046035553Spatricktemplate <class _CharT, class _Traits> 78146035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 78246035553Spatrick_CharT 78346035553Spatrickbasic_ios<_CharT, _Traits>::fill() const 78446035553Spatrick{ 78546035553Spatrick if (traits_type::eq_int_type(traits_type::eof(), __fill_)) 78646035553Spatrick __fill_ = widen(' '); 78746035553Spatrick return __fill_; 78846035553Spatrick} 78946035553Spatrick 79046035553Spatricktemplate <class _CharT, class _Traits> 79146035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 79246035553Spatrick_CharT 79346035553Spatrickbasic_ios<_CharT, _Traits>::fill(char_type __ch) 79446035553Spatrick{ 795*4bdff4beSrobert if (traits_type::eq_int_type(traits_type::eof(), __fill_)) 796*4bdff4beSrobert __fill_ = widen(' '); 79746035553Spatrick char_type __r = __fill_; 79846035553Spatrick __fill_ = __ch; 79946035553Spatrick return __r; 80046035553Spatrick} 80146035553Spatrick 80246035553Spatricktemplate <class _CharT, class _Traits> 80346035553Spatrickbasic_ios<_CharT, _Traits>& 80446035553Spatrickbasic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) 80546035553Spatrick{ 80646035553Spatrick if (this != &__rhs) 80746035553Spatrick { 80846035553Spatrick __call_callbacks(erase_event); 80946035553Spatrick ios_base::copyfmt(__rhs); 81046035553Spatrick __tie_ = __rhs.__tie_; 81146035553Spatrick __fill_ = __rhs.__fill_; 81246035553Spatrick __call_callbacks(copyfmt_event); 81346035553Spatrick exceptions(__rhs.exceptions()); 81446035553Spatrick } 81546035553Spatrick return *this; 81646035553Spatrick} 81746035553Spatrick 81846035553Spatricktemplate <class _CharT, class _Traits> 81946035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 82046035553Spatrickvoid 82146035553Spatrickbasic_ios<_CharT, _Traits>::move(basic_ios& __rhs) 82246035553Spatrick{ 82346035553Spatrick ios_base::move(__rhs); 82446035553Spatrick __tie_ = __rhs.__tie_; 82576d0caaeSpatrick __rhs.__tie_ = nullptr; 82646035553Spatrick __fill_ = __rhs.__fill_; 82746035553Spatrick} 82846035553Spatrick 82946035553Spatricktemplate <class _CharT, class _Traits> 83046035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 83146035553Spatrickvoid 83246035553Spatrickbasic_ios<_CharT, _Traits>::swap(basic_ios& __rhs) _NOEXCEPT 83346035553Spatrick{ 83446035553Spatrick ios_base::swap(__rhs); 83546035553Spatrick _VSTD::swap(__tie_, __rhs.__tie_); 83646035553Spatrick _VSTD::swap(__fill_, __rhs.__fill_); 83746035553Spatrick} 83846035553Spatrick 83946035553Spatricktemplate <class _CharT, class _Traits> 84046035553Spatrickinline _LIBCPP_INLINE_VISIBILITY 84146035553Spatrickvoid 84246035553Spatrickbasic_ios<_CharT, _Traits>::set_rdbuf(basic_streambuf<char_type, traits_type>* __sb) 84346035553Spatrick{ 84446035553Spatrick ios_base::set_rdbuf(__sb); 84546035553Spatrick} 84646035553Spatrick 847*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 84846035553Spatrickios_base& 84946035553Spatrickboolalpha(ios_base& __str) 85046035553Spatrick{ 85146035553Spatrick __str.setf(ios_base::boolalpha); 85246035553Spatrick return __str; 85346035553Spatrick} 85446035553Spatrick 855*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 85646035553Spatrickios_base& 85746035553Spatricknoboolalpha(ios_base& __str) 85846035553Spatrick{ 85946035553Spatrick __str.unsetf(ios_base::boolalpha); 86046035553Spatrick return __str; 86146035553Spatrick} 86246035553Spatrick 863*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 86446035553Spatrickios_base& 86546035553Spatrickshowbase(ios_base& __str) 86646035553Spatrick{ 86746035553Spatrick __str.setf(ios_base::showbase); 86846035553Spatrick return __str; 86946035553Spatrick} 87046035553Spatrick 871*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 87246035553Spatrickios_base& 87346035553Spatricknoshowbase(ios_base& __str) 87446035553Spatrick{ 87546035553Spatrick __str.unsetf(ios_base::showbase); 87646035553Spatrick return __str; 87746035553Spatrick} 87846035553Spatrick 879*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 88046035553Spatrickios_base& 88146035553Spatrickshowpoint(ios_base& __str) 88246035553Spatrick{ 88346035553Spatrick __str.setf(ios_base::showpoint); 88446035553Spatrick return __str; 88546035553Spatrick} 88646035553Spatrick 887*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 88846035553Spatrickios_base& 88946035553Spatricknoshowpoint(ios_base& __str) 89046035553Spatrick{ 89146035553Spatrick __str.unsetf(ios_base::showpoint); 89246035553Spatrick return __str; 89346035553Spatrick} 89446035553Spatrick 895*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 89646035553Spatrickios_base& 89746035553Spatrickshowpos(ios_base& __str) 89846035553Spatrick{ 89946035553Spatrick __str.setf(ios_base::showpos); 90046035553Spatrick return __str; 90146035553Spatrick} 90246035553Spatrick 903*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 90446035553Spatrickios_base& 90546035553Spatricknoshowpos(ios_base& __str) 90646035553Spatrick{ 90746035553Spatrick __str.unsetf(ios_base::showpos); 90846035553Spatrick return __str; 90946035553Spatrick} 91046035553Spatrick 911*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 91246035553Spatrickios_base& 91346035553Spatrickskipws(ios_base& __str) 91446035553Spatrick{ 91546035553Spatrick __str.setf(ios_base::skipws); 91646035553Spatrick return __str; 91746035553Spatrick} 91846035553Spatrick 919*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 92046035553Spatrickios_base& 92146035553Spatricknoskipws(ios_base& __str) 92246035553Spatrick{ 92346035553Spatrick __str.unsetf(ios_base::skipws); 92446035553Spatrick return __str; 92546035553Spatrick} 92646035553Spatrick 927*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 92846035553Spatrickios_base& 92946035553Spatrickuppercase(ios_base& __str) 93046035553Spatrick{ 93146035553Spatrick __str.setf(ios_base::uppercase); 93246035553Spatrick return __str; 93346035553Spatrick} 93446035553Spatrick 935*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 93646035553Spatrickios_base& 93746035553Spatricknouppercase(ios_base& __str) 93846035553Spatrick{ 93946035553Spatrick __str.unsetf(ios_base::uppercase); 94046035553Spatrick return __str; 94146035553Spatrick} 94246035553Spatrick 943*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 94446035553Spatrickios_base& 94546035553Spatrickunitbuf(ios_base& __str) 94646035553Spatrick{ 94746035553Spatrick __str.setf(ios_base::unitbuf); 94846035553Spatrick return __str; 94946035553Spatrick} 95046035553Spatrick 951*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 95246035553Spatrickios_base& 95346035553Spatricknounitbuf(ios_base& __str) 95446035553Spatrick{ 95546035553Spatrick __str.unsetf(ios_base::unitbuf); 95646035553Spatrick return __str; 95746035553Spatrick} 95846035553Spatrick 959*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 96046035553Spatrickios_base& 96146035553Spatrickinternal(ios_base& __str) 96246035553Spatrick{ 96346035553Spatrick __str.setf(ios_base::internal, ios_base::adjustfield); 96446035553Spatrick return __str; 96546035553Spatrick} 96646035553Spatrick 967*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 96846035553Spatrickios_base& 96946035553Spatrickleft(ios_base& __str) 97046035553Spatrick{ 97146035553Spatrick __str.setf(ios_base::left, ios_base::adjustfield); 97246035553Spatrick return __str; 97346035553Spatrick} 97446035553Spatrick 975*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 97646035553Spatrickios_base& 97746035553Spatrickright(ios_base& __str) 97846035553Spatrick{ 97946035553Spatrick __str.setf(ios_base::right, ios_base::adjustfield); 98046035553Spatrick return __str; 98146035553Spatrick} 98246035553Spatrick 983*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 98446035553Spatrickios_base& 98546035553Spatrickdec(ios_base& __str) 98646035553Spatrick{ 98746035553Spatrick __str.setf(ios_base::dec, ios_base::basefield); 98846035553Spatrick return __str; 98946035553Spatrick} 99046035553Spatrick 991*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 99246035553Spatrickios_base& 99346035553Spatrickhex(ios_base& __str) 99446035553Spatrick{ 99546035553Spatrick __str.setf(ios_base::hex, ios_base::basefield); 99646035553Spatrick return __str; 99746035553Spatrick} 99846035553Spatrick 999*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 100046035553Spatrickios_base& 100146035553Spatrickoct(ios_base& __str) 100246035553Spatrick{ 100346035553Spatrick __str.setf(ios_base::oct, ios_base::basefield); 100446035553Spatrick return __str; 100546035553Spatrick} 100646035553Spatrick 1007*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 100846035553Spatrickios_base& 100946035553Spatrickfixed(ios_base& __str) 101046035553Spatrick{ 101146035553Spatrick __str.setf(ios_base::fixed, ios_base::floatfield); 101246035553Spatrick return __str; 101346035553Spatrick} 101446035553Spatrick 1015*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 101646035553Spatrickios_base& 101746035553Spatrickscientific(ios_base& __str) 101846035553Spatrick{ 101946035553Spatrick __str.setf(ios_base::scientific, ios_base::floatfield); 102046035553Spatrick return __str; 102146035553Spatrick} 102246035553Spatrick 1023*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 102446035553Spatrickios_base& 102546035553Spatrickhexfloat(ios_base& __str) 102646035553Spatrick{ 102746035553Spatrick __str.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); 102846035553Spatrick return __str; 102946035553Spatrick} 103046035553Spatrick 1031*4bdff4beSrobert_LIBCPP_HIDE_FROM_ABI inline 103246035553Spatrickios_base& 103346035553Spatrickdefaultfloat(ios_base& __str) 103446035553Spatrick{ 103546035553Spatrick __str.unsetf(ios_base::floatfield); 103646035553Spatrick return __str; 103746035553Spatrick} 103846035553Spatrick 103946035553Spatrick_LIBCPP_END_NAMESPACE_STD 104046035553Spatrick 1041*4bdff4beSrobert#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20 1042*4bdff4beSrobert# include <concepts> 1043*4bdff4beSrobert# include <cstddef> 1044*4bdff4beSrobert# include <cstdlib> 1045*4bdff4beSrobert# include <cstring> 1046*4bdff4beSrobert# include <initializer_list> 1047*4bdff4beSrobert# include <limits> 1048*4bdff4beSrobert# include <new> 1049*4bdff4beSrobert# include <stdexcept> 1050*4bdff4beSrobert# include <type_traits> 1051*4bdff4beSrobert# include <typeinfo> 1052*4bdff4beSrobert#endif 1053*4bdff4beSrobert 105446035553Spatrick#endif // _LIBCPP_IOS 1055