3 #include <msp/core/except.h>
12 Memory::Memory(char *d, std::size_t s, Mode m):
16 Memory::Memory(char *b, char *e, Mode m):
24 Memory::Memory(const char *d, std::size_t s):
25 Memory(const_cast<char *>(d), const_cast<char *>(d+s), M_READ)
28 Memory::Memory(const char *b, const char *e):
29 Memory(const_cast<char *>(b), const_cast<char *>(e), M_READ)
32 void Memory::set_block(bool)
34 throw unsupported("Memory::set_block");
37 void Memory::set_inherit(bool)
39 throw unsupported("Memory::set_inherit");
42 size_t Memory::do_write(const char *buf, size_t size)
44 check_access(M_WRITE);
46 size = min<size_t>(size, end-pos);
47 memcpy(pos, buf, size);
52 size_t Memory::do_read(char *buf, size_t size)
62 size = min<size_t>(size, end-pos);
63 memcpy(buf, pos, size);
68 size_t Memory::put(char c)
70 check_access(M_WRITE);
79 bool Memory::getline(string &line)
89 char *nl = find(pos, end, '\n');
91 pos = (nl==end ? end : nl+1);
105 return static_cast<unsigned char>(*pos++);
108 const Handle &Memory::get_handle(Mode)
110 throw unsupported("Memory::get_handle");
113 SeekOffset Memory::seek(SeekOffset off, SeekType type)
123 throw invalid_argument("Memory::seek");
125 if(new_pos<begin || new_pos>end)
126 throw bad_seek(off, type);