From 5b77102b63f77bfbad02ae3383b87fbef6e60e7d Mon Sep 17 00:00:00 2001 From: glx Date: Thu, 11 Apr 2019 22:52:41 +0200 Subject: Codechange: use std::sort() to sort file lists --- src/fios.cpp | 21 ++++++++++----------- src/fios.h | 3 +-- src/fios_gui.cpp | 3 +-- 3 files changed, 12 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/fios.cpp b/src/fios.cpp index 008f552e6..76a2e7430 100644 --- a/src/fios.cpp +++ b/src/fios.cpp @@ -47,21 +47,20 @@ extern void GetOldSaveGameName(const char *file, char *title, const char *last); /** * Compare two FiosItem's. Used with sort when sorting the file list. - * @param da A pointer to the first FiosItem to compare. - * @param db A pointer to the second FiosItem to compare. - * @return -1, 0 or 1, depending on how the two items should be sorted. + * @param other The FiosItem to compare to. + * @return for ascending order: returns true if da < db. Vice versa for descending order. */ -int CDECL CompareFiosItems(const FiosItem *da, const FiosItem *db) +bool FiosItem::operator< (const FiosItem &other) const { - int r = 0; + bool r = false; - if ((_savegame_sort_order & SORT_BY_NAME) == 0 && da->mtime != db->mtime) { - r = da->mtime < db->mtime ? -1 : 1; + if ((_savegame_sort_order & SORT_BY_NAME) == 0 && (*this).mtime != other.mtime) { + r = (*this).mtime < other.mtime; } else { - r = strcasecmp(da->title, db->title); + r = strcasecmp((*this).title, other.title) < 0; } - if (_savegame_sort_order & SORT_DESCENDING) r = -r; + if (_savegame_sort_order & SORT_DESCENDING) r = !r; return r; } @@ -380,7 +379,7 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c { SortingBits order = _savegame_sort_order; _savegame_sort_order = SORT_BY_NAME | SORT_ASCENDING; - QSortT(file_list.files.data(), file_list.files.size(), CompareFiosItems); + std::sort(file_list.files.begin(), file_list.files.end()); _savegame_sort_order = order; } @@ -395,7 +394,7 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c scanner.Scan(nullptr, subdir, true, true); } - QSortT(file_list.Get(sort_start), file_list.Length() - sort_start, CompareFiosItems); + std::sort(file_list.files.begin() + sort_start, file_list.files.end()); /* Show drives */ FiosGetDrives(file_list); diff --git a/src/fios.h b/src/fios.h index 5688e88cf..7b10dea4c 100644 --- a/src/fios.h +++ b/src/fios.h @@ -107,6 +107,7 @@ struct FiosItem { uint64 mtime; char title[64]; char name[MAX_PATH]; + bool operator< (const FiosItem &other) const; }; /** List of file information. */ @@ -227,6 +228,4 @@ void FiosMakeSavegameName(char *buf, const char *name, const char *last); FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last); -int CDECL CompareFiosItems(const FiosItem *a, const FiosItem *b); - #endif /* FIOS_H */ diff --git a/src/fios_gui.cpp b/src/fios_gui.cpp index c78271122..1a8e7fdeb 100644 --- a/src/fios_gui.cpp +++ b/src/fios_gui.cpp @@ -260,8 +260,7 @@ static void SortSaveGameList(FileList &file_list) } } - size_t s_amount = file_list.Length() - sort_start - sort_end; - QSortT(file_list.Get(sort_start), s_amount, CompareFiosItems); + std::sort(file_list.files.begin() + sort_start, file_list.files.end() - sort_end); } struct SaveLoadWindow : public Window { -- cgit v1.2.3-54-g00ecf