-/* $Id$
-
-This file is part of libmspio
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
#ifndef MSP_IO_BUFFERED_H_
#define MSP_IO_BUFFERED_H_
class Buffered: public Base
{
+private:
+ Base &below;
+ unsigned buf_size;
+ char *buf;
+ char *begin;
+ char *end;
+ Mode cur_op;
+
public:
Buffered(Base &, unsigned =8192);
- unsigned put(char);
- void flush();
- bool getline(std::string &);
- int get();
- int tell() const;
- Handle get_event_handle();
~Buffered();
-private:
- Base &below;
- unsigned buf_size;
- char *in_buf;
- char *in_ptr;
- unsigned in_avail;
- char *out_buf;
- unsigned out_used;
- void below_closing();
+ void flush();
+
+protected:
unsigned do_write(const char *, unsigned);
unsigned do_read(char *, unsigned);
+public:
+ unsigned put(char);
+
+ bool getline(std::string &);
+ int get();
+
+private:
+ void set_op(Mode);
+public:
+ Mode get_current_op() const { return cur_op; }
+ unsigned get_current_size() const;
+
+ virtual Handle get_event_handle();
};
} // namespace IO