From c66bb90e0c44ccebb9ee07e4ca4e45caaefb7d27 Mon Sep 17 00:00:00 2001 From: Wend4r <47463683+Wend4r@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:47:38 +0300 Subject: [PATCH] Update `CKeyValues3Table` structure --- public/tier1/keyvalues3.h | 12 ++++++------ tier1/keyvalues3.cpp | 27 ++++++--------------------- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/public/tier1/keyvalues3.h b/public/tier1/keyvalues3.h index bf6772168..3d5b87ded 100644 --- a/public/tier1/keyvalues3.h +++ b/public/tier1/keyvalues3.h @@ -529,9 +529,9 @@ class CKeyValues3Table private: typedef CUtlLeanVectorFixedGrowable HashesVec_t; - typedef CUtlLeanVectorFixedGrowable MembersVec_t; - typedef CUtlLeanVectorFixedGrowable NamesVec_t; - typedef CUtlLeanVectorFixedGrowable IsExternalNameVec_t; + typedef KeyValues3* MembersVec_t; + typedef const char* NamesVec_t; + typedef bool IsExternalNameVec_t; int m_nClusterElement; @@ -554,9 +554,9 @@ class CKeyValues3Table } *m_pFastSearch; HashesVec_t m_Hashes; - MembersVec_t m_Members; - NamesVec_t m_Names; - IsExternalNameVec_t m_IsExternalName; // didn't find this used when deleting a table + MembersVec_t m_Members[8]; + NamesVec_t m_Names[8]; + IsExternalNameVec_t m_IsExternalName[8]; // didn't find this used when deleting a table bool m_bHasBadNames; }; diff --git a/tier1/keyvalues3.cpp b/tier1/keyvalues3.cpp index e54445300..23767038c 100644 --- a/tier1/keyvalues3.cpp +++ b/tier1/keyvalues3.cpp @@ -1379,7 +1379,7 @@ KV3MemberId_t CKeyValues3Table::CreateMember( const CKV3MemberName &name ) if ( m_Hashes.Count() >= 128 && !m_pFastSearch ) EnableFastSearch(); - *m_Hashes.AddToTailGetPtr() = name.GetHashCode(); + int iNewIndex = m_Hashes.AddToTail(name.GetHashCode()); KV3MemberId_t memberId = m_Hashes.Count() - 1; @@ -1387,16 +1387,16 @@ KV3MemberId_t CKeyValues3Table::CreateMember( const CKV3MemberName &name ) if ( context ) { - *m_Members.AddToTailGetPtr() = context->AllocKV(); - *m_Names.AddToTailGetPtr() = context->AllocString( name.GetString() ); + m_Members[iNewIndex] = context->AllocKV(); + m_Names[iNewIndex] = context->AllocString( name.GetString() ); } else { - *m_Members.AddToTailGetPtr() = new KeyValues3; - *m_Names.AddToTailGetPtr() = strdup( name.GetString() ); + m_Members[iNewIndex] = new KeyValues3; + m_Names[iNewIndex] = strdup( name.GetString() ); } - m_IsExternalName.AddToTail( false ); + m_IsExternalName[iNewIndex] = false; if ( m_pFastSearch && !m_pFastSearch->m_ignore ) m_pFastSearch->m_member_ids.Insert( name.GetHashCode(), memberId ); @@ -1411,9 +1411,6 @@ void CKeyValues3Table::CopyFrom( const CKeyValues3Table* pSrc ) RemoveAll( nNewSize ); m_Hashes.SetCount( nNewSize ); - m_Members.SetCount( nNewSize ); - m_Names.SetCount( nNewSize ); - m_IsExternalName.SetCount( nNewSize ); CKeyValues3Context* context = GetContext(); @@ -1457,9 +1454,6 @@ void CKeyValues3Table::RemoveMember( KV3MemberId_t id ) } m_Hashes.Remove( id ); - m_Members.Remove( id ); - m_Names.Remove( id ); - m_IsExternalName.Remove( id ); if ( m_pFastSearch ) { @@ -1487,16 +1481,10 @@ void CKeyValues3Table::RemoveAll( int nAllocSize ) } m_Hashes.RemoveAll(); - m_Members.RemoveAll(); - m_Names.RemoveAll(); - m_IsExternalName.RemoveAll(); if ( nAllocSize > 0 ) { m_Hashes.EnsureCapacity( nAllocSize ); - m_Members.EnsureCapacity( nAllocSize ); - m_Names.EnsureCapacity( nAllocSize ); - m_IsExternalName.EnsureCapacity( nAllocSize ); } if ( m_pFastSearch ) @@ -1541,9 +1529,6 @@ void CKeyValues3Table::Purge( bool bClearingContext ) m_pFastSearch = NULL; m_Hashes.Purge(); - m_Members.Purge(); - m_Names.Purge(); - m_IsExternalName.Purge(); } CKeyValues3Cluster::CKeyValues3Cluster( CKeyValues3Context* context ) :