1*4d6fc14bSjoerg// -*- C++ -*- 2*4d6fc14bSjoerg//===-------------------------- ostream -----------------------------------===// 3*4d6fc14bSjoerg// 4*4d6fc14bSjoerg// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*4d6fc14bSjoerg// See https://llvm.org/LICENSE.txt for license information. 6*4d6fc14bSjoerg// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*4d6fc14bSjoerg// 8*4d6fc14bSjoerg//===----------------------------------------------------------------------===// 9*4d6fc14bSjoerg 10*4d6fc14bSjoerg#ifndef _LIBCPP_OSTREAM 11*4d6fc14bSjoerg#define _LIBCPP_OSTREAM 12*4d6fc14bSjoerg 13*4d6fc14bSjoerg/* 14*4d6fc14bSjoerg ostream synopsis 15*4d6fc14bSjoerg 16*4d6fc14bSjoergtemplate <class charT, class traits = char_traits<charT> > 17*4d6fc14bSjoergclass basic_ostream 18*4d6fc14bSjoerg : virtual public basic_ios<charT,traits> 19*4d6fc14bSjoerg{ 20*4d6fc14bSjoergpublic: 21*4d6fc14bSjoerg // types (inherited from basic_ios (27.5.4)): 22*4d6fc14bSjoerg typedef charT char_type; 23*4d6fc14bSjoerg typedef traits traits_type; 24*4d6fc14bSjoerg typedef typename traits_type::int_type int_type; 25*4d6fc14bSjoerg typedef typename traits_type::pos_type pos_type; 26*4d6fc14bSjoerg typedef typename traits_type::off_type off_type; 27*4d6fc14bSjoerg 28*4d6fc14bSjoerg // 27.7.2.2 Constructor/destructor: 29*4d6fc14bSjoerg explicit basic_ostream(basic_streambuf<char_type,traits>* sb); 30*4d6fc14bSjoerg basic_ostream(basic_ostream&& rhs); 31*4d6fc14bSjoerg virtual ~basic_ostream(); 32*4d6fc14bSjoerg 33*4d6fc14bSjoerg // 27.7.2.3 Assign/swap 34*4d6fc14bSjoerg basic_ostream& operator=(const basic_ostream& rhs) = delete; // C++14 35*4d6fc14bSjoerg basic_ostream& operator=(basic_ostream&& rhs); 36*4d6fc14bSjoerg void swap(basic_ostream& rhs); 37*4d6fc14bSjoerg 38*4d6fc14bSjoerg // 27.7.2.4 Prefix/suffix: 39*4d6fc14bSjoerg class sentry; 40*4d6fc14bSjoerg 41*4d6fc14bSjoerg // 27.7.2.6 Formatted output: 42*4d6fc14bSjoerg basic_ostream& operator<<(basic_ostream& (*pf)(basic_ostream&)); 43*4d6fc14bSjoerg basic_ostream& operator<<(basic_ios<charT, traits>& (*pf)(basic_ios<charT,traits>&)); 44*4d6fc14bSjoerg basic_ostream& operator<<(ios_base& (*pf)(ios_base&)); 45*4d6fc14bSjoerg basic_ostream& operator<<(bool n); 46*4d6fc14bSjoerg basic_ostream& operator<<(short n); 47*4d6fc14bSjoerg basic_ostream& operator<<(unsigned short n); 48*4d6fc14bSjoerg basic_ostream& operator<<(int n); 49*4d6fc14bSjoerg basic_ostream& operator<<(unsigned int n); 50*4d6fc14bSjoerg basic_ostream& operator<<(long n); 51*4d6fc14bSjoerg basic_ostream& operator<<(unsigned long n); 52*4d6fc14bSjoerg basic_ostream& operator<<(long long n); 53*4d6fc14bSjoerg basic_ostream& operator<<(unsigned long long n); 54*4d6fc14bSjoerg basic_ostream& operator<<(float f); 55*4d6fc14bSjoerg basic_ostream& operator<<(double f); 56*4d6fc14bSjoerg basic_ostream& operator<<(long double f); 57*4d6fc14bSjoerg basic_ostream& operator<<(const void* p); 58*4d6fc14bSjoerg basic_ostream& operator<<(basic_streambuf<char_type,traits>* sb); 59*4d6fc14bSjoerg basic_ostream& operator<<(nullptr_t); 60*4d6fc14bSjoerg 61*4d6fc14bSjoerg // 27.7.2.7 Unformatted output: 62*4d6fc14bSjoerg basic_ostream& put(char_type c); 63*4d6fc14bSjoerg basic_ostream& write(const char_type* s, streamsize n); 64*4d6fc14bSjoerg basic_ostream& flush(); 65*4d6fc14bSjoerg 66*4d6fc14bSjoerg // 27.7.2.5 seeks: 67*4d6fc14bSjoerg pos_type tellp(); 68*4d6fc14bSjoerg basic_ostream& seekp(pos_type); 69*4d6fc14bSjoerg basic_ostream& seekp(off_type, ios_base::seekdir); 70*4d6fc14bSjoergprotected: 71*4d6fc14bSjoerg basic_ostream(const basic_ostream& rhs) = delete; 72*4d6fc14bSjoerg basic_ostream(basic_ostream&& rhs); 73*4d6fc14bSjoerg // 27.7.3.3 Assign/swap 74*4d6fc14bSjoerg basic_ostream& operator=(basic_ostream& rhs) = delete; 75*4d6fc14bSjoerg basic_ostream& operator=(const basic_ostream&& rhs); 76*4d6fc14bSjoerg void swap(basic_ostream& rhs); 77*4d6fc14bSjoerg}; 78*4d6fc14bSjoerg 79*4d6fc14bSjoerg// 27.7.2.6.4 character inserters 80*4d6fc14bSjoerg 81*4d6fc14bSjoergtemplate<class charT, class traits> 82*4d6fc14bSjoerg basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, charT); 83*4d6fc14bSjoerg 84*4d6fc14bSjoergtemplate<class charT, class traits> 85*4d6fc14bSjoerg basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, char); 86*4d6fc14bSjoerg 87*4d6fc14bSjoergtemplate<class traits> 88*4d6fc14bSjoerg basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, char); 89*4d6fc14bSjoerg 90*4d6fc14bSjoerg// signed and unsigned 91*4d6fc14bSjoerg 92*4d6fc14bSjoergtemplate<class traits> 93*4d6fc14bSjoerg basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, signed char); 94*4d6fc14bSjoerg 95*4d6fc14bSjoergtemplate<class traits> 96*4d6fc14bSjoerg basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, unsigned char); 97*4d6fc14bSjoerg 98*4d6fc14bSjoerg// NTBS 99*4d6fc14bSjoergtemplate<class charT, class traits> 100*4d6fc14bSjoerg basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const charT*); 101*4d6fc14bSjoerg 102*4d6fc14bSjoergtemplate<class charT, class traits> 103*4d6fc14bSjoerg basic_ostream<charT,traits>& operator<<(basic_ostream<charT,traits>&, const char*); 104*4d6fc14bSjoerg 105*4d6fc14bSjoergtemplate<class traits> 106*4d6fc14bSjoerg basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const char*); 107*4d6fc14bSjoerg 108*4d6fc14bSjoerg// signed and unsigned 109*4d6fc14bSjoergtemplate<class traits> 110*4d6fc14bSjoergbasic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const signed char*); 111*4d6fc14bSjoerg 112*4d6fc14bSjoergtemplate<class traits> 113*4d6fc14bSjoerg basic_ostream<char,traits>& operator<<(basic_ostream<char,traits>&, const unsigned char*); 114*4d6fc14bSjoerg 115*4d6fc14bSjoerg// swap: 116*4d6fc14bSjoergtemplate <class charT, class traits> 117*4d6fc14bSjoerg void swap(basic_ostream<charT, traits>& x, basic_ostream<charT, traits>& y); 118*4d6fc14bSjoerg 119*4d6fc14bSjoergtemplate <class charT, class traits> 120*4d6fc14bSjoerg basic_ostream<charT,traits>& endl(basic_ostream<charT,traits>& os); 121*4d6fc14bSjoerg 122*4d6fc14bSjoergtemplate <class charT, class traits> 123*4d6fc14bSjoerg basic_ostream<charT,traits>& ends(basic_ostream<charT,traits>& os); 124*4d6fc14bSjoerg 125*4d6fc14bSjoergtemplate <class charT, class traits> 126*4d6fc14bSjoerg basic_ostream<charT,traits>& flush(basic_ostream<charT,traits>& os); 127*4d6fc14bSjoerg 128*4d6fc14bSjoerg// rvalue stream insertion 129*4d6fc14bSjoergtemplate <class Stream, class T> 130*4d6fc14bSjoerg Stream&& operator<<(Stream&& os, const T& x); 131*4d6fc14bSjoerg 132*4d6fc14bSjoerg} // std 133*4d6fc14bSjoerg 134*4d6fc14bSjoerg*/ 135*4d6fc14bSjoerg 136*4d6fc14bSjoerg#include <__config> 137*4d6fc14bSjoerg#include <ios> 138*4d6fc14bSjoerg#include <streambuf> 139*4d6fc14bSjoerg#include <locale> 140*4d6fc14bSjoerg#include <iterator> 141*4d6fc14bSjoerg#include <bitset> 142*4d6fc14bSjoerg#include <version> 143*4d6fc14bSjoerg 144*4d6fc14bSjoerg#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 145*4d6fc14bSjoerg#pragma GCC system_header 146*4d6fc14bSjoerg#endif 147*4d6fc14bSjoerg 148*4d6fc14bSjoerg_LIBCPP_BEGIN_NAMESPACE_STD 149*4d6fc14bSjoerg 150*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 151*4d6fc14bSjoergclass _LIBCPP_TEMPLATE_VIS basic_ostream 152*4d6fc14bSjoerg : virtual public basic_ios<_CharT, _Traits> 153*4d6fc14bSjoerg{ 154*4d6fc14bSjoergpublic: 155*4d6fc14bSjoerg // types (inherited from basic_ios (27.5.4)): 156*4d6fc14bSjoerg typedef _CharT char_type; 157*4d6fc14bSjoerg typedef _Traits traits_type; 158*4d6fc14bSjoerg typedef typename traits_type::int_type int_type; 159*4d6fc14bSjoerg typedef typename traits_type::pos_type pos_type; 160*4d6fc14bSjoerg typedef typename traits_type::off_type off_type; 161*4d6fc14bSjoerg 162*4d6fc14bSjoerg // 27.7.2.2 Constructor/destructor: 163*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 164*4d6fc14bSjoerg explicit basic_ostream(basic_streambuf<char_type, traits_type>* __sb) 165*4d6fc14bSjoerg { this->init(__sb); } 166*4d6fc14bSjoerg virtual ~basic_ostream(); 167*4d6fc14bSjoergprotected: 168*4d6fc14bSjoerg#ifndef _LIBCPP_CXX03_LANG 169*4d6fc14bSjoerg inline _LIBCPP_INLINE_VISIBILITY 170*4d6fc14bSjoerg basic_ostream(basic_ostream&& __rhs); 171*4d6fc14bSjoerg 172*4d6fc14bSjoerg // 27.7.2.3 Assign/swap 173*4d6fc14bSjoerg inline _LIBCPP_INLINE_VISIBILITY 174*4d6fc14bSjoerg basic_ostream& operator=(basic_ostream&& __rhs); 175*4d6fc14bSjoerg#endif 176*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 177*4d6fc14bSjoerg void swap(basic_ostream& __rhs) 178*4d6fc14bSjoerg { basic_ios<char_type, traits_type>::swap(__rhs); } 179*4d6fc14bSjoerg 180*4d6fc14bSjoerg#ifndef _LIBCPP_CXX03_LANG 181*4d6fc14bSjoerg basic_ostream (const basic_ostream& __rhs) = delete; 182*4d6fc14bSjoerg basic_ostream& operator=(const basic_ostream& __rhs) = delete; 183*4d6fc14bSjoerg#else 184*4d6fc14bSjoerg basic_ostream (const basic_ostream& __rhs); // not defined 185*4d6fc14bSjoerg basic_ostream& operator=(const basic_ostream& __rhs); // not defined 186*4d6fc14bSjoerg#endif 187*4d6fc14bSjoergpublic: 188*4d6fc14bSjoerg 189*4d6fc14bSjoerg // 27.7.2.4 Prefix/suffix: 190*4d6fc14bSjoerg class _LIBCPP_TEMPLATE_VIS sentry; 191*4d6fc14bSjoerg 192*4d6fc14bSjoerg // 27.7.2.6 Formatted output: 193*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 194*4d6fc14bSjoerg basic_ostream& operator<<(basic_ostream& (*__pf)(basic_ostream&)) 195*4d6fc14bSjoerg { return __pf(*this); } 196*4d6fc14bSjoerg 197*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 198*4d6fc14bSjoerg basic_ostream& operator<<(basic_ios<char_type, traits_type>& 199*4d6fc14bSjoerg (*__pf)(basic_ios<char_type,traits_type>&)) 200*4d6fc14bSjoerg { __pf(*this); return *this; } 201*4d6fc14bSjoerg 202*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 203*4d6fc14bSjoerg basic_ostream& operator<<(ios_base& (*__pf)(ios_base&)) 204*4d6fc14bSjoerg { __pf(*this); return *this; } 205*4d6fc14bSjoerg 206*4d6fc14bSjoerg basic_ostream& operator<<(bool __n); 207*4d6fc14bSjoerg basic_ostream& operator<<(short __n); 208*4d6fc14bSjoerg basic_ostream& operator<<(unsigned short __n); 209*4d6fc14bSjoerg basic_ostream& operator<<(int __n); 210*4d6fc14bSjoerg basic_ostream& operator<<(unsigned int __n); 211*4d6fc14bSjoerg basic_ostream& operator<<(long __n); 212*4d6fc14bSjoerg basic_ostream& operator<<(unsigned long __n); 213*4d6fc14bSjoerg basic_ostream& operator<<(long long __n); 214*4d6fc14bSjoerg basic_ostream& operator<<(unsigned long long __n); 215*4d6fc14bSjoerg basic_ostream& operator<<(float __f); 216*4d6fc14bSjoerg basic_ostream& operator<<(double __f); 217*4d6fc14bSjoerg basic_ostream& operator<<(long double __f); 218*4d6fc14bSjoerg basic_ostream& operator<<(const void* __p); 219*4d6fc14bSjoerg basic_ostream& operator<<(basic_streambuf<char_type, traits_type>* __sb); 220*4d6fc14bSjoerg 221*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 222*4d6fc14bSjoerg basic_ostream& operator<<(nullptr_t) 223*4d6fc14bSjoerg { return *this << "nullptr"; } 224*4d6fc14bSjoerg 225*4d6fc14bSjoerg // 27.7.2.7 Unformatted output: 226*4d6fc14bSjoerg basic_ostream& put(char_type __c); 227*4d6fc14bSjoerg basic_ostream& write(const char_type* __s, streamsize __n); 228*4d6fc14bSjoerg basic_ostream& flush(); 229*4d6fc14bSjoerg 230*4d6fc14bSjoerg // 27.7.2.5 seeks: 231*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 232*4d6fc14bSjoerg pos_type tellp(); 233*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 234*4d6fc14bSjoerg basic_ostream& seekp(pos_type __pos); 235*4d6fc14bSjoerg inline _LIBCPP_HIDE_FROM_ABI_AFTER_V1 236*4d6fc14bSjoerg basic_ostream& seekp(off_type __off, ios_base::seekdir __dir); 237*4d6fc14bSjoerg 238*4d6fc14bSjoergprotected: 239*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 240*4d6fc14bSjoerg basic_ostream() {} // extension, intentially does not initialize 241*4d6fc14bSjoerg}; 242*4d6fc14bSjoerg 243*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 244*4d6fc14bSjoergclass _LIBCPP_TEMPLATE_VIS basic_ostream<_CharT, _Traits>::sentry 245*4d6fc14bSjoerg{ 246*4d6fc14bSjoerg bool __ok_; 247*4d6fc14bSjoerg basic_ostream<_CharT, _Traits>& __os_; 248*4d6fc14bSjoerg 249*4d6fc14bSjoerg sentry(const sentry&); // = delete; 250*4d6fc14bSjoerg sentry& operator=(const sentry&); // = delete; 251*4d6fc14bSjoerg 252*4d6fc14bSjoergpublic: 253*4d6fc14bSjoerg explicit sentry(basic_ostream<_CharT, _Traits>& __os); 254*4d6fc14bSjoerg ~sentry(); 255*4d6fc14bSjoerg 256*4d6fc14bSjoerg _LIBCPP_INLINE_VISIBILITY 257*4d6fc14bSjoerg _LIBCPP_EXPLICIT 258*4d6fc14bSjoerg operator bool() const {return __ok_;} 259*4d6fc14bSjoerg}; 260*4d6fc14bSjoerg 261*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 262*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::sentry::sentry(basic_ostream<_CharT, _Traits>& __os) 263*4d6fc14bSjoerg : __ok_(false), 264*4d6fc14bSjoerg __os_(__os) 265*4d6fc14bSjoerg{ 266*4d6fc14bSjoerg if (__os.good()) 267*4d6fc14bSjoerg { 268*4d6fc14bSjoerg if (__os.tie()) 269*4d6fc14bSjoerg __os.tie()->flush(); 270*4d6fc14bSjoerg __ok_ = true; 271*4d6fc14bSjoerg } 272*4d6fc14bSjoerg} 273*4d6fc14bSjoerg 274*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 275*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::sentry::~sentry() 276*4d6fc14bSjoerg{ 277*4d6fc14bSjoerg if (__os_.rdbuf() && __os_.good() && (__os_.flags() & ios_base::unitbuf) 278*4d6fc14bSjoerg && !uncaught_exception()) 279*4d6fc14bSjoerg { 280*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 281*4d6fc14bSjoerg try 282*4d6fc14bSjoerg { 283*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 284*4d6fc14bSjoerg if (__os_.rdbuf()->pubsync() == -1) 285*4d6fc14bSjoerg __os_.setstate(ios_base::badbit); 286*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 287*4d6fc14bSjoerg } 288*4d6fc14bSjoerg catch (...) 289*4d6fc14bSjoerg { 290*4d6fc14bSjoerg } 291*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 292*4d6fc14bSjoerg } 293*4d6fc14bSjoerg} 294*4d6fc14bSjoerg 295*4d6fc14bSjoerg#ifndef _LIBCPP_CXX03_LANG 296*4d6fc14bSjoerg 297*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 298*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::basic_ostream(basic_ostream&& __rhs) 299*4d6fc14bSjoerg{ 300*4d6fc14bSjoerg this->move(__rhs); 301*4d6fc14bSjoerg} 302*4d6fc14bSjoerg 303*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 304*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 305*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator=(basic_ostream&& __rhs) 306*4d6fc14bSjoerg{ 307*4d6fc14bSjoerg swap(__rhs); 308*4d6fc14bSjoerg return *this; 309*4d6fc14bSjoerg} 310*4d6fc14bSjoerg 311*4d6fc14bSjoerg#endif // _LIBCPP_CXX03_LANG 312*4d6fc14bSjoerg 313*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 314*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::~basic_ostream() 315*4d6fc14bSjoerg{ 316*4d6fc14bSjoerg} 317*4d6fc14bSjoerg 318*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 319*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 320*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(basic_streambuf<char_type, traits_type>* __sb) 321*4d6fc14bSjoerg{ 322*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 323*4d6fc14bSjoerg try 324*4d6fc14bSjoerg { 325*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 326*4d6fc14bSjoerg sentry __s(*this); 327*4d6fc14bSjoerg if (__s) 328*4d6fc14bSjoerg { 329*4d6fc14bSjoerg if (__sb) 330*4d6fc14bSjoerg { 331*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 332*4d6fc14bSjoerg try 333*4d6fc14bSjoerg { 334*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 335*4d6fc14bSjoerg typedef istreambuf_iterator<_CharT, _Traits> _Ip; 336*4d6fc14bSjoerg typedef ostreambuf_iterator<_CharT, _Traits> _Op; 337*4d6fc14bSjoerg _Ip __i(__sb); 338*4d6fc14bSjoerg _Ip __eof; 339*4d6fc14bSjoerg _Op __o(*this); 340*4d6fc14bSjoerg size_t __c = 0; 341*4d6fc14bSjoerg for (; __i != __eof; ++__i, ++__o, ++__c) 342*4d6fc14bSjoerg { 343*4d6fc14bSjoerg *__o = *__i; 344*4d6fc14bSjoerg if (__o.failed()) 345*4d6fc14bSjoerg break; 346*4d6fc14bSjoerg } 347*4d6fc14bSjoerg if (__c == 0) 348*4d6fc14bSjoerg this->setstate(ios_base::failbit); 349*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 350*4d6fc14bSjoerg } 351*4d6fc14bSjoerg catch (...) 352*4d6fc14bSjoerg { 353*4d6fc14bSjoerg this->__set_failbit_and_consider_rethrow(); 354*4d6fc14bSjoerg } 355*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 356*4d6fc14bSjoerg } 357*4d6fc14bSjoerg else 358*4d6fc14bSjoerg this->setstate(ios_base::badbit); 359*4d6fc14bSjoerg } 360*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 361*4d6fc14bSjoerg } 362*4d6fc14bSjoerg catch (...) 363*4d6fc14bSjoerg { 364*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 365*4d6fc14bSjoerg } 366*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 367*4d6fc14bSjoerg return *this; 368*4d6fc14bSjoerg} 369*4d6fc14bSjoerg 370*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 371*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 372*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(bool __n) 373*4d6fc14bSjoerg{ 374*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 375*4d6fc14bSjoerg try 376*4d6fc14bSjoerg { 377*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 378*4d6fc14bSjoerg sentry __s(*this); 379*4d6fc14bSjoerg if (__s) 380*4d6fc14bSjoerg { 381*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 382*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 383*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 384*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 385*4d6fc14bSjoerg } 386*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 387*4d6fc14bSjoerg } 388*4d6fc14bSjoerg catch (...) 389*4d6fc14bSjoerg { 390*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 391*4d6fc14bSjoerg } 392*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 393*4d6fc14bSjoerg return *this; 394*4d6fc14bSjoerg} 395*4d6fc14bSjoerg 396*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 397*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 398*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(short __n) 399*4d6fc14bSjoerg{ 400*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 401*4d6fc14bSjoerg try 402*4d6fc14bSjoerg { 403*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 404*4d6fc14bSjoerg sentry __s(*this); 405*4d6fc14bSjoerg if (__s) 406*4d6fc14bSjoerg { 407*4d6fc14bSjoerg ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield; 408*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 409*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 410*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), 411*4d6fc14bSjoerg __flags == ios_base::oct || __flags == ios_base::hex ? 412*4d6fc14bSjoerg static_cast<long>(static_cast<unsigned short>(__n)) : 413*4d6fc14bSjoerg static_cast<long>(__n)).failed()) 414*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 415*4d6fc14bSjoerg } 416*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 417*4d6fc14bSjoerg } 418*4d6fc14bSjoerg catch (...) 419*4d6fc14bSjoerg { 420*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 421*4d6fc14bSjoerg } 422*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 423*4d6fc14bSjoerg return *this; 424*4d6fc14bSjoerg} 425*4d6fc14bSjoerg 426*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 427*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 428*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(unsigned short __n) 429*4d6fc14bSjoerg{ 430*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 431*4d6fc14bSjoerg try 432*4d6fc14bSjoerg { 433*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 434*4d6fc14bSjoerg sentry __s(*this); 435*4d6fc14bSjoerg if (__s) 436*4d6fc14bSjoerg { 437*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 438*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 439*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed()) 440*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 441*4d6fc14bSjoerg } 442*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 443*4d6fc14bSjoerg } 444*4d6fc14bSjoerg catch (...) 445*4d6fc14bSjoerg { 446*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 447*4d6fc14bSjoerg } 448*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 449*4d6fc14bSjoerg return *this; 450*4d6fc14bSjoerg} 451*4d6fc14bSjoerg 452*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 453*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 454*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(int __n) 455*4d6fc14bSjoerg{ 456*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 457*4d6fc14bSjoerg try 458*4d6fc14bSjoerg { 459*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 460*4d6fc14bSjoerg sentry __s(*this); 461*4d6fc14bSjoerg if (__s) 462*4d6fc14bSjoerg { 463*4d6fc14bSjoerg ios_base::fmtflags __flags = ios_base::flags() & ios_base::basefield; 464*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 465*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 466*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), 467*4d6fc14bSjoerg __flags == ios_base::oct || __flags == ios_base::hex ? 468*4d6fc14bSjoerg static_cast<long>(static_cast<unsigned int>(__n)) : 469*4d6fc14bSjoerg static_cast<long>(__n)).failed()) 470*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 471*4d6fc14bSjoerg } 472*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 473*4d6fc14bSjoerg } 474*4d6fc14bSjoerg catch (...) 475*4d6fc14bSjoerg { 476*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 477*4d6fc14bSjoerg } 478*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 479*4d6fc14bSjoerg return *this; 480*4d6fc14bSjoerg} 481*4d6fc14bSjoerg 482*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 483*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 484*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(unsigned int __n) 485*4d6fc14bSjoerg{ 486*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 487*4d6fc14bSjoerg try 488*4d6fc14bSjoerg { 489*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 490*4d6fc14bSjoerg sentry __s(*this); 491*4d6fc14bSjoerg if (__s) 492*4d6fc14bSjoerg { 493*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 494*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 495*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), static_cast<unsigned long>(__n)).failed()) 496*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 497*4d6fc14bSjoerg } 498*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 499*4d6fc14bSjoerg } 500*4d6fc14bSjoerg catch (...) 501*4d6fc14bSjoerg { 502*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 503*4d6fc14bSjoerg } 504*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 505*4d6fc14bSjoerg return *this; 506*4d6fc14bSjoerg} 507*4d6fc14bSjoerg 508*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 509*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 510*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(long __n) 511*4d6fc14bSjoerg{ 512*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 513*4d6fc14bSjoerg try 514*4d6fc14bSjoerg { 515*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 516*4d6fc14bSjoerg sentry __s(*this); 517*4d6fc14bSjoerg if (__s) 518*4d6fc14bSjoerg { 519*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 520*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 521*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 522*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 523*4d6fc14bSjoerg } 524*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 525*4d6fc14bSjoerg } 526*4d6fc14bSjoerg catch (...) 527*4d6fc14bSjoerg { 528*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 529*4d6fc14bSjoerg } 530*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 531*4d6fc14bSjoerg return *this; 532*4d6fc14bSjoerg} 533*4d6fc14bSjoerg 534*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 535*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 536*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(unsigned long __n) 537*4d6fc14bSjoerg{ 538*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 539*4d6fc14bSjoerg try 540*4d6fc14bSjoerg { 541*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 542*4d6fc14bSjoerg sentry __s(*this); 543*4d6fc14bSjoerg if (__s) 544*4d6fc14bSjoerg { 545*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 546*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 547*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 548*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 549*4d6fc14bSjoerg } 550*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 551*4d6fc14bSjoerg } 552*4d6fc14bSjoerg catch (...) 553*4d6fc14bSjoerg { 554*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 555*4d6fc14bSjoerg } 556*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 557*4d6fc14bSjoerg return *this; 558*4d6fc14bSjoerg} 559*4d6fc14bSjoerg 560*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 561*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 562*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(long long __n) 563*4d6fc14bSjoerg{ 564*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 565*4d6fc14bSjoerg try 566*4d6fc14bSjoerg { 567*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 568*4d6fc14bSjoerg sentry __s(*this); 569*4d6fc14bSjoerg if (__s) 570*4d6fc14bSjoerg { 571*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 572*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 573*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 574*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 575*4d6fc14bSjoerg } 576*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 577*4d6fc14bSjoerg } 578*4d6fc14bSjoerg catch (...) 579*4d6fc14bSjoerg { 580*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 581*4d6fc14bSjoerg } 582*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 583*4d6fc14bSjoerg return *this; 584*4d6fc14bSjoerg} 585*4d6fc14bSjoerg 586*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 587*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 588*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(unsigned long long __n) 589*4d6fc14bSjoerg{ 590*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 591*4d6fc14bSjoerg try 592*4d6fc14bSjoerg { 593*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 594*4d6fc14bSjoerg sentry __s(*this); 595*4d6fc14bSjoerg if (__s) 596*4d6fc14bSjoerg { 597*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 598*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 599*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 600*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 601*4d6fc14bSjoerg } 602*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 603*4d6fc14bSjoerg } 604*4d6fc14bSjoerg catch (...) 605*4d6fc14bSjoerg { 606*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 607*4d6fc14bSjoerg } 608*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 609*4d6fc14bSjoerg return *this; 610*4d6fc14bSjoerg} 611*4d6fc14bSjoerg 612*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 613*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 614*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(float __n) 615*4d6fc14bSjoerg{ 616*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 617*4d6fc14bSjoerg try 618*4d6fc14bSjoerg { 619*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 620*4d6fc14bSjoerg sentry __s(*this); 621*4d6fc14bSjoerg if (__s) 622*4d6fc14bSjoerg { 623*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 624*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 625*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), static_cast<double>(__n)).failed()) 626*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 627*4d6fc14bSjoerg } 628*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 629*4d6fc14bSjoerg } 630*4d6fc14bSjoerg catch (...) 631*4d6fc14bSjoerg { 632*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 633*4d6fc14bSjoerg } 634*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 635*4d6fc14bSjoerg return *this; 636*4d6fc14bSjoerg} 637*4d6fc14bSjoerg 638*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 639*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 640*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(double __n) 641*4d6fc14bSjoerg{ 642*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 643*4d6fc14bSjoerg try 644*4d6fc14bSjoerg { 645*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 646*4d6fc14bSjoerg sentry __s(*this); 647*4d6fc14bSjoerg if (__s) 648*4d6fc14bSjoerg { 649*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 650*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 651*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 652*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 653*4d6fc14bSjoerg } 654*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 655*4d6fc14bSjoerg } 656*4d6fc14bSjoerg catch (...) 657*4d6fc14bSjoerg { 658*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 659*4d6fc14bSjoerg } 660*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 661*4d6fc14bSjoerg return *this; 662*4d6fc14bSjoerg} 663*4d6fc14bSjoerg 664*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 665*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 666*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(long double __n) 667*4d6fc14bSjoerg{ 668*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 669*4d6fc14bSjoerg try 670*4d6fc14bSjoerg { 671*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 672*4d6fc14bSjoerg sentry __s(*this); 673*4d6fc14bSjoerg if (__s) 674*4d6fc14bSjoerg { 675*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 676*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 677*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 678*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 679*4d6fc14bSjoerg } 680*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 681*4d6fc14bSjoerg } 682*4d6fc14bSjoerg catch (...) 683*4d6fc14bSjoerg { 684*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 685*4d6fc14bSjoerg } 686*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 687*4d6fc14bSjoerg return *this; 688*4d6fc14bSjoerg} 689*4d6fc14bSjoerg 690*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 691*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 692*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::operator<<(const void* __n) 693*4d6fc14bSjoerg{ 694*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 695*4d6fc14bSjoerg try 696*4d6fc14bSjoerg { 697*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 698*4d6fc14bSjoerg sentry __s(*this); 699*4d6fc14bSjoerg if (__s) 700*4d6fc14bSjoerg { 701*4d6fc14bSjoerg typedef num_put<char_type, ostreambuf_iterator<char_type, traits_type> > _Fp; 702*4d6fc14bSjoerg const _Fp& __f = use_facet<_Fp>(this->getloc()); 703*4d6fc14bSjoerg if (__f.put(*this, *this, this->fill(), __n).failed()) 704*4d6fc14bSjoerg this->setstate(ios_base::badbit | ios_base::failbit); 705*4d6fc14bSjoerg } 706*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 707*4d6fc14bSjoerg } 708*4d6fc14bSjoerg catch (...) 709*4d6fc14bSjoerg { 710*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 711*4d6fc14bSjoerg } 712*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 713*4d6fc14bSjoerg return *this; 714*4d6fc14bSjoerg} 715*4d6fc14bSjoerg 716*4d6fc14bSjoergtemplate<class _CharT, class _Traits> 717*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 718*4d6fc14bSjoerg__put_character_sequence(basic_ostream<_CharT, _Traits>& __os, 719*4d6fc14bSjoerg const _CharT* __str, size_t __len) 720*4d6fc14bSjoerg{ 721*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 722*4d6fc14bSjoerg try 723*4d6fc14bSjoerg { 724*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 725*4d6fc14bSjoerg typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 726*4d6fc14bSjoerg if (__s) 727*4d6fc14bSjoerg { 728*4d6fc14bSjoerg typedef ostreambuf_iterator<_CharT, _Traits> _Ip; 729*4d6fc14bSjoerg if (__pad_and_output(_Ip(__os), 730*4d6fc14bSjoerg __str, 731*4d6fc14bSjoerg (__os.flags() & ios_base::adjustfield) == ios_base::left ? 732*4d6fc14bSjoerg __str + __len : 733*4d6fc14bSjoerg __str, 734*4d6fc14bSjoerg __str + __len, 735*4d6fc14bSjoerg __os, 736*4d6fc14bSjoerg __os.fill()).failed()) 737*4d6fc14bSjoerg __os.setstate(ios_base::badbit | ios_base::failbit); 738*4d6fc14bSjoerg } 739*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 740*4d6fc14bSjoerg } 741*4d6fc14bSjoerg catch (...) 742*4d6fc14bSjoerg { 743*4d6fc14bSjoerg __os.__set_badbit_and_consider_rethrow(); 744*4d6fc14bSjoerg } 745*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 746*4d6fc14bSjoerg return __os; 747*4d6fc14bSjoerg} 748*4d6fc14bSjoerg 749*4d6fc14bSjoerg 750*4d6fc14bSjoergtemplate<class _CharT, class _Traits> 751*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 752*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c) 753*4d6fc14bSjoerg{ 754*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, &__c, 1); 755*4d6fc14bSjoerg} 756*4d6fc14bSjoerg 757*4d6fc14bSjoergtemplate<class _CharT, class _Traits> 758*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 759*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, char __cn) 760*4d6fc14bSjoerg{ 761*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 762*4d6fc14bSjoerg try 763*4d6fc14bSjoerg { 764*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 765*4d6fc14bSjoerg typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 766*4d6fc14bSjoerg if (__s) 767*4d6fc14bSjoerg { 768*4d6fc14bSjoerg _CharT __c = __os.widen(__cn); 769*4d6fc14bSjoerg typedef ostreambuf_iterator<_CharT, _Traits> _Ip; 770*4d6fc14bSjoerg if (__pad_and_output(_Ip(__os), 771*4d6fc14bSjoerg &__c, 772*4d6fc14bSjoerg (__os.flags() & ios_base::adjustfield) == ios_base::left ? 773*4d6fc14bSjoerg &__c + 1 : 774*4d6fc14bSjoerg &__c, 775*4d6fc14bSjoerg &__c + 1, 776*4d6fc14bSjoerg __os, 777*4d6fc14bSjoerg __os.fill()).failed()) 778*4d6fc14bSjoerg __os.setstate(ios_base::badbit | ios_base::failbit); 779*4d6fc14bSjoerg } 780*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 781*4d6fc14bSjoerg } 782*4d6fc14bSjoerg catch (...) 783*4d6fc14bSjoerg { 784*4d6fc14bSjoerg __os.__set_badbit_and_consider_rethrow(); 785*4d6fc14bSjoerg } 786*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 787*4d6fc14bSjoerg return __os; 788*4d6fc14bSjoerg} 789*4d6fc14bSjoerg 790*4d6fc14bSjoergtemplate<class _Traits> 791*4d6fc14bSjoergbasic_ostream<char, _Traits>& 792*4d6fc14bSjoergoperator<<(basic_ostream<char, _Traits>& __os, char __c) 793*4d6fc14bSjoerg{ 794*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, &__c, 1); 795*4d6fc14bSjoerg} 796*4d6fc14bSjoerg 797*4d6fc14bSjoergtemplate<class _Traits> 798*4d6fc14bSjoergbasic_ostream<char, _Traits>& 799*4d6fc14bSjoergoperator<<(basic_ostream<char, _Traits>& __os, signed char __c) 800*4d6fc14bSjoerg{ 801*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, (char *) &__c, 1); 802*4d6fc14bSjoerg} 803*4d6fc14bSjoerg 804*4d6fc14bSjoergtemplate<class _Traits> 805*4d6fc14bSjoergbasic_ostream<char, _Traits>& 806*4d6fc14bSjoergoperator<<(basic_ostream<char, _Traits>& __os, unsigned char __c) 807*4d6fc14bSjoerg{ 808*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, (char *) &__c, 1); 809*4d6fc14bSjoerg} 810*4d6fc14bSjoerg 811*4d6fc14bSjoergtemplate<class _CharT, class _Traits> 812*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 813*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __str) 814*4d6fc14bSjoerg{ 815*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str)); 816*4d6fc14bSjoerg} 817*4d6fc14bSjoerg 818*4d6fc14bSjoergtemplate<class _CharT, class _Traits> 819*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 820*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, const char* __strn) 821*4d6fc14bSjoerg{ 822*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 823*4d6fc14bSjoerg try 824*4d6fc14bSjoerg { 825*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 826*4d6fc14bSjoerg typename basic_ostream<_CharT, _Traits>::sentry __s(__os); 827*4d6fc14bSjoerg if (__s) 828*4d6fc14bSjoerg { 829*4d6fc14bSjoerg typedef ostreambuf_iterator<_CharT, _Traits> _Ip; 830*4d6fc14bSjoerg size_t __len = char_traits<char>::length(__strn); 831*4d6fc14bSjoerg const int __bs = 100; 832*4d6fc14bSjoerg _CharT __wbb[__bs]; 833*4d6fc14bSjoerg _CharT* __wb = __wbb; 834*4d6fc14bSjoerg unique_ptr<_CharT, void(*)(void*)> __h(0, free); 835*4d6fc14bSjoerg if (__len > __bs) 836*4d6fc14bSjoerg { 837*4d6fc14bSjoerg __wb = (_CharT*)malloc(__len*sizeof(_CharT)); 838*4d6fc14bSjoerg if (__wb == 0) 839*4d6fc14bSjoerg __throw_bad_alloc(); 840*4d6fc14bSjoerg __h.reset(__wb); 841*4d6fc14bSjoerg } 842*4d6fc14bSjoerg for (_CharT* __p = __wb; *__strn != '\0'; ++__strn, ++__p) 843*4d6fc14bSjoerg *__p = __os.widen(*__strn); 844*4d6fc14bSjoerg if (__pad_and_output(_Ip(__os), 845*4d6fc14bSjoerg __wb, 846*4d6fc14bSjoerg (__os.flags() & ios_base::adjustfield) == ios_base::left ? 847*4d6fc14bSjoerg __wb + __len : 848*4d6fc14bSjoerg __wb, 849*4d6fc14bSjoerg __wb + __len, 850*4d6fc14bSjoerg __os, 851*4d6fc14bSjoerg __os.fill()).failed()) 852*4d6fc14bSjoerg __os.setstate(ios_base::badbit | ios_base::failbit); 853*4d6fc14bSjoerg } 854*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 855*4d6fc14bSjoerg } 856*4d6fc14bSjoerg catch (...) 857*4d6fc14bSjoerg { 858*4d6fc14bSjoerg __os.__set_badbit_and_consider_rethrow(); 859*4d6fc14bSjoerg } 860*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 861*4d6fc14bSjoerg return __os; 862*4d6fc14bSjoerg} 863*4d6fc14bSjoerg 864*4d6fc14bSjoergtemplate<class _Traits> 865*4d6fc14bSjoergbasic_ostream<char, _Traits>& 866*4d6fc14bSjoergoperator<<(basic_ostream<char, _Traits>& __os, const char* __str) 867*4d6fc14bSjoerg{ 868*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, __str, _Traits::length(__str)); 869*4d6fc14bSjoerg} 870*4d6fc14bSjoerg 871*4d6fc14bSjoergtemplate<class _Traits> 872*4d6fc14bSjoergbasic_ostream<char, _Traits>& 873*4d6fc14bSjoergoperator<<(basic_ostream<char, _Traits>& __os, const signed char* __str) 874*4d6fc14bSjoerg{ 875*4d6fc14bSjoerg const char *__s = (const char *) __str; 876*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s)); 877*4d6fc14bSjoerg} 878*4d6fc14bSjoerg 879*4d6fc14bSjoergtemplate<class _Traits> 880*4d6fc14bSjoergbasic_ostream<char, _Traits>& 881*4d6fc14bSjoergoperator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __str) 882*4d6fc14bSjoerg{ 883*4d6fc14bSjoerg const char *__s = (const char *) __str; 884*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, __s, _Traits::length(__s)); 885*4d6fc14bSjoerg} 886*4d6fc14bSjoerg 887*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 888*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 889*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::put(char_type __c) 890*4d6fc14bSjoerg{ 891*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 892*4d6fc14bSjoerg try 893*4d6fc14bSjoerg { 894*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 895*4d6fc14bSjoerg sentry __s(*this); 896*4d6fc14bSjoerg if (__s) 897*4d6fc14bSjoerg { 898*4d6fc14bSjoerg typedef ostreambuf_iterator<_CharT, _Traits> _Op; 899*4d6fc14bSjoerg _Op __o(*this); 900*4d6fc14bSjoerg *__o = __c; 901*4d6fc14bSjoerg if (__o.failed()) 902*4d6fc14bSjoerg this->setstate(ios_base::badbit); 903*4d6fc14bSjoerg } 904*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 905*4d6fc14bSjoerg } 906*4d6fc14bSjoerg catch (...) 907*4d6fc14bSjoerg { 908*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 909*4d6fc14bSjoerg } 910*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 911*4d6fc14bSjoerg return *this; 912*4d6fc14bSjoerg} 913*4d6fc14bSjoerg 914*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 915*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 916*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::write(const char_type* __s, streamsize __n) 917*4d6fc14bSjoerg{ 918*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 919*4d6fc14bSjoerg try 920*4d6fc14bSjoerg { 921*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 922*4d6fc14bSjoerg sentry __sen(*this); 923*4d6fc14bSjoerg if (__sen && __n) 924*4d6fc14bSjoerg { 925*4d6fc14bSjoerg if (this->rdbuf()->sputn(__s, __n) != __n) 926*4d6fc14bSjoerg this->setstate(ios_base::badbit); 927*4d6fc14bSjoerg } 928*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 929*4d6fc14bSjoerg } 930*4d6fc14bSjoerg catch (...) 931*4d6fc14bSjoerg { 932*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 933*4d6fc14bSjoerg } 934*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 935*4d6fc14bSjoerg return *this; 936*4d6fc14bSjoerg} 937*4d6fc14bSjoerg 938*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 939*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 940*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::flush() 941*4d6fc14bSjoerg{ 942*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 943*4d6fc14bSjoerg try 944*4d6fc14bSjoerg { 945*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 946*4d6fc14bSjoerg if (this->rdbuf()) 947*4d6fc14bSjoerg { 948*4d6fc14bSjoerg sentry __s(*this); 949*4d6fc14bSjoerg if (__s) 950*4d6fc14bSjoerg { 951*4d6fc14bSjoerg if (this->rdbuf()->pubsync() == -1) 952*4d6fc14bSjoerg this->setstate(ios_base::badbit); 953*4d6fc14bSjoerg } 954*4d6fc14bSjoerg } 955*4d6fc14bSjoerg#ifndef _LIBCPP_NO_EXCEPTIONS 956*4d6fc14bSjoerg } 957*4d6fc14bSjoerg catch (...) 958*4d6fc14bSjoerg { 959*4d6fc14bSjoerg this->__set_badbit_and_consider_rethrow(); 960*4d6fc14bSjoerg } 961*4d6fc14bSjoerg#endif // _LIBCPP_NO_EXCEPTIONS 962*4d6fc14bSjoerg return *this; 963*4d6fc14bSjoerg} 964*4d6fc14bSjoerg 965*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 966*4d6fc14bSjoergtypename basic_ostream<_CharT, _Traits>::pos_type 967*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::tellp() 968*4d6fc14bSjoerg{ 969*4d6fc14bSjoerg if (this->fail()) 970*4d6fc14bSjoerg return pos_type(-1); 971*4d6fc14bSjoerg return this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out); 972*4d6fc14bSjoerg} 973*4d6fc14bSjoerg 974*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 975*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 976*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::seekp(pos_type __pos) 977*4d6fc14bSjoerg{ 978*4d6fc14bSjoerg sentry __s(*this); 979*4d6fc14bSjoerg if (!this->fail()) 980*4d6fc14bSjoerg { 981*4d6fc14bSjoerg if (this->rdbuf()->pubseekpos(__pos, ios_base::out) == pos_type(-1)) 982*4d6fc14bSjoerg this->setstate(ios_base::failbit); 983*4d6fc14bSjoerg } 984*4d6fc14bSjoerg return *this; 985*4d6fc14bSjoerg} 986*4d6fc14bSjoerg 987*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 988*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 989*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>::seekp(off_type __off, ios_base::seekdir __dir) 990*4d6fc14bSjoerg{ 991*4d6fc14bSjoerg sentry __s(*this); 992*4d6fc14bSjoerg if (!this->fail()) 993*4d6fc14bSjoerg { 994*4d6fc14bSjoerg if (this->rdbuf()->pubseekoff(__off, __dir, ios_base::out) == pos_type(-1)) 995*4d6fc14bSjoerg this->setstate(ios_base::failbit); 996*4d6fc14bSjoerg } 997*4d6fc14bSjoerg return *this; 998*4d6fc14bSjoerg} 999*4d6fc14bSjoerg 1000*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 1001*4d6fc14bSjoerginline 1002*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1003*4d6fc14bSjoergendl(basic_ostream<_CharT, _Traits>& __os) 1004*4d6fc14bSjoerg{ 1005*4d6fc14bSjoerg __os.put(__os.widen('\n')); 1006*4d6fc14bSjoerg __os.flush(); 1007*4d6fc14bSjoerg return __os; 1008*4d6fc14bSjoerg} 1009*4d6fc14bSjoerg 1010*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 1011*4d6fc14bSjoerginline 1012*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1013*4d6fc14bSjoergends(basic_ostream<_CharT, _Traits>& __os) 1014*4d6fc14bSjoerg{ 1015*4d6fc14bSjoerg __os.put(_CharT()); 1016*4d6fc14bSjoerg return __os; 1017*4d6fc14bSjoerg} 1018*4d6fc14bSjoerg 1019*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 1020*4d6fc14bSjoerginline 1021*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1022*4d6fc14bSjoergflush(basic_ostream<_CharT, _Traits>& __os) 1023*4d6fc14bSjoerg{ 1024*4d6fc14bSjoerg __os.flush(); 1025*4d6fc14bSjoerg return __os; 1026*4d6fc14bSjoerg} 1027*4d6fc14bSjoerg 1028*4d6fc14bSjoerg#ifndef _LIBCPP_CXX03_LANG 1029*4d6fc14bSjoerg 1030*4d6fc14bSjoergtemplate <class _Stream, class _Tp, class = void> 1031*4d6fc14bSjoergstruct __is_ostreamable : false_type { }; 1032*4d6fc14bSjoerg 1033*4d6fc14bSjoergtemplate <class _Stream, class _Tp> 1034*4d6fc14bSjoergstruct __is_ostreamable<_Stream, _Tp, decltype( 1035*4d6fc14bSjoerg declval<_Stream>() << declval<_Tp>(), void() 1036*4d6fc14bSjoerg)> : true_type { }; 1037*4d6fc14bSjoerg 1038*4d6fc14bSjoergtemplate <class _Stream, class _Tp, class = typename enable_if< 1039*4d6fc14bSjoerg _And<is_base_of<ios_base, _Stream>, 1040*4d6fc14bSjoerg __is_ostreamable<_Stream&, const _Tp&>>::value 1041*4d6fc14bSjoerg>::type> 1042*4d6fc14bSjoerg_LIBCPP_INLINE_VISIBILITY 1043*4d6fc14bSjoerg_Stream&& operator<<(_Stream&& __os, const _Tp& __x) 1044*4d6fc14bSjoerg{ 1045*4d6fc14bSjoerg __os << __x; 1046*4d6fc14bSjoerg return _VSTD::move(__os); 1047*4d6fc14bSjoerg} 1048*4d6fc14bSjoerg 1049*4d6fc14bSjoerg#endif // _LIBCPP_CXX03_LANG 1050*4d6fc14bSjoerg 1051*4d6fc14bSjoergtemplate<class _CharT, class _Traits, class _Allocator> 1052*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1053*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, 1054*4d6fc14bSjoerg const basic_string<_CharT, _Traits, _Allocator>& __str) 1055*4d6fc14bSjoerg{ 1056*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, __str.data(), __str.size()); 1057*4d6fc14bSjoerg} 1058*4d6fc14bSjoerg 1059*4d6fc14bSjoergtemplate<class _CharT, class _Traits> 1060*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1061*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, 1062*4d6fc14bSjoerg basic_string_view<_CharT, _Traits> __sv) 1063*4d6fc14bSjoerg{ 1064*4d6fc14bSjoerg return _VSTD::__put_character_sequence(__os, __sv.data(), __sv.size()); 1065*4d6fc14bSjoerg} 1066*4d6fc14bSjoerg 1067*4d6fc14bSjoergtemplate <class _CharT, class _Traits> 1068*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 1069*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1070*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __ec) 1071*4d6fc14bSjoerg{ 1072*4d6fc14bSjoerg return __os << __ec.category().name() << ':' << __ec.value(); 1073*4d6fc14bSjoerg} 1074*4d6fc14bSjoerg 1075*4d6fc14bSjoergtemplate<class _CharT, class _Traits, class _Yp> 1076*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 1077*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1078*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p) 1079*4d6fc14bSjoerg{ 1080*4d6fc14bSjoerg return __os << __p.get(); 1081*4d6fc14bSjoerg} 1082*4d6fc14bSjoerg 1083*4d6fc14bSjoergtemplate<class _CharT, class _Traits, class _Yp, class _Dp> 1084*4d6fc14bSjoerginline _LIBCPP_INLINE_VISIBILITY 1085*4d6fc14bSjoergtypename enable_if 1086*4d6fc14bSjoerg< 1087*4d6fc14bSjoerg is_same<void, typename __void_t<decltype((declval<basic_ostream<_CharT, _Traits>&>() << declval<typename unique_ptr<_Yp, _Dp>::pointer>()))>::type>::value, 1088*4d6fc14bSjoerg basic_ostream<_CharT, _Traits>& 1089*4d6fc14bSjoerg>::type 1090*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, unique_ptr<_Yp, _Dp> const& __p) 1091*4d6fc14bSjoerg{ 1092*4d6fc14bSjoerg return __os << __p.get(); 1093*4d6fc14bSjoerg} 1094*4d6fc14bSjoerg 1095*4d6fc14bSjoergtemplate <class _CharT, class _Traits, size_t _Size> 1096*4d6fc14bSjoergbasic_ostream<_CharT, _Traits>& 1097*4d6fc14bSjoergoperator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Size>& __x) 1098*4d6fc14bSjoerg{ 1099*4d6fc14bSjoerg return __os << __x.template to_string<_CharT, _Traits> 1100*4d6fc14bSjoerg (use_facet<ctype<_CharT> >(__os.getloc()).widen('0'), 1101*4d6fc14bSjoerg use_facet<ctype<_CharT> >(__os.getloc()).widen('1')); 1102*4d6fc14bSjoerg} 1103*4d6fc14bSjoerg 1104*4d6fc14bSjoerg_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<char>) 1105*4d6fc14bSjoerg_LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS basic_ostream<wchar_t>) 1106*4d6fc14bSjoerg 1107*4d6fc14bSjoerg_LIBCPP_END_NAMESPACE_STD 1108*4d6fc14bSjoerg 1109*4d6fc14bSjoerg#endif // _LIBCPP_OSTREAM 1110