X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fmemory.cpp;fp=source%2Fmemory.cpp;h=0000000000000000000000000000000000000000;hp=6ea130b54ae134478ab40851f4c49cf1d68ad439;hb=6e0fd758970bcb5bad5e3f2454b694cc4d7b4b66;hpb=b97d4e9f86e90254ab9edef7ee62a910f6333c78 diff --git a/source/memory.cpp b/source/memory.cpp deleted file mode 100644 index 6ea130b..0000000 --- a/source/memory.cpp +++ /dev/null @@ -1,127 +0,0 @@ -#include -#include -#include "except.h" -#include "memory.h" - -using namespace std; - -namespace Msp { -namespace IO { - -Memory::Memory(char *d, unsigned s) -{ - init(d, d+s, M_RDWR); -} - -Memory::Memory(char *b, char *e) -{ - init(b, e, M_RDWR); -} - -Memory::Memory(const char *cd, unsigned s) -{ - char *d = const_cast(cd); - init(d, d+s, M_READ); -} - -Memory::Memory(const char *b, const char *e) -{ - init(const_cast(b), const_cast(e), M_READ); -} - -void Memory::init(char *b, char *e, Mode m) -{ - begin = b; - end = e; - pos = begin; - mode = m; -} - -unsigned Memory::do_write(const char *buf, unsigned size) -{ - check_mode(M_WRITE); - - size = min(size, end-pos); - memcpy(pos, buf, size); - pos += size; - return size; -} - -unsigned Memory::do_read(char *buf, unsigned size) -{ - if(pos==end) - { - eof_flag = true; - return 0; - } - - size = min(size, end-pos); - memcpy(buf, pos, size); - pos += size; - return size; -} - -unsigned Memory::put(char c) -{ - check_mode(M_WRITE); - *pos++ = c; - return 1; -} - -bool Memory::getline(string &line) -{ - char *nl = find(pos, end, '\n'); - line.assign(pos, nl); - bool result = (nl!=pos); - pos = nl; - return result; -} - -int Memory::get() -{ - if(pos==end) - { - eof_flag = true; - return -1; - } - - return static_cast(*pos++); -} - -unsigned Memory::seek(int off, SeekType type) -{ - char *new_pos; - if(type==S_BEG) - new_pos = begin+off; - else if(type==S_CUR) - new_pos = pos+off; - else if(type==S_END) - new_pos = end+off; - else - throw InvalidParameterValue("Invalid seek type"); - - if(new_posend) - throw InvalidParameterValue("Invalid seek offset"); - - pos = new_pos; - return pos-begin; -} - -Handle Memory::get_event_handle() -{ - throw Exception("Memory doesn't support events"); -} - -void Memory::check_mode(Mode m) const -{ - if(m==M_WRITE) - { - if(!(mode&M_WRITE)) - throw InvalidState("Memory is not writable"); - if(pos==end) - throw InvalidState("Attempt to write past end of Memory"); - } -} - -} // namespace IO -} // namespace Msp