williamr@2: /*
williamr@2:  * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
williamr@2:  *
williamr@2:  * Copyright (c) 1999
williamr@2:  * Silicon Graphics Computer Systems, Inc.
williamr@2:  *
williamr@2:  * Copyright (c) 1999 
williamr@2:  * Boris Fomitchev
williamr@2:  *
williamr@2:  * This material is provided "as is", with absolutely no warranty expressed
williamr@2:  * or implied. Any use is at your own risk.
williamr@2:  *
williamr@2:  * Permission to use or copy this software for any purpose is hereby granted 
williamr@2:  * without fee, provided the above notices are retained on all copies.
williamr@2:  * Permission to modify the code and to distribute modified code is granted,
williamr@2:  * provided the above notices are retained, and a notice that the code was
williamr@2:  * modified is included with the above copyright notice.
williamr@2:  *
williamr@2:  */ 
williamr@2: 
williamr@2: #ifndef _STLP_IOSTREAM
williamr@2: #define _STLP_IOSTREAM
williamr@2: 
williamr@2: # ifndef _STLP_OUTERMOST_HEADER_ID
williamr@2: #  define _STLP_OUTERMOST_HEADER_ID 0x1037
williamr@2: #  include <stl/_prolog.h>
williamr@2: # endif
williamr@2: 
williamr@2: # ifdef _STLP_PRAGMA_ONCE
williamr@2: #  pragma once
williamr@2: # endif
williamr@2: 
williamr@2: # if defined (_STLP_OWN_IOSTREAMS)
williamr@2: 
williamr@2: #include <stl/_iosfwd.h>
williamr@2: #include <stl/_istream.h>
williamr@2: 
williamr@2: _STLP_BEGIN_NAMESPACE
williamr@2: 
williamr@2: #ifndef _STLP_USE_NAMESPACES
williamr@2: // in case of SGI iostreams, we have to rename our streams not to clash with those
williamr@2: // provided in native lib
williamr@2: # define cin _STLP_cin
williamr@2: # define cout _STLP_cout
williamr@2: # define cerr _STLP_cerr
williamr@2: # define clog _STLP_clog
williamr@2: #endif
williamr@2: 
williamr@2: // Note: cin and wcin are both associated with stdio.  The C standard
williamr@2: // (Amendment 1, section 4.6.2.1) says that it is an error to mix
williamr@2: // wide- and narrow-oriented I/O on the same stream.  This implies
williamr@2: // that it is an error to use both cin and wcin in the same C++
williamr@2: // program; the same applies to cout and wcout, and cerr/clog and
williamr@2: // wcerr/wclog.
williamr@2: #if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
williamr@2: _STLP_DECLSPEC ostream& GetCErrStream();
williamr@2: _STLP_DECLSPEC ostream& GetCoutStream();
williamr@2: _STLP_DECLSPEC ostream& GetClogStream();
williamr@2: _STLP_DECLSPEC istream& GetCinStream(); 
williamr@2: 
williamr@2: //#define std::cerr (std::GetCErrStream())
williamr@2: #define cerr GetCErrStream()
williamr@2: //#define std::cin (std::GetCinStream())
williamr@2: #define cin GetCinStream()
williamr@2: //#define std::cout (std::GetCoutStream())
williamr@2: #define cout GetCoutStream()
williamr@2: //#define std::clog (std::GetClogStream())
williamr@2: #define clog GetClogStream()
williamr@2: #else //__LIBSTD_CPP_SYMBIAN32_WSD__
williamr@2: extern _STLP_DECLSPEC istream cin;
williamr@2: extern _STLP_DECLSPEC ostream cout;
williamr@2: extern _STLP_DECLSPEC ostream cerr;
williamr@2: extern _STLP_DECLSPEC ostream clog;
williamr@2: #endif //__LIBSTD_CPP_SYMBIAN32_WSD__
williamr@2: 
williamr@2: # ifndef _STLP_NO_WCHAR_T
williamr@2: # if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
williamr@2: _STLP_DECLSPEC wostream& GetWCErrStream();
williamr@2: _STLP_DECLSPEC wostream& GetWCoutStream();
williamr@2: _STLP_DECLSPEC wostream& GetWClogStream();
williamr@2: _STLP_DECLSPEC wistream& GetWCinStream(); 
williamr@2: 
williamr@2: #define wcerr GetWCErrStream()
williamr@2: #define wcin GetWCinStream()
williamr@2: #define wcout GetWCoutStream()
williamr@2: #define wclog GetWClogStream()
williamr@2: #else //__LIBSTD_CPP_SYMBIAN32_WSD__
williamr@2: extern _STLP_DECLSPEC wistream wcin;
williamr@2: extern _STLP_DECLSPEC wostream wcout;
williamr@2: extern _STLP_DECLSPEC wostream wcerr;
williamr@2: extern _STLP_DECLSPEC wostream wclog;
williamr@2: #endif //__LIBSTD_CPP_SYMBIAN32_WSD__
williamr@2: # endif
williamr@2: 
williamr@2: # ifndef __LOCALE_INITIALIZED
williamr@2: #  define __LOCALE_INITIALIZED
williamr@2: # if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
williamr@2: // Global initializer object, to ensure initialization of locale subsystem.
williamr@2: static ios_base::_Loc_init _LocInit;
williamr@2: # endif
williamr@2: # endif
williamr@2: 
williamr@2: # ifndef __IOS_BASE_INITIALIZED
williamr@2: #  define __IOS_BASE_INITIALIZED
williamr@2: # if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
williamr@2: // Global initializer object, to ensure construction of static objects.
williamr@2: static ios_base::Init _IosInit;
williamr@2: # endif
williamr@2: # endif
williamr@2: 
williamr@2: _STLP_END_NAMESPACE
williamr@2: 
williamr@2: # elif defined ( _STLP_USE_NO_IOSTREAMS )
williamr@2: #  include <stl/_null_stream.h>
williamr@2: # else
williamr@2: 
williamr@2: #  include <wrap_std/iostream>
williamr@2: 
williamr@2: # endif /* STL_USE_NO_IOSTREAMS */
williamr@2: 
williamr@2: # if (_STLP_OUTERMOST_HEADER_ID == 0x1037)
williamr@2: #  include <stl/_epilog.h>
williamr@2: #  undef _STLP_OUTERMOST_HEADER_ID
williamr@2: # endif
williamr@2: 
williamr@2: #endif /* _STLP_IOSTREAM */
williamr@2: 
williamr@2: // Local Variables:
williamr@2: // mode:C++
williamr@2: // End: