33#ifndef _GLIBCXX_OSTREAM
34#define _GLIBCXX_OSTREAM 1
37#pragma GCC system_header
48#ifndef _GLIBCXX_NO_INLINE_PRINT
52# define __glibcxx_want_print
55namespace std _GLIBCXX_VISIBILITY(default)
57_GLIBCXX_BEGIN_NAMESPACE_VERSION
69 template<
typename _CharT,
typename _Traits>
81 template<
typename _CharT,
typename _Traits>
82 inline basic_ostream<_CharT, _Traits>&
84 {
return __os.
put(_CharT()); }
91 template<
typename _CharT,
typename _Traits>
92 inline basic_ostream<_CharT, _Traits>&
94 {
return __os.
flush(); }
96#ifdef __glibcxx_syncbuf
97 template<
typename _CharT,
typename _Traits>
98 class __syncbuf_base :
public basic_streambuf<_CharT, _Traits>
102 _S_get(basic_streambuf<_CharT, _Traits>* __buf [[maybe_unused]])
noexcept
105 if (
auto __p =
dynamic_cast<__syncbuf_base*
>(__buf))
106 return &__p->_M_emit_on_sync;
112 __syncbuf_base(basic_streambuf<_CharT, _Traits>* __w =
nullptr)
116 basic_streambuf<_CharT, _Traits>* _M_wrapped =
nullptr;
117 bool _M_emit_on_sync =
false;
118 bool _M_needs_sync =
false;
121 template<
typename _CharT,
typename _Traits>
125 if (
bool* __flag = __syncbuf_base<_CharT, _Traits>::_S_get(__os.rdbuf()))
130 template<
typename _CharT,
typename _Traits>
134 if (
bool* __flag = __syncbuf_base<_CharT, _Traits>::_S_get(__os.rdbuf()))
139 template<
typename _CharT,
typename _Traits>
145 ~_Restore() { *_M_flag = _M_prev; }
147 bool _M_prev =
false;
148 bool* _M_flag = &_M_prev;
151 if (
bool* __flag = __syncbuf_base<_CharT, _Traits>::_S_get(__os.rdbuf()))
153 __restore._M_prev = *__flag;
154 __restore._M_flag = __flag;
165 vprint_nonunicode(
ostream& __os, string_view __fmt, format_args __args);
168 vprint_unicode(
ostream& __os, string_view __fmt, format_args __args);
170 template<
typename... _Args>
172 print(
ostream& __os, format_string<_Args...> __fmt, _Args&&... __args)
174 auto __fmtargs = std::make_format_args(__args...);
175#if defined(_WIN32) && !defined(__CYGWIN__)
176 if constexpr (__unicode::__literal_encoding_is_utf8())
177 std::vprint_unicode(__os, __fmt.get(), __fmtargs);
180 std::vprint_nonunicode(__os, __fmt.get(), __fmtargs);
183 template<
typename... _Args>
185 println(
ostream& __os, format_string<_Args...> __fmt, _Args&&... __args)
187 auto __fmtargs = std::make_format_args(__args...);
189 __fmtn.
reserve(__fmt.get().size() + 1);
190 __fmtn = __fmt.get();
192#if defined(_WIN32) && !defined(__CYGWIN__)
193 if constexpr (__unicode::__literal_encoding_is_utf8())
194 std::vprint_unicode(__os, __fmtn, __fmtargs);
197 std::vprint_nonunicode(__os, __fmtn, __fmtargs);
201 inline void println(
ostream& __os)
203#if defined(_WIN32) && !defined(__CYGWIN__)
204 if constexpr (__unicode::__literal_encoding_is_utf8())
205 std::vprint_unicode(__os,
"\n", std::make_format_args());
212_GLIBCXX_END_NAMESPACE_VERSION
basic_ostream< char > ostream
Base class for char output streams.
basic_string< char > string
A string of char.
ISO C++ entities toplevel namespace is std.
basic_ostream< _CharT, _Traits > & ends(basic_ostream< _CharT, _Traits > &__os)
Write a null character into the output sequence.
basic_ostream< _CharT, _Traits > & endl(basic_ostream< _CharT, _Traits > &__os)
Write a newline and flush the stream.
basic_ostream< _CharT, _Traits > & flush(basic_ostream< _CharT, _Traits > &__os)
Flushes the output stream.
char_type widen(char __c) const
Widens characters.
Template class basic_ostream.
__ostream_type & put(char_type __c)
Simple insertion.
__ostream_type & flush()
Synchronizing the stream buffer.
constexpr void reserve(size_type __res_arg)
Attempt to preallocate enough memory for specified number of characters.