This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/Borland/BCC55/Include/ios.cc

214 lines
4.8 KiB
C++
Raw Permalink Normal View History

#ifndef __IOS_CC
#define __IOS_CC
#pragma option push -b -a8 -pc -Vx- -Ve- -w-inl -w-aus -w-sig
/***************************************************************************
*
* ios.cc - Definition for the Standard Library iostreams
*
***************************************************************************
*
* Copyright (c) 1994-1999 Rogue Wave Software, Inc. All Rights Reserved.
*
* This computer software is owned by Rogue Wave Software, Inc. and is
* protected by U.S. copyright laws and other laws and by international
* treaties. This computer software is furnished by Rogue Wave Software,
* Inc. pursuant to a written license agreement and may be used, copied,
* transmitted, and stored only in accordance with the terms of such
* license and with the inclusion of the above copyright notice. This
* computer software or any other copies thereof may not be provided or
* otherwise made available to any other person.
*
* U.S. Government Restricted Rights. This computer software is provided
* with Restricted Rights. Use, duplication, or disclosure by the
* Government is subject to restrictions as set forth in subparagraph (c)
* (1) (ii) of The Rights in Technical Data and Computer Software clause
* at DFARS 252.227-7013 or subparagraphs (c) (1) and (2) of the
* Commercial Computer Software <EFBFBD> Restricted Rights at 48 CFR 52.227-19,
* as applicable. Manufacturer is Rogue Wave Software, Inc., 5500
* Flatiron Parkway, Boulder, Colorado 80301 USA.
*
**************************************************************************/
#include <streambuf>
#include <iosfwd>
#ifndef _RWSTD_NO_NAMESPACE
namespace std {
#endif
extern istream _RWSTDExport cin;
#ifndef _RWSTD_NO_WIDE_CHAR
extern wistream _RWSTDExport wcin;
#endif
/*
* Class basic_ios member functions
*/
/*
* basic_ios(basic_streambuf *)
*/
template<class charT, class traits>
basic_ios<charT, traits>::
basic_ios(basic_streambuf<charT, traits> *sb_arg)
{
init(sb_arg);
}
/*
* ~basic_ios()
*/
template<class charT, class traits>
basic_ios<charT, traits>::~basic_ios()
{
}
/*
* ios_type& copyfmt(const ios_type& )
*/
template<class charT, class traits>
basic_ios<charT, traits>&
basic_ios<charT, traits>::
copyfmt(const basic_ios<charT, traits>& rhs)
{
#ifdef _RWSTD_MULTI_THREAD
_RWSTDGuard guard(this->__stream_mutex);
#endif
__tiestr = rhs.__tiestr;
__fillch = rhs.__fillch;
ios_base::_RW_UNSAFE_copyfmt( rhs );
_Except = rhs._Except;
return *this;
}
/*
* basic_ostream *tie(basic_ostream *)
*/
template<class charT, class traits>
basic_ostream<charT, traits> *
basic_ios<charT, traits>::
tie(basic_ostream<charT, traits> *tie_arg)
{
#ifdef _RWSTD_MULTI_THREAD
_RWSTDGuard guard(this->__stream_mutex);
#endif
basic_ostream<charT, traits> *temp = __tiestr;
__tiestr = tie_arg;
return temp;
}
/*
* basic_streambuf *rdbuf(basic_streambuf *)
*/
template<class charT, class traits>
_TYPENAME basic_ios<charT, traits>::streambuf_type*
basic_ios<charT, traits>::
rdbuf( basic_streambuf<charT, traits> *sb)
{
#ifdef _RWSTD_MULTI_THREAD
_RWSTDGuard guard(this->__stream_mutex);
#endif
basic_streambuf<charT, traits> *temp = __sb;
__sb = sb;
if ( sb==0 )
__state |= ios_base::badbit;
_RW_UNSAFE_clear();
return temp;
}
/*
* basic_ios()
*/
template<class charT, class traits>
basic_ios<charT, traits>::basic_ios()
{
init(0);
}
/*
* void imbue(const locale& )
*/
template<class charT, class traits>
locale basic_ios<charT, traits>::
imbue(const locale& loc)
{
locale tmp = getloc();
((ios_base *)(this))->imbue(loc);
if ( rdbuf() )
rdbuf()->pubimbue(loc);
return tmp;
}
/*
* void init(basic_streambuf *)
*/
template<class charT, class traits>
void basic_ios<charT, traits>::
init(basic_streambuf<charT, traits> *sb)
{
#ifdef _RWSTD_MULTI_THREAD
_RWSTDGuard guard(this->__stream_mutex);
#endif
__sb = sb;
__tiestr = 0;
if(__sb)
__state = goodbit;
else
__state = badbit;
_Except = goodbit;
__fmtfl = skipws | dec;
__wide = 0;
__prec = 6;
__fillch = widen(' ');
}
/*
* lock the buffer
*/
#ifdef _RWSTD_MULTI_THREAD
template <class charT, class traits>
basic_ios<charT,traits>& __lock(basic_ios<charT,traits>& strm)
{
if ( strm.rdbuf() )
strm.rdbuf()->_RW_lock_buffer();
return strm;
}
template <class charT, class traits>
basic_ios<charT,traits>& __unlock(basic_ios<charT,traits>& strm)
{
if ( strm.rdbuf() )
strm.rdbuf()->_RW_unlock_buffer();
return strm;
}
#endif // _RWSTD_MULTI_THREAD
#ifndef _RWSTD_NO_NAMESPACE
}
#endif
#pragma option pop
#endif /* __IOS_CC */