#ifndef FILELOADER_H #define FILELOADER_H FILELOADER_H #include #include class FileLoader { public: class Path { public: std::string fullPath; std::string shortPath; Path() { } Path(const std::string & full_path, const std::string & short_path) : fullPath(full_path), shortPath(short_path) { } }; class Buffer { public: char * data; int size; Buffer(int sz) { size = sz; data = new char[size]; _refcnt = new int; *_refcnt = 1; } void copy(const Buffer & other) { data = other.data; size = other.size; _refcnt = other._refcnt; (*_refcnt)++; } Buffer(const Buffer & other) { copy(other); } Buffer & operator=(const Buffer & other) { copy(other); return *this; } ~Buffer() { (*_refcnt)--; if (*_refcnt < 1) { delete _refcnt; delete data; } } protected: int * _refcnt; }; virtual int getSize(const Path & path) = 0; virtual Buffer load(const Path & path) = 0; }; #endif