1 #ifndef MSP_IO_BUFFERED_H_
2 #define MSP_IO_BUFFERED_H_
4 #include <sigc++/trackable.h>
5 #include <msp/core/mspcore_api.h>
11 class MSPCORE_API Buffered: public Base, public sigc::trackable
15 std::size_t buf_size = 0;
17 char *begin = nullptr;
22 Buffered(Base &, unsigned = 8192);
25 void set_block(bool) override;
26 void set_inherit(bool) override;
31 std::size_t do_write(const char *, std::size_t) override;
32 std::size_t do_read(char *, std::size_t) override;
34 std::size_t put(char) override;
36 bool getline(std::string &) override;
39 const Handle &get_handle(Mode) override;
44 Mode get_current_op() const { return cur_op; }
45 std::size_t get_current_size() const;