Fixed Profile swap by making it walk the arrays so that Visual Studio's std swap won't choke on it.
This commit is contained in:
+13
-6
@@ -940,6 +940,9 @@ void Profile::swap(Profile& other)
|
|||||||
// own swap function, which includes the standard containers.
|
// own swap function, which includes the standard containers.
|
||||||
#define SWAP_STR_MEMBER(member_name) member_name.swap(other.member_name)
|
#define SWAP_STR_MEMBER(member_name) member_name.swap(other.member_name)
|
||||||
#define SWAP_GENERAL(member_name) std::swap(member_name, other.member_name)
|
#define SWAP_GENERAL(member_name) std::swap(member_name, other.member_name)
|
||||||
|
#define SWAP_ARRAY(member_name, size) \
|
||||||
|
for(int i= 0; i < size; ++i) { \
|
||||||
|
std::swap(member_name[i], other.member_name[i]); } \
|
||||||
SWAP_GENERAL(m_ListPriority);
|
SWAP_GENERAL(m_ListPriority);
|
||||||
SWAP_STR_MEMBER(m_sDisplayName);
|
SWAP_STR_MEMBER(m_sDisplayName);
|
||||||
SWAP_STR_MEMBER(m_sCharacterID);
|
SWAP_STR_MEMBER(m_sCharacterID);
|
||||||
@@ -973,21 +976,25 @@ void Profile::swap(Profile& other)
|
|||||||
SWAP_STR_MEMBER(m_UnlockedEntryIDs);
|
SWAP_STR_MEMBER(m_UnlockedEntryIDs);
|
||||||
SWAP_STR_MEMBER(m_sLastPlayedMachineGuid);
|
SWAP_STR_MEMBER(m_sLastPlayedMachineGuid);
|
||||||
SWAP_GENERAL(m_LastPlayedDate);
|
SWAP_GENERAL(m_LastPlayedDate);
|
||||||
SWAP_GENERAL(m_iNumSongsPlayedByPlayMode);
|
SWAP_ARRAY(m_iNumSongsPlayedByPlayMode, NUM_PlayMode);
|
||||||
SWAP_STR_MEMBER(m_iNumSongsPlayedByStyle);
|
SWAP_STR_MEMBER(m_iNumSongsPlayedByStyle);
|
||||||
SWAP_GENERAL(m_iNumSongsPlayedByDifficulty);
|
SWAP_ARRAY(m_iNumSongsPlayedByDifficulty, NUM_Difficulty);
|
||||||
SWAP_GENERAL(m_iNumSongsPlayedByMeter);
|
SWAP_ARRAY(m_iNumSongsPlayedByMeter, MAX_METER+1);
|
||||||
SWAP_GENERAL(m_iNumTotalSongsPlayed);
|
SWAP_GENERAL(m_iNumTotalSongsPlayed);
|
||||||
SWAP_GENERAL(m_iNumStagesPassedByPlayMode);
|
SWAP_ARRAY(m_iNumStagesPassedByPlayMode, NUM_PlayMode);
|
||||||
SWAP_GENERAL(m_iNumStagesPassedByGrade);
|
SWAP_ARRAY(m_iNumStagesPassedByGrade, NUM_Grade);
|
||||||
SWAP_GENERAL(m_UserTable);
|
SWAP_GENERAL(m_UserTable);
|
||||||
SWAP_STR_MEMBER(m_SongHighScores);
|
SWAP_STR_MEMBER(m_SongHighScores);
|
||||||
SWAP_STR_MEMBER(m_CourseHighScores);
|
SWAP_STR_MEMBER(m_CourseHighScores);
|
||||||
SWAP_GENERAL(m_CategoryHighScores);
|
for(int st= 0; st < NUM_StepsType; ++st)
|
||||||
|
{
|
||||||
|
SWAP_ARRAY(m_CategoryHighScores[st], NUM_RankingCategory);
|
||||||
|
}
|
||||||
SWAP_STR_MEMBER(m_vScreenshots);
|
SWAP_STR_MEMBER(m_vScreenshots);
|
||||||
SWAP_STR_MEMBER(m_mapDayToCaloriesBurned);
|
SWAP_STR_MEMBER(m_mapDayToCaloriesBurned);
|
||||||
#undef SWAP_STR_MEMBER
|
#undef SWAP_STR_MEMBER
|
||||||
#undef SWAP_GENERAL
|
#undef SWAP_GENERAL
|
||||||
|
#undef SWAP_ARRAY
|
||||||
}
|
}
|
||||||
|
|
||||||
// Category high scores
|
// Category high scores
|
||||||
|
|||||||
Reference in New Issue
Block a user