mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 03:27:39 +00:00
5660ec4741
This release is an atomic upgrade to GCC 14.1.0 with C23 and C++23
202 lines
7.8 KiB
C++
202 lines
7.8 KiB
C++
// -*- 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
|
|
|
|
*/
|
|
|
|
#include <__config>
|
|
|
|
#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
|
|
|
|
#if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
|
|
# include <atomic>
|
|
# include <concepts>
|
|
# include <cstdio>
|
|
# include <cstdlib>
|
|
# include <format>
|
|
# include <iosfwd>
|
|
# include <iterator>
|
|
# include <print>
|
|
# include <stdexcept>
|
|
# include <type_traits>
|
|
#endif
|
|
|
|
#endif // _LIBCPP_OSTREAM
|