|
|
1.1 ! root 1: /*ident "@(#)ctrans:incl/fstream.h 1.1.1.2" */ ! 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: *****************************************************************************/ ! 12: #ifndef FSTREAMH ! 13: #define FSTREAMH ! 14: ! 15: #include <iostream.h> ! 16: ! 17: class filebuf : public streambuf { /* a stream buffer for files */ ! 18: public: ! 19: filebuf() ; ! 20: filebuf(int fd); ! 21: filebuf(int fd, char* p, int l) ; ! 22: ! 23: int is_open() { return opened ; } ! 24: int fd() { return xfd ; } ! 25: filebuf* open(const char *name, open_mode om, int prot=0664); ! 26: filebuf* attach(int fd) ; ! 27: filebuf* close() ; ! 28: ~filebuf() ; ! 29: public: /* virtuals */ ! 30: virtual int overflow(int=EOF); ! 31: virtual int underflow(); ! 32: virtual int sync() ; ! 33: virtual streampos ! 34: seekoff(streamoff,seek_dir,open_mode) ; ! 35: virtual streambuf* ! 36: setbuf(char* p, int len) ; ! 37: protected: ! 38: int xfd; ! 39: open_mode mode ; ! 40: char opened; ! 41: streampos last_seek ; ! 42: char* in_start; ! 43: int last_op(); ! 44: char lahead[2] ; ! 45: }; ! 46: ! 47: class fstreambase : virtual public ios { ! 48: public: ! 49: fstreambase() ; ! 50: ! 51: fstreambase(const char* name, ! 52: open_mode mode,int prot=0664) ; ! 53: fstreambase(int fd) ; ! 54: fstreambase(int fd, char* p, int l) ; ! 55: ~fstreambase() ; ! 56: void open(const char* name, open_mode mode, int prot=0664) ; ! 57: void attach(int fd); ! 58: void close() ; ! 59: void setbuf(char* p, int l) ; ! 60: filebuf* rdbuf() { return &buf ; } ! 61: private: ! 62: filebuf buf ; ! 63: protected: ! 64: void verify(int) ; ! 65: } ; ! 66: ! 67: class ifstream : public fstreambase, public istream { ! 68: public: ! 69: ifstream() ; ! 70: ifstream(const char* name, ! 71: open_mode mode,int prot=0664) ; ! 72: ifstream(int fd) ; ! 73: ifstream(int fd, char* p, int l) ; ! 74: ~ifstream() ; ! 75: ! 76: filebuf* rdbuf() { return fstreambase::rdbuf(); } ! 77: void open(const char* name, open_mode mode, int prot=0664) ; ! 78: } ; ! 79: ! 80: class ofstream : public fstreambase, public ostream { ! 81: public: ! 82: ofstream() ; ! 83: ofstream(const char* name, ! 84: open_mode mode,int prot=0664) ; ! 85: ofstream(int fd) ; ! 86: ofstream(int fd, char* p, int l) ; ! 87: ~ofstream() ; ! 88: ! 89: filebuf* rdbuf() { return fstreambase::rdbuf(); } ! 90: void open(const char* name, open_mode mode, int prot=0664) ; ! 91: } ; ! 92: ! 93: class fstream : public fstreambase, public iostream { ! 94: public: ! 95: fstream() ; ! 96: ! 97: fstream(const char* name, ! 98: open_mode mode,int prot=0664) ; ! 99: fstream(int fd) ; ! 100: fstream(int fd, char* p, int l) ; ! 101: ~fstream() ; ! 102: filebuf* rdbuf() { return fstreambase::rdbuf(); } ! 103: void open(const char* name, open_mode mode, int prot=0664) ; ! 104: } ; ! 105: ! 106: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.