1*4d6fc14bSjoerg// -*- C++ -*- 2*4d6fc14bSjoerg//===---------------------------- ios -------------------------------------===// 3*4d6fc14bSjoerg// 4*4d6fc14bSjoerg// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*4d6fc14bSjoerg// See https://llvm.org/LICENSE.txt for license information. 6*4d6fc14bSjoerg// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*4d6fc14bSjoerg// 8*4d6fc14bSjoerg//===----------------------------------------------------------------------===// 9*4d6fc14bSjoerg 10*4d6fc14bSjoerg#ifndef _LIBCPP_IOS 11*4d6fc14bSjoerg#define _LIBCPP_IOS 12*4d6fc14bSjoerg 13*4d6fc14bSjoerg/* 14*4d6fc14bSjoerg ios synopsis 15*4d6fc14bSjoerg 16*4d6fc14bSjoerg#include <iosfwd> 17*4d6fc14bSjoerg 18*4d6fc14bSjoergnamespace std 19*4d6fc14bSjoerg{ 20*4d6fc14bSjoerg 21*4d6fc14bSjoergtypedef OFF_T streamoff; 22*4d6fc14bSjoergtypedef SZ_T streamsize; 23*4d6fc14bSjoergtemplate <class stateT> class fpos; 24*4d6fc14bSjoerg 25*4d6fc14bSjoergclass ios_base 26*4d6fc14bSjoerg{ 27*4d6fc14bSjoergpublic: 28*4d6fc14bSjoerg class failure; 29*4d6fc14bSjoerg 30*4d6fc14bSjoerg typedef T1 fmtflags; 31*4d6fc14bSjoerg static constexpr fmtflags boolalpha; 32*4d6fc14bSjoerg static constexpr fmtflags dec; 33*4d6fc14bSjoerg static constexpr fmtflags fixed; 34*4d6fc14bSjoerg static constexpr fmtflags hex; 35*4d6fc14bSjoerg static constexpr fmtflags internal; 36*4d6fc14bSjoerg static constexpr fmtflags left; 37*4d6fc14bSjoerg static constexpr fmtflags oct; 38*4d6fc14bSjoerg static constexpr fmtflags right; 39*4d6fc14bSjoerg static constexpr fmtflags scientific; 40*4d6fc14bSjoerg static constexpr fmtflags showbase; 41*4d6fc14bSjoerg static constexpr fmtflags showpoint; 42*4d6fc14bSjoerg static constexpr fmtflags showpos; 43*4d6fc14bSjoerg static constexpr fmtflags skipws; 44*4d6fc14bSjoerg static constexpr fmtflags unitbuf; 45*4d6fc14bSjoerg static constexpr fmtflags uppercase; 46*4d6fc14bSjoerg static constexpr fmtflags adjustfield; 47*4d6fc14bSjoerg static constexpr fmtflags basefield; 48*4d6fc14bSjoerg static constexpr fmtflags floatfield; 49*4d6fc14bSjoerg 50*4d6fc14bSjoerg typedef T2 iostate; 51*4d6fc14bSjoerg static constexpr iostate badbit; 52*4d6fc14bSjoerg static constexpr iostate eofbit; 53*4d6fc14bSjoerg static constexpr iostate failbit; 54*4d6fc14bSjoerg static constexpr iostate goodbit; 55*4d6fc14bSjoerg 56*4d6fc14bSjoerg typedef T3 openmode; 57*4d6fc14bSjoerg static constexpr openmode app; 58*4d6fc14bSjoerg static constexpr openmode ate; 59*4d6fc14bSjoerg static constexpr openmode binary; 60*4d6fc14bSjoerg static constexpr openmode in; 61*4d6fc14bSjoerg static constexpr openmode out; 62*4d6fc14bSjoerg static constexpr openmode trunc; 63*4d6fc14bSjoerg 64*4d6fc14bSjoerg typedef T4 seekdir; 65*4d6fc14bSjoerg static constexpr seekdir beg; 66*4d6fc14bSjoerg static constexpr seekdir cur; 67*4d6fc14bSjoerg static constexpr seekdir end; 68*4d6fc14bSjoerg 69*4d6fc14bSjoerg class Init; 70*4d6fc14bSjoerg 71*4d6fc14bSjoerg // 27.5.2.2 fmtflags state: 72*4d6fc14bSjoerg fmtflags flags() const; 73*4d6fc14bSjoerg fmtflags flags(fmtflags fmtfl); 74*4d6fc14bSjoerg fmtflags setf(fmtflags fmtfl); 75*4d6fc14bSjoerg fmtflags setf(fmtflags fmtfl, fmtflags mask); 76*4d6fc14bSjoerg void unsetf(fmtflags mask); 77*4d6fc14bSjoerg 78*4d6fc14bSjoerg streamsize precision() const; 79*4d6fc14bSjoerg streamsize precision(streamsize prec); 80*4d6fc14bSjoerg streamsize width() const; 81*4d6fc14bSjoerg streamsize width(streamsize wide); 82*4d6fc14bSjoerg 83*4d6fc14bSjoerg // 27.5.2.3 locales: 84*4d6fc14bSjoerg locale imbue(const locale& loc); 85*4d6fc14bSjoerg locale getloc() const; 86*4d6fc14bSjoerg 87*4d6fc14bSjoerg // 27.5.2.5 storage: 88*4d6fc14bSjoerg static int xalloc(); 89*4d6fc14bSjoerg long& iword(int index); 90*4d6fc14bSjoerg void*& pword(int index); 91*4d6fc14bSjoerg 92*4d6fc14bSjoerg // destructor 93*4d6fc14bSjoerg virtual ~ios_base(); 94*4d6fc14bSjoerg 95*4d6fc14bSjoerg // 27.5.2.6 callbacks; 96*4d6fc14bSjoerg enum event { erase_event, imbue_event, copyfmt_event }; 97*4d6fc14bSjoerg typedef void (*event_callback)(event, ios_base&, int index); 98*4d6fc14bSjoerg void register_callback(event_callback fn, int index); 99*4d6fc14bSjoerg 100*4d6fc14bSjoerg ios_base(const ios_base&) = delete; 101*4d6fc14bSjoerg ios_base& operator=(const ios_base&) = delete; 102*4d6fc14bSjoerg 103*4d6fc14bSjoerg static bool sync_with_stdio(bool sync = true); 104*4d6fc14bSjoerg 105*4d6fc14bSjoergprotected: 106*4d6fc14bSjoerg ios_base(); 107*4d6fc14bSjoerg}; 108*4d6fc14bSjoerg 109*4d6fc14bSjoergtemplate <class charT, class traits = char_traits<charT> > 110*4d6fc14bSjoergclass basic_ios 111*4d6fc14bSjoerg : public ios_base 112*4d6fc14bSjoerg{ 113*4d6fc14bSjoergpublic: 114*4d6fc14bSjoerg // types: 115*4d6fc14bSjoerg typedef charT char_type; 116*4d6fc14bSjoerg typedef typename traits::int_type int_type; // removed in C++17 117*4d6fc14bSjoerg typedef typename traits::pos_type pos_type; // removed in C++17 118*4d6fc14bSjoerg typedef typename traits::off_type off_type; // removed in C++17 119*4d6fc14bSjoerg typedef traits traits_type; 120*4d6fc14bSjoerg 121*4d6fc14bSjoerg operator unspecified-bool-type() const; 122*4d6fc14bSjoerg bool operator!() const; 123*4d6fc14bSjoerg iostate rdstate() const; 124*4d6fc14bSjoerg void clear(iostate state = goodbit); 125*4d6fc14bSjoerg void setstate(iostate state); 126*4d6fc14bSjoerg bool good() const; 127*4d6fc14bSjoerg bool eof() const; 128*4d6fc14bSjoerg bool fail() const; 129*4d6fc14bSjoerg bool bad() const; 130*4d6fc14bSjoerg 131*4d6fc14bSjoerg iostate exceptions() const; 132*4d6fc14bSjoerg void exceptions(iostate except); 133*4d6fc14bSjoerg 134*4d6fc14bSjoerg // 27.5.4.1 Constructor/destructor: 135*4d6fc14bSjoerg explicit basic_ios(basic_streambuf<charT,traits>* sb); 136*4d6fc14bSjoerg virtual ~basic_ios(); 137*4d6fc14bSjoerg 138*4d6fc14bSjoerg // 27.5.4.2 Members: 139*4d6fc14bSjoerg basic_ostream<charT,traits>* tie() const; 140*4d6fc14bSjoerg basic_ostream<charT,traits>* tie(basic_ostream<charT,traits>* tiestr); 141*4d6fc14bSjoerg 142*4d6fc14bSjoerg basic_streambuf<charT,traits>* rdbuf() const; 143*4d6fc14bSjoerg basic_streambuf<charT,traits>* rdbuf(basic_streambuf<charT,traits>* sb); 144*4d6fc14bSjoerg 145*4d6fc14bSjoerg basic_ios& copyfmt(const basic_ios& rhs); 146*4d6fc14bSjoerg 147*4d6fc14bSjoerg char_type fill() const; 148*4d6fc14bSjoerg char_type fill(char_type ch); 149*4d6fc14bSjoerg 150*4d6fc14bSjoerg locale imbue(const locale& loc); 151*4d6fc14bSjoerg 152*4d6fc14bSjoerg char narrow(char_type c, char dfault) const; 153*4d6fc14bSjoerg char_type widen(char c) const; 154*4d6fc14bSjoerg 155*4d6fc14bSjoerg basic_ios(const basic_ios& ) = delete; 156*4d6fc14bSjoerg basic_ios& operator=(const basic_ios&) = delete; 157*4d6fc14bSjoerg 158*4d6fc14bSjoergprotected: 159*4d6fc14bSjoerg basic_ios(); 160*4d6fc14bSjoerg void init(basic_streambuf<charT,traits>* sb); 161*4d6fc14bSjoerg void move(basic_ios& rhs); 162*4d6fc14bSjoerg void swap(basic_ios& rhs) noexcept; 163*4d6fc14bSjoerg void set_rdbuf(basic_streambuf<charT, traits>* sb); 164*4d6fc14bSjoerg}; 165*4d6fc14bSjoerg 166*4d6fc14bSjoerg// 27.5.5, manipulators: 167*4d6fc14bSjoergios_base& boolalpha (ios_base& str); 168*4d6fc14bSjoergios_base& noboolalpha(ios_base& str); 169*4d6fc14bSjoergios_base& showbase (ios_base& str); 170*4d6fc14bSjoergios_base& noshowbase (ios_base& str); 171*4d6fc14bSjoergios_base& showpoint (ios_base& str); 172*4d6fc14bSjoergios_base& noshowpoint(ios_base& str); 173*4d6fc14bSjoergios_base& showpos (ios_base& str); 174*4d6fc14bSjoergios_base& noshowpos (ios_base& str); 175*4d6fc14bSjoergios_base& skipws (ios_base& str); 176*4d6fc14bSjoergios_base& noskipws (ios_base& str); 177*4d6fc14bSjoergios_base& uppercase (ios_base& str); 178*4d6fc14bSjoergios_base& nouppercase(ios_base& str); 179*4d6fc14bSjoergios_base& unitbuf (ios_base& str); 180*4d6fc14bSjoergios_base& nounitbuf (ios_base& str); 181*4d6fc14bSjoerg 182*4d6fc14bSjoerg// 27.5.5.2 adjustfield: 183*4d6fc14bSjoergios_base& internal (ios_base& str); 184*4d6fc14bSjoergios_base& left (ios_base& str); 185*4d6fc14bSjoergios_base& right (ios_base& str); 186*4d6fc14bSjoerg 187*4d6fc14bSjoerg// 27.5.5.3 basefield: 188*4d6fc14bSjoergios_base& dec (ios_base& str); 189*4d6fc14bSjoergios_base& hex (ios_base& str); 190*4d6fc14bSjoergios_base& oct (ios_base& str); 191*4d6fc14bSjoerg 192*4d6fc14bSjoerg// 27.5.5.4 floatfield: 193*4d6fc14bSjoergios_base& fixed (ios_base& str); 194*4d6fc14bSjoergios_base& scientific (ios_base& str); 195*4d6fc14bSjoergios_base& hexfloat (ios_base& str); 196*4d6fc14bSjoergios_base& defaultfloat(ios_base& str); 197*4d6fc14bSjoerg 198*4d6fc14bSjoerg// 27.5.5.5 error reporting: 199*4d6fc14bSjoergenum class io_errc 200*4d6fc14bSjoerg{ 201*4d6fc14bSjoerg stream = 1 202*4d6fc14bSjoerg}; 203*4d6fc14bSjoerg 204*4d6fc14bSjoergconcept_map ErrorCodeEnum<io_errc> { }; 205*4d6fc14bSjoergerror_code make_error_code(io_errc e) noexcept; 206*4d6fc14bSjoergerror_condition make_error_condition(io_errc e) noexcept; 207*4d6fc14bSjoergstorage-class-specifier const error_category& iostream_category() noexcept; 208*4d6fc14bSjoerg 209*4d6fc14bSjoerg} // std 210*4d6fc14bSjoerg 211*4d6fc14bSjoerg*/ 212*4d6fc14bSjoerg 213*4d6fc14bSjoerg#include <__config> 214*4d6fc14bSjoerg#include <iosfwd> 215*4d6fc14bSjoerg#include <__locale> 216*4d6fc14bSjoerg#include <system_error> 217*4d6fc14bSjoerg 218*4d6fc14bSjoerg#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) 219*4d6fc14bSjoerg#include <atomic> // for __xindex_ 220*4d6fc14bSjoerg#endif 221*4d6fc14bSjoerg 222*4d6fc14bSjoerg#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 223*4d6fc14bSjoerg#pragma GCC system_header 224*4d6fc14bSjoerg#endif 225*4d6fc14bSjoerg 226*4d6fc14bSjoerg_LIBCPP_BEGIN_NAMESPACE_STD 227*4d6fc14bSjoerg 228*4d6fc14bSjoergtypedef ptrdiff_t streamsize; 229*4d6fc14bSjoerg 230*4d6fc14bSjoergclass _LIBCPP_TYPE_VIS ios_base 231*4d6fc14bSjoerg{ 232*4d6fc14bSjoergpublic: 233*4d6fc14bSjoerg class _LIBCPP_EXCEPTION_ABI failure; 234*4d6fc14bSjoerg 235*4d6fc14bSjoerg typedef unsigned int fmtflags; 236*4d6fc14bSjoerg static const fmtflags boolalpha = 0x0001; 237*4d6fc14bSjoerg static const fmtflags dec = 0x0002; 238*4d6fc14bSjoerg static const fmtflags fixed = 0x0004; 239*4d6fc14bSjoerg static const fmtflags hex = 0x0008; 240*4d6fc14bSjoerg static const fmtflags internal = 0x0010; 241*4d6fc14bSjoerg static const fmtflags left = 0x0020; 242*4d6fc14bSjoerg static const fmtflags oct = 0x0040; 243*4d6fc14bSjoerg static const fmtflags right = 0x0080; 244*4d6fc14bSjoerg static const fmtflags scientific = 0x0100; 245*4d6fc14bSjoerg static const fmtflags showbase = 0x0200; 246*4d6fc14bSjoerg static const fmtflags showpoint = 0x0400; 247*4d6fc14bSjoerg static const fmtflags showpos = 0x0800; 248*4d6fc14bSjoerg static const fmtflags skipws = 0x1000; 249*4d6fc14bSjoerg static const fmtflags unitbuf = 0x2000; 250*4d6fc14bSjoerg static const fmtflags uppercase = 0x4000; 251*4d6fc14bSjoerg static const fmtflags adjustfield = left | right | internal; 252*4d6fc14bSjoerg static const fmtflags basefield = dec | oct | hex; 253*4d6fc14bSjoerg static const fmtflags floatfield = scientific | fixed; 254*4d6fc14bSjoerg 255*4d6fc14bSjoerg typedef unsigned int iostate; 256*4d6fc14bSjoerg static const iostate badbit = 0x1; 257*4d6fc14bSjoerg static const iostate eofbit = 0x2; 258*4d6fc14bSjoerg static const iostate failbit = 0x4; 259*4d6fc14bSjoerg static const iostate goodbit = 0x0; 260*4d6fc14bSjoerg 261*4d6fc14bSjoerg typedef unsigned int openmode; 262*4d6fc14bSjoerg static const openmode app = 0x01; 263*4d6fc14bSjoerg static const openmode ate = 0x02; 264*4d6fc14bSjoerg static const openmode binary = 0x04; 265*4d6fc14bSjoerg static const openmode in = 0x08; 266*4d6fc14bSjoerg static const openmode out = 0x10; 267*4d6fc14bSjoerg static const openmode trunc = 0x20; 268*4d6fc14bSjoerg 269*4d6fc14bSjoerg enum seekdir {beg, cur, end}; 270*4d6fc14bSjoerg 271*4d6fc14bSjoerg#if _LIBCPP_STD_VER <= 14 272*4d6fc14bSjoerg typedef iostate io_state; 273*4d6fc14bSjoerg typedef openmode open_mode; 274*4d6fc14bSjoerg typedef seekdir seek_dir; 275*4d6fc14bSjoerg 276*4d6fc14bSjoerg typedef _VSTD::streamoff streamoff; 277*4d6fc14bSjoerg typedef _VSTD::streampos streampos; 278*4d6fc14bSjoerg#endif 279*4d6fc14bSjoerg 280*4d6fc14bSjoerg class _LIBCPP_TYPE_VIS Init; 281*4d6fc14bSjoerg 282*4d6fc14bSjoerg // 27.5.2.2 fmtflags state: 283*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY fmtflags flags() const; 284*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY fmtflags flags(fmtflags __fmtfl); 285*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl); 286*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY fmtflags setf(fmtflags __fmtfl, fmtflags __mask); 287*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY void unsetf(fmtflags __mask); 288*4d6fc14bSjoerg 289*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY streamsize precision() const; 290*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY streamsize precision(streamsize __prec); 291*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY streamsize width() const; 292*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY streamsize width(streamsize __wide); 293*4d6fc14bSjoerg 294*4d6fc14bSjoerg // 27.5.2.3 locales: 295*4d6fc14bSjoerg locale imbue(const locale& __loc); 296*4d6fc14bSjoerg locale getloc() const; 297*4d6fc14bSjoerg 298*4d6fc14bSjoerg // 27.5.2.5 storage: 299*4d6fc14bSjoerg static int xalloc(); 300*4d6fc14bSjoerg long& iword(int __index); 301*4d6fc14bSjoerg void*& pword(int __index); 302*4d6fc14bSjoerg 303*4d6fc14bSjoerg // destructor 304*4d6fc14bSjoerg virtual ~ios_base(); 305*4d6fc14bSjoerg 306*4d6fc14bSjoerg // 27.5.2.6 callbacks; 307*4d6fc14bSjoerg enum event { erase_event, imbue_event, copyfmt_event }; 308*4d6fc14bSjoerg typedef void (*event_callback)(event, ios_base&, int __index); 309*4d6fc14bSjoerg void register_callback(event_callback __fn, int __index); 310*4d6fc14bSjoerg 311*4d6fc14bSjoergprivate: 312*4d6fc14bSjoerg ios_base(const ios_base&); // = delete; 313*4d6fc14bSjoerg ios_base& operator=(const ios_base&); // = delete; 314*4d6fc14bSjoerg 315*4d6fc14bSjoergpublic: 316*4d6fc14bSjoerg static bool sync_with_stdio(bool __sync = true); 317*4d6fc14bSjoerg 318*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY iostate rdstate() const; 319*4d6fc14bSjoerg void clear(iostate __state = goodbit); 320*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY void setstate(iostate __state); 321*4d6fc14bSjoerg 322*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool good() const; 323*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool eof() const; 324*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool fail() const; 325*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool bad() const; 326*4d6fc14bSjoerg 327*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY iostate exceptions() const; 328*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate); 329*4d6fc14bSjoerg 330*4d6fc14bSjoerg void __set_badbit_and_consider_rethrow(); 331*4d6fc14bSjoerg void __set_failbit_and_consider_rethrow(); 332*4d6fc14bSjoerg 333*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 334*4d6fc14bSjoerg void __setstate_nothrow(iostate __state) 335*4d6fc14bSjoerg { 336*4d6fc14bSjoerg if (__rdbuf_) 337*4d6fc14bSjoerg __rdstate_ |= __state; 338*4d6fc14bSjoerg else 339*4d6fc14bSjoerg __rdstate_ |= __state | ios_base::badbit; 340*4d6fc14bSjoerg } 341*4d6fc14bSjoerg 342*4d6fc14bSjoergprotected: 343*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 344*4d6fc14bSjoerg ios_base() {// purposefully does no initialization 345*4d6fc14bSjoerg } 346*4d6fc14bSjoerg 347*4d6fc14bSjoerg void init(void* __sb); 348*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY void* rdbuf() const {return __rdbuf_;} 349*4d6fc14bSjoerg 350*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 351*4d6fc14bSjoerg void rdbuf(void* __sb) 352*4d6fc14bSjoerg { 353*4d6fc14bSjoerg __rdbuf_ = __sb; 354*4d6fc14bSjoerg clear(); 355*4d6fc14bSjoerg } 356*4d6fc14bSjoerg 357*4d6fc14bSjoerg void __call_callbacks(event); 358*4d6fc14bSjoerg void copyfmt(const ios_base&); 359*4d6fc14bSjoerg void move(ios_base&); 360*4d6fc14bSjoerg void swap(ios_base&) _NOEXCEPT; 361*4d6fc14bSjoerg 362*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 363*4d6fc14bSjoerg void set_rdbuf(void* __sb) 364*4d6fc14bSjoerg { 365*4d6fc14bSjoerg __rdbuf_ = __sb; 366*4d6fc14bSjoerg } 367*4d6fc14bSjoerg 368*4d6fc14bSjoergprivate: 369*4d6fc14bSjoerg // All data members must be scalars 370*4d6fc14bSjoerg fmtflags __fmtflags_; 371*4d6fc14bSjoerg streamsize __precision_; 372*4d6fc14bSjoerg streamsize __width_; 373*4d6fc14bSjoerg iostate __rdstate_; 374*4d6fc14bSjoerg iostate __exceptions_; 375*4d6fc14bSjoerg void* __rdbuf_; 376*4d6fc14bSjoerg void* __loc_; 377*4d6fc14bSjoerg event_callback* __fn_; 378*4d6fc14bSjoerg int* __index_; 379*4d6fc14bSjoerg size_t __event_size_; 380*4d6fc14bSjoerg size_t __event_cap_; 381*4d6fc14bSjoerg// TODO(EricWF): Enable this for both Clang and GCC. Currently it is only 382*4d6fc14bSjoerg// enabled with clang. 383*4d6fc14bSjoerg#if defined(_LIBCPP_HAS_C_ATOMIC_IMP) && !defined(_LIBCPP_HAS_NO_THREADS) 384*4d6fc14bSjoerg static atomic<int> __xindex_; 385*4d6fc14bSjoerg#else 386*4d6fc14bSjoerg static int __xindex_; 387*4d6fc14bSjoerg#endif 388*4d6fc14bSjoerg long* __iarray_; 389*4d6fc14bSjoerg size_t __iarray_size_; 390*4d6fc14bSjoerg size_t __iarray_cap_; 391*4d6fc14bSjoerg void** __parray_; 392*4d6fc14bSjoerg size_t __parray_size_; 393*4d6fc14bSjoerg size_t __parray_cap_; 394*4d6fc14bSjoerg}; 395*4d6fc14bSjoerg 396*4d6fc14bSjoerg//enum class io_errc 397*4d6fc14bSjoerg_LIBCPP_DECLARE_STRONG_ENUM(io_errc) 398*4d6fc14bSjoerg{ 399*4d6fc14bSjoerg stream = 1 400*4d6fc14bSjoerg}; 401*4d6fc14bSjoerg_LIBCPP_DECLARE_STRONG_ENUM_EPILOG(io_errc) 402*4d6fc14bSjoerg 403*4d6fc14bSjoergtemplate <> 404*4d6fc14bSjoergstruct _LIBCPP_TEMPLATE_VIS is_error_code_enum<io_errc> : public true_type { }; 405*4d6fc14bSjoerg 406*4d6fc14bSjoerg#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS 407*4d6fc14bSjoergtemplate <> 408*4d6fc14bSjoergstruct _LIBCPP_TEMPLATE_VIS is_error_code_enum<io_errc::__lx> : public true_type { }; 409*4d6fc14bSjoerg#endif 410*4d6fc14bSjoerg 411*4d6fc14bSjoerg_LIBCPP_FUNC_VIS 412*4d6fc14bSjoergconst error_category& iostream_category() _NOEXCEPT; 413*4d6fc14bSjoerg 414*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 415*4d6fc14bSjoergerror_code 416*4d6fc14bSjoergmake_error_code(io_errc __e) _NOEXCEPT 417*4d6fc14bSjoerg{ 418*4d6fc14bSjoerg return error_code(static_cast<int>(__e), iostream_category()); 419*4d6fc14bSjoerg} 420*4d6fc14bSjoerg 421*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 422*4d6fc14bSjoergerror_condition 423*4d6fc14bSjoergmake_error_condition(io_errc __e) _NOEXCEPT 424*4d6fc14bSjoerg{ 425*4d6fc14bSjoerg return error_condition(static_cast<int>(__e), iostream_category()); 426*4d6fc14bSjoerg} 427*4d6fc14bSjoerg 428*4d6fc14bSjoergclass _LIBCPP_EXCEPTION_ABI ios_base::failure 429*4d6fc14bSjoerg : public system_error 430*4d6fc14bSjoerg{ 431*4d6fc14bSjoergpublic: 432*4d6fc14bSjoerg explicit failure(const string& __msg, const error_code& __ec = io_errc::stream); 433*4d6fc14bSjoerg explicit failure(const char* __msg, const error_code& __ec = io_errc::stream); 434*4d6fc14bSjoerg failure(const failure&) _NOEXCEPT = default; 435*4d6fc14bSjoerg virtual ~failure() _NOEXCEPT; 436*4d6fc14bSjoerg}; 437*4d6fc14bSjoerg 438*4d6fc14bSjoerg_LIBCPP_NORETURN inline _LIBCPP_INLINE_VISIBILITY 439*4d6fc14bSjoergvoid __throw_failure(char const* __msg) { 440*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 441*4d6fc14bSjoerg throw ios_base::failure(__msg); 442*4d6fc14bSjoerg#else 443*4d6fc14bSjoerg ((void)__msg); 444*4d6fc14bSjoerg _VSTD::abort(); 445*4d6fc14bSjoerg#endif 446*4d6fc14bSjoerg} 447*4d6fc14bSjoerg 448*4d6fc14bSjoergclass _LIBCPP_TYPE_VIS ios_base::Init 449*4d6fc14bSjoerg{ 450*4d6fc14bSjoergpublic: 451*4d6fc14bSjoerg Init(); 452*4d6fc14bSjoerg ~Init(); 453*4d6fc14bSjoerg}; 454*4d6fc14bSjoerg 455*4d6fc14bSjoerg// fmtflags 456*4d6fc14bSjoerg 457*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 458*4d6fc14bSjoergios_base::fmtflags 459*4d6fc14bSjoergios_base::flags() const 460*4d6fc14bSjoerg{ 461*4d6fc14bSjoerg return __fmtflags_; 462*4d6fc14bSjoerg} 463*4d6fc14bSjoerg 464*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 465*4d6fc14bSjoergios_base::fmtflags 466*4d6fc14bSjoergios_base::flags(fmtflags __fmtfl) 467*4d6fc14bSjoerg{ 468*4d6fc14bSjoerg fmtflags __r = __fmtflags_; 469*4d6fc14bSjoerg __fmtflags_ = __fmtfl; 470*4d6fc14bSjoerg return __r; 471*4d6fc14bSjoerg} 472*4d6fc14bSjoerg 473*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 474*4d6fc14bSjoergios_base::fmtflags 475*4d6fc14bSjoergios_base::setf(fmtflags __fmtfl) 476*4d6fc14bSjoerg{ 477*4d6fc14bSjoerg fmtflags __r = __fmtflags_; 478*4d6fc14bSjoerg __fmtflags_ |= __fmtfl; 479*4d6fc14bSjoerg return __r; 480*4d6fc14bSjoerg} 481*4d6fc14bSjoerg 482*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 483*4d6fc14bSjoergvoid 484*4d6fc14bSjoergios_base::unsetf(fmtflags __mask) 485*4d6fc14bSjoerg{ 486*4d6fc14bSjoerg __fmtflags_ &= ~__mask; 487*4d6fc14bSjoerg} 488*4d6fc14bSjoerg 489*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 490*4d6fc14bSjoergios_base::fmtflags 491*4d6fc14bSjoergios_base::setf(fmtflags __fmtfl, fmtflags __mask) 492*4d6fc14bSjoerg{ 493*4d6fc14bSjoerg fmtflags __r = __fmtflags_; 494*4d6fc14bSjoerg unsetf(__mask); 495*4d6fc14bSjoerg __fmtflags_ |= __fmtfl & __mask; 496*4d6fc14bSjoerg return __r; 497*4d6fc14bSjoerg} 498*4d6fc14bSjoerg 499*4d6fc14bSjoerg// precision 500*4d6fc14bSjoerg 501*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 502*4d6fc14bSjoergstreamsize 503*4d6fc14bSjoergios_base::precision() const 504*4d6fc14bSjoerg{ 505*4d6fc14bSjoerg return __precision_; 506*4d6fc14bSjoerg} 507*4d6fc14bSjoerg 508*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 509*4d6fc14bSjoergstreamsize 510*4d6fc14bSjoergios_base::precision(streamsize __prec) 511*4d6fc14bSjoerg{ 512*4d6fc14bSjoerg streamsize __r = __precision_; 513*4d6fc14bSjoerg __precision_ = __prec; 514*4d6fc14bSjoerg return __r; 515*4d6fc14bSjoerg} 516*4d6fc14bSjoerg 517*4d6fc14bSjoerg// width 518*4d6fc14bSjoerg 519*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 520*4d6fc14bSjoergstreamsize 521*4d6fc14bSjoergios_base::width() const 522*4d6fc14bSjoerg{ 523*4d6fc14bSjoerg return __width_; 524*4d6fc14bSjoerg} 525*4d6fc14bSjoerg 526*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 527*4d6fc14bSjoergstreamsize 528*4d6fc14bSjoergios_base::width(streamsize __wide) 529*4d6fc14bSjoerg{ 530*4d6fc14bSjoerg streamsize __r = __width_; 531*4d6fc14bSjoerg __width_ = __wide; 532*4d6fc14bSjoerg return __r; 533*4d6fc14bSjoerg} 534*4d6fc14bSjoerg 535*4d6fc14bSjoerg// iostate 536*4d6fc14bSjoerg 537*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 538*4d6fc14bSjoergios_base::iostate 539*4d6fc14bSjoergios_base::rdstate() const 540*4d6fc14bSjoerg{ 541*4d6fc14bSjoerg return __rdstate_; 542*4d6fc14bSjoerg} 543*4d6fc14bSjoerg 544*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 545*4d6fc14bSjoergvoid 546*4d6fc14bSjoergios_base::setstate(iostate __state) 547*4d6fc14bSjoerg{ 548*4d6fc14bSjoerg clear(__rdstate_ | __state); 549*4d6fc14bSjoerg} 550*4d6fc14bSjoerg 551*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 552*4d6fc14bSjoergbool 553*4d6fc14bSjoergios_base::good() const 554*4d6fc14bSjoerg{ 555*4d6fc14bSjoerg return __rdstate_ == 0; 556*4d6fc14bSjoerg} 557*4d6fc14bSjoerg 558*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 559*4d6fc14bSjoergbool 560*4d6fc14bSjoergios_base::eof() const 561*4d6fc14bSjoerg{ 562*4d6fc14bSjoerg return (__rdstate_ & eofbit) != 0; 563*4d6fc14bSjoerg} 564*4d6fc14bSjoerg 565*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 566*4d6fc14bSjoergbool 567*4d6fc14bSjoergios_base::fail() const 568*4d6fc14bSjoerg{ 569*4d6fc14bSjoerg return (__rdstate_ & (failbit | badbit)) != 0; 570*4d6fc14bSjoerg} 571*4d6fc14bSjoerg 572*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 573*4d6fc14bSjoergbool 574*4d6fc14bSjoergios_base::bad() const 575*4d6fc14bSjoerg{ 576*4d6fc14bSjoerg return (__rdstate_ & badbit) != 0; 577*4d6fc14bSjoerg} 578*4d6fc14bSjoerg 579*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 580*4d6fc14bSjoergios_base::iostate 581*4d6fc14bSjoergios_base::exceptions() const 582*4d6fc14bSjoerg{ 583*4d6fc14bSjoerg return __exceptions_; 584*4d6fc14bSjoerg} 585*4d6fc14bSjoerg 586*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 587*4d6fc14bSjoergvoid 588*4d6fc14bSjoergios_base::exceptions(iostate __iostate) 589*4d6fc14bSjoerg{ 590*4d6fc14bSjoerg __exceptions_ = __iostate; 591*4d6fc14bSjoerg clear(__rdstate_); 592*4d6fc14bSjoerg} 593*4d6fc14bSjoerg 594*4d6fc14bSjoerg#if defined(_LIBCPP_CXX03_LANG) 595*4d6fc14bSjoergstruct _LIBCPP_TYPE_VIS __cxx03_bool { 596*4d6fc14bSjoerg typedef void (__cxx03_bool::*__bool_type)(); 597*4d6fc14bSjoerg void __true_value() {} 598*4d6fc14bSjoerg}; 599*4d6fc14bSjoerg#endif 600*4d6fc14bSjoerg 601*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 602*4d6fc14bSjoergclass _LIBCPP_TEMPLATE_VIS basic_ios 603*4d6fc14bSjoerg : public ios_base 604*4d6fc14bSjoerg{ 605*4d6fc14bSjoergpublic: 606*4d6fc14bSjoerg // types: 607*4d6fc14bSjoerg typedef _CharT char_type; 608*4d6fc14bSjoerg typedef _Traits traits_type; 609*4d6fc14bSjoerg 610*4d6fc14bSjoerg typedef typename traits_type::int_type int_type; 611*4d6fc14bSjoerg typedef typename traits_type::pos_type pos_type; 612*4d6fc14bSjoerg typedef typename traits_type::off_type off_type; 613*4d6fc14bSjoerg 614*4d6fc14bSjoerg static_assert((is_same<_CharT, typename traits_type::char_type>::value), 615*4d6fc14bSjoerg "traits_type::char_type must be the same type as CharT"); 616*4d6fc14bSjoerg 617*4d6fc14bSjoerg // __true_value will generate undefined references when linking unless 618*4d6fc14bSjoerg // we give it internal linkage. 619*4d6fc14bSjoerg 620*4d6fc14bSjoerg#if defined(_LIBCPP_CXX03_LANG) 621*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 622*4d6fc14bSjoerg operator __cxx03_bool::__bool_type() const { 623*4d6fc14bSjoerg return !fail() ? &__cxx03_bool::__true_value : nullptr; 624*4d6fc14bSjoerg } 625*4d6fc14bSjoerg#else 626*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 627*4d6fc14bSjoerg _LIBCPP_EXPLICIT operator bool() const {return !fail();} 628*4d6fc14bSjoerg#endif 629*4d6fc14bSjoerg 630*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool operator!() const {return fail();} 631*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY iostate rdstate() const {return ios_base::rdstate();} 632*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY void clear(iostate __state = goodbit) {ios_base::clear(__state);} 633*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY void setstate(iostate __state) {ios_base::setstate(__state);} 634*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool good() const {return ios_base::good();} 635*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool eof() const {return ios_base::eof();} 636*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool fail() const {return ios_base::fail();} 637*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY bool bad() const {return ios_base::bad();} 638*4d6fc14bSjoerg 639*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY iostate exceptions() const {return ios_base::exceptions();} 640*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate) {ios_base::exceptions(__iostate);} 641*4d6fc14bSjoerg 642*4d6fc14bSjoerg // 27.5.4.1 Constructor/destructor: 643*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 644*4d6fc14bSjoerg explicit basic_ios(basic_streambuf<char_type,traits_type>* __sb); 645*4d6fc14bSjoerg virtual ~basic_ios(); 646*4d6fc14bSjoerg 647*4d6fc14bSjoerg // 27.5.4.2 Members: 648*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 649*4d6fc14bSjoerg basic_ostream<char_type, traits_type>* tie() const; 650*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 651*4d6fc14bSjoerg basic_ostream<char_type, traits_type>* tie(basic_ostream<char_type, traits_type>* __tiestr); 652*4d6fc14bSjoerg 653*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 654*4d6fc14bSjoerg basic_streambuf<char_type, traits_type>* rdbuf() const; 655*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 656*4d6fc14bSjoerg basic_streambuf<char_type, traits_type>* rdbuf(basic_streambuf<char_type, traits_type>* __sb); 657*4d6fc14bSjoerg 658*4d6fc14bSjoerg basic_ios& copyfmt(const basic_ios& __rhs); 659*4d6fc14bSjoerg 660*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 661*4d6fc14bSjoerg char_type fill() const; 662*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 663*4d6fc14bSjoerg char_type fill(char_type __ch); 664*4d6fc14bSjoerg 665*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 666*4d6fc14bSjoerg locale imbue(const locale& __loc); 667*4d6fc14bSjoerg 668*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 669*4d6fc14bSjoerg char narrow(char_type __c, char __dfault) const; 670*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 671*4d6fc14bSjoerg char_type widen(char __c) const; 672*4d6fc14bSjoerg 673*4d6fc14bSjoergprotected: 674*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 675*4d6fc14bSjoerg basic_ios() {// purposefully does no initialization 676*4d6fc14bSjoerg } 677*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 678*4d6fc14bSjoerg void init(basic_streambuf<char_type, traits_type>* __sb); 679*4d6fc14bSjoerg 680*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 681*4d6fc14bSjoerg void move(basic_ios& __rhs); 682*4d6fc14bSjoerg#ifndef _LIBCPP_CXX03_LANG 683*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 684*4d6fc14bSjoerg void move(basic_ios&& __rhs) {move(__rhs);} 685*4d6fc14bSjoerg#endif 686*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 687*4d6fc14bSjoerg void swap(basic_ios& __rhs) _NOEXCEPT; 688*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 689*4d6fc14bSjoerg void set_rdbuf(basic_streambuf<char_type, traits_type>* __sb); 690*4d6fc14bSjoergprivate: 691*4d6fc14bSjoerg basic_ostream<char_type, traits_type>* __tie_; 692*4d6fc14bSjoerg mutable int_type __fill_; 693*4d6fc14bSjoerg}; 694*4d6fc14bSjoerg 695*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 696*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 697*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::basic_ios(basic_streambuf<char_type,traits_type>* __sb) 698*4d6fc14bSjoerg{ 699*4d6fc14bSjoerg init(__sb); 700*4d6fc14bSjoerg} 701*4d6fc14bSjoerg 702*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 703*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::~basic_ios() 704*4d6fc14bSjoerg{ 705*4d6fc14bSjoerg} 706*4d6fc14bSjoerg 707*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 708*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 709*4d6fc14bSjoergvoid 710*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::init(basic_streambuf<char_type, traits_type>* __sb) 711*4d6fc14bSjoerg{ 712*4d6fc14bSjoerg ios_base::init(__sb); 713*4d6fc14bSjoerg __tie_ = nullptr; 714*4d6fc14bSjoerg __fill_ = traits_type::eof(); 715*4d6fc14bSjoerg} 716*4d6fc14bSjoerg 717*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 718*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 719*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>* 720*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::tie() const 721*4d6fc14bSjoerg{ 722*4d6fc14bSjoerg return __tie_; 723*4d6fc14bSjoerg} 724*4d6fc14bSjoerg 725*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 726*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 727*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>* 728*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::tie(basic_ostream<char_type, traits_type>* __tiestr) 729*4d6fc14bSjoerg{ 730*4d6fc14bSjoerg basic_ostream<char_type, traits_type>* __r = __tie_; 731*4d6fc14bSjoerg __tie_ = __tiestr; 732*4d6fc14bSjoerg return __r; 733*4d6fc14bSjoerg} 734*4d6fc14bSjoerg 735*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 736*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 737*4d6fc14bSjoergbasic_streambuf<_CharT, _Traits>* 738*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::rdbuf() const 739*4d6fc14bSjoerg{ 740*4d6fc14bSjoerg return static_cast<basic_streambuf<char_type, traits_type>*>(ios_base::rdbuf()); 741*4d6fc14bSjoerg} 742*4d6fc14bSjoerg 743*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 744*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 745*4d6fc14bSjoergbasic_streambuf<_CharT, _Traits>* 746*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<char_type, traits_type>* __sb) 747*4d6fc14bSjoerg{ 748*4d6fc14bSjoerg basic_streambuf<char_type, traits_type>* __r = rdbuf(); 749*4d6fc14bSjoerg ios_base::rdbuf(__sb); 750*4d6fc14bSjoerg return __r; 751*4d6fc14bSjoerg} 752*4d6fc14bSjoerg 753*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 754*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 755*4d6fc14bSjoerglocale 756*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::imbue(const locale& __loc) 757*4d6fc14bSjoerg{ 758*4d6fc14bSjoerg locale __r = getloc(); 759*4d6fc14bSjoerg ios_base::imbue(__loc); 760*4d6fc14bSjoerg if (rdbuf()) 761*4d6fc14bSjoerg rdbuf()->pubimbue(__loc); 762*4d6fc14bSjoerg return __r; 763*4d6fc14bSjoerg} 764*4d6fc14bSjoerg 765*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 766*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 767*4d6fc14bSjoergchar 768*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::narrow(char_type __c, char __dfault) const 769*4d6fc14bSjoerg{ 770*4d6fc14bSjoerg return use_facet<ctype<char_type> >(getloc()).narrow(__c, __dfault); 771*4d6fc14bSjoerg} 772*4d6fc14bSjoerg 773*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 774*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 775*4d6fc14bSjoerg_CharT 776*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::widen(char __c) const 777*4d6fc14bSjoerg{ 778*4d6fc14bSjoerg return use_facet<ctype<char_type> >(getloc()).widen(__c); 779*4d6fc14bSjoerg} 780*4d6fc14bSjoerg 781*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 782*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 783*4d6fc14bSjoerg_CharT 784*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::fill() const 785*4d6fc14bSjoerg{ 786*4d6fc14bSjoerg if (traits_type::eq_int_type(traits_type::eof(), __fill_)) 787*4d6fc14bSjoerg __fill_ = widen(' '); 788*4d6fc14bSjoerg return __fill_; 789*4d6fc14bSjoerg} 790*4d6fc14bSjoerg 791*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 792*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 793*4d6fc14bSjoerg_CharT 794*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::fill(char_type __ch) 795*4d6fc14bSjoerg{ 796*4d6fc14bSjoerg char_type __r = __fill_; 797*4d6fc14bSjoerg __fill_ = __ch; 798*4d6fc14bSjoerg return __r; 799*4d6fc14bSjoerg} 800*4d6fc14bSjoerg 801*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 802*4d6fc14bSjoergbasic_ios<_CharT, _Traits>& 803*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs) 804*4d6fc14bSjoerg{ 805*4d6fc14bSjoerg if (this != &__rhs) 806*4d6fc14bSjoerg { 807*4d6fc14bSjoerg __call_callbacks(erase_event); 808*4d6fc14bSjoerg ios_base::copyfmt(__rhs); 809*4d6fc14bSjoerg __tie_ = __rhs.__tie_; 810*4d6fc14bSjoerg __fill_ = __rhs.__fill_; 811*4d6fc14bSjoerg __call_callbacks(copyfmt_event); 812*4d6fc14bSjoerg exceptions(__rhs.exceptions()); 813*4d6fc14bSjoerg } 814*4d6fc14bSjoerg return *this; 815*4d6fc14bSjoerg} 816*4d6fc14bSjoerg 817*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 818*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 819*4d6fc14bSjoergvoid 820*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::move(basic_ios& __rhs) 821*4d6fc14bSjoerg{ 822*4d6fc14bSjoerg ios_base::move(__rhs); 823*4d6fc14bSjoerg __tie_ = __rhs.__tie_; 824*4d6fc14bSjoerg __rhs.__tie_ = nullptr; 825*4d6fc14bSjoerg __fill_ = __rhs.__fill_; 826*4d6fc14bSjoerg} 827*4d6fc14bSjoerg 828*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 829*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 830*4d6fc14bSjoergvoid 831*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::swap(basic_ios& __rhs) _NOEXCEPT 832*4d6fc14bSjoerg{ 833*4d6fc14bSjoerg ios_base::swap(__rhs); 834*4d6fc14bSjoerg _VSTD::swap(__tie_, __rhs.__tie_); 835*4d6fc14bSjoerg _VSTD::swap(__fill_, __rhs.__fill_); 836*4d6fc14bSjoerg} 837*4d6fc14bSjoerg 838*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 839*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 840*4d6fc14bSjoergvoid 841*4d6fc14bSjoergbasic_ios<_CharT, _Traits>::set_rdbuf(basic_streambuf<char_type, traits_type>* __sb) 842*4d6fc14bSjoerg{ 843*4d6fc14bSjoerg ios_base::set_rdbuf(__sb); 844*4d6fc14bSjoerg} 845*4d6fc14bSjoerg 846*4d6fc14bSjoerginline 847*4d6fc14bSjoergios_base& 848*4d6fc14bSjoergboolalpha(ios_base& __str) 849*4d6fc14bSjoerg{ 850*4d6fc14bSjoerg __str.setf(ios_base::boolalpha); 851*4d6fc14bSjoerg return __str; 852*4d6fc14bSjoerg} 853*4d6fc14bSjoerg 854*4d6fc14bSjoerginline 855*4d6fc14bSjoergios_base& 856*4d6fc14bSjoergnoboolalpha(ios_base& __str) 857*4d6fc14bSjoerg{ 858*4d6fc14bSjoerg __str.unsetf(ios_base::boolalpha); 859*4d6fc14bSjoerg return __str; 860*4d6fc14bSjoerg} 861*4d6fc14bSjoerg 862*4d6fc14bSjoerginline 863*4d6fc14bSjoergios_base& 864*4d6fc14bSjoergshowbase(ios_base& __str) 865*4d6fc14bSjoerg{ 866*4d6fc14bSjoerg __str.setf(ios_base::showbase); 867*4d6fc14bSjoerg return __str; 868*4d6fc14bSjoerg} 869*4d6fc14bSjoerg 870*4d6fc14bSjoerginline 871*4d6fc14bSjoergios_base& 872*4d6fc14bSjoergnoshowbase(ios_base& __str) 873*4d6fc14bSjoerg{ 874*4d6fc14bSjoerg __str.unsetf(ios_base::showbase); 875*4d6fc14bSjoerg return __str; 876*4d6fc14bSjoerg} 877*4d6fc14bSjoerg 878*4d6fc14bSjoerginline 879*4d6fc14bSjoergios_base& 880*4d6fc14bSjoergshowpoint(ios_base& __str) 881*4d6fc14bSjoerg{ 882*4d6fc14bSjoerg __str.setf(ios_base::showpoint); 883*4d6fc14bSjoerg return __str; 884*4d6fc14bSjoerg} 885*4d6fc14bSjoerg 886*4d6fc14bSjoerginline 887*4d6fc14bSjoergios_base& 888*4d6fc14bSjoergnoshowpoint(ios_base& __str) 889*4d6fc14bSjoerg{ 890*4d6fc14bSjoerg __str.unsetf(ios_base::showpoint); 891*4d6fc14bSjoerg return __str; 892*4d6fc14bSjoerg} 893*4d6fc14bSjoerg 894*4d6fc14bSjoerginline 895*4d6fc14bSjoergios_base& 896*4d6fc14bSjoergshowpos(ios_base& __str) 897*4d6fc14bSjoerg{ 898*4d6fc14bSjoerg __str.setf(ios_base::showpos); 899*4d6fc14bSjoerg return __str; 900*4d6fc14bSjoerg} 901*4d6fc14bSjoerg 902*4d6fc14bSjoerginline 903*4d6fc14bSjoergios_base& 904*4d6fc14bSjoergnoshowpos(ios_base& __str) 905*4d6fc14bSjoerg{ 906*4d6fc14bSjoerg __str.unsetf(ios_base::showpos); 907*4d6fc14bSjoerg return __str; 908*4d6fc14bSjoerg} 909*4d6fc14bSjoerg 910*4d6fc14bSjoerginline 911*4d6fc14bSjoergios_base& 912*4d6fc14bSjoergskipws(ios_base& __str) 913*4d6fc14bSjoerg{ 914*4d6fc14bSjoerg __str.setf(ios_base::skipws); 915*4d6fc14bSjoerg return __str; 916*4d6fc14bSjoerg} 917*4d6fc14bSjoerg 918*4d6fc14bSjoerginline 919*4d6fc14bSjoergios_base& 920*4d6fc14bSjoergnoskipws(ios_base& __str) 921*4d6fc14bSjoerg{ 922*4d6fc14bSjoerg __str.unsetf(ios_base::skipws); 923*4d6fc14bSjoerg return __str; 924*4d6fc14bSjoerg} 925*4d6fc14bSjoerg 926*4d6fc14bSjoerginline 927*4d6fc14bSjoergios_base& 928*4d6fc14bSjoerguppercase(ios_base& __str) 929*4d6fc14bSjoerg{ 930*4d6fc14bSjoerg __str.setf(ios_base::uppercase); 931*4d6fc14bSjoerg return __str; 932*4d6fc14bSjoerg} 933*4d6fc14bSjoerg 934*4d6fc14bSjoerginline 935*4d6fc14bSjoergios_base& 936*4d6fc14bSjoergnouppercase(ios_base& __str) 937*4d6fc14bSjoerg{ 938*4d6fc14bSjoerg __str.unsetf(ios_base::uppercase); 939*4d6fc14bSjoerg return __str; 940*4d6fc14bSjoerg} 941*4d6fc14bSjoerg 942*4d6fc14bSjoerginline 943*4d6fc14bSjoergios_base& 944*4d6fc14bSjoergunitbuf(ios_base& __str) 945*4d6fc14bSjoerg{ 946*4d6fc14bSjoerg __str.setf(ios_base::unitbuf); 947*4d6fc14bSjoerg return __str; 948*4d6fc14bSjoerg} 949*4d6fc14bSjoerg 950*4d6fc14bSjoerginline 951*4d6fc14bSjoergios_base& 952*4d6fc14bSjoergnounitbuf(ios_base& __str) 953*4d6fc14bSjoerg{ 954*4d6fc14bSjoerg __str.unsetf(ios_base::unitbuf); 955*4d6fc14bSjoerg return __str; 956*4d6fc14bSjoerg} 957*4d6fc14bSjoerg 958*4d6fc14bSjoerginline 959*4d6fc14bSjoergios_base& 960*4d6fc14bSjoerginternal(ios_base& __str) 961*4d6fc14bSjoerg{ 962*4d6fc14bSjoerg __str.setf(ios_base::internal, ios_base::adjustfield); 963*4d6fc14bSjoerg return __str; 964*4d6fc14bSjoerg} 965*4d6fc14bSjoerg 966*4d6fc14bSjoerginline 967*4d6fc14bSjoergios_base& 968*4d6fc14bSjoergleft(ios_base& __str) 969*4d6fc14bSjoerg{ 970*4d6fc14bSjoerg __str.setf(ios_base::left, ios_base::adjustfield); 971*4d6fc14bSjoerg return __str; 972*4d6fc14bSjoerg} 973*4d6fc14bSjoerg 974*4d6fc14bSjoerginline 975*4d6fc14bSjoergios_base& 976*4d6fc14bSjoergright(ios_base& __str) 977*4d6fc14bSjoerg{ 978*4d6fc14bSjoerg __str.setf(ios_base::right, ios_base::adjustfield); 979*4d6fc14bSjoerg return __str; 980*4d6fc14bSjoerg} 981*4d6fc14bSjoerg 982*4d6fc14bSjoerginline 983*4d6fc14bSjoergios_base& 984*4d6fc14bSjoergdec(ios_base& __str) 985*4d6fc14bSjoerg{ 986*4d6fc14bSjoerg __str.setf(ios_base::dec, ios_base::basefield); 987*4d6fc14bSjoerg return __str; 988*4d6fc14bSjoerg} 989*4d6fc14bSjoerg 990*4d6fc14bSjoerginline 991*4d6fc14bSjoergios_base& 992*4d6fc14bSjoerghex(ios_base& __str) 993*4d6fc14bSjoerg{ 994*4d6fc14bSjoerg __str.setf(ios_base::hex, ios_base::basefield); 995*4d6fc14bSjoerg return __str; 996*4d6fc14bSjoerg} 997*4d6fc14bSjoerg 998*4d6fc14bSjoerginline 999*4d6fc14bSjoergios_base& 1000*4d6fc14bSjoergoct(ios_base& __str) 1001*4d6fc14bSjoerg{ 1002*4d6fc14bSjoerg __str.setf(ios_base::oct, ios_base::basefield); 1003*4d6fc14bSjoerg return __str; 1004*4d6fc14bSjoerg} 1005*4d6fc14bSjoerg 1006*4d6fc14bSjoerginline 1007*4d6fc14bSjoergios_base& 1008*4d6fc14bSjoergfixed(ios_base& __str) 1009*4d6fc14bSjoerg{ 1010*4d6fc14bSjoerg __str.setf(ios_base::fixed, ios_base::floatfield); 1011*4d6fc14bSjoerg return __str; 1012*4d6fc14bSjoerg} 1013*4d6fc14bSjoerg 1014*4d6fc14bSjoerginline 1015*4d6fc14bSjoergios_base& 1016*4d6fc14bSjoergscientific(ios_base& __str) 1017*4d6fc14bSjoerg{ 1018*4d6fc14bSjoerg __str.setf(ios_base::scientific, ios_base::floatfield); 1019*4d6fc14bSjoerg return __str; 1020*4d6fc14bSjoerg} 1021*4d6fc14bSjoerg 1022*4d6fc14bSjoerginline 1023*4d6fc14bSjoergios_base& 1024*4d6fc14bSjoerghexfloat(ios_base& __str) 1025*4d6fc14bSjoerg{ 1026*4d6fc14bSjoerg __str.setf(ios_base::fixed | ios_base::scientific, ios_base::floatfield); 1027*4d6fc14bSjoerg return __str; 1028*4d6fc14bSjoerg} 1029*4d6fc14bSjoerg 1030*4d6fc14bSjoerginline 1031*4d6fc14bSjoergios_base& 1032*4d6fc14bSjoergdefaultfloat(ios_base& __str) 1033*4d6fc14bSjoerg{ 1034*4d6fc14bSjoerg __str.unsetf(ios_base::floatfield); 1035*4d6fc14bSjoerg return __str; 1036*4d6fc14bSjoerg} 1037*4d6fc14bSjoerg 1038*4d6fc14bSjoerg_LIBCPP_END_NAMESPACE_STD 1039*4d6fc14bSjoerg 1040*4d6fc14bSjoerg#endif // _LIBCPP_IOS 1041