/****************************************************************************
*
* Copyright (C) 2000-2001 RealNetworks, Inc. All rights reserved.
*
* This program is free software. It may be distributed under the terms
* in the file LICENSE, found in the top level of the source distribution.
*
*/
#include <ctype.h>
#include "valmap.h"
/*****************************************************************************
*
* CKeyValPair
*
*****************************************************************************/
CKeyValPair::CKeyValPair( void )
{
// Empty
}
CKeyValPair::CKeyValPair( const CKeyValPair& other ) :
m_strKey(other.m_strKey),
m_varVal(other.m_varVal)
{
// Empty
}
CKeyValPair::CKeyValPair( const CString& strKey ) :
m_strKey(strKey)
{
// Empty
}
CKeyValPair::CKeyValPair( const CString& strKey, const CVariant& varVal ) :
m_strKey(strKey),
m_varVal(varVal)
{
// Empty
}
CKeyValPair::~CKeyValPair( void )
{
// Empty
}
CKeyValPair& CKeyValPair::operator=( const CKeyValPair& other )
{
m_strKey = other.m_strKey;
m_varVal = other.m_varVal;
return *this;
}
const CString& CKeyValPair::GetKey( void )
{
return m_strKey;
}
const CVariant& CKeyValPair::GetVal( void )
{
return m_varVal;
}
void CKeyValPair::SetVal( const CVariant& varVal )
{
m_varVal = varVal;
}
bool CKeyValPair::operator==( const CKeyValPair& other ) const
{
return ( m_strKey == other.m_strKey );
}
bool CKeyValPair::operator<( const CKeyValPair& other ) const
{
return ( m_strKey < other.m_strKey );
}
bool CKeyValPair::operator>( const CKeyValPair& other ) const
{
return ( m_strKey > other.m_strKey );
}
/*****************************************************************************
*
* CValueMap
*
*****************************************************************************/
CValueMap::CValueMap( bool bCaseSensitive /* = false */ ) :
m_bCaseSensitive(bCaseSensitive)
{
// Empty
}
CValueMap::~CValueMap( void )
{
// Empty
}
bool CValueMap::Lookup( const CString& strKey, CVariant* pvarVal ) const
{
bool found = false;
CString strRealKey = strKey;
if( ! m_bCaseSensitive )
{
strRealKey.ToLower();
}
CKeyValPair* pResult = m_map.Search( CKeyValPair( strRealKey ) );
if( pResult )
{
*pvarVal = pResult->GetVal();
found = true;
}
return found;
}
CVariant CValueMap::Lookup( const CString& strKey ) const
{
CVariant var;
Lookup( strKey, &var );
return var;
}
void CValueMap::SetAt( const CString& strKey, const CVariant& varVal )
{
CString strRealKey = strKey;
if( ! m_bCaseSensitive )
{
strRealKey.ToLower();
}
CKeyValPair kvp( strRealKey, varVal );
m_map.Delete( kvp );
m_map.Insert( kvp );
}
syntax highlighted by Code2HTML, v. 0.9.1