Annotation of GNUtools/libg++/libio/iostream.h, revision 1.1

1.1     ! root        1: /*  This is part of libio/iostream, providing -*- C++ -*- input/output. 
        !             2: Copyright (C) 1993 Free Software Foundation
        !             3: 
        !             4: This file is part of the GNU IO Library.  This library is free
        !             5: software; you can redistribute it and/or modify it under the
        !             6: terms of the GNU General Public License as published by the
        !             7: Free Software Foundation; either version 2, or (at your option)
        !             8: any later version.
        !             9: 
        !            10: This library is distributed in the hope that it will be useful,
        !            11: but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            13: GNU General Public License for more details.
        !            14: 
        !            15: You should have received a copy of the GNU General Public License
        !            16: along with GNU CC; see the file COPYING.  If not, write to
        !            17: the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
        !            18: 
        !            19: As a special exception, if you link this library with files
        !            20: compiled with a GNU compiler to produce an executable, this does not cause
        !            21: the resulting executable to be covered by the GNU General Public License.
        !            22: This exception does not however invalidate any other reasons why
        !            23: the executable file might be covered by the GNU General Public License. */
        !            24: 
        !            25: #ifndef _IOSTREAM_H
        !            26: #ifdef __GNUG__
        !            27: #pragma interface
        !            28: #pragma cplusplus
        !            29: #endif
        !            30: #define _IOSTREAM_H
        !            31: 
        !            32: #include <streambuf.h>
        !            33: 
        !            34: class istream; class ostream;
        !            35: typedef ios& (*__manip)(ios&);
        !            36: typedef istream& (*__imanip)(istream&);
        !            37: typedef ostream& (*__omanip)(ostream&);
        !            38: 
        !            39: extern istream& ws(istream& ins);
        !            40: extern ostream& flush(ostream& outs);
        !            41: extern ostream& endl(ostream& outs);
        !            42: extern ostream& ends(ostream& outs);
        !            43: 
        !            44: class ostream : virtual public ios
        !            45: {
        !            46:     // NOTE: If fields are changed, you must fix _fake_ostream in stdstreams.C!
        !            47:     void do_osfx();
        !            48:   public:
        !            49:     ostream() { }
        !            50:     ostream(streambuf* sb, ostream* tied=NULL);
        !            51:     int opfx() {
        !            52:        if (!good()) return 0; else { if (_tie) _tie->flush(); return 1;} }
        !            53:     void osfx() { if (flags() & (ios::unitbuf|ios::stdio))
        !            54:                      do_osfx(); }
        !            55:     ostream& flush();
        !            56:     ostream& put(char c) { _strbuf->sputc(c); return *this; }
        !            57:     ostream& put(unsigned char c) { return put((char)c); }
        !            58: 
        !            59:     ostream& write(const char *s, int n);
        !            60:     ostream& write(const unsigned char *s, int n) { return write((const char*)s, n);}
        !            61:     ostream& put(signed char c) { return put((char)c); }
        !            62:     ostream& write(const signed char *s, int n) { return write((const char*)s, n);}
        !            63:     ostream& write(const void *s, int n) { return write((const char*)s, n);}
        !            64:     ostream& seekp(streampos);
        !            65:     ostream& seekp(streamoff, _seek_dir);
        !            66:     streampos tellp();
        !            67:     ostream& form(const char *format ...);
        !            68:     ostream& vform(const char *format, _IO_va_list args);
        !            69: 
        !            70:     ostream& operator<<(char c);
        !            71:     ostream& operator<<(unsigned char c) { return (*this) << (char)c; }
        !            72:     ostream& operator<<(signed char c) { return (*this) << (char)c; }
        !            73:     ostream& operator<<(const char *s);
        !            74:     ostream& operator<<(const unsigned char *s)
        !            75:        { return (*this) << (const char*)s; }
        !            76:     ostream& operator<<(const signed char *s)
        !            77:        { return (*this) << (const char*)s; }
        !            78:     ostream& operator<<(const void *p);
        !            79:     ostream& operator<<(int n);
        !            80:     ostream& operator<<(unsigned int n);
        !            81:     ostream& operator<<(long n);
        !            82:     ostream& operator<<(unsigned long n);
        !            83: #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
        !            84:     ostream& operator<<(long long n);
        !            85:     ostream& operator<<(unsigned long long n);
        !            86: #endif
        !            87:     ostream& operator<<(short n) {return operator<<((int)n);}
        !            88:     ostream& operator<<(unsigned short n) {return operator<<((unsigned int)n);}
        !            89:     ostream& operator<<(double n);
        !            90:     ostream& operator<<(float n) { return operator<<((double)n); }
        !            91:     ostream& operator<<(__omanip func) { return (*func)(*this); }
        !            92:     ostream& operator<<(__manip func) {(*func)(*this); return *this;}
        !            93:     ostream& operator<<(streambuf*);
        !            94: #ifdef _STREAM_COMPAT
        !            95:     streambuf* ostreambuf() const { return _strbuf; }
        !            96: #endif
        !            97: };
        !            98: 
        !            99: class istream : virtual public ios
        !           100: {
        !           101:     // NOTE: If fields are changed, you must fix _fake_istream in stdstreams.C!
        !           102:     _IO_size_t _gcount;
        !           103: 
        !           104:     int _skip_ws();
        !           105:   public:
        !           106:     istream() { _gcount = 0; }
        !           107:     istream(streambuf* sb, ostream*tied=NULL);
        !           108:     istream& get(char* ptr, int len, char delim = '\n');
        !           109:     istream& get(unsigned char* ptr, int len, char delim = '\n')
        !           110:        { return get((char*)ptr, len, delim); }
        !           111:     istream& get(char& c);
        !           112:     istream& get(unsigned char& c) { return get((char&)c); }
        !           113:     istream& getline(char* ptr, int len, char delim = '\n');
        !           114:     istream& getline(unsigned char* ptr, int len, char delim = '\n')
        !           115:        { return getline((char*)ptr, len, delim); }
        !           116:     istream& get(signed char& c)  { return get((char&)c); }
        !           117:     istream& get(signed char* ptr, int len, char delim = '\n')
        !           118:        { return get((char*)ptr, len, delim); }
        !           119:     istream& getline(signed char* ptr, int len, char delim = '\n')
        !           120:        { return getline((char*)ptr, len, delim); }
        !           121:     istream& read(char *ptr, int n);
        !           122:     istream& read(unsigned char *ptr, int n) { return read((char*)ptr, n); }
        !           123:     istream& read(signed char *ptr, int n) { return read((char*)ptr, n); }
        !           124:     istream& read(void *ptr, int n) { return read((char*)ptr, n); }
        !           125:     istream& get(streambuf& sb, char delim = '\n');
        !           126:     istream& gets(char **s, char delim = '\n');
        !           127:     int ipfx(int need) {
        !           128:        if (!good()) { set(ios::failbit); return 0; }
        !           129:        else {
        !           130:          if (_tie && (need == 0 || rdbuf()->in_avail() < need)) _tie->flush();
        !           131:          if (!need && (flags() & ios::skipws)) return _skip_ws();
        !           132:          else return 1;
        !           133:        }
        !           134:     }
        !           135:     int ipfx0() { // Optimized version of ipfx(0).
        !           136:        if (!good()) { set(ios::failbit); return 0; }
        !           137:        else {
        !           138:          if (_tie) _tie->flush();
        !           139:          if (flags() & ios::skipws) return _skip_ws();
        !           140:          else return 1;
        !           141:        }
        !           142:     }
        !           143:     int ipfx1() { // Optimized version of ipfx(1).
        !           144:        if (!good()) { set(ios::failbit); return 0; }
        !           145:        else {
        !           146:          if (_tie && rdbuf()->in_avail() == 0) _tie->flush();
        !           147:          return 1;
        !           148:        }
        !           149:     }
        !           150:     void isfx() { }
        !           151:     int get() { if (!ipfx1()) return EOF;
        !           152:                else { int ch = _strbuf->sbumpc();
        !           153:                       if (ch == EOF) set(ios::eofbit);
        !           154:                       return ch;
        !           155:                     } }
        !           156:     int peek();
        !           157:     _IO_size_t gcount() { return _gcount; }
        !           158:     istream& ignore(int n=1, int delim = EOF);
        !           159:     istream& seekg(streampos);
        !           160:     istream& seekg(streamoff, _seek_dir);
        !           161:     streampos tellg();
        !           162:     istream& putback(char ch) {
        !           163:        if (good() && _strbuf->sputbackc(ch) == EOF) clear(ios::badbit);
        !           164:        return *this;}
        !           165:     istream& unget() {
        !           166:        if (good() && _strbuf->sungetc() == EOF) clear(ios::badbit);
        !           167:        return *this;}
        !           168:     istream& scan(const char *format ...);
        !           169:     istream& vscan(const char *format, _IO_va_list args);
        !           170: #ifdef _STREAM_COMPAT
        !           171:     istream& unget(char ch) { return putback(ch); }
        !           172:     int skip(int i);
        !           173:     streambuf* istreambuf() const { return _strbuf; }
        !           174: #endif
        !           175: 
        !           176:     istream& operator>>(char*);
        !           177:     istream& operator>>(unsigned char* p) { return operator>>((char*)p); }
        !           178:     istream& operator>>(signed char*p) { return operator>>((char*)p); }
        !           179:     istream& operator>>(char& c);
        !           180:     istream& operator>>(unsigned char& c) {return operator>>((char&)c);}
        !           181:     istream& operator>>(signed char& c) {return operator>>((char&)c);}
        !           182:     istream& operator>>(int&);
        !           183:     istream& operator>>(long&);
        !           184: #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
        !           185:     istream& operator>>(long long&);
        !           186:     istream& operator>>(unsigned long long&);
        !           187: #endif
        !           188:     istream& operator>>(short&);
        !           189:     istream& operator>>(unsigned int&);
        !           190:     istream& operator>>(unsigned long&);
        !           191:     istream& operator>>(unsigned short&);
        !           192:     istream& operator>>(float&);
        !           193:     istream& operator>>(double&);
        !           194:     istream& operator>>( __manip func) {(*func)(*this); return *this;}
        !           195:     istream& operator>>(__imanip func) { return (*func)(*this); }
        !           196:     istream& operator>>(streambuf*);
        !           197: };
        !           198: 
        !           199: 
        !           200: class iostream : public istream, public ostream
        !           201: {
        !           202:     _IO_size_t _gcount;
        !           203:   public:
        !           204:     iostream() { _gcount = 0; }
        !           205:     iostream(streambuf* sb, ostream*tied=NULL);
        !           206: };
        !           207: 
        !           208: extern istream cin;
        !           209: extern ostream cout, cerr, clog; // clog->rdbuf() == cerr->rdbuf()
        !           210: 
        !           211: struct Iostream_init { } ;  // Compatibility hack for AT&T library.
        !           212: 
        !           213: inline ios& dec(ios& i)
        !           214: { i.setf(ios::dec, ios::dec|ios::hex|ios::oct); return i; }
        !           215: inline ios& hex(ios& i)
        !           216: { i.setf(ios::hex, ios::dec|ios::hex|ios::oct); return i; }
        !           217: inline ios& oct(ios& i)
        !           218: { i.setf(ios::oct, ios::dec|ios::hex|ios::oct); return i; }
        !           219: 
        !           220: #endif /*!_IOSTREAM_H*/

unix.superglobalmegacorp.com

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