]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/base.h
The EOF logic wasn't quite correct
[libs/core.git] / source / io / base.h
index 9447c66fc9a6551dcdcb5644c9333b882de7dcec..394a2c2306e60ebbe9f8bb7ddee0e1d4f37b4403 100644 (file)
@@ -2,6 +2,7 @@
 #define MSP_IO_BASE_H_
 
 #include <sigc++/sigc++.h>
+#include "handle.h"
 #include "mode.h"
 #include "poll.h"
 
@@ -24,9 +25,6 @@ public:
        seeked) and any data buffered by upper layers needs to be flushed. */
        sigc::signal<void> signal_flush_required;
 
-       /** Emitted when the I/O object has closed. */
-       sigc::signal<void> signal_closed;
-
        /** Emitted when the object is deleted.  Mainly for use by
        EventDispatcher. */
        sigc::signal<void> signal_deleted;
@@ -85,8 +83,18 @@ public:
        to end-of-file or non-blocking operation. */
        virtual int get();
 
-       /** Returns the end-of-file flag. */
+protected:
+       void set_eof();
+
+public:
+       /** Returns the end-of-file flag.  Note that some types of objects won't
+       indicate end-of-file until you try to read at least one byte past the actual
+       end, while others indicate it when you've read the last byte. */
        bool eof() const { return eof_flag; }
+
+       /** Returns the system-level handle for the object.  Used by Console to
+       perform redirections. */
+       virtual const Handle &get_handle(Mode);
 };
 
 } // namespace IO