]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/memory.cpp
Add new exception classes for some common errors
[libs/core.git] / source / io / memory.cpp
index c5aee1e0536e040e72187172b2c084269596cce9..19629c446d6c8bfc5e25288e8580deeadbe68c5c 100644 (file)
@@ -1,5 +1,6 @@
 #include <algorithm>
 #include <cstring>
+#include <msp/core/except.h>
 #include "handle.h"
 #include "memory.h"
 
@@ -8,28 +9,7 @@ using namespace std;
 namespace Msp {
 namespace IO {
 
-Memory::Memory(char *d, unsigned s, Mode m)
-{
-       init(d, d+s, m);
-}
-
 Memory::Memory(char *b, char *e, Mode m)
-{
-       init(b, e, m);
-}
-
-Memory::Memory(const char *cd, unsigned s)
-{
-       char *d = const_cast<char *>(cd);
-       init(d, d+s, M_READ);
-}
-
-Memory::Memory(const char *b, const char *e)
-{
-       init(const_cast<char *>(b), const_cast<char *>(e), M_READ);
-}
-
-void Memory::init(char *b, char *e, Mode m)
 {
        begin = b;
        end = e;
@@ -39,20 +19,25 @@ void Memory::init(char *b, char *e, Mode m)
 
 void Memory::set_block(bool)
 {
-       throw logic_error("Memory::set_block");
+       throw unsupported("Memory::set_block");
+}
+
+void Memory::set_inherit(bool)
+{
+       throw unsupported("Memory::set_inherit");
 }
 
-unsigned Memory::do_write(const char *buf, unsigned size)
+size_t Memory::do_write(const char *buf, size_t size)
 {
        check_access(M_WRITE);
 
-       size = min<unsigned>(size, end-pos);
+       size = min<size_t>(size, end-pos);
        memcpy(pos, buf, size);
        pos += size;
        return size;
 }
 
-unsigned Memory::do_read(char *buf, unsigned size)
+size_t Memory::do_read(char *buf, size_t size)
 {
        check_access(M_READ);
 
@@ -62,13 +47,13 @@ unsigned Memory::do_read(char *buf, unsigned size)
                return 0;
        }
 
-       size = min<unsigned>(size, end-pos);
+       size = min<size_t>(size, end-pos);
        memcpy(buf, pos, size);
        pos += size;
        return size;
 }
 
-unsigned Memory::put(char c)
+size_t Memory::put(char c)
 {
        check_access(M_WRITE);
 
@@ -110,7 +95,7 @@ int Memory::get()
 
 const Handle &Memory::get_handle(Mode)
 {
-       throw logic_error("Memory::get_handle");
+       throw unsupported("Memory::get_handle");
 }
 
 SeekOffset Memory::seek(SeekOffset off, SeekType type)