new implementation with Path and Buffer objects

git-svn-id: svn://anubis/misc/FileLoader@177 bd8a9e45-a331-0410-811e-c64571078777
This commit is contained in:
josh 2009-10-17 20:48:50 +00:00
parent 9a6b50c859
commit be0c3909d1

View File

@ -3,14 +3,63 @@
#define FILELOADER_H FILELOADER_H #define FILELOADER_H FILELOADER_H
#include <string> #include <string>
#include <iostream>
class FileLoader class FileLoader
{ {
public: public:
virtual void * loadFile( class Path
const std::string & fullPath, {
const std::string & shortPath, public:
int & size) = 0; std::string fullPath;
std::string shortPath;
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;
}
Buffer(const Buffer & other)
{
data = other.data;
_refcnt = other._refcnt;
(*refcnt)++;
}
Buffer & operator=(Buffer & me, const Buffer & other)
{
me.data = other.data;
me._refcnt = other._refcnt;
(*me_.refcnt)++;
return me;
}
~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 #endif