summaryrefslogtreecommitdiff
path: root/src/sortlist_type.h
diff options
context:
space:
mode:
authorHenry Wilson <m3henry@googlemail.com>2018-09-20 22:41:43 +0100
committerPeterN <peter@fuzzle.org>2019-03-26 20:15:57 +0000
commit4b349c0f90c3f7b6a39171cec41cd98dcd0d88b7 (patch)
treecc3ae4e4a7a4defd8a672ae9dd3983bd02b654f4 /src/sortlist_type.h
parent7a32cf1401d289f04682aa91fbfb779cbb2378e4 (diff)
downloadopenttd-4b349c0f90c3f7b6a39171cec41cd98dcd0d88b7.tar.xz
Codechange: [core] Implement SmallVector using std::vector
The public and protected interface to SmallVector are unchanged SmallVector now requires that items be default constructible This isn't an issue since some contained items were previously created uninitialized. Temporary default constructors are added to the following structs - SmallPair - SmallStackItem - GRFPresence Where vector<bool> is required, transition immediately to std::vector to avoid returning proxy object references.
Diffstat (limited to 'src/sortlist_type.h')
-rw-r--r--src/sortlist_type.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/sortlist_type.h b/src/sortlist_type.h
index 1a30c3b1a..74b6f37b3 100644
--- a/src/sortlist_type.h
+++ b/src/sortlist_type.h
@@ -67,7 +67,7 @@ protected:
*/
bool IsSortable() const
{
- return (this->data != NULL && this->items >= 2);
+ return std::vector<T>::size() >= 2;
}
/**
@@ -240,7 +240,7 @@ public:
{
this->flags ^= VL_DESC;
- if (this->IsSortable()) MemReverseT(this->data, this->items);
+ if (this->IsSortable()) MemReverseT(std::vector<T>::data(), std::vector<T>::size());
}
/**
@@ -270,11 +270,11 @@ public:
if (this->flags & VL_FIRST_SORT) {
CLRBITS(this->flags, VL_FIRST_SORT);
- QSortT(this->data, this->items, compare, desc);
+ QSortT(std::vector<T>::data(), std::vector<T>::size(), compare, desc);
return true;
}
- GSortT(this->data, this->items, compare, desc);
+ GSortT(std::vector<T>::data(), std::vector<T>::size(), compare, desc);
return true;
}
@@ -337,8 +337,8 @@ public:
if (!(this->flags & VL_FILTER)) return false;
bool changed = false;
- for (uint iter = 0; iter < this->items;) {
- T *item = &this->data[iter];
+ for (uint iter = 0; iter < std::vector<T>::size();) {
+ T *item = &std::vector<T>::operator[](iter);
if (!decide(item, filter_data)) {
this->Erase(item);
changed = true;