Annotation of mstools/h/istream.h, revision 1.1.1.1

1.1       root        1: /***
                      2: *istream.h - definitions/declarations for the istream class
                      3: *
                      4: *      Copyright (c) 1990-1992, Microsoft Corporation.  All rights reserved.
                      5: *
                      6: *Purpose:
                      7: *      This file defines the classes, values, macros, and functions
                      8: *      used by the istream class.
                      9: *      [AT&T C++]
                     10: *
                     11: ****/
                     12: 
                     13: #ifndef _INC_ISTREAM
                     14: #define _INC_ISTREAM
                     15: 
                     16: #include <ios.h>
                     17: 
                     18: // Force word packing to avoid possible -Zp override
                     19: #pragma pack(4)
                     20: 
                     21: #pragma warning(disable:4505)          // disable unwanted /W4 warning
                     22: // #pragma warning(default:4505)       // use this to reenable, if necessary
                     23: 
                     24: 
                     25: typedef long streamoff, streampos;
                     26: 
                     27: class istream : virtual public ios {
                     28: 
                     29: public:
                     30:     istream(streambuf*);
                     31:     virtual ~istream();
                     32: 
                     33:     int  ipfx(int =0);
                     34:     void isfx() { unlockbuf(); unlock(); }
                     35: 
                     36:     inline istream& operator>>(istream& (*_f)(istream&));
                     37:     inline istream& operator>>(ios& (*_f)(ios&));
                     38:     istream& operator>>(char *);
                     39:     inline istream& operator>>(unsigned char *);
                     40:     inline istream& operator>>(signed char *);
                     41:     istream& operator>>(char &);
                     42:     inline istream& operator>>(unsigned char &);
                     43:     inline istream& operator>>(signed char &);
                     44:     istream& operator>>(short &);
                     45:     istream& operator>>(unsigned short &);
                     46:     istream& operator>>(int &);
                     47:     istream& operator>>(unsigned int &);
                     48:     istream& operator>>(long &);
                     49:     istream& operator>>(unsigned long &);
                     50:     istream& operator>>(float &);
                     51:     istream& operator>>(double &);
                     52: //    istream& operator>>(long double &);  // UNDONE:
                     53:     istream& operator>>(streambuf*);
                     54: 
                     55:     int get();
                     56:     istream& get(char *,int,char ='\n');
                     57:     inline istream& get(unsigned char *,int,char ='\n');
                     58:     inline istream& get(signed char *,int,char ='\n');
                     59:     istream& get(char &);
                     60:     inline istream& get(unsigned char &);
                     61:     inline istream& get(signed char &);
                     62:     istream& get(streambuf&,char ='\n');
                     63:     inline istream& getline(char *,int,char ='\n');
                     64:     inline istream& getline(unsigned char *,int,char ='\n');
                     65:     inline istream& getline(signed char *,int,char ='\n');
                     66: 
                     67:     inline istream& ignore(int =1,int =EOF);
                     68:     istream& read(char *,int);
                     69:     inline istream& read(unsigned char *,int);
                     70:     inline istream& read(signed char *,int);
                     71: 
                     72:     int gcount() const { return x_gcount; }
                     73:     int peek();
                     74:     istream& putback(char);
                     75:     int sync();
                     76: 
                     77:     istream& seekg(streampos);
                     78:     istream& seekg(streamoff,ios::seek_dir);
                     79:     streampos tellg();
                     80: 
                     81:     void eatwhite();   // consider: protect and friend with manipulator ws
                     82: protected:
                     83:     istream();
                     84:     istream(const istream&);   // treat as private
                     85:     istream& operator=(streambuf* _isb); // treat as private
                     86:     istream& operator=(const istream& _is) { return operator=(_is.rdbuf()); }
                     87:     int do_ipfx(int);
                     88: 
                     89: private:
                     90:     istream(ios&);
                     91:     int getint(char *);
                     92:     int getdouble(char *, int);
                     93:     int _fGline;
                     94:     int x_gcount;
                     95: };
                     96: 
                     97:     inline istream& istream::operator>>(istream& (*_f)(istream&)) { (*_f)(*this); return *this; }
                     98:     inline istream& istream::operator>>(ios& (*_f)(ios&)) { (*_f)(*this); return *this; }
                     99: 
                    100:     inline istream& istream::operator>>(unsigned char * _s) { return operator>>((char *)_s); }
                    101:     inline istream& istream::operator>>(signed char * _s) { return operator>>((char *)_s); }
                    102: 
                    103:     inline istream& istream::operator>>(unsigned char & _c) { return operator>>((char &) _c); }
                    104:     inline istream& istream::operator>>(signed char & _c) { return operator>>((char &) _c); }
                    105: 
                    106:     inline istream& istream::get(unsigned char * b, int lim ,char delim) { return get((char *)b, lim, delim); }
                    107:     inline istream& istream::get(signed char * b, int lim, char delim) { return get((char *)b, lim, delim); }
                    108: 
                    109:     inline istream& istream::get(unsigned char & _c) { return get((char &)_c); }
                    110:     inline istream& istream::get(signed char & _c) { return get((char &)_c); }
                    111: 
                    112:     inline istream& istream::getline(char * _b,int _lim,char _delim) { lock(); _fGline++; get(_b, _lim, _delim); unlock(); return *this; }
                    113:     inline istream& istream::getline(unsigned char * _b,int _lim,char _delim) { lock(); _fGline++; get((char *)_b, _lim, _delim); unlock(); return *this; }
                    114:     inline istream& istream::getline(signed char * _b,int _lim,char _delim) { lock(); _fGline++; get((char *)_b, _lim, _delim); unlock(); return *this; }
                    115: 
                    116:     inline istream& istream::ignore(int _n,int delim) { lock(); _fGline++; return get((char *)0, _n+1, (char)delim); unlock(); return *this; }
                    117: 
                    118:     inline istream& istream::read(unsigned char * _ptr, int _n) { return read((char *) _ptr, _n); }
                    119:     inline istream& istream::read(signed char * _ptr, int _n) { return read((char *) _ptr, _n); }
                    120: 
                    121: class istream_withassign : public istream {
                    122:        public:
                    123:                istream_withassign();
                    124:                istream_withassign(streambuf*);
                    125:                ~istream_withassign();
                    126:     istream& operator=(const istream& _is) { return istream::operator=(_is); }
                    127:     istream& operator=(streambuf* _isb) { return istream::operator=(_isb); }
                    128: };
                    129: 
                    130: #ifndef _WINDLL           // Warning!  Not available under Windows without QuickWin:
                    131: extern istream_withassign cin;
                    132: #endif
                    133: 
                    134: inline istream& ws(istream& _ins) { _ins.eatwhite(); return _ins; }
                    135: 
                    136: ios&           dec(ios&);
                    137: ios&           hex(ios&);
                    138: ios&           oct(ios&);
                    139: 
                    140: // Restore default packing
                    141: #pragma pack()
                    142: 
                    143: #endif                 // !_INC_ISTREAM

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.