#pragma once #include #include namespace gp { template class buffer; class file_description { std::atomic_int64_t ref_counter; public: virtual void read() = 0; virtual void write() = 0; virtual void set_attr() = 0; virtual void get_attr() = 0; virtual void seek() = 0; virtual void close() = 0; static file_description* open(class system&, gp::buffer); static file_description* create(class system&, gp::buffer); static file_description* remove(class system&, gp::buffer); }; }