mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2025-12-07 02:28:22 +00:00
Update KeyValues3
Add table member getters/setters & small refactor to other methods
This commit is contained in:
parent
f60481c2ae
commit
33bef10acd
@ -423,6 +423,7 @@ public:
|
|||||||
const char* ToString( CBufferString& buff, uint flags = KV3_TO_STRING_NONE ) const;
|
const char* ToString( CBufferString& buff, uint flags = KV3_TO_STRING_NONE ) const;
|
||||||
|
|
||||||
void SetToNull() { PrepareForType( KV3_TYPEEX_NULL, KV3_SUBTYPE_NULL ); }
|
void SetToNull() { PrepareForType( KV3_TYPEEX_NULL, KV3_SUBTYPE_NULL ); }
|
||||||
|
bool IsNull() const { return GetType() == KV3_TYPE_NULL; }
|
||||||
|
|
||||||
bool GetBool( bool defaultValue = false ) const { return GetValue<bool>( defaultValue ); }
|
bool GetBool( bool defaultValue = false ) const { return GetValue<bool>( defaultValue ); }
|
||||||
char8 GetChar( char8 defaultValue = 0 ) const { return GetValue<char8>( defaultValue ); }
|
char8 GetChar( char8 defaultValue = 0 ) const { return GetValue<char8>( defaultValue ); }
|
||||||
@ -488,36 +489,107 @@ public:
|
|||||||
void SetMatrix3x4( const matrix3x4_t &matrix ) { SetVecBasedObj<matrix3x4_t>( matrix, 3*4, KV3_SUBTYPE_MATRIX3X4 ); }
|
void SetMatrix3x4( const matrix3x4_t &matrix ) { SetVecBasedObj<matrix3x4_t>( matrix, 3*4, KV3_SUBTYPE_MATRIX3X4 ); }
|
||||||
|
|
||||||
int GetArrayElementCount() const;
|
int GetArrayElementCount() const;
|
||||||
|
void SetArrayElementCount( int count, KV3TypeEx_t type = KV3_TYPEEX_NULL, KV3SubType_t subtype = KV3_SUBTYPE_UNSPECIFIED );
|
||||||
|
|
||||||
|
void SetToEmptyArray() { PrepareForType( KV3_TYPEEX_ARRAY, KV3_SUBTYPE_ARRAY ); }
|
||||||
KeyValues3** GetArrayBase();
|
KeyValues3** GetArrayBase();
|
||||||
|
|
||||||
KeyValues3* GetArrayElement( int elem );
|
KeyValues3* GetArrayElement( int elem );
|
||||||
|
const KeyValues3 *GetArrayElement( int elem ) const { return const_cast<KeyValues3 *>(this)->GetArrayElement( elem ); }
|
||||||
|
|
||||||
KeyValues3* ArrayInsertElementBefore( int elem );
|
KeyValues3* ArrayInsertElementBefore( int elem );
|
||||||
KeyValues3* ArrayInsertElementAfter( int elem ) { return ArrayInsertElementBefore( elem + 1 ); }
|
KeyValues3* ArrayInsertElementAfter( int elem ) { return ArrayInsertElementBefore( elem + 1 ); }
|
||||||
KeyValues3* ArrayAddElementToTail();
|
KeyValues3* ArrayAddElementToTail();
|
||||||
void SetArrayElementCount( int count, KV3TypeEx_t type = KV3_TYPEEX_NULL, KV3SubType_t subtype = KV3_SUBTYPE_UNSPECIFIED );
|
|
||||||
void SetToEmptyArray() { PrepareForType( KV3_TYPEEX_ARRAY, KV3_SUBTYPE_ARRAY ); }
|
void ArraySwapItems( int idx1, int idx2 );
|
||||||
|
|
||||||
void ArrayRemoveElements( int elem, int num );
|
void ArrayRemoveElements( int elem, int num );
|
||||||
void ArrayRemoveElement( int elem ) { ArrayRemoveElements( elem, 1 ); }
|
void ArrayRemoveElement( int elem ) { ArrayRemoveElements( elem, 1 ); }
|
||||||
|
|
||||||
|
void SetToEmptyTable();
|
||||||
int GetMemberCount() const;
|
int GetMemberCount() const;
|
||||||
|
|
||||||
|
CKeyValues3Table *GetTableRaw();
|
||||||
|
CKeyValues3Table *GetTableRaw() const { return const_cast<KeyValues3 *>(this)->GetTableRaw(); };
|
||||||
|
|
||||||
KeyValues3* GetMember( KV3MemberId_t id );
|
KeyValues3* GetMember( KV3MemberId_t id );
|
||||||
const KeyValues3* GetMember( KV3MemberId_t id ) const { return const_cast<KeyValues3*>(this)->GetMember( id ); }
|
const KeyValues3* GetMember( KV3MemberId_t id ) const { return const_cast<KeyValues3*>(this)->GetMember( id ); }
|
||||||
|
|
||||||
const char* GetMemberName( KV3MemberId_t id ) const;
|
const char* GetMemberName( KV3MemberId_t id ) const;
|
||||||
CKV3MemberName GetMemberNameEx( KV3MemberId_t id ) const;
|
CKV3MemberName GetMemberNameEx( KV3MemberId_t id ) const;
|
||||||
|
|
||||||
CUtlStringToken GetMemberHash( KV3MemberId_t id ) const;
|
CUtlStringToken GetMemberHash( KV3MemberId_t id ) const;
|
||||||
|
|
||||||
KeyValues3* FindMember( const CKV3MemberName &name, KeyValues3* defaultValue = nullptr );
|
KeyValues3* FindMember( const CKV3MemberName &name, KeyValues3* defaultValue = nullptr );
|
||||||
|
const KeyValues3 *FindMember( const CKV3MemberName &name, KeyValues3 *defaultValue = nullptr ) const { return const_cast<KeyValues3 *>(this)->FindMember( name, defaultValue ); };
|
||||||
KeyValues3* FindOrCreateMember( const CKV3MemberName &name, bool *pCreated = nullptr );
|
KeyValues3* FindOrCreateMember( const CKV3MemberName &name, bool *pCreated = nullptr );
|
||||||
|
|
||||||
void SetToEmptyTable();
|
|
||||||
bool RemoveMember( KV3MemberId_t id );
|
bool RemoveMember( KV3MemberId_t id );
|
||||||
bool RemoveMember( const KeyValues3* kv );
|
bool RemoveMember( const KeyValues3* kv );
|
||||||
bool RemoveMember( const CKV3MemberName &name );
|
bool RemoveMember( const CKV3MemberName &name );
|
||||||
|
|
||||||
KeyValues3& operator=( const KeyValues3& src );
|
bool GetMemberBool( const CKV3MemberName &name, bool defaultValue = false ) const { auto kv = FindMember( name ); return kv ? kv->GetBool( defaultValue ) : defaultValue; }
|
||||||
|
char8 GetMemberChar( const CKV3MemberName &name, char8 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetChar( defaultValue ) : defaultValue; }
|
||||||
private:
|
uchar32 GetMemberUChar32( const CKV3MemberName &name, uchar32 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetUChar32( defaultValue ) : defaultValue; }
|
||||||
KeyValues3( const KeyValues3& other );
|
int8 GetMemberInt8( const CKV3MemberName &name, int8 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetInt8( defaultValue ) : defaultValue; }
|
||||||
|
uint8 GetMemberUInt8( const CKV3MemberName &name, uint8 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetUInt8( defaultValue ) : defaultValue; }
|
||||||
|
int16 GetMemberShort( const CKV3MemberName &name, int16 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetShort( defaultValue ) : defaultValue; }
|
||||||
|
uint16 GetMemberUShort( const CKV3MemberName &name, uint16 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetUShort( defaultValue ) : defaultValue; }
|
||||||
|
int32 GetMemberInt( const CKV3MemberName &name, int32 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetInt( defaultValue ) : defaultValue; }
|
||||||
|
uint32 GetMemberUInt( const CKV3MemberName &name, uint32 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetUInt( defaultValue ) : defaultValue; }
|
||||||
|
int64 GetMemberInt64( const CKV3MemberName &name, int64 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetInt64( defaultValue ) : defaultValue; }
|
||||||
|
uint64 GetMemberUInt64( const CKV3MemberName &name, uint64 defaultValue = 0 ) const { auto kv = FindMember( name ); return kv ? kv->GetUInt64( defaultValue ) : defaultValue; }
|
||||||
|
float32 GetMemberFloat( const CKV3MemberName &name, float32 defaultValue = 0.0f ) const { auto kv = FindMember( name ); return kv ? kv->GetFloat( defaultValue ) : defaultValue; }
|
||||||
|
float64 GetMemberDouble( const CKV3MemberName &name, float64 defaultValue = 0.0 ) const { auto kv = FindMember( name ); return kv ? kv->GetDouble( defaultValue ) : defaultValue; }
|
||||||
|
void *GetMemberPointer( const CKV3MemberName &name, void *defaultValue = (void *)0 ) const { auto kv = FindMember( name ); return kv ? kv->GetPointer( defaultValue ) : defaultValue; }
|
||||||
|
CUtlStringToken GetMemberStringToken( const CKV3MemberName &name, CUtlStringToken defaultValue = CUtlStringToken() ) const { auto kv = FindMember( name ); return kv ? kv->GetStringToken( defaultValue ) : defaultValue; }
|
||||||
|
CEntityHandle GetMemberEHandle( const CKV3MemberName &name, CEntityHandle defaultValue = CEntityHandle() ) const { auto kv = FindMember( name ); return kv ? kv->GetEHandle( defaultValue ) : defaultValue; }
|
||||||
|
const char *GetMemberString( const CKV3MemberName &name, const char *defaultValue = "" ) const { auto kv = FindMember( name ); return kv ? kv->GetString( defaultValue ) : defaultValue; }
|
||||||
|
Color GetMemberColor( const CKV3MemberName &name, const Color &defaultValue = Color( 0, 0, 0, 255 ) ) const { auto kv = FindMember( name ); return kv ? kv->GetColor( defaultValue ) : defaultValue; }
|
||||||
|
Vector GetMemberVector( const CKV3MemberName &name, const Vector &defaultValue = Vector( 0.0f, 0.0f, 0.0f ) ) const { auto kv = FindMember( name ); return kv ? kv->GetVector( defaultValue ) : defaultValue; }
|
||||||
|
Vector2D GetMemberVector2D( const CKV3MemberName &name, const Vector2D &defaultValue = Vector2D( 0.0f, 0.0f ) ) const { auto kv = FindMember( name ); return kv ? kv->GetVector2D( defaultValue ) : defaultValue; }
|
||||||
|
Vector4D GetMemberVector4D( const CKV3MemberName &name, const Vector4D &defaultValue = Vector4D( 0.0f, 0.0f, 0.0f, 0.0f ) ) const { auto kv = FindMember( name ); return kv ? kv->GetVector4D( defaultValue ) : defaultValue; }
|
||||||
|
Quaternion GetMemberQuaternion( const CKV3MemberName &name, const Quaternion &defaultValue = Quaternion( 0.0f, 0.0f, 0.0f, 0.0f ) ) const { auto kv = FindMember( name ); return kv ? kv->GetQuaternion( defaultValue ) : defaultValue; }
|
||||||
|
QAngle GetMemberQAngle( const CKV3MemberName &name, const QAngle &defaultValue = QAngle( 0.0f, 0.0f, 0.0f ) ) const { auto kv = FindMember( name ); return kv ? kv->GetQAngle( defaultValue ) : defaultValue; }
|
||||||
|
matrix3x4_t GetMemberMatrix3x4( const CKV3MemberName &name, const matrix3x4_t &defaultValue = matrix3x4_t( Vector( 0.0f, 0.0f, 0.0f ), Vector( 0.0f, 0.0f, 0.0f ), Vector( 0.0f, 0.0f, 0.0f ), Vector( 0.0f, 0.0f, 0.0f ) ) ) const { auto kv = FindMember( name ); return kv ? kv->GetMatrix3x4( defaultValue ) : defaultValue; }
|
||||||
|
|
||||||
|
void SetMemberToNull( const CKV3MemberName &name ) { FindOrCreateMember( name )->SetToNull(); }
|
||||||
|
void SetMemberToEmptyArray( const CKV3MemberName &name ) { FindOrCreateMember( name )->SetToEmptyArray(); }
|
||||||
|
void SetMemberToEmptyTable( const CKV3MemberName &name ) { FindOrCreateMember( name )->SetToEmptyTable(); }
|
||||||
|
void SetMemberToBinaryBlob( const CKV3MemberName &name, const byte *blob, int size ) { FindOrCreateMember( name )->SetToBinaryBlob( blob, size ); }
|
||||||
|
void SetMemberToBinaryBlobExternal( const CKV3MemberName &name, const byte *blob, int size, bool free_mem ) { FindOrCreateMember( name )->SetToBinaryBlobExternal( blob, size, free_mem ); }
|
||||||
|
void SetMemberToCopyOfValue( const CKV3MemberName &name, KeyValues3 *other ) { FindOrCreateMember( name )->CopyFrom( other ); }
|
||||||
|
|
||||||
|
void SetMemberBool( const CKV3MemberName &name, bool value ) { FindOrCreateMember( name )->SetBool( value ); }
|
||||||
|
void SetMemberChar( const CKV3MemberName &name, char8 value ) { FindOrCreateMember( name )->SetChar( value ); }
|
||||||
|
void SetMemberUChar32( const CKV3MemberName &name, uchar32 value ) { FindOrCreateMember( name )->SetUChar32( value ); }
|
||||||
|
void SetMemberInt8( const CKV3MemberName &name, int8 value ) { FindOrCreateMember( name )->SetInt8( value ); }
|
||||||
|
void SetMemberUInt8( const CKV3MemberName &name, uint8 value ) { FindOrCreateMember( name )->SetUInt8( value ); }
|
||||||
|
void SetMemberShort( const CKV3MemberName &name, int16 value ) { FindOrCreateMember( name )->SetShort( value ); }
|
||||||
|
void SetMemberUShort( const CKV3MemberName &name, uint16 value ) { FindOrCreateMember( name )->SetUShort( value ); }
|
||||||
|
void SetMemberInt( const CKV3MemberName &name, int32 value ) { FindOrCreateMember( name )->SetInt( value ); }
|
||||||
|
void SetMemberUInt( const CKV3MemberName &name, uint32 value ) { FindOrCreateMember( name )->SetUInt( value ); }
|
||||||
|
void SetMemberInt64( const CKV3MemberName &name, int64 value ) { FindOrCreateMember( name )->SetInt64( value ); }
|
||||||
|
void SetMemberUInt64( const CKV3MemberName &name, uint64 value ) { FindOrCreateMember( name )->SetUInt64( value ); }
|
||||||
|
void SetMemberFloat( const CKV3MemberName &name, float32 value ) { FindOrCreateMember( name )->SetFloat( value ); }
|
||||||
|
void SetMemberDouble( const CKV3MemberName &name, float64 value ) { FindOrCreateMember( name )->SetDouble( value ); }
|
||||||
|
void SetMemberPointer( const CKV3MemberName &name, void *ptr ) { FindOrCreateMember( name )->SetPointer( ptr ); }
|
||||||
|
void SetMemberStringToken( const CKV3MemberName &name, CUtlStringToken token ) { FindOrCreateMember( name )->SetStringToken( token ); }
|
||||||
|
void SetMemberEHandle( const CKV3MemberName &name, CEntityHandle ehandle ) { FindOrCreateMember( name )->SetEHandle( ehandle ); }
|
||||||
|
void SetMemberString( const CKV3MemberName &name, const char *pString, KV3SubType_t subtype = KV3_SUBTYPE_STRING ) { FindOrCreateMember( name )->SetString( pString, subtype ); }
|
||||||
|
void SetMemberStringExternal( const CKV3MemberName &name, const char *pString, KV3SubType_t subtype = KV3_SUBTYPE_STRING ) { FindOrCreateMember( name )->SetStringExternal( pString, subtype ); }
|
||||||
|
void SetMemberColor( const CKV3MemberName &name, const Color &color ) { FindOrCreateMember( name )->SetColor( color ); }
|
||||||
|
void SetMemberVector( const CKV3MemberName &name, const Vector &vec ) { FindOrCreateMember( name )->SetVector( vec ); }
|
||||||
|
void SetMemberVector2D( const CKV3MemberName &name, const Vector2D &vec2d ) { FindOrCreateMember( name )->SetVector2D( vec2d ); }
|
||||||
|
void SetMemberVector4D( const CKV3MemberName &name, const Vector4D &vec4d ) { FindOrCreateMember( name )->SetVector4D( vec4d ); }
|
||||||
|
void SetMemberQuaternion( const CKV3MemberName &name, const Quaternion &quat ) { FindOrCreateMember( name )->SetQuaternion( quat ); }
|
||||||
|
void SetMemberQAngle( const CKV3MemberName &name, const QAngle &ang ) { FindOrCreateMember( name )->SetQAngle( ang ); }
|
||||||
|
void SetMemberMatrix3x4( const CKV3MemberName &name, const matrix3x4_t &matrix ) { FindOrCreateMember( name )->SetMatrix3x4( matrix ); }
|
||||||
|
|
||||||
|
KeyValues3& operator=( const KeyValues3& src );
|
||||||
|
KeyValues3( const KeyValues3 &other ) : KeyValues3() { CopyFrom( &other ); }
|
||||||
|
|
||||||
|
private:
|
||||||
union Data_t
|
union Data_t
|
||||||
{
|
{
|
||||||
Data_t() : m_nMemory(0)
|
Data_t() : m_nMemory(0)
|
||||||
|
|||||||
@ -584,6 +584,24 @@ KeyValues3* KeyValues3::ArrayAddElementToTail()
|
|||||||
return *m_Data.m_pArray->InsertMultipleBefore( this, m_Data.m_pArray->Count(), 1 );
|
return *m_Data.m_pArray->InsertMultipleBefore( this, m_Data.m_pArray->Count(), 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeyValues3::ArraySwapItems( int idx1, int idx2 )
|
||||||
|
{
|
||||||
|
if(GetTypeEx() != KV3_TYPEEX_ARRAY)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(idx1 < 0 || idx1 >= m_Data.m_pArray->Count())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(idx2 < 0 || idx2 >= m_Data.m_pArray->Count())
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto base = GetArrayBase();
|
||||||
|
|
||||||
|
auto temp = base[idx1];
|
||||||
|
base[idx1] = base[idx2];
|
||||||
|
base[idx2] = temp;
|
||||||
|
}
|
||||||
|
|
||||||
void KeyValues3::SetArrayElementCount( int count, KV3TypeEx_t type, KV3SubType_t subtype )
|
void KeyValues3::SetArrayElementCount( int count, KV3TypeEx_t type, KV3SubType_t subtype )
|
||||||
{
|
{
|
||||||
if ( GetTypeEx() != KV3_TYPEEX_ARRAY )
|
if ( GetTypeEx() != KV3_TYPEEX_ARRAY )
|
||||||
@ -769,6 +787,14 @@ int KeyValues3::GetMemberCount() const
|
|||||||
return m_Data.m_pTable->GetMemberCount();
|
return m_Data.m_pTable->GetMemberCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CKeyValues3Table *KeyValues3::GetTableRaw()
|
||||||
|
{
|
||||||
|
if(GetType() != KV3_TYPE_TABLE)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
return m_Data.m_pTable;
|
||||||
|
}
|
||||||
|
|
||||||
KeyValues3* KeyValues3::GetMember( KV3MemberId_t id )
|
KeyValues3* KeyValues3::GetMember( KV3MemberId_t id )
|
||||||
{
|
{
|
||||||
if ( GetType() != KV3_TYPE_TABLE || id < 0 || id >= m_Data.m_pTable->GetMemberCount() )
|
if ( GetType() != KV3_TYPE_TABLE || id < 0 || id >= m_Data.m_pTable->GetMemberCount() )
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user