X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fmemory.cpp;h=c5aee1e0536e040e72187172b2c084269596cce9;hp=bc14ff1fd4e832967b93f346a7fd4de29c74f552;hb=481b844ed7d180ffbf70223075f2fc1ffdb5b444;hpb=20b368c89a98f22243a0d496037ad0c43671eea7 diff --git a/source/io/memory.cpp b/source/io/memory.cpp index bc14ff1..c5aee1e 100644 --- a/source/io/memory.cpp +++ b/source/io/memory.cpp @@ -37,6 +37,11 @@ void Memory::init(char *b, char *e, Mode m) mode = m; } +void Memory::set_block(bool) +{ + throw logic_error("Memory::set_block"); +} + unsigned Memory::do_write(const char *buf, unsigned size) { check_access(M_WRITE); @@ -66,6 +71,10 @@ unsigned Memory::do_read(char *buf, unsigned size) unsigned Memory::put(char c) { check_access(M_WRITE); + + if(pos==end) + return 0; + *pos++ = c; return 1; } @@ -99,6 +108,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; @@ -112,9 +126,10 @@ 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; return pos-begin; }