X-Git-Url: http://git.tdb.fi/?p=libs%2Fcore.git;a=blobdiff_plain;f=source%2Fio%2Fmemory.h;fp=source%2Fio%2Fmemory.h;h=ba6c4d87995306653d0eda5ca245b95566ffb645;hp=0000000000000000000000000000000000000000;hb=6e0fd758970bcb5bad5e3f2454b694cc4d7b4b66;hpb=b97d4e9f86e90254ab9edef7ee62a910f6333c78;ds=sidebyside diff --git a/source/io/memory.h b/source/io/memory.h new file mode 100644 index 0000000..ba6c4d8 --- /dev/null +++ b/source/io/memory.h @@ -0,0 +1,44 @@ +#ifndef MSP_IO_MEMORY_H_ +#define MSP_IO_MEMORY_H_ + +#include "base.h" +#include "seek.h" + +namespace Msp { +namespace IO { + +class Memory: public Base +{ +private: + char *begin; + char *end; + char *pos; + +public: + Memory(char *, unsigned); + Memory(char *, char *); + Memory(const char *, unsigned); + Memory(const char *, const char *); +private: + void init(char *, char *, Mode); + + virtual unsigned do_write(const char *, unsigned); + virtual unsigned do_read(char *, unsigned); +public: + virtual unsigned put(char); + virtual bool getline(std::string &); + virtual int get(); + + unsigned seek(int, SeekType); + unsigned tell() const { return pos-begin; } + + virtual Handle get_event_handle(); + +private: + void check_mode(Mode) const; +}; + +} // namespace IO +} // namespace Msp + +#endif