]> git.tdb.fi Git - libs/core.git/blob - source/io/memory.h
Merge branch 'io-master'
[libs/core.git] / source / io / memory.h
1 #ifndef MSP_IO_MEMORY_H_
2 #define MSP_IO_MEMORY_H_
3
4 #include "base.h"
5 #include "seek.h"
6
7 namespace Msp {
8 namespace IO {
9
10 class Memory: public Base
11 {
12 private:
13         char *begin;
14         char *end;
15         char *pos;
16
17 public:
18         Memory(char *, unsigned);
19         Memory(char *, char *);
20         Memory(const char *, unsigned);
21         Memory(const char *, const char *);
22 private:
23         void init(char *, char *, Mode);
24
25         virtual unsigned do_write(const char *, unsigned);
26         virtual unsigned do_read(char *, unsigned);
27 public:
28         virtual unsigned put(char);
29         virtual bool getline(std::string &);
30         virtual int get();
31
32         unsigned seek(int, SeekType);
33         unsigned tell() const { return pos-begin; }
34
35         virtual Handle get_event_handle();
36
37 private:
38         void check_mode(Mode) const;
39 };
40
41 } // namespace IO
42 } // namespace Msp
43
44 #endif