19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_IOS_C 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_IOS_C 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_IOS_H 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_ios.h> 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_STREAMBUF 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_streambuf.h> 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_NUMPUNCT_H 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_numpunct.h> 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// basic_ios<>'s non-inline member functions 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Public constructor, taking a streambuf. 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbasic_ios<_CharT, _Traits> 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ::basic_ios(basic_streambuf<_CharT, _Traits>* __streambuf) 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott : ios_base(), _M_cached_ctype(0), 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0) { 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_ios<_CharT, _Traits>::init(__streambuf); 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbasic_streambuf<_CharT, _Traits>* 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbasic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __buf) { 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block basic_streambuf<_CharT, _Traits>* __tmp = _M_streambuf; 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_streambuf = __buf; 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->clear(); 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __tmp; 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbasic_ios<_CharT, _Traits>& 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbasic_ios<_CharT, _Traits>::copyfmt(const basic_ios<_CharT, _Traits>& __x) { 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_invoke_callbacks(erase_event); 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_copy_state(__x); // Inherited from ios_base. 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_cached_ctype = __x._M_cached_ctype; 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_fill = __x._M_fill; 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_tied_ostream = __x._M_tied_ostream; 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_invoke_callbacks(copyfmt_event); 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_set_exception_mask(__x.exceptions()); 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return *this; 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocklocale basic_ios<_CharT, _Traits>::imbue(const locale& __loc) { 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block locale __tmp = ios_base::imbue(__loc); 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_TRY { 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (_M_streambuf) 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_streambuf->pubimbue(__loc); 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // no throwing here 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _M_cached_ctype = &use_facet<ctype<char_type> >(__loc); 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_CATCH_ALL { 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block __tmp = ios_base::imbue(__tmp); 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_handle_exception(ios_base::failbit); 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __tmp; 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Protected constructor and initialization functions. The default 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// constructor creates an uninitialized basic_ios, and init() initializes 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// all of the members to the values in Table 89 of the C++ standard. 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbasic_ios<_CharT, _Traits>::basic_ios() 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block : ios_base(), 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0) 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{} 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockbasic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb) 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->rdbuf(__sb); 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->imbue(locale()); 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->tie(0); 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_set_exception_mask(ios_base::goodbit); 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_clear_nothrow(__sb != 0 ? ios_base::goodbit : ios_base::badbit); 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::flags(ios_base::skipws | ios_base::dec); 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::width(0); 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ios_base::precision(6); 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->fill(widen(' ')); 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // We don't need to worry about any of the three arrays: they are 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block // initialized correctly in ios_base's constructor. 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// This is never called except from within a catch clause. 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _CharT, class _Traits> 1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockvoid basic_ios<_CharT, _Traits>::_M_handle_exception(ios_base::iostate __flag) 1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{ 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block this->_M_setstate_nothrow(__flag); 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block if (this->_M_get_exception_mask() & __flag) 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _STLP_RETHROW; 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block} 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_IOS_C */ 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 128