|
|
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 _FSTREAM_H ! 26: #define _FSTREAM_H ! 27: #ifdef __GNUG__ ! 28: #pragma interface ! 29: #pragma cplusplus ! 30: #endif ! 31: #include <iostream.h> ! 32: ! 33: class fstreambase : virtual public ios { ! 34: public: ! 35: fstreambase(); ! 36: fstreambase(int fd); ! 37: fstreambase(int fd, char *p, int l); /* Deprecated */ ! 38: fstreambase(const char *name, int mode, int prot=0664); ! 39: void close(); ! 40: filebuf* rdbuf() const { return (filebuf*) ios::rdbuf(); } ! 41: void open(const char *name, int mode, int prot=0664); ! 42: int is_open() const { return rdbuf()->is_open(); } ! 43: void setbuf(char *ptr, int len) { rdbuf()->setbuf(ptr, len); } ! 44: #ifdef _STREAM_COMPAT ! 45: int filedesc() { return rdbuf()->fd(); } ! 46: fstreambase& raw() { rdbuf()->setbuf(NULL, 0); return *this; } ! 47: #endif ! 48: }; ! 49: ! 50: class ifstream : public fstreambase, public istream { ! 51: public: ! 52: ifstream() : fstreambase() { } ! 53: ifstream(int fd) : fstreambase(fd) { } ! 54: ifstream(int fd, char *p, int l) : fstreambase(fd, p, l) { } /*Deprecated*/ ! 55: ifstream(const char *name, int mode=ios::in, int prot=0664) ! 56: : fstreambase(name, mode, prot) { } ! 57: void open(const char *name, int mode=ios::in, int prot=0664) ! 58: { fstreambase::open(name, mode, prot); } ! 59: }; ! 60: ! 61: class ofstream : public fstreambase, public ostream { ! 62: public: ! 63: ofstream() : fstreambase() { } ! 64: ofstream(int fd) : fstreambase(fd) { } ! 65: ofstream(int fd, char *p, int l) : fstreambase(fd, p, l) { } /*Deprecated*/ ! 66: ofstream(const char *name, int mode=ios::out, int prot=0664) ! 67: : fstreambase(name, mode, prot) { } ! 68: void open(const char *name, int mode=ios::out, int prot=0664) ! 69: { fstreambase::open(name, mode, prot); } ! 70: }; ! 71: ! 72: class fstream : public fstreambase, public iostream { ! 73: public: ! 74: fstream() : fstreambase() { } ! 75: fstream(int fd) : fstreambase(fd) { } ! 76: fstream(const char *name, int mode, int prot=0664) ! 77: : fstreambase(name, mode, prot) { } ! 78: fstream(int fd, char *p, int l) : fstreambase(fd, p, l) { } /*Deprecated*/ ! 79: void open(const char *name, int mode, int prot=0664) ! 80: { fstreambase::open(name, mode, prot); } ! 81: }; ! 82: #endif /*!_FSTREAM_H*/
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.