]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/memory.cpp
Add move semantics to Variant
[libs/core.git] / source / io / memory.cpp
index 0b2d8f4c1b7f49ec7ccb93222d2bf48915abf3fd..0539fdbc4245f3c9c9ada441bf2aefdbcf0c0707 100644 (file)
@@ -1,5 +1,6 @@
 #include <algorithm>
 #include <cstring>
+#include <msp/core/except.h>
 #include "handle.h"
 #include "memory.h"
 
@@ -8,22 +9,34 @@ using namespace std;
 namespace Msp {
 namespace IO {
 
-Memory::Memory(char *b, char *e, Mode m)
+Memory::Memory(char *d, std::size_t s, Mode m):
+       Memory(d, d+s, m)
+{ }
+
+Memory::Memory(char *b, char *e, Mode m):
+       begin(b),
+       end(e),
+       pos(begin)
 {
-       begin = b;
-       end = e;
-       pos = begin;
        mode = m;
 }
 
+Memory::Memory(const char *d, std::size_t s):
+       Memory(const_cast<char *>(d), const_cast<char *>(d+s), M_READ)
+{ }
+
+Memory::Memory(const char *b, const char *e):
+       Memory(const_cast<char *>(b), const_cast<char *>(e), M_READ)
+{ }
+
 void Memory::set_block(bool)
 {
-       throw logic_error("Memory::set_block");
+       throw unsupported("Memory::set_block");
 }
 
 void Memory::set_inherit(bool)
 {
-       throw logic_error("Memory::set_inherit");
+       throw unsupported("Memory::set_inherit");
 }
 
 size_t Memory::do_write(const char *buf, size_t size)
@@ -94,7 +107,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)