From 738617a01bf165dc828e369fa3a223a3fc300e91 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 24 Oct 2002 08:17:09 +0000 Subject: [PATCH] change more qsorts to sort --- stepmania/src/Background.cpp | 19 +++--------- stepmania/src/Course.cpp | 18 +++-------- stepmania/src/Notes.cpp | 58 ++++++++++------------------------- stepmania/src/Notes.h | 2 +- stepmania/src/RageUtil.cpp | 20 +++++------- stepmania/src/RageUtil.h | 4 +-- stepmania/src/SongManager.cpp | 4 +-- 7 files changed, 37 insertions(+), 88 deletions(-) diff --git a/stepmania/src/Background.cpp b/stepmania/src/Background.cpp index 6dd7c8952f..50adbdb3fa 100644 --- a/stepmania/src/Background.cpp +++ b/stepmania/src/Background.cpp @@ -34,26 +34,15 @@ const float FADE_SECONDS = 1.0f; #define RECT_BACKGROUND CRect(LEFT_EDGE,TOP_EDGE,RIGHT_EDGE,BOTTOM_EDGE) -int CompareBGSegments(const void *arg1, const void *arg2) +int CompareBGSegments(const BGSegment &seg1, const BGSegment &seg2) { - // arg1 and arg2 are of type Step** - BGSegment* seg1 = (BGSegment*)arg1; - BGSegment* seg2 = (BGSegment*)arg2; - - float score1 = seg1->m_fStartBeat; - float score2 = seg2->m_fStartBeat; - - if( score1 == score2 ) - return 0; - else if( score1 < score2 ) - return -1; - else - return 1; + return seg1.m_fStartBeat < seg2.m_fStartBeat; } void SortBGSegmentArray( CArray &arrayBGSegments ) { - qsort( arrayBGSegments.GetData(), arrayBGSegments.GetSize(), sizeof(BGSegment), CompareBGSegments ); + sort( arrayBGSegments.GetData(), arrayBGSegments.GetData()+arrayBGSegments.GetSize(), + CompareBGSegments ); } diff --git a/stepmania/src/Course.cpp b/stepmania/src/Course.cpp index f50467ee7c..68d5be1582 100644 --- a/stepmania/src/Course.cpp +++ b/stepmania/src/Course.cpp @@ -260,23 +260,13 @@ void Course::GetSongOptions( SongOptions* pSO_out ) // Sorting stuff // -int CompareCoursePointersByDifficulty(const void *arg1, const void *arg2) +static int CompareCoursePointersByDifficulty(const Course* pCourse1, const Course* pCourse2) { - Course* pCourse1 = *(Course**)arg1; - Course* pCourse2 = *(Course**)arg2; - - float fScore1 = (float)pCourse1->m_iStages; - float fScore2 = (float)pCourse2->m_iStages; - - if( fScore1 < fScore2 ) - return -1; - else if( fScore1 == fScore2 ) - return 0; - else - return 1; + return pCourse1->m_iStages < pCourse2->m_iStages; } void SortCoursePointerArrayByDifficulty( CArray &apCourses ) { - qsort( apCourses.GetData(), apCourses.GetSize(), sizeof(Course*), CompareCoursePointersByDifficulty ); + sort( apCourses.GetData(), apCourses.GetData()+apCourses.GetSize(), + CompareCoursePointersByDifficulty ); } diff --git a/stepmania/src/Notes.cpp b/stepmania/src/Notes.cpp index d9ea4afcac..2eeec1903a 100644 --- a/stepmania/src/Notes.cpp +++ b/stepmania/src/Notes.cpp @@ -177,11 +177,8 @@ Difficulty Notes::DifficultyFromDescriptionAndMeter( CString sDescription, int i // ////////////////////////////////////////////// -int CompareNotesPointersByRadarValues(const void *arg1, const void *arg2) +bool CompareNotesPointersByRadarValues(const Notes* pNotes1, const Notes* pNotes2) { - Notes* pNotes1 = *(Notes**)arg1; - Notes* pNotes2 = *(Notes**)arg2; - float fScore1 = 0; float fScore2 = 0; @@ -191,53 +188,30 @@ int CompareNotesPointersByRadarValues(const void *arg1, const void *arg2) fScore2 += pNotes2->m_fRadarValues[r]; } - if( fScore1 < fScore2 ) - return -1; - else if( fScore1 == fScore2 ) - return 0; - else - return 1; + return fScore1 < fScore2; } -int CompareNotesPointersByMeter(const void *arg1, const void *arg2) +bool CompareNotesPointersByMeter(const Notes *pNotes1, const Notes* pNotes2) { - Notes* pNotes1 = *(Notes**)arg1; - Notes* pNotes2 = *(Notes**)arg2; - - int iScore1 = pNotes1->m_iMeter; - int iScore2 = pNotes2->m_iMeter; - - if( iScore1 < iScore2 ) - return -1; - else if( iScore1 == iScore2 ) - return CompareNotesPointersByRadarValues( arg1, arg2 ); - else - return 1; + if( pNotes1->m_iMeter < pNotes2->m_iMeter ) + return true; + if( pNotes1->m_iMeter > pNotes2->m_iMeter ) + return false; + return CompareNotesPointersByRadarValues( pNotes1, pNotes2 ); } -int CompareNotesPointersByDifficulty(Notes* pNotes1, Notes* pNotes2) +bool CompareNotesPointersByDifficulty(const Notes *pNotes1, const Notes *pNotes2) { - Difficulty class1 = pNotes1->m_Difficulty; - Difficulty class2 = pNotes2->m_Difficulty; - - if( class1 < class2 ) - return -1; - else if( class1 == class2 ) - return CompareNotesPointersByMeter( &pNotes1, &pNotes2 ); - else - return 1; -} - -int CompareNotesPointersByDifficulty2(const void *arg1, const void *arg2) -{ - Notes* pNotes1 = *(Notes**)arg1; - Notes* pNotes2 = *(Notes**)arg2; - - return CompareNotesPointersByDifficulty( pNotes1, pNotes2 ); + if( pNotes1->m_Difficulty < pNotes2->m_Difficulty ) + return true; + if( pNotes1->m_Difficulty > pNotes2->m_Difficulty ) + return false; + return CompareNotesPointersByMeter( pNotes1, pNotes2 ); } void SortNotesArrayByDifficulty( CArray &arraySteps ) { - qsort( arraySteps.GetData(), arraySteps.GetSize(), sizeof(Notes*), CompareNotesPointersByDifficulty2 ); + sort( arraySteps.GetData(), arraySteps.GetData()+arraySteps.GetSize(), + CompareNotesPointersByDifficulty ); } diff --git a/stepmania/src/Notes.h b/stepmania/src/Notes.h index 477d408f0c..4895764355 100644 --- a/stepmania/src/Notes.h +++ b/stepmania/src/Notes.h @@ -63,5 +63,5 @@ protected: }; -int CompareNotesPointersByDifficulty(Notes* pNotes1, Notes* pNotes2); +bool CompareNotesPointersByDifficulty(const Notes *pNotes1, const Notes *pNotes2); void SortNotesArrayByDifficulty( CArray &arrayNotess ); diff --git a/stepmania/src/RageUtil.cpp b/stepmania/src/RageUtil.cpp index 199b7fbce4..fdc2f4604e 100644 --- a/stepmania/src/RageUtil.cpp +++ b/stepmania/src/RageUtil.cpp @@ -673,25 +673,21 @@ bool IsADirectory( const CString &sPath ) return (dwAttr & FILE_ATTRIBUTE_DIRECTORY) != 0; } - - -int CompareCStringsAsc(const void *arg1, const void *arg2) +bool CompareCStringsAsc(const CString &str1, const CString &str2) { - CString str1 = *(CString *)arg1; - CString str2 = *(CString *)arg2; - return str1.CompareNoCase( str2 ); + return str2.CompareNoCase( str1 ) < 0; } -int CompareCStringsDesc(const void *arg1, const void *arg2) +bool CompareCStringsDesc(const CString &str1, const CString &str2) { - CString str1 = *(CString *)arg1; - CString str2 = *(CString *)arg2; - return str2.CompareNoCase( str1 ); + return str2.CompareNoCase( str1 ) > 0; } -void SortCStringArray( CStringArray &arrayCStrings, const bool bSortAcsending ) +void SortCStringArray( CStringArray &arrayCStrings, const bool bSortAscending ) { - qsort( arrayCStrings.GetData(), arrayCStrings.GetSize(), sizeof(CString), bSortAcsending ? CompareCStringsAsc : CompareCStringsDesc ); + sort( arrayCStrings.GetData(), + arrayCStrings.GetData()+arrayCStrings.GetSize(), + bSortAscending?CompareCStringsAsc:CompareCStringsDesc); } diff --git a/stepmania/src/RageUtil.h b/stepmania/src/RageUtil.h index 2c149b6fbf..0384442ca4 100644 --- a/stepmania/src/RageUtil.h +++ b/stepmania/src/RageUtil.h @@ -172,8 +172,8 @@ bool IsAFile( const CString &sPath ); bool IsADirectory( const CString &sPath ); DWORD GetFileSizeInBytes( const CString &sFilePath ); -int CompareCStringsAsc(const void *arg1, const void *arg2); -int CompareCStringsDesc(const void *arg1, const void *arg2); +bool CompareCStringsAsc(const CString &str1, const CString &str2); +bool CompareCStringsDesc(const CString &str1, const CString &str2); void SortCStringArray( CStringArray &AddTo, const bool bSortAcsending = true ); diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index a62893e9cb..ed1ad563b4 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -548,7 +548,7 @@ void SongManager::GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, cons { Notes* pNotes = apNotes[n]; - if( pExtra1Notes == NULL || CompareNotesPointersByDifficulty(pExtra1Notes,pNotes) == -1 ) // pNotes is harder than pHardestNotes + if( pExtra1Notes == NULL || CompareNotesPointersByDifficulty(pExtra1Notes,pNotes) ) // pNotes is harder than pHardestNotes { pExtra1Song = pSong; pExtra1Notes = pNotes; @@ -557,7 +557,7 @@ void SongManager::GetExtraStageInfo( bool bExtra2, CString sPreferredGroup, cons // for extra 2, we don't want to choose the hardest notes possible. So, we'll disgard Notes with meter > 8 if( bExtra2 && pNotes->m_iMeter > 8 ) continue; // skip - if( pExtra2Notes == NULL || CompareNotesPointersByDifficulty(pExtra2Notes,pNotes) == -1 ) // pNotes is harder than pHardestNotes + if( pExtra2Notes == NULL || CompareNotesPointersByDifficulty(pExtra2Notes,pNotes) ) // pNotes is harder than pHardestNotes { pExtra2Song = pSong; pExtra2Notes = pNotes;