X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fconsole.cpp;h=32b37ef745553811fc4a341d55ad7b3789e256da;hp=9db77377f0c2267ea2997808764b607d36ffcbea;hb=8f2711fba7a2817840038630d9cf9a2060ecbe8e;hpb=c7afef88380ebebc8c2b04e48664d73281ec8848 diff --git a/source/io/console.cpp b/source/io/console.cpp index 9db7737..32b37ef 100644 --- a/source/io/console.cpp +++ b/source/io/console.cpp @@ -4,9 +4,11 @@ #include #include #endif -#include +#include #include "console.h" +using namespace std; + namespace { #ifndef WIN32 @@ -21,7 +23,7 @@ namespace IO { Console::Console(unsigned n) { if(n>2) - throw InvalidParameterValue("Invalid parameter for Console::Console"); + throw invalid_argument("Console::Console"); mode = (n==0 ? M_READ : M_WRITE); @@ -66,7 +68,7 @@ void Console::set_block(bool b) void Console::set_local_echo(bool e) { if(!(mode&M_READ)) - throw InvalidState("Local echo can only be set on input console"); + throw invalid_access(M_READ); #ifdef WIN32 DWORD m; @@ -83,7 +85,7 @@ void Console::set_local_echo(bool e) void Console::set_line_buffer(bool l) { if(!(mode&M_READ)) - throw InvalidState("Line buffering can only be set on input console"); + throw invalid_access(M_READ); #ifdef WIN32 DWORD m; @@ -101,7 +103,7 @@ void Console::set_line_buffer(bool l) void Console::get_size(unsigned &rows, unsigned &cols) { if(!(mode&M_WRITE)) - throw InvalidState("Size can only be queried from an output console"); + throw invalid_access(M_WRITE); #ifdef WIN32 // XXX Figure out how to do this @@ -118,16 +120,16 @@ void Console::get_size(unsigned &rows, unsigned &cols) unsigned Console::do_write(const char *buf, unsigned len) { if(!(mode&M_WRITE)) - throw InvalidState("Console is not writable"); + throw invalid_access(M_WRITE); #ifdef WIN32 DWORD ret; if(!WriteFile(handle, buf, len, &ret, 0)) - throw SystemError("Writing to console failed", GetLastError()); + throw system_error("WriteFile"); #else int ret = ::write(handle, buf, len); if(ret==-1) - throw SystemError("Writing to console failed", errno); + throw system_error("write"); #endif return ret; @@ -136,12 +138,12 @@ unsigned Console::do_write(const char *buf, unsigned len) unsigned Console::do_read(char *buf, unsigned len) { if(!(mode&M_READ)) - throw InvalidState("Console is not readable"); + throw invalid_access(M_READ); #ifdef WIN32 DWORD ret; if(!ReadFile(handle, buf, len, &ret, 0)) - throw SystemError("Reading from console failed", GetLastError()); + throw system_error("ReadFile"); #else int ret = ::read(handle, buf, len); if(ret==-1) @@ -149,7 +151,7 @@ unsigned Console::do_read(char *buf, unsigned len) if(errno==EAGAIN) return 0; else - throw SystemError("Reading from console failed", errno); + throw system_error("read"); } else if(ret==0) eof_flag = true; @@ -176,7 +178,7 @@ Console &Console::instance(unsigned n) case 2: return err; } - throw InvalidParameterValue("Unknown Console instance requested"); + throw invalid_argument("Console::instance"); } Console &cin = Console::instance(0);