2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 13:07:42 +00:00

CIOWinManager implementation

This commit is contained in:
Jack Andersen
2015-08-25 15:34:56 -10:00
parent 3f1025abb3
commit a9cfd21ebc
12 changed files with 415 additions and 75 deletions

View File

@@ -15,21 +15,15 @@ public:
class CVParamTransfer
{
rstl::CRefData* m_refData;
rstl::rc_ptr<IVParamObj> m_ref;
public:
CVParamTransfer(rstl::CRefData* rd) : m_refData(rd) {m_refData->AddRef();}
~CVParamTransfer()
{
if (m_refData->DelRef() <= 0)
{
delete static_cast<IVParamObj*>(m_refData->GetPtr());
delete m_refData;
}
}
IVParamObj* GetObj() const {return static_cast<IVParamObj*>(m_refData->GetPtr());}
CVParamTransfer ShareTransferRef() {return CVParamTransfer(m_refData);}
CVParamTransfer();
CVParamTransfer(IVParamObj* obj) : m_ref(obj) {}
CVParamTransfer(const CVParamTransfer& other) : m_ref(other.m_ref) {}
IVParamObj* GetObj() const {return m_ref.get();}
CVParamTransfer ShareTransferRef() {return CVParamTransfer(*this);}
static CVParamTransfer Null() {return CVParamTransfer(&rstl::CRefData::sNull);}
static CVParamTransfer Null() {return CVParamTransfer();}
};
template<class T>
@@ -40,7 +34,6 @@ protected:
~TObjOwnerParam() {}
public:
TObjOwnerParam(T&& obj) : m_param(std::move(obj)) {}
CVParamTransfer NewTransferRef() {return CVParamTransfer(new rstl::CRefData(this));}
};
}