11 Memory::Memory(char *d, size_t s, Mode m)
16 Memory::Memory(char *b, char *e, Mode m)
21 Memory::Memory(const char *cd, size_t 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 void Memory::set_inherit(bool)
47 throw logic_error("Memory::set_inherit");
50 size_t Memory::do_write(const char *buf, size_t size)
52 check_access(M_WRITE);
54 size = min<size_t>(size, end-pos);
55 memcpy(pos, buf, size);
60 size_t Memory::do_read(char *buf, size_t size)
70 size = min<size_t>(size, end-pos);
71 memcpy(buf, pos, size);
76 size_t Memory::put(char c)
78 check_access(M_WRITE);
87 bool Memory::getline(string &line)
97 char *nl = find(pos, end, '\n');
99 pos = (nl==end ? end : nl+1);
105 check_access(M_READ);
113 return static_cast<unsigned char>(*pos++);
116 const Handle &Memory::get_handle(Mode)
118 throw logic_error("Memory::get_handle");
121 SeekOffset Memory::seek(SeekOffset off, SeekType type)
131 throw invalid_argument("Memory::seek");
133 if(new_pos<begin || new_pos>end)
134 throw bad_seek(off, type);