| // -*- C++ -*- | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | |
| // See https://llvm.org/LICENSE.txt for license information. | |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_OSTREAM | |
| #define _LIBCPP_OSTREAM | |
| /* | |
| ostream synopsis | |
| template <class charT, class traits = char_traits<charT> > | |
| class basic_ostream | |
| : virtual public basic_ios<charT,traits> | |
| { | |
| public: | |
| // types (inherited from basic_ios (27.5.4)): | |
| typedef charT char_type; | |
| typedef traits traits_type; | |
| typedef typename traits_type::int_type int_type; | |
| typedef typename traits_type::pos_type pos_type; | |
| typedef typename traits_type::off_type off_type; | |
| // 27.7.2.2 Constructor/destructor: | |
| explicit basic_ostream(basic_streambuf<char_type,traits>* sb); | |
| basic_ostream(basic_ostream&& rhs); | |
| virtual ~basic_ostream(); | |
| // 27.7.2.3 Assign/swap | |
| basic_ostream& operator=(const basic_ostream& rhs) = delete; // C++14 | |
| basic_ostream& operator=(basic_ostream&& rhs); | |
| void swap(basic_ostream& rhs); | |
| // 27.7.2.4 Prefix/suffix: | |
| class sentry; | |
| // 27.7.2.6 Formatted output: | |
| basic_ostream& operator<<(basic_ostream& (*pf)(basic_ostream&)); | |
| basic_ostream& operator<<(basic_ios<charT, traits>& (*pf)(basic_ios<charT,traits>&)); | |
| basic_ostream& operator<<(ios_base& (*pf)(ios_base&)); | |
| basic_ostream& operator<<(bool n); | |
| basic_ostream& operator<<(short n); | |
| basic_ostream& operator<<(unsigned short n); | |
| basic_ostream& operator<<(int n); | |
| basic_ostream& operator<<(unsigned int n); | |
| basic_ostream& operator<<(long n); | |
| basic_ostream& operator<<(unsigned long n); | |
| basic_ostream& operator<<(long long n); | |
| basic_ostream& operator<<(unsigned long long n); | |
| basic_ostream& operator<<(float f); | |
| basic_ostream& operator<<(double f); | |
| basic_ostream& operator<<(long double f); | |
| basic_ostream& operator<<(const void* p); | |
| basic_ostream& operator<<(const volatile void* val); // C++23 | |
| basic_ostream& operator<<(basic_streambuf<char_type,traits>* sb); | |
| basic_ostream& operator<<(nullptr_t); | |
| // 27.7.2.7 Unformatted output: | |
| basic_ostream& put(char_type c); | |
| basic_ostream& write(const char_type* s, streamsize n); | |
| basic_ostream& flush(); | |
| // 27.7.2.5 seeks: | |
| pos_type tellp(); | |
| basic_ostream& seekp(pos_type); | |
| basic_ostream& seekp(off_type, ios_base::seekdir); | |
| protected: | |
| basic_ostream(const basic_ostream& rhs) = delete; | |
| basic_ostream(basic_ostream&& rhs); | |
| // 27.7.3.3 Assign/swap | |
| basic_ostream& operator=(basic_ostream& rhs) = delete; | |
| basic_ostream& operator=(const basic_ostream&& rhs); | |
| void swap(basic_ostream& rhs); | |
| }; | |
| // 27.7.2.6.4 character inserters | |
| template<class charT, class traits> | |
| basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, charT); | |
| template<class charT, class traits> | |
| basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, char); | |
| template<class traits> | |
| basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, char); | |
| // signed and unsigned | |
| template<class traits> | |
| basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, signed char); | |
| template<class traits> | |
| basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, unsigned char); | |
| // NTBS | |
| template<class charT, class traits> | |
| basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*); | |
| template<class charT, class traits> | |
| basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const char*); | |
| template<class traits> | |
| basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const char*); | |
| // signed and unsigned | |
| template<class traits> | |
| basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const signed char*); | |
| template<class traits> | |
| basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const unsigned char*); | |
| // swap: | |
| template <class charT, class traits> | |
| void swap(basic_ostream<charT, traits>& x, basic_ostream<charT, traits>& y); | |
| template <class charT, class traits> | |
| basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os); | |
| template <class charT, class traits> | |
| basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os); | |
| template <class charT, class traits> | |
| basic_ostream<charT,traits>& flush(basic_ostream<charT,traits>& os); | |
| // rvalue stream insertion | |
| template <class Stream, class T> | |
| Stream&& operator<<(Stream&& os, const T& x); | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, wchar_t) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, char8_t) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, char16_t) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, char32_t) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, char8_t) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, char16_t) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, char32_t) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const wchar_t*) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char8_t*) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char16_t*) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<char, traits>& operator<<(basic_ostream<char, traits>&, const char32_t*) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, const char8_t*) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, const char16_t*) = delete; // since C++20 | |
| template<class traits> | |
| basic_ostream<wchar_t, traits>& operator<<(basic_ostream<wchar_t, traits>&, const char32_t*) = delete; // since C++20 | |
| // [ostream.formatted.print], print functions | |
| template<class... Args> // since C++23 | |
| void print(ostream& os, format_string<Args...> fmt, Args&&... args); | |
| template<class... Args> // since C++23 | |
| void println(ostream& os, format_string<Args...> fmt, Args&&... args); | |
| void println(ostream& os); // since C++26 | |
| void vprint_unicode(ostream& os, string_view fmt, format_args args); // since C++23 | |
| void vprint_nonunicode(ostream& os, string_view fmt, format_args args); // since C++23 | |
| } // std | |
| */ | |
| #if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) | |
| # include <__cxx03/ostream> | |
| #else | |
| # include <__config> | |
| # if _LIBCPP_HAS_LOCALIZATION | |
| # include <__ostream/basic_ostream.h> | |
| # if _LIBCPP_STD_VER >= 23 | |
| # include <__ostream/print.h> | |
| # endif | |
| # include <version> | |
| # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| # pragma GCC system_header | |
| # endif | |
| # endif // _LIBCPP_HAS_LOCALIZATION | |
| # if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER == 23 | |
| # include <optional> | |
| # endif | |
| #endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) | |
| #endif // _LIBCPP_OSTREAM |