windows-nt/Source/XPSP1/NT/base/crts/crtw32/stdcpp64/iostream.cpp

70 lines
1.6 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
// iostream -- ios::Init members, initialize standard streams
#include <locale>
#include <fstream>
#include <istream> /* NOT <iostream> */
#include <new>
_STD_BEGIN
// OBJECT DECLARATIONS
int ios_base::Init::_Init_cnt = -1;
static filebuf fin(_Noinit);
static filebuf fout(_Noinit);
_CRTIMP2 istream cin(_Noinit);
_CRTIMP2 ostream cout(_Noinit);
static filebuf ferr(_Noinit);
_CRTIMP2 ostream cerr(_Noinit);
_CRTIMP2 ostream clog(_Noinit);
_CRTIMP2 ios_base::Init::Init()
{ // initialize standard streams first time
bool doinit;
{_Lockit _Lk;
if (0 <= _Init_cnt)
++_Init_cnt, doinit = false;
else
_Init_cnt = 1, doinit = true; }
if (doinit)
{ // initialize standard streams
new (&fin) filebuf(stdin);
new (&fout) filebuf(stdout);
new (&cin) istream(&fin, true);
new (&cout) ostream(&fout, true);
cin.tie(&cout);
new (&ferr) filebuf(stderr);
new (&cerr) ostream(&ferr, true);
cerr.tie(&cout);
cerr.setf(ios_base::unitbuf);
new (&clog) ostream(&ferr, true);
clog.tie(&cout);
}
}
_CRTIMP2 ios_base::Init::~Init()
{ // flush standard streams last time
bool doflush;
{_Lockit _Lk;
if (--_Init_cnt == 0)
doflush = true;
else
doflush = false; }
if (doflush)
{ // flush standard streams
cout.flush();
cerr.flush();
clog.flush();
}
_STD_END
}
const char _PJP_CPP_Copyright[] =
"Portions of this work are derived"
" from 'The Draft Standard C++ Library',\n"
"copyright (c) 1994-1995 by P.J. Plauger,"
" published by Prentice-Hall,\n"
"and are used with permission.";
/*
* Copyright (c) 1994 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
*/