3 #include <msp/core/except.h>
12 Memory::Memory(char *b, char *e, Mode m)
20 void Memory::set_block(bool)
22 throw unsupported("Memory::set_block");
25 void Memory::set_inherit(bool)
27 throw unsupported("Memory::set_inherit");
30 size_t Memory::do_write(const char *buf, size_t size)
32 check_access(M_WRITE);
34 size = min<size_t>(size, end-pos);
35 memcpy(pos, buf, size);
40 size_t Memory::do_read(char *buf, size_t size)
50 size = min<size_t>(size, end-pos);
51 memcpy(buf, pos, size);
56 size_t Memory::put(char c)
58 check_access(M_WRITE);
67 bool Memory::getline(string &line)
77 char *nl = find(pos, end, '\n');
79 pos = (nl==end ? end : nl+1);
93 return static_cast<unsigned char>(*pos++);
96 const Handle &Memory::get_handle(Mode)
98 throw unsupported("Memory::get_handle");
101 SeekOffset Memory::seek(SeekOffset off, SeekType type)
111 throw invalid_argument("Memory::seek");
113 if(new_pos<begin || new_pos>end)
114 throw bad_seek(off, type);