108 lines
2.8 KiB
C++
108 lines
2.8 KiB
C++
#include "Precompiled.h"
|
|
|
|
|
|
|
|
|
|
#include "RakiTests/_Win32/KeyValueContainer.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace raki
|
|
{
|
|
|
|
|
|
KeyValueContainer::KeyValueContainer( int _argc, _TCHAR* _argv[] )
|
|
{
|
|
// start from 1 since first param is
|
|
for ( int i = 1 ; i < _argc ; ++i )
|
|
{
|
|
wchar_t * res = wcsstr( _argv[i], _T( "=" ) );
|
|
|
|
if ( res )
|
|
{
|
|
size_t pairSize = wcslen( _argv[i] );
|
|
size_t keySize = (int)( res - _argv[i] );
|
|
|
|
if ( pairSize < ( keySize + 1 ) )
|
|
continue;
|
|
|
|
TCHAR key[256];
|
|
memcpy( key, _argv[ i ], keySize * sizeof( TCHAR ) );
|
|
key[ keySize ] = 0;
|
|
|
|
TCHAR * pairValue = &_argv[ i ][ keySize + 1];
|
|
|
|
KeyValuePair pair;
|
|
pair.m_key = key;
|
|
pair.m_value = pairValue;
|
|
|
|
// check that pair is not already added
|
|
bool keyIsAlreadyUsed = false;
|
|
for ( std::list<KeyValuePair>::iterator it = m_keyValueArray.begin() ; it != m_keyValueArray.end() ; ++it )
|
|
{
|
|
if ( !_wcsicmp( it->m_key.c_str(), key ) )
|
|
keyIsAlreadyUsed = true;
|
|
}
|
|
|
|
if ( !keyIsAlreadyUsed )
|
|
m_keyValueArray.push_back( pair );
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
const std::wstring & KeyValueContainer::getStringValue( const _TCHAR * _key )
|
|
{
|
|
for ( std::list<KeyValuePair>::const_iterator it = m_keyValueArray.begin() ; it != m_keyValueArray.end() ; ++it )
|
|
{
|
|
if ( !_wcsicmp( it->m_key.c_str(), _key ) )
|
|
return it->m_value;
|
|
}
|
|
|
|
return m_emptyWString;
|
|
}
|
|
|
|
|
|
const int KeyValueContainer::getIntValue( const _TCHAR * _key )
|
|
{
|
|
for ( std::list<KeyValuePair>::const_iterator it = m_keyValueArray.begin() ; it != m_keyValueArray.end() ; ++it )
|
|
{
|
|
if ( !_wcsicmp( it->m_key.c_str(), _key ) )
|
|
return _wtoi( it->m_value.c_str() );
|
|
}
|
|
|
|
return -1;
|
|
}
|
|
|
|
|
|
const bool KeyValueContainer::getBoolValue( const _TCHAR * _key )
|
|
{
|
|
for ( std::list<KeyValuePair>::const_iterator it = m_keyValueArray.begin() ; it != m_keyValueArray.end() ; ++it )
|
|
{
|
|
if ( !_wcsicmp( it->m_key.c_str(), _key ) )
|
|
{
|
|
if ( !_wcsicmp( it->m_value.c_str(), _T( "t" ) ) )
|
|
return true;
|
|
if ( !_wcsicmp( it->m_value.c_str(), _T( "true" ) ) )
|
|
return true;
|
|
if ( !_wcsicmp( it->m_value.c_str(), _T( "1" ) ) )
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
const size_t KeyValueContainer::getNbKeyValuePairs()
|
|
{
|
|
return m_keyValueArray.size();
|
|
}
|
|
|
|
|
|
} // namespace raki
|
|
|
|
|