mirror of https://github.com/PrimeDecomp/prime.git
28 lines
613 B
C++
28 lines
613 B
C++
|
#ifndef _TONESTATIC_HPP
|
||
|
#define _TONESTATIC_HPP
|
||
|
|
||
|
#include "types.h"
|
||
|
|
||
|
template < typename T >
|
||
|
class TOneStatic {
|
||
|
public:
|
||
|
void* operator new(unsigned long sz, const char*, const char*); /* {
|
||
|
ReferenceCount()++;
|
||
|
return GetAllocSpace();
|
||
|
}*/
|
||
|
void* operator new(unsigned long sz) { return operator new(sz, "??(??)", nullptr); }
|
||
|
void operator delete(void* ptr) { ReferenceCount()--; }
|
||
|
|
||
|
private:
|
||
|
static void* GetAllocSpace() {
|
||
|
static u8 sAllocSpace[sizeof(T)];
|
||
|
return &sAllocSpace;
|
||
|
}
|
||
|
static u32& ReferenceCount() {
|
||
|
static u32 sReferenceCount = 0;
|
||
|
return sReferenceCount;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
#endif
|