Fix line endings. WHAMMY.

This commit is contained in:
Jørgen P. Tjernø
2013-12-02 19:46:31 -08:00
parent c47ad60970
commit f56bb35301
6719 changed files with 2805089 additions and 2805089 deletions
+40 -40
View File
@@ -1,40 +1,40 @@
//-----------------------------------------------------------------------------
// FGDLIB.VPC
//
// Project Script
//-----------------------------------------------------------------------------
$Macro SRCDIR ".."
$Include "$SRCDIR\vpc_scripts\source_lib_base.vpc"
$Configuration
{
$Compiler
{
$AdditionalIncludeDirectories "$BASE,$SRCDIR\utils\common"
}
}
$Project "Fgdlib"
{
$Folder "Source Files"
{
$File "gamedata.cpp"
$File "gdclass.cpp"
$File "gdvar.cpp"
$File "inputoutput.cpp"
$File "wckeyvalues.cpp"
}
$Folder "Header Files"
{
$File "$SRCDIR\public\fgdlib\fgdlib.h"
$File "$SRCDIR\public\fgdlib\gamedata.h"
$File "$SRCDIR\public\fgdlib\gdclass.h"
$File "$SRCDIR\public\fgdlib\gdvar.h"
$File "$SRCDIR\public\fgdlib\helperinfo.h"
$File "$SRCDIR\public\fgdlib\ieditortexture.h"
$File "$SRCDIR\public\fgdlib\inputoutput.h"
$File "$SRCDIR\public\fgdlib\wckeyvalues.h"
}
}
//-----------------------------------------------------------------------------
// FGDLIB.VPC
//
// Project Script
//-----------------------------------------------------------------------------
$Macro SRCDIR ".."
$Include "$SRCDIR\vpc_scripts\source_lib_base.vpc"
$Configuration
{
$Compiler
{
$AdditionalIncludeDirectories "$BASE,$SRCDIR\utils\common"
}
}
$Project "Fgdlib"
{
$Folder "Source Files"
{
$File "gamedata.cpp"
$File "gdclass.cpp"
$File "gdvar.cpp"
$File "inputoutput.cpp"
$File "wckeyvalues.cpp"
}
$Folder "Header Files"
{
$File "$SRCDIR\public\fgdlib\fgdlib.h"
$File "$SRCDIR\public\fgdlib\gamedata.h"
$File "$SRCDIR\public\fgdlib\gdclass.h"
$File "$SRCDIR\public\fgdlib\gdvar.h"
$File "$SRCDIR\public\fgdlib\helperinfo.h"
$File "$SRCDIR\public\fgdlib\ieditortexture.h"
$File "$SRCDIR\public\fgdlib\inputoutput.h"
$File "$SRCDIR\public\fgdlib\wckeyvalues.h"
}
}
+886 -886
View File
File diff suppressed because it is too large Load Diff
+1041 -1041
View File
File diff suppressed because it is too large Load Diff
+729 -729
View File
File diff suppressed because it is too large Load Diff
+171 -171
View File
@@ -1,171 +1,171 @@
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#include <tier0/dbg.h>
#include "fgdlib/InputOutput.h"
// memdbgon must be the last include file in a .cpp file!!!
#include <tier0/memdbgon.h>
typedef struct
{
InputOutputType_t eType; // The enumeration of this type.
char *pszName; // The name of this type.
} TypeMap_t;
char *CClassInputOutputBase::g_pszEmpty = "";
//-----------------------------------------------------------------------------
// Maps type names to type enums for inputs and outputs.
//-----------------------------------------------------------------------------
static TypeMap_t TypeMap[] =
{
{ iotVoid, "void" },
{ iotInt, "integer" },
{ iotBool, "bool" },
{ iotString, "string" },
{ iotFloat, "float" },
{ iotVector, "vector" },
{ iotEHandle, "target_destination" },
{ iotColor, "color255" },
{ iotEHandle, "ehandle" }, // for backwards compatibility
};
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CClassInputOutputBase::CClassInputOutputBase(void)
{
m_eType = iotInvalid;
m_pszDescription = NULL;
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : pszName -
// eType -
//-----------------------------------------------------------------------------
CClassInputOutputBase::CClassInputOutputBase(const char *pszName, InputOutputType_t eType)
{
m_pszDescription = NULL;
}
//-----------------------------------------------------------------------------
// Purpose: Destructor.
//-----------------------------------------------------------------------------
CClassInputOutputBase::~CClassInputOutputBase(void)
{
delete m_pszDescription;
m_pszDescription = NULL;
}
//-----------------------------------------------------------------------------
// Purpose: Returns a string representing the type of this I/O, eg. "integer".
//-----------------------------------------------------------------------------
const char *CClassInputOutputBase::GetTypeText(void)
{
for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++)
{
if (TypeMap[i].eType == m_eType)
{
return(TypeMap[i].pszName);
}
}
return("unknown");
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : szType -
// Output : InputOutputType_t
//-----------------------------------------------------------------------------
InputOutputType_t CClassInputOutputBase::SetType(const char *szType)
{
for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++)
{
if (!stricmp(TypeMap[i].pszName, szType))
{
m_eType = TypeMap[i].eType;
return(m_eType);
}
}
return(iotInvalid);
}
//-----------------------------------------------------------------------------
// Purpose: Assignment operator.
//-----------------------------------------------------------------------------
CClassInputOutputBase &CClassInputOutputBase::operator =(CClassInputOutputBase &Other)
{
strcpy(m_szName, Other.m_szName);
m_eType = Other.m_eType;
//
// Copy the description.
//
delete m_pszDescription;
if (Other.m_pszDescription != NULL)
{
m_pszDescription = new char[strlen(Other.m_pszDescription) + 1];
strcpy(m_pszDescription, Other.m_pszDescription);
}
else
{
m_pszDescription = NULL;
}
return(*this);
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CClassInput::CClassInput(void)
{
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : pszName -
// eType -
//-----------------------------------------------------------------------------
CClassInput::CClassInput(const char *pszName, InputOutputType_t eType)
: CClassInputOutputBase(pszName, eType)
{
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CClassOutput::CClassOutput(void)
{
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : pszName -
// eType -
//-----------------------------------------------------------------------------
CClassOutput::CClassOutput(const char *pszName, InputOutputType_t eType)
: CClassInputOutputBase(pszName, eType)
{
}
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#include <tier0/dbg.h>
#include "fgdlib/InputOutput.h"
// memdbgon must be the last include file in a .cpp file!!!
#include <tier0/memdbgon.h>
typedef struct
{
InputOutputType_t eType; // The enumeration of this type.
char *pszName; // The name of this type.
} TypeMap_t;
char *CClassInputOutputBase::g_pszEmpty = "";
//-----------------------------------------------------------------------------
// Maps type names to type enums for inputs and outputs.
//-----------------------------------------------------------------------------
static TypeMap_t TypeMap[] =
{
{ iotVoid, "void" },
{ iotInt, "integer" },
{ iotBool, "bool" },
{ iotString, "string" },
{ iotFloat, "float" },
{ iotVector, "vector" },
{ iotEHandle, "target_destination" },
{ iotColor, "color255" },
{ iotEHandle, "ehandle" }, // for backwards compatibility
};
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CClassInputOutputBase::CClassInputOutputBase(void)
{
m_eType = iotInvalid;
m_pszDescription = NULL;
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : pszName -
// eType -
//-----------------------------------------------------------------------------
CClassInputOutputBase::CClassInputOutputBase(const char *pszName, InputOutputType_t eType)
{
m_pszDescription = NULL;
}
//-----------------------------------------------------------------------------
// Purpose: Destructor.
//-----------------------------------------------------------------------------
CClassInputOutputBase::~CClassInputOutputBase(void)
{
delete m_pszDescription;
m_pszDescription = NULL;
}
//-----------------------------------------------------------------------------
// Purpose: Returns a string representing the type of this I/O, eg. "integer".
//-----------------------------------------------------------------------------
const char *CClassInputOutputBase::GetTypeText(void)
{
for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++)
{
if (TypeMap[i].eType == m_eType)
{
return(TypeMap[i].pszName);
}
}
return("unknown");
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : szType -
// Output : InputOutputType_t
//-----------------------------------------------------------------------------
InputOutputType_t CClassInputOutputBase::SetType(const char *szType)
{
for (int i = 0; i < sizeof(TypeMap) / sizeof(TypeMap[0]); i++)
{
if (!stricmp(TypeMap[i].pszName, szType))
{
m_eType = TypeMap[i].eType;
return(m_eType);
}
}
return(iotInvalid);
}
//-----------------------------------------------------------------------------
// Purpose: Assignment operator.
//-----------------------------------------------------------------------------
CClassInputOutputBase &CClassInputOutputBase::operator =(CClassInputOutputBase &Other)
{
strcpy(m_szName, Other.m_szName);
m_eType = Other.m_eType;
//
// Copy the description.
//
delete m_pszDescription;
if (Other.m_pszDescription != NULL)
{
m_pszDescription = new char[strlen(Other.m_pszDescription) + 1];
strcpy(m_pszDescription, Other.m_pszDescription);
}
else
{
m_pszDescription = NULL;
}
return(*this);
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CClassInput::CClassInput(void)
{
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : pszName -
// eType -
//-----------------------------------------------------------------------------
CClassInput::CClassInput(const char *pszName, InputOutputType_t eType)
: CClassInputOutputBase(pszName, eType)
{
}
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
CClassOutput::CClassOutput(void)
{
}
//-----------------------------------------------------------------------------
// Purpose:
// Input : pszName -
// eType -
//-----------------------------------------------------------------------------
CClassOutput::CClassOutput(const char *pszName, InputOutputType_t eType)
: CClassInputOutputBase(pszName, eType)
{
}
+282 -282
View File
@@ -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>;