|
|
1.1 root 1: /*ident "@(#)ctrans:lib/stream/cstreams.c 1.1.4.1" */
2: /**************************************************************************
3: Copyright (c) 1984 AT&T
4: All Rights Reserved
5:
6: THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
7:
8: The copyright notice above does not evidence any
9: actual or intended publication of such source code.
10:
11: cstreams.c:
12:
13: *****************************************************************************/
14:
15: #include <iostream.h>
16: #include <fstream.h>
17: #include <new.h>
18: #include "streamdefs.h"
19:
20: int Iostream_init::stdstatus = 0 ;
21: int Iostream_init::initcount = 0 ;
22:
23: istream_withassign cin ;
24: ostream_withassign cout ;
25: ostream_withassign cerr ;
26: ostream_withassign clog ;
27:
28: // The value of Iostream_init::stdstatus describes the
29: // The std stream variables
30:
31: // 0 means istream::stdin, ostream::stdout, ostream::stderr, and
32: // ostream::stdlog are unitialized
33: // 1 means they are initialized to filebufs
34: // 2 means they are initialized to stdiobufs
35:
36: Iostream_init::Iostream_init()
37: {
38: ++initcount ;
39: if ( initcount > 1 ) return ;
40:
41: // Be careful. Initialization occurs before constructors
42: // of the standard streams are called.
43: new (&cin) istream_withassign ;
44: new (&cout) ostream_withassign ;
45: new (&cerr) ostream_withassign ;
46: new (&clog) ostream_withassign ;
47: cin = new filebuf(0) ;
48: cout = new filebuf(1) ;
49: cerr = new filebuf(2) ;
50: clog = new filebuf(2) ;
51:
52: cin.setf(~0L,ios::skipws) ;
53: cerr.setf(~0L,ios::unitbuf) ;
54: cin.tie(&cout) ;
55: cerr.tie(&cout) ;
56: clog.tie(&cout) ;
57: stdstatus = 1 ;
58: }
59:
60: Iostream_init::~Iostream_init()
61: {
62: --initcount ;
63: if ( initcount > 0 ) return ;
64: cout.flush() ;
65: cerr.flush() ;
66: clog.flush() ;
67: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.