mirror of
https://github.com/ZDoom/qzdoom.git
synced 2024-11-10 23:02:08 +00:00
Don't waste time looking for variables to (de)init in native classes
This commit is contained in:
parent
c346ac6143
commit
6f60253590
1 changed files with 17 additions and 5 deletions
|
@ -3396,16 +3396,20 @@ DObject *PClass::CreateNew() const
|
|||
//
|
||||
// PClass :: InitializeSpecials
|
||||
//
|
||||
// Initialize special fields of a newly-created instance (e.g. strings).
|
||||
// Initialize special fields (e.g. strings) of a newly-created instance.
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void PClass::InitializeSpecials(void *addr) const
|
||||
{
|
||||
if (ParentClass != NULL)
|
||||
// Once we reach a native class, we can stop going up the family tree,
|
||||
// since native classes handle initialization natively.
|
||||
if (!bRuntimeClass)
|
||||
{
|
||||
ParentClass->InitializeSpecials(addr);
|
||||
return;
|
||||
}
|
||||
assert(ParentClass != NULL);
|
||||
ParentClass->InitializeSpecials(addr);
|
||||
for (auto tao : SpecialInits)
|
||||
{
|
||||
tao.first->InitializeValue((BYTE*)addr + tao.second, Defaults + tao.second);
|
||||
|
@ -3416,19 +3420,27 @@ void PClass::InitializeSpecials(void *addr) const
|
|||
//
|
||||
// PClass :: DestroySpecials
|
||||
//
|
||||
// Destroy special fields (e.g. strings) of an instance that is about to be
|
||||
// deleted.
|
||||
//
|
||||
//==========================================================================
|
||||
|
||||
void PClass::DestroySpecials(void *addr) const
|
||||
{
|
||||
if (ParentClass != NULL)
|
||||
// Once we reach a native class, we can stop going up the family tree,
|
||||
// since native classes handle deinitialization natively.
|
||||
if (!bRuntimeClass)
|
||||
{
|
||||
ParentClass->DestroySpecials(addr);
|
||||
return;
|
||||
}
|
||||
assert(ParentClass != NULL);
|
||||
ParentClass->DestroySpecials(addr);
|
||||
for (auto tao : SpecialInits)
|
||||
{
|
||||
tao.first->DestroyValue((BYTE *)addr + tao.second);
|
||||
}
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
// PClass :: Derive
|
||||
|
|
Loading…
Reference in a new issue