123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /*
- * CDE - Common Desktop Environment
- *
- * Copyright (c) 1993-2012, The Open Group. All rights reserved.
- *
- * These libraries and programs are free software; you can
- * redistribute them and/or modify them under the terms of the GNU
- * Lesser General Public License as published by the Free Software
- * Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * These libraries and programs are distributed in the hope that
- * they will be useful, but WITHOUT ANY WARRANTY; without even the
- * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU Lesser General Public License for more
- * details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with these libraries and programs; if not, write
- * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
- * Floor, Boston, MA 02110-1301 USA
- */
- /* $XConsortium: streambuf.h /main/4 1996/06/11 17:39:15 cde-hal $ */
- #ifndef _x_streambuf_h
- #define _x_streambuf_h
- #ifdef EOF
- #if EOF!=-1
- #define EOF (-1)
- #endif
- #else
- #define EOF (-1)
- #endif
- typedef long streampos;
- #ifdef STREAM_DEBUG
- #define form x_form
- #define streambuf x_streambuf
- #define filebuf x_filebuf
- #define ios x_ios
- #define iostream x_iostream
- #define istream x_istream
- #define ostream x_ostream
- #define fstream x_fstream
- #define istrstream x_istrstream
- #define ostrstream x_ostrstream
- #endif
- class streambuf
- {
- protected:
- char* base;
- char* end;
- char* put_ptr;
- char* get_ptr;
- int _size;
- int _capacity;
- int _alloc;
- int _pcount;
- int _gcount;
- protected:
- enum notify_action_t { GET, PUT };
- virtual void notify(int) {};
- virtual int overflow() { return EOF;};
- virtual int underflow() { return EOF; };
- int full() { return ( _size == _capacity ) ? 1 : 0 ; };
- int empty() { return ( _size == 0 ) ? 1 : 0 ; };
- void empty_buffer() {
- _size = 0;
- put_ptr = get_ptr = base;
- };
- int move_get_ptr(int);
- int move_put_ptr(int);
- public:
- streambuf();
- streambuf(char* p, int l, int pHasContent = 0);
- virtual ~streambuf();
- virtual int examine() ; // EOF: no char available. Otherwise,
- // return 0.The get_ptr pointer does
- // not move.
- virtual int get() ; // EOF: can't get a char. Otherwise,
- // return 0. The get_ptr pointer does move.
- virtual int putback(char c) ; // EOF: can't put back. Otherwise,
- // putback operation is ok.
- virtual int put(char c) ; // EOF: can't put. Otherwise,
- // put operation is ok.
- int gcount() { return _gcount; };
- void clear_gcount() { _gcount = 0; };
- int pcount() { return _pcount; };
- void clear_pcount() { _pcount = 0; };
- virtual int flush() { return EOF; };
- virtual int seekg(streampos) { return EOF; };
- char* get_buf() { return base; };
- };
- #endif
|