xref: /openbsd/gnu/llvm/libcxx/include/ios (revision 4bdff4be)
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