mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Use engine's internal memalloc singleton for KeyValues methods
This commit is contained in:
parent
0c583d7522
commit
8328da706a
@ -6,6 +6,7 @@
|
||||
//=============================================================================//
|
||||
|
||||
#include "core/stdafx.h"
|
||||
#include "tier0/memstd.h"
|
||||
#include "tier1/strtools.h"
|
||||
#include "vpc/keyvalues.h"
|
||||
#include "vpc/kvleaktrace.h"
|
||||
@ -143,7 +144,7 @@ void KeyValues::Init(void)
|
||||
//-----------------------------------------------------------------------------
|
||||
void KeyValues::Clear(void)
|
||||
{
|
||||
delete m_pSub;
|
||||
MemAllocSingleton()->Free(m_pSub);
|
||||
m_pSub = nullptr;
|
||||
m_iDataType = TYPE_NONE;
|
||||
}
|
||||
@ -154,7 +155,7 @@ void KeyValues::Clear(void)
|
||||
//-----------------------------------------------------------------------------
|
||||
void KeyValues::DeleteThis(void)
|
||||
{
|
||||
delete this;
|
||||
MemAllocSingleton()->Free(this);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -168,19 +169,19 @@ void KeyValues::RemoveEverything(void)
|
||||
{
|
||||
datNext = dat->m_pPeer;
|
||||
dat->m_pPeer = nullptr;
|
||||
delete dat;
|
||||
MemAllocSingleton()->Free(dat);
|
||||
}
|
||||
|
||||
for (dat = m_pPeer; dat && dat != this; dat = datNext)
|
||||
{
|
||||
datNext = dat->m_pPeer;
|
||||
dat->m_pPeer = nullptr;
|
||||
delete dat;
|
||||
MemAllocSingleton()->Free(dat);
|
||||
}
|
||||
|
||||
delete[] m_sValue;
|
||||
MemAllocSingleton()->Free(m_sValue);
|
||||
m_sValue = nullptr;
|
||||
delete[] m_wsValue;
|
||||
MemAllocSingleton()->Free(m_wsValue);
|
||||
m_wsValue = nullptr;
|
||||
}
|
||||
|
||||
@ -383,7 +384,7 @@ void KeyValues::ElideSubKey(KeyValues* pSubKey)
|
||||
{
|
||||
// No children, simply remove the key
|
||||
*ppPointerToFix = pSubKey->m_pPeer;
|
||||
delete pSubKey;
|
||||
MemAllocSingleton()->Free(pSubKey);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -399,7 +400,7 @@ void KeyValues::ElideSubKey(KeyValues* pSubKey)
|
||||
// Detach the node to be elided
|
||||
pSubKey->m_pSub = nullptr;
|
||||
pSubKey->m_pPeer = nullptr;
|
||||
delete pSubKey;
|
||||
MemAllocSingleton()->Free(pSubKey);
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -749,7 +750,7 @@ const wchar_t* KeyValues::GetWString(const char* pszKeyName, const wchar_t* pwsz
|
||||
case TYPE_STRING:
|
||||
{
|
||||
size_t bufSize = strlen(pKey->m_sValue) + 1;
|
||||
wchar_t* pWBuf = new wchar_t[bufSize];
|
||||
wchar_t* pWBuf = MemAllocSingleton()->Alloc<wchar_t>(bufSize);
|
||||
int result = V_UTF8ToUnicode(pKey->m_sValue, pWBuf, static_cast<int>(bufSize * sizeof(wchar_t)));
|
||||
if (result >= 0) // may be a zero length string
|
||||
{
|
||||
@ -757,10 +758,10 @@ const wchar_t* KeyValues::GetWString(const char* pszKeyName, const wchar_t* pwsz
|
||||
}
|
||||
else
|
||||
{
|
||||
delete[] pWBuf;
|
||||
MemAllocSingleton()->Free(pWBuf);
|
||||
return pwszDefaultValue;
|
||||
}
|
||||
delete[] pWBuf;
|
||||
MemAllocSingleton()->Free(pWBuf);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -859,12 +860,12 @@ void KeyValues::SetUint64(const char* pszKeyName, uint64_t nValue)
|
||||
if (pKey)
|
||||
{
|
||||
// delete the old value
|
||||
delete[] pKey->m_sValue;
|
||||
MemAllocSingleton()->Free(pKey->m_sValue);
|
||||
// make sure we're not storing the WSTRING - as we're converting over to STRING
|
||||
delete[] pKey->m_wsValue;
|
||||
MemAllocSingleton()->Free(pKey->m_wsValue);
|
||||
pKey->m_wsValue = nullptr;
|
||||
|
||||
pKey->m_sValue = new char[sizeof(uint64_t)];
|
||||
pKey->m_sValue = MemAllocSingleton()->Alloc<char>(sizeof(uint64_t));
|
||||
*(reinterpret_cast<uint64_t*>(pKey->m_sValue)) = nValue;
|
||||
pKey->m_iDataType = TYPE_UINT64;
|
||||
}
|
||||
@ -921,9 +922,9 @@ void KeyValues::SetPtr(const char* pszKeyName, void* pValue)
|
||||
void KeyValues::SetStringValue(char const* pszValue)
|
||||
{
|
||||
// delete the old value
|
||||
delete[] m_sValue;
|
||||
MemAllocSingleton()->Free(m_sValue);
|
||||
// make sure we're not storing the WSTRING - as we're converting over to STRING
|
||||
delete[] m_wsValue;
|
||||
MemAllocSingleton()->Free(m_wsValue);
|
||||
m_wsValue = nullptr;
|
||||
|
||||
if (!pszValue)
|
||||
@ -934,7 +935,7 @@ void KeyValues::SetStringValue(char const* pszValue)
|
||||
|
||||
// allocate memory for the new value and copy it in
|
||||
size_t len = strlen(pszValue);
|
||||
m_sValue = new char[len + 1];
|
||||
m_sValue = MemAllocSingleton()->Alloc<char>(len + 1);
|
||||
memcpy(m_sValue, pszValue, len + 1);
|
||||
|
||||
m_iDataType = TYPE_STRING;
|
||||
@ -973,9 +974,9 @@ void KeyValues::SetWString(const char* pszKeyName, const wchar_t* pwszValue)
|
||||
if (pKey)
|
||||
{
|
||||
// delete the old value
|
||||
delete[] pKey->m_wsValue;
|
||||
MemAllocSingleton()->Free(pKey->m_wsValue);
|
||||
// make sure we're not storing the STRING - as we're converting over to WSTRING
|
||||
delete[] pKey->m_sValue;
|
||||
MemAllocSingleton()->Free(pKey->m_sValue);
|
||||
pKey->m_sValue = nullptr;
|
||||
|
||||
if (!pwszValue)
|
||||
@ -986,7 +987,7 @@ void KeyValues::SetWString(const char* pszKeyName, const wchar_t* pwszValue)
|
||||
|
||||
// allocate memory for the new value and copy it in
|
||||
size_t len = wcslen(pwszValue);
|
||||
pKey->m_wsValue = new wchar_t[len + 1];
|
||||
pKey->m_wsValue = MemAllocSingleton()->Alloc<wchar_t>(len + 1);
|
||||
memcpy(pKey->m_wsValue, pwszValue, (len + 1) * sizeof(wchar_t));
|
||||
|
||||
pKey->m_iDataType = TYPE_WSTRING;
|
||||
@ -1036,7 +1037,7 @@ void KeyValues::RecursiveCopyKeyValues(KeyValues& src)
|
||||
if (src.m_sValue)
|
||||
{
|
||||
size_t len = strlen(src.m_sValue) + 1;
|
||||
m_sValue = new char[len];
|
||||
m_sValue = MemAllocSingleton()->Alloc<char>(len);
|
||||
strncpy(m_sValue, src.m_sValue, len);
|
||||
}
|
||||
break;
|
||||
@ -1045,7 +1046,7 @@ void KeyValues::RecursiveCopyKeyValues(KeyValues& src)
|
||||
m_iValue = src.m_iValue;
|
||||
snprintf(buf, sizeof(buf), "%d", m_iValue);
|
||||
size_t len = strlen(buf) + 1;
|
||||
m_sValue = new char[len];
|
||||
m_sValue = MemAllocSingleton()->Alloc<char>(len);
|
||||
strncpy(m_sValue, buf, len);
|
||||
}
|
||||
break;
|
||||
@ -1054,7 +1055,7 @@ void KeyValues::RecursiveCopyKeyValues(KeyValues& src)
|
||||
m_flValue = src.m_flValue;
|
||||
snprintf(buf, sizeof(buf), "%f", m_flValue);
|
||||
size_t len = strlen(buf) + 1;
|
||||
m_sValue = new char[len];
|
||||
m_sValue = MemAllocSingleton()->Alloc<char>(len);
|
||||
strncpy(m_sValue, buf, len);
|
||||
}
|
||||
break;
|
||||
@ -1065,7 +1066,7 @@ void KeyValues::RecursiveCopyKeyValues(KeyValues& src)
|
||||
break;
|
||||
case TYPE_UINT64:
|
||||
{
|
||||
m_sValue = new char[sizeof(uint64_t)];
|
||||
m_sValue = MemAllocSingleton()->Alloc<char>(sizeof(uint64_t));
|
||||
memcpy(m_sValue, src.m_sValue, sizeof(uint64_t));
|
||||
}
|
||||
break;
|
||||
@ -1087,37 +1088,28 @@ void KeyValues::RecursiveCopyKeyValues(KeyValues& src)
|
||||
}
|
||||
|
||||
}
|
||||
#if 0
|
||||
KeyValues* pDst = this;
|
||||
for (KeyValues* pSrc = src.m_pSub; pSrc; pSrc = pSrc->m_pPeer)
|
||||
{
|
||||
if (pSrc->m_pSub)
|
||||
{
|
||||
pDst->m_pSub = new KeyValues(pSrc->m_pSub->getName());
|
||||
pDst->m_pSub->RecursiveCopyKeyValues(*pSrc->m_pSub);
|
||||
}
|
||||
else
|
||||
{
|
||||
// copy non-empty keys
|
||||
if (pSrc->m_sValue && *(pSrc->m_sValue))
|
||||
{
|
||||
pDst->m_pPeer = new KeyValues(
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// Handle the immediate child
|
||||
if (src.m_pSub)
|
||||
{
|
||||
m_pSub = new KeyValues(nullptr);
|
||||
m_pSub = MemAllocSingleton()->Alloc<KeyValues>(sizeof(KeyValues));
|
||||
TRACK_KV_ADD(m_pSub, nullptr);
|
||||
|
||||
m_pSub->Init();
|
||||
m_pSub->SetName(nullptr);
|
||||
|
||||
m_pSub->RecursiveCopyKeyValues(*src.m_pSub);
|
||||
}
|
||||
|
||||
// Handle the immediate peer
|
||||
if (src.m_pPeer)
|
||||
{
|
||||
m_pPeer = new KeyValues(nullptr);
|
||||
m_pPeer = MemAllocSingleton()->Alloc<KeyValues>(sizeof(KeyValues));
|
||||
TRACK_KV_ADD(m_pPeer, nullptr);
|
||||
|
||||
m_pPeer->Init();
|
||||
m_pPeer->SetName(nullptr);
|
||||
|
||||
m_pPeer->RecursiveCopyKeyValues(*src.m_pPeer);
|
||||
}
|
||||
}
|
||||
@ -1156,7 +1148,12 @@ void KeyValues::CopySubkeys(KeyValues* pParent) const
|
||||
//-----------------------------------------------------------------------------
|
||||
KeyValues* KeyValues::MakeCopy(void) const
|
||||
{
|
||||
KeyValues* pNewKeyValue = new KeyValues(GetName());
|
||||
KeyValues* pNewKeyValue = MemAllocSingleton()->Alloc<KeyValues>(sizeof(KeyValues));
|
||||
|
||||
TRACK_KV_ADD(pNewKeyValue, GetName());
|
||||
|
||||
pNewKeyValue->Init();
|
||||
pNewKeyValue->SetName(GetName());
|
||||
|
||||
// copy data
|
||||
pNewKeyValue->m_iDataType = m_iDataType;
|
||||
@ -1168,7 +1165,7 @@ KeyValues* KeyValues::MakeCopy(void) const
|
||||
{
|
||||
size_t len = strlen(m_sValue);
|
||||
Assert(!pNewKeyValue->m_sValue);
|
||||
pNewKeyValue->m_sValue = new char[len + 1];
|
||||
pNewKeyValue->m_sValue = MemAllocSingleton()->Alloc<char>(len + 1);
|
||||
memcpy(pNewKeyValue->m_sValue, m_sValue, len + 1);
|
||||
}
|
||||
}
|
||||
@ -1178,7 +1175,7 @@ KeyValues* KeyValues::MakeCopy(void) const
|
||||
if (m_wsValue)
|
||||
{
|
||||
size_t len = wcslen(m_wsValue);
|
||||
pNewKeyValue->m_wsValue = new wchar_t[len + 1];
|
||||
pNewKeyValue->m_wsValue = MemAllocSingleton()->Alloc<wchar_t>(len + 1);
|
||||
memcpy(pNewKeyValue->m_wsValue, m_wsValue, len + 1 * sizeof(wchar_t));
|
||||
}
|
||||
}
|
||||
@ -1204,7 +1201,7 @@ KeyValues* KeyValues::MakeCopy(void) const
|
||||
break;
|
||||
|
||||
case TYPE_UINT64:
|
||||
pNewKeyValue->m_sValue = new char[sizeof(uint64_t)];
|
||||
pNewKeyValue->m_sValue = MemAllocSingleton()->Alloc<char>(sizeof(uint64_t));
|
||||
memcpy(pNewKeyValue->m_sValue, m_sValue, sizeof(uint64_t));
|
||||
break;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user