11 Memory::Memory(char *d, unsigned s)
16 Memory::Memory(char *b, char *e)
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)
58 size = min<unsigned>(size, end-pos);
59 memcpy(buf, pos, size);
64 unsigned Memory::put(char c)
66 check_access(M_WRITE);
71 bool Memory::getline(string &line)
79 char *nl = find(pos, end, '\n');
81 pos = (nl==end ? end : nl+1);
93 return static_cast<unsigned char>(*pos++);
96 SeekOffset Memory::seek(SeekOffset off, SeekType type)
106 throw invalid_argument("Memory::seek");
108 if(new_pos<begin || new_pos>end)
109 throw out_of_range("Memory::seek");