|
|
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: static char cinbuf[STREAMBUFSIZE];
24: static char coutbuf[STREAMBUFSIZE];
25:
26: istream_withassign cin ;
27: ostream_withassign cout ;
28: ostream_withassign cerr ;
29: ostream_withassign clog ;
30:
31: // The value of Iostream_init::stdstatus describes the
32: // The std stream variables
33:
34: // 0 means istream::stdin, ostream::stdout, ostream::stderr, and
35: // ostream::stdlog are unitialized
36: // 1 means they are initialized to filebufs
37: // 2 means they are initialized to stdiobufs
38:
39: Iostream_init::Iostream_init()
40: {
41: ++initcount ;
42: if ( initcount > 1 ) return ;
43:
44: // Be careful. Initialization occurs before constructors
45: // of the standard streams are called.
46: new (&cin) istream_withassign ;
47: new (&cout) ostream_withassign ;
48: new (&cerr) ostream_withassign ;
49: new (&clog) ostream_withassign ;
50: cin = new filebuf(0,cinbuf,sizeof(cinbuf)) ;
51: cout = new filebuf(1,coutbuf,sizeof(coutbuf)) ;
52: cerr = new filebuf(2,0,0) ;
53: clog = new filebuf(2) ;
54:
55: cin.setf(ios::skipws,ios::skipws) ;
56: cin.tie(&cout) ;
57: cerr.tie(&cout) ;
58: clog.tie(&cout) ;
59: stdstatus = 1 ;
60: }
61:
62: Iostream_init::~Iostream_init()
63: {
64: --initcount ;
65: if ( initcount > 0 ) return ;
66: cout.flush() ;
67: cerr.flush() ;
68: clog.flush() ;
69: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.