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:
parent
9a6b50c859
commit
be0c3909d1
57
FileLoader.h
57
FileLoader.h
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user