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