#ifndef MSP_IO_CONSOLE_H_
#define MSP_IO_CONSOLE_H_
-#include "base.h"
+#include "eventobject.h"
#include "handle.h"
namespace Msp {
be instantiated directly - use one of the cin, cout and cerr references
instead.
*/
-class Console: public Base
+class Console: public EventObject
{
+public:
+ enum Stream
+ {
+ CIN = 0,
+ COUT = 1,
+ CERR = 2
+ };
+
private:
+ Stream stream;
Handle handle;
- Console(unsigned);
+ Console(Stream);
+ void platform_init();
public:
~Console();
Console. */
void get_size(unsigned &rows, unsigned &cols);
+ /** Redirects input from or output to another I/O object. This performs a
+ system-level redirect. Closing the other object won't affect the
+ redirection. */
+ void redirect(Base &);
+
protected:
virtual unsigned do_write(const char *, unsigned);
virtual unsigned do_read(char *, unsigned);
public:
+ virtual const Handle &get_handle(Mode);
virtual const Handle &get_event_handle() { return handle; }
- static Console &instance(unsigned);
+ static Console &instance(Stream);
};
extern Console &cin;