import svn:externals
This commit is contained in:
1 parent
d3da66da4b
commit
7b057bcf86
17 files changed
+2275
No files matched your search
@@ -0,0 +1,88 @@
|
||||
|
||||
#ifndef FILELOADER_H
|
||||
#define FILELOADER_H FILELOADER_H
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
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) { }
|
||||
std::string toString() const
|
||||
{
|
||||
std::string ret;
|
||||
if (shortPath != "")
|
||||
ret += shortPath + ",";
|
||||
if (fullPath != "")
|
||||
ret += fullPath;
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
|
||||
class Buffer
|
||||
{
|
||||
public:
|
||||
char * data;
|
||||
int size;
|
||||
Buffer(int sz)
|
||||
{
|
||||
size = sz;
|
||||
data = new char[size];
|
||||
_refcnt = new int;
|
||||
*_refcnt = 1;
|
||||
m_alloced = true;
|
||||
}
|
||||
Buffer(char * data, int sz)
|
||||
{
|
||||
size = sz;
|
||||
this->data = data;
|
||||
m_alloced = false;
|
||||
}
|
||||
void copy(const Buffer & other)
|
||||
{
|
||||
data = other.data;
|
||||
size = other.size;
|
||||
m_alloced = other.m_alloced;
|
||||
if (m_alloced)
|
||||
{
|
||||
_refcnt = other._refcnt;
|
||||
(*_refcnt)++;
|
||||
}
|
||||
}
|
||||
Buffer(const Buffer & other) { copy(other); }
|
||||
Buffer & operator=(const Buffer & other)
|
||||
{
|
||||
copy(other);
|
||||
return *this;
|
||||
}
|
||||
~Buffer()
|
||||
{
|
||||
if (m_alloced)
|
||||
{
|
||||
(*_refcnt)--;
|
||||
if (*_refcnt < 1)
|
||||
{
|
||||
delete _refcnt;
|
||||
delete data;
|
||||
}
|
||||
}
|
||||
}
|
||||
protected:
|
||||
int * _refcnt;
|
||||
bool m_alloced;
|
||||
};
|
||||
|
||||
virtual int getSize(const Path & path) = 0;
|
||||
virtual Buffer load(const Path & path) = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user