mirror of
https://github.com/PrimeDecomp/prime.git
synced 2025-12-12 13:26:08 +00:00
More main progress; tons of headers & stuff
Former-commit-id: a6e365791b
This commit is contained in:
@@ -3,29 +3,34 @@
|
||||
|
||||
#include "types.h"
|
||||
|
||||
template < typename T >
|
||||
class CRefData {
|
||||
public:
|
||||
T* x0_ptr;
|
||||
CRefData(void* ptr) : x0_ptr(ptr), x4_refCount(1) {}
|
||||
CRefData(void* ptr, int refCount) : x0_ptr(ptr), x4_refCount(refCount) {}
|
||||
|
||||
void* x0_ptr;
|
||||
unsigned int x4_refCount;
|
||||
};
|
||||
|
||||
namespace rstl {
|
||||
template < typename T >
|
||||
class rc_ptr {
|
||||
CRefData< T >* x0_refData;
|
||||
|
||||
public:
|
||||
rc_ptr(T* ptr) : x0_refData(new CRefData(ptr)) {}
|
||||
~rc_ptr();
|
||||
T* GetPtr() const { return x0_refData->x0_ptr; }
|
||||
T* GetPtr() const { return reinterpret_cast< T* >(x0_refData->x0_ptr); }
|
||||
// TODO ReleaseData__Q24rstl20rc_ptr
|
||||
T* operator->() const { return GetPtr(); }
|
||||
T& operator*() const { return *GetPtr(); }
|
||||
|
||||
private:
|
||||
CRefData* x0_refData;
|
||||
};
|
||||
|
||||
template < typename T >
|
||||
class ncrc_ptr : public rc_ptr< T > {
|
||||
// TODO
|
||||
public:
|
||||
ncrc_ptr(T* ptr) : rc_ptr(ptr) {}
|
||||
};
|
||||
} // namespace rstl
|
||||
|
||||
|
||||
Reference in New Issue
Block a user