handle switch default cases in a consistent way: DEFAULT_FAIL at the start of the case list

This commit is contained in:
Chris Danford
2006-06-14 09:56:57 +00:00
parent 1092237cb0
commit a5690312ef
2 changed files with 40 additions and 46 deletions
+37 -46
View File
@@ -438,11 +438,11 @@ const MapEditToDI *ScreenEdit::GetCurrentDeviceInputMap() const
{
switch( m_EditState )
{
DEFAULT_FAIL( m_EditState );
case STATE_EDITING: return &m_EditMappingsDeviceInput;
case STATE_PLAYING: return &m_PlayMappingsDeviceInput;
case STATE_RECORDING: return &m_RecordMappingsDeviceInput;
case STATE_RECORDING_PAUSED: return &m_RecordPausedMappingsDeviceInput;
default: FAIL_M( ssprintf("%i",m_EditState) );
}
}
@@ -450,11 +450,11 @@ const MapEditButtonToMenuButton *ScreenEdit::GetCurrentMenuButtonMap() const
{
switch( m_EditState )
{
DEFAULT_FAIL( m_EditState );
case STATE_EDITING: return &m_EditMappingsMenuButton;
case STATE_PLAYING: return &m_PlayMappingsMenuButton;
case STATE_RECORDING: return &m_RecordMappingsMenuButton;
case STATE_RECORDING_PAUSED: return &m_RecordPausedMappingsMenuButton;
default: FAIL_M( ssprintf("%i",m_EditState) );
}
}
@@ -985,6 +985,7 @@ void ScreenEdit::UpdateTextInfo()
sText += ssprintf( "%s:\n %.3f\n", CURRENT_SECOND.GetValue().c_str(), m_pSong->GetElapsedTimeFromBeat(GAMESTATE->m_fSongBeat) );
switch( EDIT_MODE.GetValue() )
{
DEFAULT_FAIL( EDIT_MODE.GetValue() );
case EditMode_Practice:
break;
case EditMode_CourseMods:
@@ -992,8 +993,6 @@ void ScreenEdit::UpdateTextInfo()
case EditMode_Full:
sText += ssprintf( "%s:\n %s\n", SNAP_TO.GetValue().c_str(), sNoteType.c_str() );
break;
default:
ASSERT(0);
}
if( m_NoteFieldEdit.m_iBeginMarker != -1 )
@@ -1008,6 +1007,7 @@ void ScreenEdit::UpdateTextInfo()
switch( EDIT_MODE.GetValue() )
{
DEFAULT_FAIL( EDIT_MODE.GetValue() );
case EditMode_Practice:
case EditMode_CourseMods:
case EditMode_Home:
@@ -1019,8 +1019,6 @@ void ScreenEdit::UpdateTextInfo()
if( m_pSong->m_sSubTitle.size() )
sText += ssprintf( "%s:\n %s\n", SUBTITLE.GetValue().c_str(), m_pSong->m_sSubTitle.c_str() );
break;
default:
ASSERT(0);
}
sText += ssprintf( "%s:\n %d\n", TAP_STEPS.GetValue().c_str(), m_NoteDataEdit.GetNumTapNotes() );
sText += ssprintf( "%s:\n %d\n", JUMPS.GetValue().c_str(), m_NoteDataEdit.GetNumJumps() );
@@ -1030,6 +1028,7 @@ void ScreenEdit::UpdateTextInfo()
sText += ssprintf( "%s:\n %d\n", ROLLS.GetValue().c_str(), m_NoteDataEdit.GetNumRolls() );
switch( EDIT_MODE.GetValue() )
{
DEFAULT_FAIL( EDIT_MODE.GetValue() );
case EditMode_Practice:
case EditMode_CourseMods:
case EditMode_Home:
@@ -1039,8 +1038,6 @@ void ScreenEdit::UpdateTextInfo()
sText += ssprintf( "%s:\n %.3f secs\n", PREVIEW_START.GetValue().c_str(), m_pSong->m_fMusicSampleStartSeconds );
sText += ssprintf( "%s:\n %.3f secs\n", PREVIEW_LENGTH.GetValue().c_str(), m_pSong->m_fMusicSampleLengthSeconds );
break;
default:
ASSERT(0);
}
m_textInfo.SetText( sText );
@@ -1081,6 +1078,7 @@ void ScreenEdit::Input( const InputEventPlus &input )
switch( m_EditState )
{
DEFAULT_FAIL( m_EditState );
case STATE_EDITING:
InputEdit( input, EditB );
m_bTextInfoNeedsUpdate = true;
@@ -1094,7 +1092,6 @@ void ScreenEdit::Input( const InputEventPlus &input )
case STATE_PLAYING:
InputPlay( input, EditB );
break;
default: ASSERT(0);
}
}
@@ -1102,14 +1099,13 @@ static void ShiftToRightSide( int &iCol, int iNumTracks )
{
switch( GAMESTATE->GetCurrentStyle()->m_StyleType )
{
DEFAULT_FAIL( GAMESTATE->GetCurrentStyle()->m_StyleType );
case ONE_PLAYER_ONE_SIDE:
break;
case TWO_PLAYERS_TWO_SIDES:
case ONE_PLAYER_TWO_SIDES:
iCol += iNumTracks/2;
break;
default:
ASSERT(0);
}
}
@@ -1139,6 +1135,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_COLUMN_0:
case EDIT_BUTTON_COLUMN_1:
case EDIT_BUTTON_COLUMN_2:
@@ -1251,6 +1248,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
float fBeatsToMove=0.f;
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_SCROLL_UP_LINE:
case EDIT_BUTTON_SCROLL_DOWN_LINE:
fBeatsToMove = NoteTypeToBeat( m_SnapDisplay.GetNoteType() );
@@ -1390,6 +1388,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_OPEN_PREV_STEPS:
if( it==vSteps.begin() )
{
@@ -1406,7 +1405,6 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
return;
}
break;
default: ASSERT(0); return;
}
pSteps = *it;
@@ -1432,9 +1430,9 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
float fDelta;
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_BPM_UP: fDelta = +0.020f; break;
case EDIT_BUTTON_BPM_DOWN: fDelta = -0.020f; break;
default: ASSERT(0); return;
}
if( EditIsBeingPressed( EDIT_BUTTON_ADJUST_FINE ) )
{
@@ -1460,9 +1458,9 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
float fDelta;
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_STOP_UP: fDelta = +0.020f; break;
case EDIT_BUTTON_STOP_DOWN: fDelta = -0.020f; break;
default: ASSERT(0); return;
}
if( EditIsBeingPressed( EDIT_BUTTON_ADJUST_FINE ) )
{
@@ -1505,9 +1503,9 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
float fDelta;
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_OFFSET_DOWN: fDelta = -0.02f; break;
case EDIT_BUTTON_OFFSET_UP: fDelta = +0.02f; break;
default: ASSERT(0); return;
}
if( EditIsBeingPressed( EDIT_BUTTON_ADJUST_FINE ) )
{
@@ -1533,11 +1531,11 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
float fDelta;
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_SAMPLE_START_DOWN: fDelta = -0.02f; break;
case EDIT_BUTTON_SAMPLE_START_UP: fDelta = +0.02f; break;
case EDIT_BUTTON_SAMPLE_LENGTH_DOWN: fDelta = -0.02f; break;
case EDIT_BUTTON_SAMPLE_LENGTH_UP: fDelta = +0.02f; break;
default: ASSERT(0); return;
}
switch( input.type )
{
@@ -1565,6 +1563,7 @@ void ScreenEdit::InputEdit( const InputEventPlus &input, EditButton EditB )
case EDIT_BUTTON_OPEN_BGCHANGE_LAYER2_MENU:
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_OPEN_BGCHANGE_LAYER1_MENU: g_CurrentBGChangeLayer = BACKGROUND_LAYER_1; break;
case EDIT_BUTTON_OPEN_BGCHANGE_LAYER2_MENU: g_CurrentBGChangeLayer = BACKGROUND_LAYER_2; break;
}
@@ -1879,6 +1878,7 @@ void ScreenEdit::InputRecord( const InputEventPlus &input, EditButton EditB )
switch( input.type )
{
DEFAULT_FAIL( input.type );
case IET_FIRST_PRESS:
{
if( EditIsBeingPressed(EDIT_BUTTON_REMOVE_NOTE) )
@@ -1915,6 +1915,7 @@ void ScreenEdit::InputRecord( const InputEventPlus &input, EditButton EditB )
case IET_SLOW_REPEAT:
case IET_FAST_REPEAT:
case IET_RELEASE:
case IET_LEVEL_CHANGED:
// don't add or extend holds here; we do it in Update()
break;
}
@@ -1927,6 +1928,7 @@ void ScreenEdit::InputRecordPaused( const InputEventPlus &input, EditButton Edit
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_UNDO:
/* We've already actually committed changes to m_NoteDataEdit, so all we have
* to do to undo is Undo() as usual, and copy the note data back in. */
@@ -1980,6 +1982,7 @@ void ScreenEdit::InputPlay( const InputEventPlus &input, EditButton EditB )
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_RETURN_TO_EDIT:
/* When exiting play mode manually, leave the cursor where it is. */
m_fBeatToReturnTo = GAMESTATE->m_fSongBeat;
@@ -2001,9 +2004,9 @@ void ScreenEdit::InputPlay( const InputEventPlus &input, EditButton EditB )
float fOffsetDelta;
switch( EditB )
{
DEFAULT_FAIL( EditB );
case EDIT_BUTTON_OFFSET_DOWN: fOffsetDelta = -0.020f; break;
case EDIT_BUTTON_OFFSET_UP: fOffsetDelta = +0.020f; break;
default: ASSERT(0); return;
}
if( EditIsBeingPressed( EDIT_BUTTON_ADJUST_FINE ) )
@@ -2119,6 +2122,7 @@ void ScreenEdit::TransitionEditState( EditState em )
switch( em )
{
DEFAULT_FAIL( em );
case STATE_EDITING:
/* Important: people will stop playing, change the BG and start again; make sure we reload */
m_Background.Unload();
@@ -2157,14 +2161,11 @@ void ScreenEdit::TransitionEditState( EditState em )
}
case STATE_RECORDING_PAUSED:
break;
default:
ASSERT(0);
}
switch( em )
{
case STATE_PLAYING:
{
GAMESTATE->RestoreSelectedOptions();
GAMESTATE->StoreStageOptions();
@@ -2191,11 +2192,8 @@ void ScreenEdit::TransitionEditState( EditState em )
}
break;
}
case STATE_RECORDING:
case STATE_RECORDING_PAUSED:
{
// initialize m_NoteFieldRecord
m_NoteDataRecord.CopyAll( m_NoteDataEdit );
@@ -2205,7 +2203,6 @@ void ScreenEdit::TransitionEditState( EditState em )
break;
}
}
//
// Show/hide depending on em
@@ -2491,6 +2488,7 @@ void ScreenEdit::HandleScreenMessage( const ScreenMessage SM )
{
switch( ScreenPrompt::s_LastAnswer )
{
DEFAULT_FAIL( ScreenPrompt::s_LastAnswer );
case ANSWER_YES:
// This will send SM_SaveSuccessful or SM_SaveFailed.
HandleMainMenuChoice( ScreenEdit::save_on_exit );
@@ -2639,6 +2637,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
{
switch( c )
{
DEFAULT_FAIL( c );
case play_selection:
if( m_NoteFieldEdit.m_iBeginMarker!=-1 && m_NoteFieldEdit.m_iEndMarker!=-1 )
HandleAreaMenuChoice( play );
@@ -2742,6 +2741,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
switch( EDIT_MODE.GetValue() )
{
DEFAULT_FAIL( EDIT_MODE.GetValue() );
case EditMode_Home:
{
ASSERT( pSteps->IsAnEdit() );
@@ -2786,8 +2786,6 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
case EditMode_CourseMods:
case EditMode_Practice:
break;
default:
ASSERT(0);
}
m_soundSave.Play();
@@ -2838,6 +2836,7 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
case exit:
switch( EDIT_MODE.GetValue() )
{
DEFAULT_FAIL( EDIT_MODE.GetValue() );
case EditMode_Full:
case EditMode_Home:
if( m_bHasUndo )
@@ -2849,12 +2848,8 @@ void ScreenEdit::HandleMainMenuChoice( MainMenuChoice c, const vector<int> &iAns
case EditMode_CourseMods:
SCREENMAN->SendMessageToTopScreen( SM_DoExit );
break;
default:
ASSERT(0);
}
break;
default:
ASSERT(0);
};
}
@@ -2863,6 +2858,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
bool bSaveUndo = false;
switch( c )
{
DEFAULT_FAIL( c );
case cut:
case copy:
case play:
@@ -2886,8 +2882,6 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
case convert_pause_to_beat:
bSaveUndo = true;
break;
default:
FAIL_M( ssprintf("%i", c) );
}
// We call HandleAreaMenuChoice recursively. Only the outermost HandleAreaMenuChoice
@@ -2900,6 +2894,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
switch( c )
{
DEFAULT_FAIL( c );
case cut:
{
HandleAreaMenuChoice( copy );
@@ -2919,6 +2914,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
int iDestFirstRow = -1;
switch( c )
{
DEFAULT_FAIL( c );
case paste_at_current_beat:
iDestFirstRow = BeatToNoteRow( GAMESTATE->m_fSongBeat );
break;
@@ -2926,8 +2922,6 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
ASSERT( m_NoteFieldEdit.m_iBeginMarker!=-1 );
iDestFirstRow = m_NoteFieldEdit.m_iBeginMarker;
break;
default:
ASSERT(0);
}
int iRowsToCopy = m_Clipboard.GetLastRow()+1;
@@ -2955,12 +2949,12 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
TurnType tt = (TurnType)iAnswers[c];
switch( tt )
{
DEFAULT_FAIL( tt );
case left: NoteDataUtil::Turn( m_Clipboard, st, NoteDataUtil::left ); break;
case right: NoteDataUtil::Turn( m_Clipboard, st, NoteDataUtil::right ); break;
case mirror: NoteDataUtil::Turn( m_Clipboard, st, NoteDataUtil::mirror ); break;
case shuffle: NoteDataUtil::Turn( m_Clipboard, st, NoteDataUtil::shuffle ); break;
case super_shuffle: NoteDataUtil::Turn( m_Clipboard, st, NoteDataUtil::super_shuffle ); break;
default: ASSERT(0);
}
HandleAreaMenuChoice( paste_at_begin_marker );
@@ -2976,6 +2970,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
switch( tt )
{
DEFAULT_FAIL( tt );
case noholds: NoteDataUtil::RemoveHoldNotes( m_NoteDataEdit, iBeginRow, iEndRow ); break;
case nomines: NoteDataUtil::RemoveMines( m_NoteDataEdit, iBeginRow, iBeginRow ); break;
case little: NoteDataUtil::Little( m_NoteDataEdit, iBeginRow, iEndRow ); break;
@@ -2993,7 +2988,6 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
case nohands: NoteDataUtil::RemoveHands( m_NoteDataEdit, iBeginRow, iEndRow ); break;
case noquads: NoteDataUtil::RemoveQuads( m_NoteDataEdit, iBeginRow, iEndRow ); break;
case nostretch: NoteDataUtil::RemoveStretch( m_NoteDataEdit, st, iBeginRow, iBeginRow );break;
default: ASSERT(0);
}
// bake in the additions
@@ -3008,6 +3002,7 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
AlterType at = (AlterType)iAnswers[c];
switch( at )
{
DEFAULT_FAIL( at );
case autogen_to_fill_width:
{
NoteData temp( m_Clipboard );
@@ -3029,7 +3024,6 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
case collapse_left: NoteDataUtil::CollapseLeft( m_Clipboard ); break;
case shift_left: NoteDataUtil::ShiftLeft( m_Clipboard ); break;
case shift_right: NoteDataUtil::ShiftRight( m_Clipboard ); break;
default: ASSERT(0);
}
HandleAreaMenuChoice( paste_at_begin_marker );
@@ -3046,17 +3040,18 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
float fScale = -1;
switch( at )
{
DEFAULT_FAIL( at );
case compress_2x: fScale = 0.5f; break;
case compress_3_2: fScale = 2.0f/3; break;
case compress_4_3: fScale = 0.75f; break;
case expand_4_3: fScale = 4.0f/3; break;
case expand_3_2: fScale = 1.5f; break;
case expand_2x: fScale = 2; break;
default: ASSERT(0);
}
switch( at )
{
DEFAULT_FAIL( at );
case compress_2x: NoteDataUtil::Scale( m_Clipboard, fScale ); break;
case compress_3_2: NoteDataUtil::Scale( m_Clipboard, fScale ); break;
case compress_4_3: NoteDataUtil::Scale( m_Clipboard, fScale ); break;
@@ -3167,8 +3162,6 @@ void ScreenEdit::HandleAreaMenuChoice( AreaMenuChoice c, const vector<int> &iAns
case undo:
Undo();
break;
default:
FAIL_M( ssprintf("%i", c) );
};
if( bSaveUndo )
@@ -3213,6 +3206,7 @@ void ScreenEdit::HandleSongInformationChoice( SongInformationChoice c, const vec
switch( c )
{
DEFAULT_FAIL(c);
case main_title:
ScreenTextEntry::TextEntry( SM_None, ENTER_MAIN_TITLE, pSong->m_sMainTitle, 100, NULL, ChangeMainTitle, NULL );
break;
@@ -3234,8 +3228,6 @@ void ScreenEdit::HandleSongInformationChoice( SongInformationChoice c, const vec
case artist_transliteration:
ScreenTextEntry::TextEntry( SM_None, ENTER_ARTIST_TRANSLIT, pSong->m_sArtistTranslit, 100, NULL, ChangeArtistTranslit, NULL );
break;
default:
ASSERT(0);
};
}
@@ -3262,7 +3254,7 @@ void ScreenEdit::HandleBGChangeChoice( BGChangeChoice c, const vector<int> &iAns
newChange.m_def.m_sColor2 = g_BackgroundChange.rows[color2].choices[iAnswers[color2]];
switch( iAnswers[file1_type] )
{
default: ASSERT(0);
DEFAULT_FAIL( iAnswers[file1_type] );
case none: newChange.m_def.m_sFile1 = ""; break;
case dynamic_random: newChange.m_def.m_sFile1 = RANDOM_BACKGROUND_FILE; break;
case baked_random: newChange.m_def.m_sFile1 = GetOneBakedRandomFile( m_pSong ); break;
@@ -3281,7 +3273,7 @@ void ScreenEdit::HandleBGChangeChoice( BGChangeChoice c, const vector<int> &iAns
}
switch( iAnswers[file2_type] )
{
default: ASSERT(0);
DEFAULT_FAIL(iAnswers[file2_type]);
case none: newChange.m_def.m_sFile2 = ""; break;
case dynamic_random: newChange.m_def.m_sFile2 = RANDOM_BACKGROUND_FILE; break;
case baked_random: newChange.m_def.m_sFile2 = GetOneBakedRandomFile( m_pSong ); break;
@@ -3457,6 +3449,7 @@ float ScreenEdit::GetMaximumBeatForNewNote() const
{
switch( EDIT_MODE.GetValue() )
{
DEFAULT_FAIL( EDIT_MODE.GetValue() );
case EditMode_Practice:
case EditMode_CourseMods:
case EditMode_Home:
@@ -3473,8 +3466,6 @@ float ScreenEdit::GetMaximumBeatForNewNote() const
}
case EditMode_Full:
return NoteRowToBeat(MAX_NOTE_ROW);
default:
ASSERT(0); return 0;
}
}
+3
View File
@@ -105,6 +105,9 @@ void NORETURN sm_crash( const char *reason = "Internal error" );
#define ASSERT(COND) ASSERT_M((COND), "Assertion '" #COND "' failed")
#endif
/* Use this to catch switching on invalid values */
#define DEFAULT_FAIL(i) default: FAIL_M( ssprintf("%i", i) )
void ShowWarning( const char *file, int line, const char *message ); // don't pull in LOG here
#define WARN(MESSAGE) (ShowWarning(__FILE__, __LINE__, MESSAGE))