mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
UTIL is never used, and JA2 is always used. assumption being we'll never make 1.13 for Wizardry 8. video2.h doesn't exist, which prevented me from deleting it.
112 lines
1.7 KiB
C++
112 lines
1.7 KiB
C++
#ifndef _SGP_AUTO_MEMORY_H_
|
|
#define _SGP_AUTO_MEMORY_H_
|
|
|
|
namespace sgp
|
|
{
|
|
/************************************************************/
|
|
|
|
template<typename T>
|
|
class TAutoArray
|
|
{
|
|
public:
|
|
T& operator[](size_t index)
|
|
{
|
|
return _array[index];
|
|
}
|
|
|
|
T* operator()()
|
|
{
|
|
return _array;
|
|
}
|
|
T* operator->()
|
|
{
|
|
return _array;
|
|
}
|
|
T& operator*()
|
|
{
|
|
return *_array;
|
|
}
|
|
bool operator!()
|
|
{
|
|
// NULL == _array
|
|
return !_array;
|
|
}
|
|
|
|
T* release()
|
|
{
|
|
T* tmp = _array;
|
|
_array = NULL;
|
|
return tmp;
|
|
}
|
|
protected:
|
|
T* _array;
|
|
};
|
|
|
|
/************************************************************/
|
|
|
|
template<typename T>
|
|
class AutoArray : public TAutoArray<T>
|
|
{
|
|
public:
|
|
AutoArray(size_t size)
|
|
{
|
|
_array = new T[size];
|
|
}
|
|
~AutoArray()
|
|
{
|
|
if(_array)
|
|
{
|
|
delete[] _array;
|
|
}
|
|
}
|
|
};
|
|
|
|
/************************************************************/
|
|
|
|
template<typename T, typename void*(*Alloc)(size_t) = malloc, typename void(*Dealloc)(void*) = free>
|
|
class AutoCArray : public TAutoArray<T>
|
|
{
|
|
public:
|
|
AutoCArray(size_t size = 1, size_t sizeof_elem=1)
|
|
{
|
|
_array = (T*)Alloc( size * sizeof_elem );
|
|
}
|
|
~AutoCArray()
|
|
{
|
|
if(_array)
|
|
{
|
|
Dealloc(_array);
|
|
}
|
|
}
|
|
};
|
|
|
|
/************************************************************/
|
|
|
|
} // namespace sgp
|
|
|
|
|
|
#include "MemMan.h"
|
|
|
|
namespace sgp
|
|
{
|
|
template<typename T>
|
|
class AutoMMArray : public sgp::TAutoArray<T>
|
|
{
|
|
public:
|
|
AutoMMArray(size_t size, size_t sizeof_elem=1)
|
|
{
|
|
_array = (T*)MemAlloc( size * sizeof_elem );
|
|
}
|
|
~AutoMMArray()
|
|
{
|
|
if(_array)
|
|
{
|
|
MemFree(_array);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
|
|
|
|
#endif // _SGP_AUTO_MEMORY_H_
|