|
|
1.1 root 1: /*ident "@(#)ctrans:lib/stream/manip.c 1.1.3.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: manip.c:
12:
13: *****************************************************************************/
14:
15: #include <iostream.h>
16: #include <iomanip.h>
17: #include <ctype.h>
18:
19: istream& ws(istream& i)
20: {
21: if ( !i.ipfx(1) ) return i ;
22: register streambuf *nbp = i.rdbuf();
23: register int c = nbp->sgetc();
24: while (isspace(c)) c = nbp->snextc();
25: if (c == EOF) i.clear(ios::eofbit) ;
26: return i ;
27: }
28:
29: ostream& ends(ostream& i)
30: {
31: return i.put(0) ;
32: }
33:
34: ostream& endl(ostream& i)
35: {
36: i.put('\n') ;
37: i.flush() ;
38: return i ;
39: }
40:
41: static const int basebits = ios::dec|ios::oct|ios::hex ;
42:
43: static ios& setb(ios& i, int b)
44: {
45: switch(b) {
46: case 10 : i.setf(ios::dec,basebits) ; break ;
47: case 8 : i.setf(ios::oct,basebits) ; break ;
48: case 16 : i.setf(ios::hex,basebits) ; break ;
49: default : i.setf(0,basebits) ; break ;
50: }
51: return i ;
52: }
53:
54: SMANIP(int) setbase(int b) { return SMANIP(int)(setb,b) ; }
55:
56: static ios& resetiosflags(ios& i,long b) { i.setf(0,b) ; return i ; }
57: SMANIP(long) resetiosflags(long b) { return SMANIP(long)(resetiosflags,b) ; }
58:
59: static ios& setiosflags(ios& i,long b) { i.setf(b) ; return i ; }
60: SMANIP(long) setiosflags(long b) { return SMANIP(long)(setiosflags,b) ; }
61:
62: static ios& setfill(ios& i,int f) { i.fill(f) ; return i ; }
63: SMANIP(int) setfill(int f) { return SMANIP(int)(setfill,f) ; }
64:
65: static ios& setprecision(ios& i,int p) { i.precision(p) ; return i ; }
66: SMANIP(int) setprecision(int p) { return SMANIP(int)(setprecision,p) ; }
67:
68: static ios& setw(ios& i,int w) { i.width(w) ; return i ; }
69: SMANIP(int) setw(int w) { return SMANIP(int)(setw,w) ; }
70:
71: ios& hex(ios& s) { s.setf(ios::hex,basebits ) ; return s ; }
72: ios& dec(ios& s) { s.setf(ios::dec,basebits ) ; return s ; }
73: ios& oct(ios& s) { s.setf(ios::oct,basebits ) ; return s ; }
74:
75: ostream& flush(ostream& s) { s.flush() ; return s ; }
76:
77: ostream& ostream::operator<<( ios& (*f)(ios&) )
78: {
79: f(*this) ;
80: return *this ;
81: }
82:
83: istream& istream::operator>>( ios& (*f)(ios&) )
84: {
85: f(*this) ;
86: return *this ;
87: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.