X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fio%2Fmemory.cpp;h=616150f0ab72937e40989ae19dcdd401d5a95981;hb=f7087c847a03a2bb4e9392e41eac4cb1ec37172c;hp=f64b4be9e52edcb6fcae3bb94c99d69595fd4e80;hpb=3f7aa81d9212811b323d89949adcccda212cbed3;p=libs%2Fcore.git diff --git a/source/io/memory.cpp b/source/io/memory.cpp index f64b4be..616150f 100644 --- a/source/io/memory.cpp +++ b/source/io/memory.cpp @@ -8,7 +8,7 @@ using namespace std; namespace Msp { namespace IO { -Memory::Memory(char *d, unsigned s, Mode m) +Memory::Memory(char *d, size_t s, Mode m) { init(d, d+s, m); } @@ -18,7 +18,7 @@ Memory::Memory(char *b, char *e, Mode m) init(b, e, m); } -Memory::Memory(const char *cd, unsigned s) +Memory::Memory(const char *cd, size_t s) { char *d = const_cast(cd); init(d, d+s, M_READ); @@ -37,17 +37,27 @@ void Memory::init(char *b, char *e, Mode m) mode = m; } -unsigned Memory::do_write(const char *buf, unsigned size) +void Memory::set_block(bool) +{ + throw logic_error("Memory::set_block"); +} + +void Memory::set_inherit(bool) +{ + throw logic_error("Memory::set_inherit"); +} + +size_t Memory::do_write(const char *buf, size_t size) { check_access(M_WRITE); - size = min(size, end-pos); + size = min(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); @@ -57,13 +67,13 @@ unsigned Memory::do_read(char *buf, unsigned size) return 0; } - size = min(size, end-pos); + size = min(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); @@ -103,6 +113,11 @@ int Memory::get() return static_cast(*pos++); } +const Handle &Memory::get_handle(Mode) +{ + throw logic_error("Memory::get_handle"); +} + SeekOffset Memory::seek(SeekOffset off, SeekType type) { char *new_pos; @@ -116,7 +131,7 @@ SeekOffset Memory::seek(SeekOffset off, SeekType type) throw invalid_argument("Memory::seek"); if(new_posend) - throw out_of_range("Memory::seek"); + throw bad_seek(off, type); pos = new_pos; eof_flag = false;