11 Memory::Memory(char *d, unsigned s, Mode m)
16 Memory::Memory(char *b, char *e, Mode m)
21 Memory::Memory(const char *cd, unsigned s)
23 char *d = const_cast<char *>(cd);
27 Memory::Memory(const char *b, const char *e)
29 init(const_cast<char *>(b), const_cast<char *>(e), M_READ);
32 void Memory::init(char *b, char *e, Mode m)
40 unsigned Memory::do_write(const char *buf, unsigned size)
42 check_access(M_WRITE);
44 size = min<unsigned>(size, end-pos);
45 memcpy(pos, buf, size);
50 unsigned Memory::do_read(char *buf, unsigned size)
60 size = min<unsigned>(size, end-pos);
61 memcpy(buf, pos, size);
66 unsigned Memory::put(char c)
68 check_access(M_WRITE);
77 bool Memory::getline(string &line)
87 char *nl = find(pos, end, '\n');
89 pos = (nl==end ? end : nl+1);
103 return static_cast<unsigned char>(*pos++);
106 SeekOffset Memory::seek(SeekOffset off, SeekType type)
116 throw invalid_argument("Memory::seek");
118 if(new_pos<begin || new_pos>end)
119 throw bad_seek(off, type);