17a984708SDavid Chisnall// -*- C++ -*- 27a984708SDavid Chisnall//===-------------------------- ostream -----------------------------------===// 37a984708SDavid Chisnall// 47a984708SDavid Chisnall// The LLVM Compiler Infrastructure 57a984708SDavid Chisnall// 67a984708SDavid Chisnall// This file is dual licensed under the MIT and the University of Illinois Open 77a984708SDavid Chisnall// Source Licenses. See LICENSE.TXT for details. 87a984708SDavid Chisnall// 97a984708SDavid Chisnall//===----------------------------------------------------------------------===// 107a984708SDavid Chisnall 117a984708SDavid Chisnall#ifndef _LIBCPP_OSTREAM 127a984708SDavid Chisnall#define _LIBCPP_OSTREAM 137a984708SDavid Chisnall 147a984708SDavid Chisnall/* 157a984708SDavid Chisnall ostream synopsis 167a984708SDavid Chisnall 177a984708SDavid Chisnalltemplate <class charT, class traits = char_traits<charT> > 187a984708SDavid Chisnallclass basic_ostream 197a984708SDavid Chisnall : virtual public basic_ios<charT,traits> 207a984708SDavid Chisnall{ 217a984708SDavid Chisnallpublic: 227a984708SDavid Chisnall // types (inherited from basic_ios (27.5.4)): 237a984708SDavid Chisnall typedef charT char_type; 247a984708SDavid Chisnall typedef traits traits_type; 257a984708SDavid Chisnall typedef typename traits_type::int_type int_type; 267a984708SDavid Chisnall typedef typename traits_type::pos_type pos_type; 277a984708SDavid Chisnall typedef typename traits_type::off_type off_type; 287a984708SDavid Chisnall 297a984708SDavid Chisnall // 27.7.2.2 Constructor/destructor: 307a984708SDavid Chisnall explicit basic_ostream(basic_streambuf<char_type,traits>* sb); 317a984708SDavid Chisnall basic_ostream(basic_ostream&& rhs); 327a984708SDavid Chisnall virtual ~basic_ostream(); 337a984708SDavid Chisnall 347a984708SDavid Chisnall // 27.7.2.3 Assign/swap 354f7ab58eSDimitry Andric basic_ostream& operator=(const basic_ostream& rhs) = delete; // C++14 367a984708SDavid Chisnall basic_ostream& operator=(basic_ostream&& rhs); 377a984708SDavid Chisnall void swap(basic_ostream& rhs); 387a984708SDavid Chisnall 397a984708SDavid Chisnall // 27.7.2.4 Prefix/suffix: 407a984708SDavid Chisnall class sentry; 417a984708SDavid Chisnall 427a984708SDavid Chisnall // 27.7.2.6 Formatted output: 437a984708SDavid Chisnall basic_ostream& operator<<(basic_ostream& (*pf)(basic_ostream&)); 447a984708SDavid Chisnall basic_ostream& operator<<(basic_ios<charT, traits>& (*pf)(basic_ios<charT,traits>&)); 457a984708SDavid Chisnall basic_ostream& operator<<(ios_base& (*pf)(ios_base&)); 467a984708SDavid Chisnall basic_ostream& operator<<(bool n); 477a984708SDavid Chisnall basic_ostream& operator<<(short n); 487a984708SDavid Chisnall basic_ostream& operator<<(unsigned short n); 497a984708SDavid Chisnall basic_ostream& operator<<(int n); 507a984708SDavid Chisnall basic_ostream& operator<<(unsigned int n); 517a984708SDavid Chisnall basic_ostream& operator<<(long n); 527a984708SDavid Chisnall basic_ostream& operator<<(unsigned long n); 537a984708SDavid Chisnall basic_ostream& operator<<(long long n); 547a984708SDavid Chisnall basic_ostream& operator<<(unsigned long long n); 557a984708SDavid Chisnall basic_ostream& operator<<(float f); 567a984708SDavid Chisnall basic_ostream& operator<<(double f); 577a984708SDavid Chisnall basic_ostream& operator<<(long double f); 587a984708SDavid Chisnall basic_ostream& operator<<(const void* p); 597a984708SDavid Chisnall basic_ostream& operator<<(basic_streambuf<char_type,traits>* sb); 607a984708SDavid Chisnall 617a984708SDavid Chisnall // 27.7.2.7 Unformatted output: 627a984708SDavid Chisnall basic_ostream& put(char_type c); 637a984708SDavid Chisnall basic_ostream& write(const char_type* s, streamsize n); 647a984708SDavid Chisnall basic_ostream& flush(); 657a984708SDavid Chisnall 667a984708SDavid Chisnall // 27.7.2.5 seeks: 677a984708SDavid Chisnall pos_type tellp(); 687a984708SDavid Chisnall basic_ostream& seekp(pos_type); 697a984708SDavid Chisnall basic_ostream& seekp(off_type, ios_base::seekdir); 70d72607e9SDimitry Andricprotected: 71d72607e9SDimitry Andric basic_ostream(const basic_ostream& rhs) = delete; 72d72607e9SDimitry Andric basic_ostream(basic_ostream&& rhs); 73d72607e9SDimitry Andric // 27.7.3.3 Assign/swap 74d72607e9SDimitry Andric basic_ostream& operator=(basic_ostream& rhs) = delete; 75d72607e9SDimitry Andric basic_ostream& operator=(const basic_ostream&& rhs); 76d72607e9SDimitry Andric void swap(basic_ostream& rhs); 777a984708SDavid Chisnall}; 787a984708SDavid Chisnall 797a984708SDavid Chisnall// 27.7.2.6.4 character inserters 807a984708SDavid Chisnall 817a984708SDavid Chisnalltemplate<class charT, class traits> 827a984708SDavid Chisnall basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, charT); 837a984708SDavid Chisnall 847a984708SDavid Chisnalltemplate<class charT, class traits> 857a984708SDavid Chisnall basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, char); 867a984708SDavid Chisnall 877a984708SDavid Chisnalltemplate<class traits> 887a984708SDavid Chisnall basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, char); 897a984708SDavid Chisnall 907a984708SDavid Chisnall// signed and unsigned 917a984708SDavid Chisnall 927a984708SDavid Chisnalltemplate<class traits> 937a984708SDavid Chisnall basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, signed char); 947a984708SDavid Chisnall 957a984708SDavid Chisnalltemplate<class traits> 967a984708SDavid Chisnall basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, unsigned char); 977a984708SDavid Chisnall 987a984708SDavid Chisnall// NTBS 997a984708SDavid Chisnalltemplate<class charT, class traits> 1007a984708SDavid Chisnall basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*); 1017a984708SDavid Chisnall 1027a984708SDavid Chisnalltemplate<class charT, class traits> 1037a984708SDavid Chisnall basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const char*); 1047a984708SDavid Chisnall 1057a984708SDavid Chisnalltemplate<class traits> 1067a984708SDavid Chisnall basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const char*); 1077a984708SDavid Chisnall 1087a984708SDavid Chisnall// signed and unsigned 1097a984708SDavid Chisnalltemplate<class traits> 1107a984708SDavid Chisnallbasic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const signed char*); 1117a984708SDavid Chisnall 1127a984708SDavid Chisnalltemplate<class traits> 1137a984708SDavid Chisnall basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const unsigned char*); 1147a984708SDavid Chisnall 1157a984708SDavid Chisnall// swap: 1167a984708SDavid Chisnalltemplate <class charT, class traits> 1177a984708SDavid Chisnall void swap(basic_ostream<charT, traits>& x, basic_ostream<charT, traits>& y); 1187a984708SDavid Chisnall 1197a984708SDavid Chisnalltemplate <class charT, class traits> 1207a984708SDavid Chisnall basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os); 1217a984708SDavid Chisnall 1227a984708SDavid Chisnalltemplate <class charT, class traits> 1237a984708SDavid Chisnall basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os); 1247a984708SDavid Chisnall 1257a984708SDavid Chisnalltemplate <class charT, class traits> 1267a984708SDavid Chisnall basic_ostream<charT,traits>& flush(basic_ostream<charT,traits>& os); 1277a984708SDavid Chisnall 1287a984708SDavid Chisnall// rvalue stream insertion 1297a984708SDavid Chisnalltemplate <class charT, class traits, class T> 1307a984708SDavid Chisnall basic_ostream<charT, traits>& 1317a984708SDavid Chisnall operator<<(basic_ostream<charT, traits>&& os, const T& x); 1327a984708SDavid Chisnall 1337a984708SDavid Chisnall} // std 1347a984708SDavid Chisnall 1357a984708SDavid Chisnall*/ 1367a984708SDavid Chisnall 1377a984708SDavid Chisnall#include <__config> 1387a984708SDavid Chisnall#include <ios> 1397a984708SDavid Chisnall#include <streambuf> 1407a984708SDavid Chisnall#include <locale> 1417a984708SDavid Chisnall#include <iterator> 1427a984708SDavid Chisnall#include <bitset> 143*b5893f02SDimitry Andric#include <version> 1447a984708SDavid Chisnall 1457a984708SDavid Chisnall#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 1467a984708SDavid Chisnall#pragma GCC system_header 1477a984708SDavid Chisnall#endif 1487a984708SDavid Chisnall 1497a984708SDavid Chisnall_LIBCPP_BEGIN_NAMESPACE_STD 1507a984708SDavid Chisnall 1517a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 152aed8d94eSDimitry Andricclass _LIBCPP_TEMPLATE_VIS basic_ostream 1537a984708SDavid Chisnall : virtual public basic_ios<_CharT, _Traits> 1547a984708SDavid Chisnall{ 1557a984708SDavid Chisnallpublic: 1567a984708SDavid Chisnall // types (inherited from basic_ios (27.5.4)): 1577a984708SDavid Chisnall typedef _CharT char_type; 1587a984708SDavid Chisnall typedef _Traits traits_type; 1597a984708SDavid Chisnall typedef typename traits_type::int_type int_type; 1607a984708SDavid Chisnall typedef typename traits_type::pos_type pos_type; 1617a984708SDavid Chisnall typedef typename traits_type::off_type off_type; 1627a984708SDavid Chisnall 1637a984708SDavid Chisnall // 27.7.2.2 Constructor/destructor: 164*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 165aed8d94eSDimitry Andric explicit basic_ostream(basic_streambuf<char_type, traits_type>* __sb) 166aed8d94eSDimitry Andric { this->init(__sb); } 1677a984708SDavid Chisnall virtual ~basic_ostream(); 1687a984708SDavid Chisnallprotected: 169540d2a8bSDimitry Andric#ifndef _LIBCPP_CXX03_LANG 170aed8d94eSDimitry Andric inline _LIBCPP_INLINE_VISIBILITY 1717a984708SDavid Chisnall basic_ostream(basic_ostream&& __rhs); 1727a984708SDavid Chisnall 1737a984708SDavid Chisnall // 27.7.2.3 Assign/swap 174aed8d94eSDimitry Andric inline _LIBCPP_INLINE_VISIBILITY 1757a984708SDavid Chisnall basic_ostream& operator=(basic_ostream&& __rhs); 1767a984708SDavid Chisnall#endif 177*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 178aed8d94eSDimitry Andric void swap(basic_ostream& __rhs) 179aed8d94eSDimitry Andric { basic_ios<char_type, traits_type>::swap(__rhs); } 180d72607e9SDimitry Andric 18180779b37SDimitry Andric#ifndef _LIBCPP_CXX03_LANG 182d72607e9SDimitry Andric basic_ostream (const basic_ostream& __rhs) = delete; 183d72607e9SDimitry Andric basic_ostream& operator=(const basic_ostream& __rhs) = delete; 184d72607e9SDimitry Andric#else 185d72607e9SDimitry Andric basic_ostream (const basic_ostream& __rhs); // not defined 186d72607e9SDimitry Andric basic_ostream& operator=(const basic_ostream& __rhs); // not defined 187d72607e9SDimitry Andric#endif 1887a984708SDavid Chisnallpublic: 1897a984708SDavid Chisnall 1907a984708SDavid Chisnall // 27.7.2.4 Prefix/suffix: 191aed8d94eSDimitry Andric class _LIBCPP_TEMPLATE_VIS sentry; 1927a984708SDavid Chisnall 1937a984708SDavid Chisnall // 27.7.2.6 Formatted output: 194*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 195aed8d94eSDimitry Andric basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&)) 196aed8d94eSDimitry Andric { return __pf(*this); } 197aed8d94eSDimitry Andric 198*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 1997a984708SDavid Chisnall basic_ostream& operator<<(basic_ios<char_type, traits_type>& 200aed8d94eSDimitry Andric (*__pf)(basic_ios<char_type,traits_type>&)) 201aed8d94eSDimitry Andric { __pf(*this); return *this; } 202aed8d94eSDimitry Andric 203*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 204aed8d94eSDimitry Andric basic_ostream& operator<<(ios_base& (*__pf)(ios_base&)) 205aed8d94eSDimitry Andric { __pf(*this); return *this; } 206aed8d94eSDimitry Andric 2077a984708SDavid Chisnall basic_ostream& operator<<(bool __n); 2087a984708SDavid Chisnall basic_ostream& operator<<(short __n); 2097a984708SDavid Chisnall basic_ostream& operator<<(unsigned short __n); 2107a984708SDavid Chisnall basic_ostream& operator<<(int __n); 2117a984708SDavid Chisnall basic_ostream& operator<<(unsigned int __n); 2127a984708SDavid Chisnall basic_ostream& operator<<(long __n); 2137a984708SDavid Chisnall basic_ostream& operator<<(unsigned long __n); 2147a984708SDavid Chisnall basic_ostream& operator<<(long long __n); 2157a984708SDavid Chisnall basic_ostream& operator<<(unsigned long long __n); 2167a984708SDavid Chisnall basic_ostream& operator<<(float __f); 2177a984708SDavid Chisnall basic_ostream& operator<<(double __f); 2187a984708SDavid Chisnall basic_ostream& operator<<(long double __f); 2197a984708SDavid Chisnall basic_ostream& operator<<(const void* __p); 2207a984708SDavid Chisnall basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb); 2217a984708SDavid Chisnall 2227a984708SDavid Chisnall // 27.7.2.7 Unformatted output: 2237a984708SDavid Chisnall basic_ostream& put(char_type __c); 2247a984708SDavid Chisnall basic_ostream& write(const char_type* __s, streamsize __n); 2257a984708SDavid Chisnall basic_ostream& flush(); 2267a984708SDavid Chisnall 2277a984708SDavid Chisnall // 27.7.2.5 seeks: 228*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 2297a984708SDavid Chisnall pos_type tellp(); 230*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 2317a984708SDavid Chisnall basic_ostream& seekp(pos_type __pos); 232*b5893f02SDimitry Andric inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 2337a984708SDavid Chisnall basic_ostream& seekp(off_type __off, ios_base::seekdir __dir); 2347a984708SDavid Chisnall 2357a984708SDavid Chisnallprotected: 2364ba319b5SDimitry Andric _LIBCPP_INLINE_VISIBILITY 2377a984708SDavid Chisnall basic_ostream() {} // extension, intentially does not initialize 2387a984708SDavid Chisnall}; 2397a984708SDavid Chisnall 2407a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 241aed8d94eSDimitry Andricclass _LIBCPP_TEMPLATE_VIS basic_ostream<_CharT, _Traits>::sentry 2427a984708SDavid Chisnall{ 2437a984708SDavid Chisnall bool __ok_; 2447a984708SDavid Chisnall basic_ostream<_CharT, _Traits>& __os_; 2457a984708SDavid Chisnall 2467a984708SDavid Chisnall sentry(const sentry&); // = delete; 2477a984708SDavid Chisnall sentry& operator=(const sentry&); // = delete; 2487a984708SDavid Chisnall 2497a984708SDavid Chisnallpublic: 2507a984708SDavid Chisnall explicit sentry(basic_ostream<_CharT, _Traits>& __os); 2517a984708SDavid Chisnall ~sentry(); 2527a984708SDavid Chisnall 2534ba319b5SDimitry Andric _LIBCPP_INLINE_VISIBILITY 25494e3ee44SDavid Chisnall _LIBCPP_EXPLICIT 2557a984708SDavid Chisnall operator bool() const {return __ok_;} 2567a984708SDavid Chisnall}; 2577a984708SDavid Chisnall 2587a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 2597a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::sentry::sentry(basic_ostream<_CharT, _Traits>& __os) 2607a984708SDavid Chisnall : __ok_(false), 2617a984708SDavid Chisnall __os_(__os) 2627a984708SDavid Chisnall{ 2637a984708SDavid Chisnall if (__os.good()) 2647a984708SDavid Chisnall { 2657a984708SDavid Chisnall if (__os.tie()) 2667a984708SDavid Chisnall __os.tie()->flush(); 2677a984708SDavid Chisnall __ok_ = true; 2687a984708SDavid Chisnall } 2697a984708SDavid Chisnall} 2707a984708SDavid Chisnall 2717a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 2727a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::sentry::~sentry() 2737a984708SDavid Chisnall{ 2747a984708SDavid Chisnall if (__os_.rdbuf() && __os_.good() && (__os_.flags() & ios_base::unitbuf) 2757a984708SDavid Chisnall && !uncaught_exception()) 2767a984708SDavid Chisnall { 2777a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 2787a984708SDavid Chisnall try 2797a984708SDavid Chisnall { 2807a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 2817a984708SDavid Chisnall if (__os_.rdbuf()->pubsync() == -1) 2827a984708SDavid Chisnall __os_.setstate(ios_base::badbit); 2837a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 2847a984708SDavid Chisnall } 2857a984708SDavid Chisnall catch (...) 2867a984708SDavid Chisnall { 2877a984708SDavid Chisnall } 2887a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 2897a984708SDavid Chisnall } 2907a984708SDavid Chisnall} 2917a984708SDavid Chisnall 292540d2a8bSDimitry Andric#ifndef _LIBCPP_CXX03_LANG 2937a984708SDavid Chisnall 2947a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 2957a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::basic_ostream(basic_ostream&& __rhs) 2967a984708SDavid Chisnall{ 2977a984708SDavid Chisnall this->move(__rhs); 2987a984708SDavid Chisnall} 2997a984708SDavid Chisnall 3007a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 3017a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 3027a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator=(basic_ostream&& __rhs) 3037a984708SDavid Chisnall{ 3047a984708SDavid Chisnall swap(__rhs); 3057a984708SDavid Chisnall return *this; 3067a984708SDavid Chisnall} 3077a984708SDavid Chisnall 308540d2a8bSDimitry Andric#endif // _LIBCPP_CXX03_LANG 3097a984708SDavid Chisnall 3107a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 3117a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::~basic_ostream() 3127a984708SDavid Chisnall{ 3137a984708SDavid Chisnall} 3147a984708SDavid Chisnall 3157a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 3167a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 3177a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(basic_streambuf<char_type, traits_type>* __sb) 3187a984708SDavid Chisnall{ 3197a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 3207a984708SDavid Chisnall try 3217a984708SDavid Chisnall { 3227a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 3237a984708SDavid Chisnall sentry __s(*this); 3247a984708SDavid Chisnall if (__s) 3257a984708SDavid Chisnall { 3267a984708SDavid Chisnall if (__sb) 3277a984708SDavid Chisnall { 3287a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 3297a984708SDavid Chisnall try 3307a984708SDavid Chisnall { 3317a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 33294e3ee44SDavid Chisnall typedef istreambuf_iterator<_CharT, _Traits> _Ip; 33394e3ee44SDavid Chisnall typedef ostreambuf_iterator<_CharT, _Traits> _Op; 33494e3ee44SDavid Chisnall _Ip __i(__sb); 33594e3ee44SDavid Chisnall _Ip __eof; 33694e3ee44SDavid Chisnall _Op __o(*this); 3377a984708SDavid Chisnall size_t __c = 0; 3387a984708SDavid Chisnall for (; __i != __eof; ++__i, ++__o, ++__c) 3397a984708SDavid Chisnall { 3407a984708SDavid Chisnall *__o = *__i; 3417a984708SDavid Chisnall if (__o.failed()) 3427a984708SDavid Chisnall break; 3437a984708SDavid Chisnall } 3447a984708SDavid Chisnall if (__c == 0) 3457a984708SDavid Chisnall this->setstate(ios_base::failbit); 3467a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 3477a984708SDavid Chisnall } 3487a984708SDavid Chisnall catch (...) 3497a984708SDavid Chisnall { 3507a984708SDavid Chisnall this->__set_failbit_and_consider_rethrow(); 3517a984708SDavid Chisnall } 3527a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 3537a984708SDavid Chisnall } 3547a984708SDavid Chisnall else 3557a984708SDavid Chisnall this->setstate(ios_base::badbit); 3567a984708SDavid Chisnall } 3577a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 3587a984708SDavid Chisnall } 3597a984708SDavid Chisnall catch (...) 3607a984708SDavid Chisnall { 3617a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 3627a984708SDavid Chisnall } 3637a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 3647a984708SDavid Chisnall return *this; 3657a984708SDavid Chisnall} 3667a984708SDavid Chisnall 3677a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 3687a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 3697a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(bool __n) 3707a984708SDavid Chisnall{ 3717a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 3727a984708SDavid Chisnall try 3737a984708SDavid Chisnall { 3747a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 3757a984708SDavid Chisnall sentry __s(*this); 3767a984708SDavid Chisnall if (__s) 3777a984708SDavid Chisnall { 37894e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 37994e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 3807a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 3817a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 3827a984708SDavid Chisnall } 3837a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 3847a984708SDavid Chisnall } 3857a984708SDavid Chisnall catch (...) 3867a984708SDavid Chisnall { 3877a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 3887a984708SDavid Chisnall } 3897a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 3907a984708SDavid Chisnall return *this; 3917a984708SDavid Chisnall} 3927a984708SDavid Chisnall 3937a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 3947a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 3957a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(short __n) 3967a984708SDavid Chisnall{ 3977a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 3987a984708SDavid Chisnall try 3997a984708SDavid Chisnall { 4007a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 4017a984708SDavid Chisnall sentry __s(*this); 4027a984708SDavid Chisnall if (__s) 4037a984708SDavid Chisnall { 4047a984708SDavid Chisnall ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield; 40594e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 40694e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 4077a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), 4087a984708SDavid Chisnall __flags == ios_base::oct || __flags == ios_base::hex ? 4097a984708SDavid Chisnall static_cast<long>(static_cast<unsigned short>(__n)) : 4107a984708SDavid Chisnall static_cast<long>(__n)).failed()) 4117a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 4127a984708SDavid Chisnall } 4137a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 4147a984708SDavid Chisnall } 4157a984708SDavid Chisnall catch (...) 4167a984708SDavid Chisnall { 4177a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 4187a984708SDavid Chisnall } 4197a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 4207a984708SDavid Chisnall return *this; 4217a984708SDavid Chisnall} 4227a984708SDavid Chisnall 4237a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 4247a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 4257a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(unsigned short __n) 4267a984708SDavid Chisnall{ 4277a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 4287a984708SDavid Chisnall try 4297a984708SDavid Chisnall { 4307a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 4317a984708SDavid Chisnall sentry __s(*this); 4327a984708SDavid Chisnall if (__s) 4337a984708SDavid Chisnall { 43494e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 43594e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 4367a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed()) 4377a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 4387a984708SDavid Chisnall } 4397a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 4407a984708SDavid Chisnall } 4417a984708SDavid Chisnall catch (...) 4427a984708SDavid Chisnall { 4437a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 4447a984708SDavid Chisnall } 4457a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 4467a984708SDavid Chisnall return *this; 4477a984708SDavid Chisnall} 4487a984708SDavid Chisnall 4497a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 4507a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 4517a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(int __n) 4527a984708SDavid Chisnall{ 4537a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 4547a984708SDavid Chisnall try 4557a984708SDavid Chisnall { 4567a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 4577a984708SDavid Chisnall sentry __s(*this); 4587a984708SDavid Chisnall if (__s) 4597a984708SDavid Chisnall { 4607a984708SDavid Chisnall ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield; 46194e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 46294e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 4637a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), 4647a984708SDavid Chisnall __flags == ios_base::oct || __flags == ios_base::hex ? 4657a984708SDavid Chisnall static_cast<long>(static_cast<unsigned int>(__n)) : 4667a984708SDavid Chisnall static_cast<long>(__n)).failed()) 4677a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 4687a984708SDavid Chisnall } 4697a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 4707a984708SDavid Chisnall } 4717a984708SDavid Chisnall catch (...) 4727a984708SDavid Chisnall { 4737a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 4747a984708SDavid Chisnall } 4757a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 4767a984708SDavid Chisnall return *this; 4777a984708SDavid Chisnall} 4787a984708SDavid Chisnall 4797a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 4807a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 4817a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(unsigned int __n) 4827a984708SDavid Chisnall{ 4837a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 4847a984708SDavid Chisnall try 4857a984708SDavid Chisnall { 4867a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 4877a984708SDavid Chisnall sentry __s(*this); 4887a984708SDavid Chisnall if (__s) 4897a984708SDavid Chisnall { 49094e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 49194e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 4927a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed()) 4937a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 4947a984708SDavid Chisnall } 4957a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 4967a984708SDavid Chisnall } 4977a984708SDavid Chisnall catch (...) 4987a984708SDavid Chisnall { 4997a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 5007a984708SDavid Chisnall } 5017a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5027a984708SDavid Chisnall return *this; 5037a984708SDavid Chisnall} 5047a984708SDavid Chisnall 5057a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 5067a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 5077a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(long __n) 5087a984708SDavid Chisnall{ 5097a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 5107a984708SDavid Chisnall try 5117a984708SDavid Chisnall { 5127a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5137a984708SDavid Chisnall sentry __s(*this); 5147a984708SDavid Chisnall if (__s) 5157a984708SDavid Chisnall { 51694e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 51794e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 5187a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 5197a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 5207a984708SDavid Chisnall } 5217a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 5227a984708SDavid Chisnall } 5237a984708SDavid Chisnall catch (...) 5247a984708SDavid Chisnall { 5257a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 5267a984708SDavid Chisnall } 5277a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5287a984708SDavid Chisnall return *this; 5297a984708SDavid Chisnall} 5307a984708SDavid Chisnall 5317a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 5327a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 5337a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(unsigned long __n) 5347a984708SDavid Chisnall{ 5357a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 5367a984708SDavid Chisnall try 5377a984708SDavid Chisnall { 5387a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5397a984708SDavid Chisnall sentry __s(*this); 5407a984708SDavid Chisnall if (__s) 5417a984708SDavid Chisnall { 54294e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 54394e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 5447a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 5457a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 5467a984708SDavid Chisnall } 5477a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 5487a984708SDavid Chisnall } 5497a984708SDavid Chisnall catch (...) 5507a984708SDavid Chisnall { 5517a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 5527a984708SDavid Chisnall } 5537a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5547a984708SDavid Chisnall return *this; 5557a984708SDavid Chisnall} 5567a984708SDavid Chisnall 5577a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 5587a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 5597a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(long long __n) 5607a984708SDavid Chisnall{ 5617a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 5627a984708SDavid Chisnall try 5637a984708SDavid Chisnall { 5647a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5657a984708SDavid Chisnall sentry __s(*this); 5667a984708SDavid Chisnall if (__s) 5677a984708SDavid Chisnall { 56894e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 56994e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 5707a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 5717a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 5727a984708SDavid Chisnall } 5737a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 5747a984708SDavid Chisnall } 5757a984708SDavid Chisnall catch (...) 5767a984708SDavid Chisnall { 5777a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 5787a984708SDavid Chisnall } 5797a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5807a984708SDavid Chisnall return *this; 5817a984708SDavid Chisnall} 5827a984708SDavid Chisnall 5837a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 5847a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 5857a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(unsigned long long __n) 5867a984708SDavid Chisnall{ 5877a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 5887a984708SDavid Chisnall try 5897a984708SDavid Chisnall { 5907a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 5917a984708SDavid Chisnall sentry __s(*this); 5927a984708SDavid Chisnall if (__s) 5937a984708SDavid Chisnall { 59494e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 59594e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 5967a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 5977a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 5987a984708SDavid Chisnall } 5997a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6007a984708SDavid Chisnall } 6017a984708SDavid Chisnall catch (...) 6027a984708SDavid Chisnall { 6037a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 6047a984708SDavid Chisnall } 6057a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6067a984708SDavid Chisnall return *this; 6077a984708SDavid Chisnall} 6087a984708SDavid Chisnall 6097a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 6107a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 6117a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(float __n) 6127a984708SDavid Chisnall{ 6137a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6147a984708SDavid Chisnall try 6157a984708SDavid Chisnall { 6167a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6177a984708SDavid Chisnall sentry __s(*this); 6187a984708SDavid Chisnall if (__s) 6197a984708SDavid Chisnall { 62094e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 62194e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 6227a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), static_cast<double>(__n)).failed()) 6237a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 6247a984708SDavid Chisnall } 6257a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6267a984708SDavid Chisnall } 6277a984708SDavid Chisnall catch (...) 6287a984708SDavid Chisnall { 6297a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 6307a984708SDavid Chisnall } 6317a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6327a984708SDavid Chisnall return *this; 6337a984708SDavid Chisnall} 6347a984708SDavid Chisnall 6357a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 6367a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 6377a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(double __n) 6387a984708SDavid Chisnall{ 6397a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6407a984708SDavid Chisnall try 6417a984708SDavid Chisnall { 6427a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6437a984708SDavid Chisnall sentry __s(*this); 6447a984708SDavid Chisnall if (__s) 6457a984708SDavid Chisnall { 64694e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 64794e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 6487a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 6497a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 6507a984708SDavid Chisnall } 6517a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6527a984708SDavid Chisnall } 6537a984708SDavid Chisnall catch (...) 6547a984708SDavid Chisnall { 6557a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 6567a984708SDavid Chisnall } 6577a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6587a984708SDavid Chisnall return *this; 6597a984708SDavid Chisnall} 6607a984708SDavid Chisnall 6617a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 6627a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 6637a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(long double __n) 6647a984708SDavid Chisnall{ 6657a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6667a984708SDavid Chisnall try 6677a984708SDavid Chisnall { 6687a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6697a984708SDavid Chisnall sentry __s(*this); 6707a984708SDavid Chisnall if (__s) 6717a984708SDavid Chisnall { 67294e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 67394e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 6747a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 6757a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 6767a984708SDavid Chisnall } 6777a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6787a984708SDavid Chisnall } 6797a984708SDavid Chisnall catch (...) 6807a984708SDavid Chisnall { 6817a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 6827a984708SDavid Chisnall } 6837a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6847a984708SDavid Chisnall return *this; 6857a984708SDavid Chisnall} 6867a984708SDavid Chisnall 6877a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 6887a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 6897a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::operator<<(const void* __n) 6907a984708SDavid Chisnall{ 6917a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 6927a984708SDavid Chisnall try 6937a984708SDavid Chisnall { 6947a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 6957a984708SDavid Chisnall sentry __s(*this); 6967a984708SDavid Chisnall if (__s) 6977a984708SDavid Chisnall { 69894e3ee44SDavid Chisnall typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 69994e3ee44SDavid Chisnall const _Fp& __f = use_facet<_Fp>(this->getloc()); 7007a984708SDavid Chisnall if (__f.put(*this, *this, this->fill(), __n).failed()) 7017a984708SDavid Chisnall this->setstate(ios_base::badbit | ios_base::failbit); 7027a984708SDavid Chisnall } 7037a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 7047a984708SDavid Chisnall } 7057a984708SDavid Chisnall catch (...) 7067a984708SDavid Chisnall { 7077a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 7087a984708SDavid Chisnall } 7097a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 7107a984708SDavid Chisnall return *this; 7117a984708SDavid Chisnall} 7127a984708SDavid Chisnall 7137a984708SDavid Chisnalltemplate<class _CharT, class _Traits> 7147a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 715d72607e9SDimitry Andric__put_character_sequence(basic_ostream<_CharT, _Traits>& __os, 716d72607e9SDimitry Andric const _CharT* __str, size_t __len) 7177a984708SDavid Chisnall{ 7187a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 7197a984708SDavid Chisnall try 7207a984708SDavid Chisnall { 7217a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 7227a984708SDavid Chisnall typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 7237a984708SDavid Chisnall if (__s) 7247a984708SDavid Chisnall { 72594e3ee44SDavid Chisnall typedef ostreambuf_iterator<_CharT, _Traits> _Ip; 72694e3ee44SDavid Chisnall if (__pad_and_output(_Ip(__os), 727d72607e9SDimitry Andric __str, 7287a984708SDavid Chisnall (__os.flags() & ios_base::adjustfield) == ios_base::left ? 729d72607e9SDimitry Andric __str + __len : 730d72607e9SDimitry Andric __str, 731d72607e9SDimitry Andric __str + __len, 7327a984708SDavid Chisnall __os, 7337a984708SDavid Chisnall __os.fill()).failed()) 7347a984708SDavid Chisnall __os.setstate(ios_base::badbit | ios_base::failbit); 7357a984708SDavid Chisnall } 7367a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 7377a984708SDavid Chisnall } 7387a984708SDavid Chisnall catch (...) 7397a984708SDavid Chisnall { 7407a984708SDavid Chisnall __os.__set_badbit_and_consider_rethrow(); 7417a984708SDavid Chisnall } 7427a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 7437a984708SDavid Chisnall return __os; 7447a984708SDavid Chisnall} 7457a984708SDavid Chisnall 746d72607e9SDimitry Andric 747d72607e9SDimitry Andrictemplate<class _CharT, class _Traits> 748d72607e9SDimitry Andricbasic_ostream<_CharT, _Traits>& 749d72607e9SDimitry Andricoperator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c) 750d72607e9SDimitry Andric{ 751d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, &__c, 1); 752d72607e9SDimitry Andric} 753d72607e9SDimitry Andric 7547a984708SDavid Chisnalltemplate<class _CharT, class _Traits> 7557a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 7567a984708SDavid Chisnalloperator<<(basic_ostream<_CharT, _Traits>& __os, char __cn) 7577a984708SDavid Chisnall{ 7587a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 7597a984708SDavid Chisnall try 7607a984708SDavid Chisnall { 7617a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 7627a984708SDavid Chisnall typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 7637a984708SDavid Chisnall if (__s) 7647a984708SDavid Chisnall { 7657a984708SDavid Chisnall _CharT __c = __os.widen(__cn); 76694e3ee44SDavid Chisnall typedef ostreambuf_iterator<_CharT, _Traits> _Ip; 76794e3ee44SDavid Chisnall if (__pad_and_output(_Ip(__os), 7687a984708SDavid Chisnall &__c, 7697a984708SDavid Chisnall (__os.flags() & ios_base::adjustfield) == ios_base::left ? 7707a984708SDavid Chisnall &__c + 1 : 7717a984708SDavid Chisnall &__c, 7727a984708SDavid Chisnall &__c + 1, 7737a984708SDavid Chisnall __os, 7747a984708SDavid Chisnall __os.fill()).failed()) 7757a984708SDavid Chisnall __os.setstate(ios_base::badbit | ios_base::failbit); 7767a984708SDavid Chisnall } 7777a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 7787a984708SDavid Chisnall } 7797a984708SDavid Chisnall catch (...) 7807a984708SDavid Chisnall { 7817a984708SDavid Chisnall __os.__set_badbit_and_consider_rethrow(); 7827a984708SDavid Chisnall } 7837a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 7847a984708SDavid Chisnall return __os; 7857a984708SDavid Chisnall} 7867a984708SDavid Chisnall 7877a984708SDavid Chisnalltemplate<class _Traits> 7887a984708SDavid Chisnallbasic_ostream<char, _Traits>& 7897a984708SDavid Chisnalloperator<<(basic_ostream<char, _Traits>& __os, char __c) 7907a984708SDavid Chisnall{ 791d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, &__c, 1); 7927a984708SDavid Chisnall} 7937a984708SDavid Chisnall 7947a984708SDavid Chisnalltemplate<class _Traits> 7957a984708SDavid Chisnallbasic_ostream<char, _Traits>& 7967a984708SDavid Chisnalloperator<<(basic_ostream<char, _Traits>& __os, signed char __c) 7977a984708SDavid Chisnall{ 798d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, (char *) &__c, 1); 7997a984708SDavid Chisnall} 8007a984708SDavid Chisnall 8017a984708SDavid Chisnalltemplate<class _Traits> 8027a984708SDavid Chisnallbasic_ostream<char, _Traits>& 8037a984708SDavid Chisnalloperator<<(basic_ostream<char, _Traits>& __os, unsigned char __c) 8047a984708SDavid Chisnall{ 805d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, (char *) &__c, 1); 8067a984708SDavid Chisnall} 8077a984708SDavid Chisnall 8087a984708SDavid Chisnalltemplate<class _CharT, class _Traits> 8097a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 8107a984708SDavid Chisnalloperator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __str) 8117a984708SDavid Chisnall{ 812d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str)); 8137a984708SDavid Chisnall} 8147a984708SDavid Chisnall 8157a984708SDavid Chisnalltemplate<class _CharT, class _Traits> 8167a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 8177a984708SDavid Chisnalloperator<<(basic_ostream<_CharT, _Traits>& __os, const char* __strn) 8187a984708SDavid Chisnall{ 8197a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 8207a984708SDavid Chisnall try 8217a984708SDavid Chisnall { 8227a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 8237a984708SDavid Chisnall typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 8247a984708SDavid Chisnall if (__s) 8257a984708SDavid Chisnall { 82694e3ee44SDavid Chisnall typedef ostreambuf_iterator<_CharT, _Traits> _Ip; 8277a984708SDavid Chisnall size_t __len = char_traits<char>::length(__strn); 8287a984708SDavid Chisnall const int __bs = 100; 8297a984708SDavid Chisnall _CharT __wbb[__bs]; 8307a984708SDavid Chisnall _CharT* __wb = __wbb; 8317a984708SDavid Chisnall unique_ptr<_CharT, void(*)(void*)> __h(0, free); 8327a984708SDavid Chisnall if (__len > __bs) 8337a984708SDavid Chisnall { 8347a984708SDavid Chisnall __wb = (_CharT*)malloc(__len*sizeof(_CharT)); 8357a984708SDavid Chisnall if (__wb == 0) 8367a984708SDavid Chisnall __throw_bad_alloc(); 8377a984708SDavid Chisnall __h.reset(__wb); 8387a984708SDavid Chisnall } 8397a984708SDavid Chisnall for (_CharT* __p = __wb; *__strn != '\0'; ++__strn, ++__p) 8407a984708SDavid Chisnall *__p = __os.widen(*__strn); 84194e3ee44SDavid Chisnall if (__pad_and_output(_Ip(__os), 8427a984708SDavid Chisnall __wb, 8437a984708SDavid Chisnall (__os.flags() & ios_base::adjustfield) == ios_base::left ? 8447a984708SDavid Chisnall __wb + __len : 8457a984708SDavid Chisnall __wb, 8467a984708SDavid Chisnall __wb + __len, 8477a984708SDavid Chisnall __os, 8487a984708SDavid Chisnall __os.fill()).failed()) 8497a984708SDavid Chisnall __os.setstate(ios_base::badbit | ios_base::failbit); 8507a984708SDavid Chisnall } 8517a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 8527a984708SDavid Chisnall } 8537a984708SDavid Chisnall catch (...) 8547a984708SDavid Chisnall { 8557a984708SDavid Chisnall __os.__set_badbit_and_consider_rethrow(); 8567a984708SDavid Chisnall } 8577a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 8587a984708SDavid Chisnall return __os; 8597a984708SDavid Chisnall} 8607a984708SDavid Chisnall 8617a984708SDavid Chisnalltemplate<class _Traits> 8627a984708SDavid Chisnallbasic_ostream<char, _Traits>& 8637a984708SDavid Chisnalloperator<<(basic_ostream<char, _Traits>& __os, const char* __str) 8647a984708SDavid Chisnall{ 865d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str)); 8667a984708SDavid Chisnall} 8677a984708SDavid Chisnall 8687a984708SDavid Chisnalltemplate<class _Traits> 8697a984708SDavid Chisnallbasic_ostream<char, _Traits>& 8707a984708SDavid Chisnalloperator<<(basic_ostream<char, _Traits>& __os, const signed char* __str) 8717a984708SDavid Chisnall{ 872d72607e9SDimitry Andric const char *__s = (const char *) __str; 873d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s)); 8747a984708SDavid Chisnall} 8757a984708SDavid Chisnall 8767a984708SDavid Chisnalltemplate<class _Traits> 8777a984708SDavid Chisnallbasic_ostream<char, _Traits>& 8787a984708SDavid Chisnalloperator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __str) 8797a984708SDavid Chisnall{ 880d72607e9SDimitry Andric const char *__s = (const char *) __str; 881d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s)); 8827a984708SDavid Chisnall} 8837a984708SDavid Chisnall 8847a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 8857a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 8867a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::put(char_type __c) 8877a984708SDavid Chisnall{ 8887a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 8897a984708SDavid Chisnall try 8907a984708SDavid Chisnall { 8917a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 8927a984708SDavid Chisnall sentry __s(*this); 8937a984708SDavid Chisnall if (__s) 8947a984708SDavid Chisnall { 89594e3ee44SDavid Chisnall typedef ostreambuf_iterator<_CharT, _Traits> _Op; 89694e3ee44SDavid Chisnall _Op __o(*this); 8977a984708SDavid Chisnall *__o = __c; 8987a984708SDavid Chisnall if (__o.failed()) 8997a984708SDavid Chisnall this->setstate(ios_base::badbit); 9007a984708SDavid Chisnall } 9017a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 9027a984708SDavid Chisnall } 9037a984708SDavid Chisnall catch (...) 9047a984708SDavid Chisnall { 9057a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 9067a984708SDavid Chisnall } 9077a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 9087a984708SDavid Chisnall return *this; 9097a984708SDavid Chisnall} 9107a984708SDavid Chisnall 9117a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 9127a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 9137a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::write(const char_type* __s, streamsize __n) 9147a984708SDavid Chisnall{ 9157a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 9167a984708SDavid Chisnall try 9177a984708SDavid Chisnall { 9187a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 9197a984708SDavid Chisnall sentry __sen(*this); 9207a984708SDavid Chisnall if (__sen && __n) 9217a984708SDavid Chisnall { 922cfdf2879SDavid Chisnall if (this->rdbuf()->sputn(__s, __n) != __n) 9237a984708SDavid Chisnall this->setstate(ios_base::badbit); 9247a984708SDavid Chisnall } 9257a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 9267a984708SDavid Chisnall } 9277a984708SDavid Chisnall catch (...) 9287a984708SDavid Chisnall { 9297a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 9307a984708SDavid Chisnall } 9317a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 9327a984708SDavid Chisnall return *this; 9337a984708SDavid Chisnall} 9347a984708SDavid Chisnall 9357a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 9367a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 9377a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::flush() 9387a984708SDavid Chisnall{ 9397a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 9407a984708SDavid Chisnall try 9417a984708SDavid Chisnall { 9427a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 9437a984708SDavid Chisnall if (this->rdbuf()) 9447a984708SDavid Chisnall { 9457a984708SDavid Chisnall sentry __s(*this); 9467a984708SDavid Chisnall if (__s) 9477a984708SDavid Chisnall { 9487a984708SDavid Chisnall if (this->rdbuf()->pubsync() == -1) 9497a984708SDavid Chisnall this->setstate(ios_base::badbit); 9507a984708SDavid Chisnall } 9517a984708SDavid Chisnall } 9527a984708SDavid Chisnall#ifndef _LIBCPP_NO_EXCEPTIONS 9537a984708SDavid Chisnall } 9547a984708SDavid Chisnall catch (...) 9557a984708SDavid Chisnall { 9567a984708SDavid Chisnall this->__set_badbit_and_consider_rethrow(); 9577a984708SDavid Chisnall } 9587a984708SDavid Chisnall#endif // _LIBCPP_NO_EXCEPTIONS 9597a984708SDavid Chisnall return *this; 9607a984708SDavid Chisnall} 9617a984708SDavid Chisnall 9627a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 9637a984708SDavid Chisnalltypename basic_ostream<_CharT, _Traits>::pos_type 9647a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::tellp() 9657a984708SDavid Chisnall{ 9667a984708SDavid Chisnall if (this->fail()) 9677a984708SDavid Chisnall return pos_type(-1); 9687a984708SDavid Chisnall return this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); 9697a984708SDavid Chisnall} 9707a984708SDavid Chisnall 9717a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 9727a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 9737a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::seekp(pos_type __pos) 9747a984708SDavid Chisnall{ 9754f7ab58eSDimitry Andric sentry __s(*this); 976854fa44bSDimitry Andric if (!this->fail()) 9777a984708SDavid Chisnall { 9787a984708SDavid Chisnall if (this->rdbuf()->pubseekpos(__pos, ios_base::out) == pos_type(-1)) 9797a984708SDavid Chisnall this->setstate(ios_base::failbit); 9807a984708SDavid Chisnall } 9817a984708SDavid Chisnall return *this; 9827a984708SDavid Chisnall} 9837a984708SDavid Chisnall 9847a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 9857a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 9867a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>::seekp(off_type __off, ios_base::seekdir __dir) 9877a984708SDavid Chisnall{ 9884f7ab58eSDimitry Andric sentry __s(*this); 989854fa44bSDimitry Andric if (!this->fail()) 9904f7ab58eSDimitry Andric { 9914f7ab58eSDimitry Andric if (this->rdbuf()->pubseekoff(__off, __dir, ios_base::out) == pos_type(-1)) 9924f7ab58eSDimitry Andric this->setstate(ios_base::failbit); 9934f7ab58eSDimitry Andric } 9947a984708SDavid Chisnall return *this; 9957a984708SDavid Chisnall} 9967a984708SDavid Chisnall 9977a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 9987a984708SDavid Chisnallinline _LIBCPP_INLINE_VISIBILITY 9997a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 10007a984708SDavid Chisnallendl(basic_ostream<_CharT, _Traits>& __os) 10017a984708SDavid Chisnall{ 10027a984708SDavid Chisnall __os.put(__os.widen('\n')); 10037a984708SDavid Chisnall __os.flush(); 10047a984708SDavid Chisnall return __os; 10057a984708SDavid Chisnall} 10067a984708SDavid Chisnall 10077a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 10087a984708SDavid Chisnallinline _LIBCPP_INLINE_VISIBILITY 10097a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 10107a984708SDavid Chisnallends(basic_ostream<_CharT, _Traits>& __os) 10117a984708SDavid Chisnall{ 10127a984708SDavid Chisnall __os.put(_CharT()); 10137a984708SDavid Chisnall return __os; 10147a984708SDavid Chisnall} 10157a984708SDavid Chisnall 10167a984708SDavid Chisnalltemplate <class _CharT, class _Traits> 10177a984708SDavid Chisnallinline _LIBCPP_INLINE_VISIBILITY 10187a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 10197a984708SDavid Chisnallflush(basic_ostream<_CharT, _Traits>& __os) 10207a984708SDavid Chisnall{ 10217a984708SDavid Chisnall __os.flush(); 10227a984708SDavid Chisnall return __os; 10237a984708SDavid Chisnall} 10247a984708SDavid Chisnall 1025540d2a8bSDimitry Andric#ifndef _LIBCPP_CXX03_LANG 10267a984708SDavid Chisnall 10277a984708SDavid Chisnalltemplate <class _Stream, class _Tp> 10287a984708SDavid Chisnallinline _LIBCPP_INLINE_VISIBILITY 10297a984708SDavid Chisnalltypename enable_if 10307a984708SDavid Chisnall< 10317a984708SDavid Chisnall !is_lvalue_reference<_Stream>::value && 10327a984708SDavid Chisnall is_base_of<ios_base, _Stream>::value, 103394e3ee44SDavid Chisnall _Stream&& 10347a984708SDavid Chisnall>::type 10357a984708SDavid Chisnalloperator<<(_Stream&& __os, const _Tp& __x) 10367a984708SDavid Chisnall{ 10377a984708SDavid Chisnall __os << __x; 103894e3ee44SDavid Chisnall return _VSTD::move(__os); 10397a984708SDavid Chisnall} 10407a984708SDavid Chisnall 1041540d2a8bSDimitry Andric#endif // _LIBCPP_CXX03_LANG 10427a984708SDavid Chisnall 10437a984708SDavid Chisnalltemplate<class _CharT, class _Traits, class _Allocator> 10447a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 10457a984708SDavid Chisnalloperator<<(basic_ostream<_CharT, _Traits>& __os, 10467a984708SDavid Chisnall const basic_string<_CharT, _Traits, _Allocator>& __str) 10477a984708SDavid Chisnall{ 1048d72607e9SDimitry Andric return _VSTD::__put_character_sequence(__os, __str.data(), __str.size()); 10497a984708SDavid Chisnall} 10507a984708SDavid Chisnall 10517a984708SDavid Chisnalltemplate<class _CharT, class _Traits> 1052aed8d94eSDimitry Andricbasic_ostream<_CharT, _Traits>& 1053aed8d94eSDimitry Andricoperator<<(basic_ostream<_CharT, _Traits>& __os, 1054aed8d94eSDimitry Andric const basic_string_view<_CharT, _Traits> __sv) 1055aed8d94eSDimitry Andric{ 1056aed8d94eSDimitry Andric return _VSTD::__put_character_sequence(__os, __sv.data(), __sv.size()); 1057aed8d94eSDimitry Andric} 1058aed8d94eSDimitry Andric 1059aed8d94eSDimitry Andrictemplate <class _CharT, class _Traits> 10607a984708SDavid Chisnallinline _LIBCPP_INLINE_VISIBILITY 10617a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 10627a984708SDavid Chisnalloperator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __ec) 10637a984708SDavid Chisnall{ 10647a984708SDavid Chisnall return __os << __ec.category().name() << ':' << __ec.value(); 10657a984708SDavid Chisnall} 10667a984708SDavid Chisnall 106794e3ee44SDavid Chisnalltemplate<class _CharT, class _Traits, class _Yp> 10687a984708SDavid Chisnallinline _LIBCPP_INLINE_VISIBILITY 10697a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 107094e3ee44SDavid Chisnalloperator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p) 10717a984708SDavid Chisnall{ 10727a984708SDavid Chisnall return __os << __p.get(); 10737a984708SDavid Chisnall} 10747a984708SDavid Chisnall 1075b2c7081bSDimitry Andrictemplate<class _CharT, class _Traits, class _Yp, class _Dp> 1076b2c7081bSDimitry Andricinline _LIBCPP_INLINE_VISIBILITY 1077b2c7081bSDimitry Andrictypename enable_if 1078b2c7081bSDimitry Andric< 10794ba319b5SDimitry Andric is_same<void, typename __void_t<decltype((declval<basic_ostream<_CharT, _Traits>&>() << declval<typename unique_ptr<_Yp, _Dp>::pointer>()))>::type>::value, 1080b2c7081bSDimitry Andric basic_ostream<_CharT, _Traits>& 1081b2c7081bSDimitry Andric>::type 1082b2c7081bSDimitry Andricoperator<<(basic_ostream<_CharT, _Traits>& __os, unique_ptr<_Yp, _Dp> const& __p) 1083b2c7081bSDimitry Andric{ 1084b2c7081bSDimitry Andric return __os << __p.get(); 1085b2c7081bSDimitry Andric} 1086b2c7081bSDimitry Andric 10877a984708SDavid Chisnalltemplate <class _CharT, class _Traits, size_t _Size> 10887a984708SDavid Chisnallbasic_ostream<_CharT, _Traits>& 10897a984708SDavid Chisnalloperator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x) 10907a984708SDavid Chisnall{ 10917a984708SDavid Chisnall return __os << __x.template to_string<_CharT, _Traits> 10927a984708SDavid Chisnall (use_facet<ctype<_CharT> >(__os.getloc()).widen('0'), 10937a984708SDavid Chisnall use_facet<ctype<_CharT> >(__os.getloc()).widen('1')); 10947a984708SDavid Chisnall} 10957a984708SDavid Chisnall 1096*b5893f02SDimitry Andric#ifndef _LIBCPP_DO_NOT_ASSUME_STREAMS_EXPLICIT_INSTANTIATION_IN_DYLIB 1097aed8d94eSDimitry Andric_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>) 1098aed8d94eSDimitry Andric_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>) 10990f5676f4SDimitry Andric#endif 11007a984708SDavid Chisnall 11017a984708SDavid Chisnall_LIBCPP_END_NAMESPACE_STD 11027a984708SDavid Chisnall 11037a984708SDavid Chisnall#endif // _LIBCPP_OSTREAM 1104