From de3f6e0618bfc184188c4c93f79765baffe79cb6 Mon Sep 17 00:00:00 2001 From: Steve Checkoway Date: Sat, 7 Apr 2007 02:34:17 +0000 Subject: [PATCH] Working at cleaning up the n different ways to get songs. 1 is probably sufficient. --- stepmania/src/SongManager.cpp | 41 ++++++++++++++++++----------------- stepmania/src/SongManager.h | 7 +++--- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index d5e8069bfc..31ac17902d 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -520,36 +520,37 @@ RageColor SongManager::GetCourseColor( const Course* pCourse ) } } -static void GetSongsFromVector( const vector &Songs, vector &vOut, RString sGroupName ) +void SongManager::GetSongs( vector &AddTo, const RString &sGroupName ) const { - vOut.clear(); - - for( unsigned i=0; im_sGroupName ) - vOut.push_back( Songs[i] ); + const vector &vSongs = GetSongsInGroup( sGroupName ); + + AddTo.insert( AddTo.end(), vSongs.begin(), vSongs.end() ); } -void SongManager::GetSongs( vector &AddTo, RString sGroupName ) const +const vector &SongManager::GetSongsInGroup( const RString &sGroupName ) const { - if( sGroupName==GROUP_ALL) - GetSongsFromVector( m_pSongs, AddTo, sGroupName ); - else - GetSongsFromVector( GetSongsInGroup(sGroupName), AddTo, GROUP_ALL ); -} - -const vector &SongManager::GetSongsInGroup( RString sGroupName ) const -{ - static vector empty; - + static const vector vEmpty; + + if( sGroupName == GROUP_ALL ) + return m_pSongs; map::const_iterator iter = m_mapSongGroupIndex.find( sGroupName ); if ( iter != m_mapSongGroupIndex.end() ) return iter->second; - return empty; + return vEmpty; } -void SongManager::GetPopularSongs( vector &AddTo, RString sGroupName, ProfileSlot slot ) const +void SongManager::GetPopularSongs( vector &AddTo, const RString &sGroupName, ProfileSlot slot ) const { - GetSongsFromVector( m_pPopularSongs[slot], AddTo, sGroupName ); + if( sGroupName == GROUP_ALL ) + { + AddTo.insert( AddTo.end(), m_pPopularSongs[slot].begin(), m_pPopularSongs[slot].end() ); + return; + } + FOREACH_CONST( Song*, m_pPopularSongs[slot], song ) + { + if( (*song)->m_sGroupName == sGroupName ) + AddTo.push_back( *song ); + } } void SongManager::GetPreferredSortSongs( vector &AddTo ) const diff --git a/stepmania/src/SongManager.h b/stepmania/src/SongManager.h index 8662ad9e08..12c865d28b 100644 --- a/stepmania/src/SongManager.h +++ b/stepmania/src/SongManager.h @@ -73,13 +73,12 @@ public: // Lookup const vector &GetAllSongs() const { return m_pSongs; } - const vector &GetSongsInGroup( RString sGroupName ) const; - void GetPopularSongs( vector &AddTo, RString sGroupName, ProfileSlot slot=ProfileSlot_Machine ) const; + const vector &GetSongsInGroup( const RString &sGroupName ) const; + void GetPopularSongs( vector &AddTo, const RString &sGroupName, ProfileSlot slot=ProfileSlot_Machine ) const; void GetPreferredSortSongs( vector &AddTo ) const; const vector &GetPopularSongs( ProfileSlot slot=ProfileSlot_Machine ) const { return m_pPopularSongs[slot]; } const vector &GetPopularCourses( CourseType ct, ProfileSlot slot=ProfileSlot_Machine ) const { return m_pPopularCourses[slot][ct]; } - void GetSongs( vector &AddTo, RString sGroupName ) const; - void GetSongs( vector &AddTo ) const { GetSongs(AddTo,GROUP_ALL); } + void GetSongs( vector &AddTo, const RString &sGroupName = GROUP_ALL ) const; Song *FindSong( RString sPath ); Song *FindSong( RString sGroup, RString sSong ); Course *FindCourse( RString sPath );