better asserts

tolerate a list not importing any options (eg. Fail30Misses selected but
not available)
This commit is contained in:
Glenn Maynard
2005-03-11 02:01:55 +00:00
parent a22b272aeb
commit 295bb05566
2 changed files with 11 additions and 4 deletions
+5 -4
View File
@@ -737,15 +737,16 @@ void OptionRow::HandleMessage( const CString& sMessage )
#define INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( vbSelected ) \
if( GetFirstItemGoesDown() ) \
vbSelected.insert( vbSelected.begin(), false );
static void VerifySelected( SelectType st, const vector<bool> &vbSelected )
static void VerifySelected( SelectType st, const vector<bool> &vbSelected, const CString &sName )
{
int iNumSelected = 0;
if( st == SELECT_ONE )
{
ASSERT_M( vbSelected.size() > 0, ssprintf("%s: %i/%i", sName.c_str(), iNumSelected, vbSelected.size()) );
for( unsigned e = 0; e < vbSelected.size(); ++e )
if( vbSelected[e] )
iNumSelected++;
ASSERT( iNumSelected == 1 );
ASSERT_M( iNumSelected == 1, ssprintf("%s: %i/%i", sName.c_str(), iNumSelected, vbSelected.size()) );
}
}
@@ -763,7 +764,7 @@ void OptionRow::ImportOptions( PlayerNumber pn )
ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[pn] );
m_pHand->ImportOption( m_RowDef, pn, m_vbSelected[pn] );
INSERT_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[pn] );
VerifySelected( m_RowDef.selectType, m_vbSelected[pn] );
VerifySelected( m_RowDef.selectType, m_vbSelected[pn], m_RowDef.name );
}
void OptionRow::ImportOptions()
@@ -781,7 +782,7 @@ int OptionRow::ExportOptions( PlayerNumber pn )
int iChangeMask = 0;
VerifySelected( m_RowDef.selectType, m_vbSelected[pn] );
VerifySelected( m_RowDef.selectType, m_vbSelected[pn], m_RowDef.name );
ASSERT( m_vbSelected[pn].size() == m_RowDef.choices.size() );
ERASE_ONE_BOOL_AT_FRONT_IF_NEEDED( m_vbSelected[pn] );
iChangeMask |= m_pHand->ExportOption( m_RowDef, pn, m_vbSelected[pn] );