mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-11 16:54:42 +00:00
Codechange: use std::vector to sort _all_grfs linked list
This commit is contained in:
parent
8899272614
commit
9388fa2aa1
@ -709,16 +709,13 @@ bool GRFFileScanner::AddFile(const char *filename, size_t basepath_length, const
|
||||
|
||||
/**
|
||||
* Simple sorter for GRFS
|
||||
* @param p1 the first GRFConfig *
|
||||
* @param p2 the second GRFConfig *
|
||||
* @return the same strcmp would return for the name of the NewGRF.
|
||||
* @param c1 the first GRFConfig *
|
||||
* @param c2 the second GRFConfig *
|
||||
* @return true if the name of first NewGRF is before the name of the second.
|
||||
*/
|
||||
static int CDECL GRFSorter(GRFConfig * const *p1, GRFConfig * const *p2)
|
||||
static bool GRFSorter(GRFConfig * const &c1, GRFConfig * const &c2)
|
||||
{
|
||||
const GRFConfig *c1 = *p1;
|
||||
const GRFConfig *c2 = *p2;
|
||||
|
||||
return strnatcmp(c1->GetName(), c2->GetName());
|
||||
return strnatcmp(c1->GetName(), c2->GetName()) < 0;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -740,16 +737,16 @@ void DoScanNewGRFFiles(NewGRFScanCallback *callback)
|
||||
/* Sort the linked list using quicksort.
|
||||
* For that we first have to make an array, then sort and
|
||||
* then remake the linked list. */
|
||||
GRFConfig **to_sort = MallocT<GRFConfig*>(num);
|
||||
std::vector<GRFConfig *> to_sort;
|
||||
|
||||
uint i = 0;
|
||||
for (GRFConfig *p = _all_grfs; p != nullptr; p = p->next, i++) {
|
||||
to_sort[i] = p;
|
||||
to_sort.push_back(p);
|
||||
}
|
||||
/* Number of files is not necessarily right */
|
||||
num = i;
|
||||
|
||||
QSortT(to_sort, num, &GRFSorter);
|
||||
std::sort(to_sort.begin(), to_sort.end(), GRFSorter);
|
||||
|
||||
for (i = 1; i < num; i++) {
|
||||
to_sort[i - 1]->next = to_sort[i];
|
||||
@ -757,8 +754,6 @@ void DoScanNewGRFFiles(NewGRFScanCallback *callback)
|
||||
to_sort[num - 1]->next = nullptr;
|
||||
_all_grfs = to_sort[0];
|
||||
|
||||
free(to_sort);
|
||||
|
||||
NetworkAfterNewGRFScan();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user