#pragma once #include #include namespace gp { namespace system { class system; } 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(system::system&, gp::buffer); static file_description* create(system::system&, gp::buffer); static file_description* remove(system::system&, gp::buffer); }; }