diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /sp/src/fgdlib/wckeyvalues.cpp | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/fgdlib/wckeyvalues.cpp')
| -rw-r--r-- | sp/src/fgdlib/wckeyvalues.cpp | 564 |
1 files changed, 282 insertions, 282 deletions
diff --git a/sp/src/fgdlib/wckeyvalues.cpp b/sp/src/fgdlib/wckeyvalues.cpp index d802eb42..83e52007 100644 --- a/sp/src/fgdlib/wckeyvalues.cpp +++ b/sp/src/fgdlib/wckeyvalues.cpp @@ -1,282 +1,282 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================
-
-#include "fgdlib/WCKeyValues.h"
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include <tier0/memdbgon.h>
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Destructor.
-//-----------------------------------------------------------------------------
-MDkeyvalue::~MDkeyvalue(void)
-{
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Assignment operator.
-//-----------------------------------------------------------------------------
-MDkeyvalue &MDkeyvalue::operator =(const MDkeyvalue &other)
-{
- V_strcpy_safe(szKey, other.szKey);
- V_strcpy_safe(szValue, other.szValue);
-
- return(*this);
-}
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-void WCKVBase_Vector::RemoveKeyAt(int nIndex)
-{
- Assert(nIndex >= 0);
- Assert(nIndex < (int)m_KeyValues.Count());
-
- if ((nIndex >= 0) && (nIndex < (int)m_KeyValues.Count()))
- {
- m_KeyValues.Remove(nIndex);
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Adds the key to the keyvalue array. Allows duplicate keys.
-//
-// NOTE: This should only be used for keyvalue lists that do not require
-// unique key names! If you use this function then you should use GetCount
-// and GetKey/Value by index rather than GetValue by key name.
-//-----------------------------------------------------------------------------
-void WCKVBase_Vector::AddKeyValue(const char *pszKey, const char *pszValue)
-{
- if (!pszKey || !pszValue)
- {
- return;
- }
-
- char szTmpKey[KEYVALUE_MAX_KEY_LENGTH];
- char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH];
-
- V_strcpy_safe(szTmpKey, pszKey);
- V_strcpy_safe(szTmpValue, pszValue);
-
- StripEdgeWhiteSpace(szTmpKey);
- StripEdgeWhiteSpace(szTmpValue);
-
- //
- // Add the keyvalue to our list.
- //
- MDkeyvalue newkv;
- V_strcpy_safe(newkv.szKey, szTmpKey);
- V_strcpy_safe(newkv.szValue, szTmpValue);
- m_KeyValues.AddToTail(newkv);
-}
-
-int WCKVBase_Vector::FindByKeyName( const char *pKeyName ) const
-{
- for ( int i=0; i < m_KeyValues.Count(); i++ )
- {
- if ( V_stricmp( m_KeyValues[i].szKey, pKeyName ) == 0 )
- return i;
- }
- return GetInvalidIndex();
-}
-
-void WCKVBase_Vector::InsertKeyValue( const MDkeyvalue &kv )
-{
- m_KeyValues.AddToTail( kv );
-}
-
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-void WCKVBase_Dict::RemoveKeyAt(int nIndex)
-{
- m_KeyValues.RemoveAt(nIndex);
-}
-
-
-int WCKVBase_Dict::FindByKeyName( const char *pKeyName ) const
-{
- return m_KeyValues.Find( pKeyName );
-}
-
-void WCKVBase_Dict::InsertKeyValue( const MDkeyvalue &kv )
-{
- m_KeyValues.Insert( kv.szKey, kv );
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Constructor. Sets the initial size of the keyvalue array.
-//-----------------------------------------------------------------------------
-template<class Base>
-WCKeyValuesT<Base>::WCKeyValuesT(void)
-{
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Destructor. Deletes the contents of this keyvalue array.
-//-----------------------------------------------------------------------------
-template<class Base>
-WCKeyValuesT<Base>::~WCKeyValuesT(void)
-{
- //int i = 0;
- //while (i < m_KeyValues.GetSize())
- //{
- // delete m_KeyValues.GetAt(i++);
- //}
-
- RemoveAll();
-}
-
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-template<class Base>
-const char *WCKeyValuesT<Base>::GetValue(const char *pszKey, int *piIndex) const
-{
- int i = FindByKeyName( pszKey );
- if ( i == GetInvalidIndex() )
- {
- return NULL;
- }
- else
- {
- if(piIndex)
- piIndex[0] = i;
-
- return m_KeyValues[i].szValue;
- }
-}
-
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-template<class Base>
-void WCKeyValuesT<Base>::RemoveKey(const char *pszKey)
-{
- SetValue(pszKey, (const char *)NULL);
-}
-
-
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-template<class Base>
-void WCKeyValuesT<Base>::SetValue(const char *pszKey, int iValue)
-{
- char szValue[100];
- itoa(iValue, szValue, 10);
-
- SetValue(pszKey, szValue);
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Strips leading and trailing whitespace from the string.
-// Input : psz -
-//-----------------------------------------------------------------------------
-void StripEdgeWhiteSpace(char *psz)
-{
- if (!psz || !*psz)
- return;
-
- char *pszBase = psz;
-
- while (V_isspace(*psz))
- {
- psz++;
- }
-
- int iLen = strlen(psz) - 1;
-
- if ( iLen >= 0 )
- {
- while (V_isspace(psz[iLen]))
- {
- psz[iLen--] = 0;
- }
- }
-
- if (psz != pszBase)
- {
- memmove(pszBase, psz, iLen + 2);
- }
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : pszKey -
-// pszValue -
-//-----------------------------------------------------------------------------
-template<class Base>
-void WCKeyValuesT<Base>::SetValue(const char *pszKey, const char *pszValue)
-{
- char szTmpKey[KEYVALUE_MAX_KEY_LENGTH];
- char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH];
-
- V_strcpy_safe(szTmpKey, pszKey);
-
- if (pszValue != NULL)
- {
- V_strcpy_safe(szTmpValue, pszValue);
- }
- else
- {
- szTmpValue[0] = 0;
- }
-
- StripEdgeWhiteSpace(szTmpKey);
- StripEdgeWhiteSpace(szTmpValue);
-
- int i = FindByKeyName( szTmpKey );
- if ( i == GetInvalidIndex() )
- {
- if ( pszValue )
- {
- //
- // Add the keyvalue to our list.
- //
- MDkeyvalue newkv;
- Q_strncpy( newkv.szKey, szTmpKey, sizeof( newkv.szKey ) );
- Q_strncpy( newkv.szValue, szTmpValue, sizeof( newkv.szValue ) );
- InsertKeyValue( newkv );
- }
- }
- else
- {
- if (pszValue != NULL)
- {
- V_strncpy(m_KeyValues[i].szValue, szTmpValue, sizeof(m_KeyValues[i].szValue));
- }
- //
- // If we are setting to a NULL value, delete the key.
- //
- else
- {
- RemoveKeyAt( i );
- }
- }
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-template<class Base>
-void WCKeyValuesT<Base>::RemoveAll(void)
-{
- m_KeyValues.RemoveAll();
-}
-
-
-// Explicit instantiations.
-template class WCKeyValuesT<WCKVBase_Dict>;
-template class WCKeyValuesT<WCKVBase_Vector>;
-
-
-
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//============================================================================= + +#include "fgdlib/WCKeyValues.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include <tier0/memdbgon.h> + + +//----------------------------------------------------------------------------- +// Purpose: Destructor. +//----------------------------------------------------------------------------- +MDkeyvalue::~MDkeyvalue(void) +{ +} + + +//----------------------------------------------------------------------------- +// Purpose: Assignment operator. +//----------------------------------------------------------------------------- +MDkeyvalue &MDkeyvalue::operator =(const MDkeyvalue &other) +{ + V_strcpy_safe(szKey, other.szKey); + V_strcpy_safe(szValue, other.szValue); + + return(*this); +} + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void WCKVBase_Vector::RemoveKeyAt(int nIndex) +{ + Assert(nIndex >= 0); + Assert(nIndex < (int)m_KeyValues.Count()); + + if ((nIndex >= 0) && (nIndex < (int)m_KeyValues.Count())) + { + m_KeyValues.Remove(nIndex); + } +} + +//----------------------------------------------------------------------------- +// Purpose: Adds the key to the keyvalue array. Allows duplicate keys. +// +// NOTE: This should only be used for keyvalue lists that do not require +// unique key names! If you use this function then you should use GetCount +// and GetKey/Value by index rather than GetValue by key name. +//----------------------------------------------------------------------------- +void WCKVBase_Vector::AddKeyValue(const char *pszKey, const char *pszValue) +{ + if (!pszKey || !pszValue) + { + return; + } + + char szTmpKey[KEYVALUE_MAX_KEY_LENGTH]; + char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH]; + + V_strcpy_safe(szTmpKey, pszKey); + V_strcpy_safe(szTmpValue, pszValue); + + StripEdgeWhiteSpace(szTmpKey); + StripEdgeWhiteSpace(szTmpValue); + + // + // Add the keyvalue to our list. + // + MDkeyvalue newkv; + V_strcpy_safe(newkv.szKey, szTmpKey); + V_strcpy_safe(newkv.szValue, szTmpValue); + m_KeyValues.AddToTail(newkv); +} + +int WCKVBase_Vector::FindByKeyName( const char *pKeyName ) const +{ + for ( int i=0; i < m_KeyValues.Count(); i++ ) + { + if ( V_stricmp( m_KeyValues[i].szKey, pKeyName ) == 0 ) + return i; + } + return GetInvalidIndex(); +} + +void WCKVBase_Vector::InsertKeyValue( const MDkeyvalue &kv ) +{ + m_KeyValues.AddToTail( kv ); +} + + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +void WCKVBase_Dict::RemoveKeyAt(int nIndex) +{ + m_KeyValues.RemoveAt(nIndex); +} + + +int WCKVBase_Dict::FindByKeyName( const char *pKeyName ) const +{ + return m_KeyValues.Find( pKeyName ); +} + +void WCKVBase_Dict::InsertKeyValue( const MDkeyvalue &kv ) +{ + m_KeyValues.Insert( kv.szKey, kv ); +} + + +//----------------------------------------------------------------------------- +// Purpose: Constructor. Sets the initial size of the keyvalue array. +//----------------------------------------------------------------------------- +template<class Base> +WCKeyValuesT<Base>::WCKeyValuesT(void) +{ +} + + +//----------------------------------------------------------------------------- +// Purpose: Destructor. Deletes the contents of this keyvalue array. +//----------------------------------------------------------------------------- +template<class Base> +WCKeyValuesT<Base>::~WCKeyValuesT(void) +{ + //int i = 0; + //while (i < m_KeyValues.GetSize()) + //{ + // delete m_KeyValues.GetAt(i++); + //} + + RemoveAll(); +} + + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +template<class Base> +const char *WCKeyValuesT<Base>::GetValue(const char *pszKey, int *piIndex) const +{ + int i = FindByKeyName( pszKey ); + if ( i == GetInvalidIndex() ) + { + return NULL; + } + else + { + if(piIndex) + piIndex[0] = i; + + return m_KeyValues[i].szValue; + } +} + + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +template<class Base> +void WCKeyValuesT<Base>::RemoveKey(const char *pszKey) +{ + SetValue(pszKey, (const char *)NULL); +} + + +//----------------------------------------------------------------------------- +//----------------------------------------------------------------------------- +template<class Base> +void WCKeyValuesT<Base>::SetValue(const char *pszKey, int iValue) +{ + char szValue[100]; + itoa(iValue, szValue, 10); + + SetValue(pszKey, szValue); +} + + +//----------------------------------------------------------------------------- +// Purpose: Strips leading and trailing whitespace from the string. +// Input : psz - +//----------------------------------------------------------------------------- +void StripEdgeWhiteSpace(char *psz) +{ + if (!psz || !*psz) + return; + + char *pszBase = psz; + + while (V_isspace(*psz)) + { + psz++; + } + + int iLen = strlen(psz) - 1; + + if ( iLen >= 0 ) + { + while (V_isspace(psz[iLen])) + { + psz[iLen--] = 0; + } + } + + if (psz != pszBase) + { + memmove(pszBase, psz, iLen + 2); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : pszKey - +// pszValue - +//----------------------------------------------------------------------------- +template<class Base> +void WCKeyValuesT<Base>::SetValue(const char *pszKey, const char *pszValue) +{ + char szTmpKey[KEYVALUE_MAX_KEY_LENGTH]; + char szTmpValue[KEYVALUE_MAX_VALUE_LENGTH]; + + V_strcpy_safe(szTmpKey, pszKey); + + if (pszValue != NULL) + { + V_strcpy_safe(szTmpValue, pszValue); + } + else + { + szTmpValue[0] = 0; + } + + StripEdgeWhiteSpace(szTmpKey); + StripEdgeWhiteSpace(szTmpValue); + + int i = FindByKeyName( szTmpKey ); + if ( i == GetInvalidIndex() ) + { + if ( pszValue ) + { + // + // Add the keyvalue to our list. + // + MDkeyvalue newkv; + Q_strncpy( newkv.szKey, szTmpKey, sizeof( newkv.szKey ) ); + Q_strncpy( newkv.szValue, szTmpValue, sizeof( newkv.szValue ) ); + InsertKeyValue( newkv ); + } + } + else + { + if (pszValue != NULL) + { + V_strncpy(m_KeyValues[i].szValue, szTmpValue, sizeof(m_KeyValues[i].szValue)); + } + // + // If we are setting to a NULL value, delete the key. + // + else + { + RemoveKeyAt( i ); + } + } +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +template<class Base> +void WCKeyValuesT<Base>::RemoveAll(void) +{ + m_KeyValues.RemoveAll(); +} + + +// Explicit instantiations. +template class WCKeyValuesT<WCKVBase_Dict>; +template class WCKeyValuesT<WCKVBase_Vector>; + + + |