mirror of
https://github.com/AxioDL/metaforce.git
synced 2025-12-09 13:07:42 +00:00
CIOWinManager implementation
This commit is contained in:
@@ -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));}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user