/* filesystem/file.h This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #ifndef __INCLUDED_FILESYSTEM_FILE_H__ #define __INCLUDED_FILESYSTEM_FILE_H__ // C++ headers #include namespace filesystem { /** * @brief an abstract interface to handle file access */ class File { public: File(); virtual ~File(); /// open file for reading virtual bool open(const char * filename) = 0; /// close file virtual void close() = 0; virtual FILE *handle(); /// read bytes virtual size_t read(void *buffer, size_t count) = 0; /// skip bytes virtual void skip(size_t count) = 0; /// name of the file in the virtual filesystem inline const std::string name() const { return file_name; } /// the path holding the virtual filename inline const std::string path() const { return file_path; } protected: std::string file_name; std::string file_path; }; } // namespace filesystem #endif // __INCLUDED_FILESYSTEM_FILE_H__