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 void Memory::set_block(bool)
42 throw logic_error("Memory::set_block");
45 unsigned Memory::do_write(const char *buf, unsigned size)
47 check_access(M_WRITE);
49 size = min<unsigned>(size, end-pos);
50 memcpy(pos, buf, size);
55 unsigned Memory::do_read(char *buf, unsigned size)
65 size = min<unsigned>(size, end-pos);
66 memcpy(buf, pos, size);
71 unsigned Memory::put(char c)
73 check_access(M_WRITE);
82 bool Memory::getline(string &line)
92 char *nl = find(pos, end, '\n');
94 pos = (nl==end ? end : nl+1);
100 check_access(M_READ);
108 return static_cast<unsigned char>(*pos++);
111 const Handle &Memory::get_handle(Mode)
113 throw logic_error("Memory::get_handle");
116 SeekOffset Memory::seek(SeekOffset off, SeekType type)
126 throw invalid_argument("Memory::seek");
128 if(new_pos<begin || new_pos>end)
129 throw bad_seek(off, type);