LCOV - code coverage report
Current view: top level - v1 - ios (source / functions) Coverage Total Hit
Test: vrml_claude.info Lines: 78.6 % 42 33
Test Date: 2024-03-08 16:33:03 Functions: 82.4 % 17 14

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

Generated by: LCOV version 2.0-1