mirror of
https://github.com/OpenTTD/OpenTTD
synced 2025-12-10 06:52:05 +01:00
Codechange: Script list iterator tidying. (#14698)
* Use `iter->` instead of `(*iter).` * Use prefix instead of postfix operators * Use `auto` instead of explicit iterator type. * Use `std::next()` instead of assignment then increment. * Use range-for where possible.
This commit is contained in:
@@ -95,7 +95,7 @@ public:
|
|||||||
this->has_no_more_items = false;
|
this->has_no_more_items = false;
|
||||||
|
|
||||||
this->bucket_iter = this->list->buckets.begin();
|
this->bucket_iter = this->list->buckets.begin();
|
||||||
this->bucket_list = &(*this->bucket_iter).second;
|
this->bucket_list = &this->bucket_iter->second;
|
||||||
this->bucket_list_iter = this->bucket_list->begin();
|
this->bucket_list_iter = this->bucket_list->begin();
|
||||||
this->item_next = *this->bucket_list_iter;
|
this->item_next = *this->bucket_list_iter;
|
||||||
|
|
||||||
@@ -121,14 +121,14 @@ public:
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this->bucket_list_iter++;
|
++this->bucket_list_iter;
|
||||||
if (this->bucket_list_iter == this->bucket_list->end()) {
|
if (this->bucket_list_iter == this->bucket_list->end()) {
|
||||||
this->bucket_iter++;
|
++this->bucket_iter;
|
||||||
if (this->bucket_iter == this->list->buckets.end()) {
|
if (this->bucket_iter == this->list->buckets.end()) {
|
||||||
this->bucket_list = nullptr;
|
this->bucket_list = nullptr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this->bucket_list = &(*this->bucket_iter).second;
|
this->bucket_list = &this->bucket_iter->second;
|
||||||
this->bucket_list_iter = this->bucket_list->begin();
|
this->bucket_list_iter = this->bucket_list->begin();
|
||||||
}
|
}
|
||||||
this->item_next = *this->bucket_list_iter;
|
this->item_next = *this->bucket_list_iter;
|
||||||
@@ -186,7 +186,7 @@ public:
|
|||||||
/* Go to the end of the bucket-list */
|
/* Go to the end of the bucket-list */
|
||||||
this->bucket_iter = this->list->buckets.end();
|
this->bucket_iter = this->list->buckets.end();
|
||||||
--this->bucket_iter;
|
--this->bucket_iter;
|
||||||
this->bucket_list = &(*this->bucket_iter).second;
|
this->bucket_list = &this->bucket_iter->second;
|
||||||
|
|
||||||
/* Go to the end of the items in the bucket */
|
/* Go to the end of the items in the bucket */
|
||||||
this->bucket_list_iter = this->bucket_list->end();
|
this->bucket_list_iter = this->bucket_list->end();
|
||||||
@@ -220,14 +220,12 @@ public:
|
|||||||
this->bucket_list = nullptr;
|
this->bucket_list = nullptr;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this->bucket_iter--;
|
--this->bucket_iter;
|
||||||
this->bucket_list = &(*this->bucket_iter).second;
|
this->bucket_list = &this->bucket_iter->second;
|
||||||
/* Go to the end of the items in the bucket */
|
/* Go to the end of the items in the bucket */
|
||||||
this->bucket_list_iter = this->bucket_list->end();
|
this->bucket_list_iter = this->bucket_list->end();
|
||||||
--this->bucket_list_iter;
|
|
||||||
} else {
|
|
||||||
this->bucket_list_iter--;
|
|
||||||
}
|
}
|
||||||
|
--this->bucket_list_iter;
|
||||||
this->item_next = *this->bucket_list_iter;
|
this->item_next = *this->bucket_list_iter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -276,7 +274,7 @@ public:
|
|||||||
this->has_no_more_items = false;
|
this->has_no_more_items = false;
|
||||||
|
|
||||||
this->item_iter = this->list->items.begin();
|
this->item_iter = this->list->items.begin();
|
||||||
this->item_next = (*this->item_iter).first;
|
this->item_next = this->item_iter->first;
|
||||||
|
|
||||||
SQInteger item_current = this->item_next;
|
SQInteger item_current = this->item_next;
|
||||||
FindNext();
|
FindNext();
|
||||||
@@ -297,8 +295,8 @@ public:
|
|||||||
this->has_no_more_items = true;
|
this->has_no_more_items = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this->item_iter++;
|
++this->item_iter;
|
||||||
if (this->item_iter != this->list->items.end()) item_next = (*this->item_iter).first;
|
if (this->item_iter != this->list->items.end()) item_next = this->item_iter->first;
|
||||||
}
|
}
|
||||||
|
|
||||||
SQInteger Next() override
|
SQInteger Next() override
|
||||||
@@ -350,7 +348,7 @@ public:
|
|||||||
|
|
||||||
this->item_iter = this->list->items.end();
|
this->item_iter = this->list->items.end();
|
||||||
--this->item_iter;
|
--this->item_iter;
|
||||||
this->item_next = (*this->item_iter).first;
|
this->item_next = this->item_iter->first;
|
||||||
|
|
||||||
SQInteger item_current = this->item_next;
|
SQInteger item_current = this->item_next;
|
||||||
FindNext();
|
FindNext();
|
||||||
@@ -375,9 +373,9 @@ public:
|
|||||||
/* Use 'end' as marker for 'beyond begin' */
|
/* Use 'end' as marker for 'beyond begin' */
|
||||||
this->item_iter = this->list->items.end();
|
this->item_iter = this->list->items.end();
|
||||||
} else {
|
} else {
|
||||||
this->item_iter--;
|
--this->item_iter;
|
||||||
}
|
}
|
||||||
if (this->item_iter != this->list->items.end()) item_next = (*this->item_iter).first;
|
if (this->item_iter != this->list->items.end()) item_next = this->item_iter->first;
|
||||||
}
|
}
|
||||||
|
|
||||||
SQInteger Next() override
|
SQInteger Next() override
|
||||||
@@ -412,9 +410,9 @@ bool ScriptList::SaveObject(HSQUIRRELVM vm)
|
|||||||
sq_pushbool(vm, this->sort_ascending ? SQTrue : SQFalse);
|
sq_pushbool(vm, this->sort_ascending ? SQTrue : SQFalse);
|
||||||
sq_arrayappend(vm, -2);
|
sq_arrayappend(vm, -2);
|
||||||
sq_newtable(vm);
|
sq_newtable(vm);
|
||||||
for (ScriptListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter++) {
|
for (const auto &item : this->items) {
|
||||||
sq_pushinteger(vm, iter->first);
|
sq_pushinteger(vm, item.first);
|
||||||
sq_pushinteger(vm, iter->second);
|
sq_pushinteger(vm, item.second);
|
||||||
sq_rawset(vm, -3);
|
sq_rawset(vm, -3);
|
||||||
}
|
}
|
||||||
sq_arrayappend(vm, -2);
|
sq_arrayappend(vm, -2);
|
||||||
@@ -509,13 +507,13 @@ void ScriptList::RemoveItem(SQInteger item)
|
|||||||
{
|
{
|
||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
ScriptListMap::iterator item_iter = this->items.find(item);
|
auto item_iter = this->items.find(item);
|
||||||
if (item_iter == this->items.end()) return;
|
if (item_iter == this->items.end()) return;
|
||||||
|
|
||||||
SQInteger value = item_iter->second;
|
SQInteger value = item_iter->second;
|
||||||
|
|
||||||
this->sorter->Remove(item);
|
this->sorter->Remove(item);
|
||||||
ScriptListBucket::iterator bucket_iter = this->buckets.find(value);
|
auto bucket_iter = this->buckets.find(value);
|
||||||
assert(bucket_iter != this->buckets.end());
|
assert(bucket_iter != this->buckets.end());
|
||||||
bucket_iter->second.erase(item);
|
bucket_iter->second.erase(item);
|
||||||
if (bucket_iter->second.empty()) this->buckets.erase(bucket_iter);
|
if (bucket_iter->second.empty()) this->buckets.erase(bucket_iter);
|
||||||
@@ -558,7 +556,7 @@ SQInteger ScriptList::Count()
|
|||||||
|
|
||||||
SQInteger ScriptList::GetValue(SQInteger item)
|
SQInteger ScriptList::GetValue(SQInteger item)
|
||||||
{
|
{
|
||||||
ScriptListMap::const_iterator item_iter = this->items.find(item);
|
auto item_iter = this->items.find(item);
|
||||||
return item_iter == this->items.end() ? 0 : item_iter->second;
|
return item_iter == this->items.end() ? 0 : item_iter->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -566,14 +564,14 @@ bool ScriptList::SetValue(SQInteger item, SQInteger value)
|
|||||||
{
|
{
|
||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
ScriptListMap::iterator item_iter = this->items.find(item);
|
auto item_iter = this->items.find(item);
|
||||||
if (item_iter == this->items.end()) return false;
|
if (item_iter == this->items.end()) return false;
|
||||||
|
|
||||||
SQInteger value_old = item_iter->second;
|
SQInteger value_old = item_iter->second;
|
||||||
if (value_old == value) return true;
|
if (value_old == value) return true;
|
||||||
|
|
||||||
this->sorter->Remove(item);
|
this->sorter->Remove(item);
|
||||||
ScriptListBucket::iterator bucket_iter = this->buckets.find(value_old);
|
auto bucket_iter = this->buckets.find(value_old);
|
||||||
assert(bucket_iter != this->buckets.end());
|
assert(bucket_iter != this->buckets.end());
|
||||||
bucket_iter->second.erase(item);
|
bucket_iter->second.erase(item);
|
||||||
if (bucket_iter->second.empty()) this->buckets.erase(bucket_iter);
|
if (bucket_iter->second.empty()) this->buckets.erase(bucket_iter);
|
||||||
@@ -624,10 +622,9 @@ void ScriptList::AddList(ScriptList *list)
|
|||||||
this->buckets = list->buckets;
|
this->buckets = list->buckets;
|
||||||
this->modifications++;
|
this->modifications++;
|
||||||
} else {
|
} else {
|
||||||
ScriptListMap *list_items = &list->items;
|
for (const auto &item : list->items) {
|
||||||
for (auto &it : *list_items) {
|
this->AddItem(item.first);
|
||||||
this->AddItem(it.first);
|
this->SetValue(item.first, item.second);
|
||||||
this->SetValue(it.first, it.second);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -652,8 +649,8 @@ void ScriptList::RemoveAboveValue(SQInteger value)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second > value) this->RemoveItem((*iter).first);
|
if (iter->second > value) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -662,8 +659,8 @@ void ScriptList::RemoveBelowValue(SQInteger value)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second < value) this->RemoveItem((*iter).first);
|
if (iter->second < value) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -672,8 +669,8 @@ void ScriptList::RemoveBetweenValue(SQInteger start, SQInteger end)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second > start && (*iter).second < end) this->RemoveItem((*iter).first);
|
if (iter->second > start && iter->second < end) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -682,8 +679,8 @@ void ScriptList::RemoveValue(SQInteger value)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second == value) this->RemoveItem((*iter).first);
|
if (iter->second == value) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -701,10 +698,10 @@ void ScriptList::RemoveTop(SQInteger count)
|
|||||||
switch (this->sorter_type) {
|
switch (this->sorter_type) {
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
case SORT_BY_VALUE:
|
case SORT_BY_VALUE:
|
||||||
for (ScriptListBucket::iterator iter = this->buckets.begin(); iter != this->buckets.end(); iter = this->buckets.begin()) {
|
for (auto iter = this->buckets.begin(); iter != this->buckets.end(); iter = this->buckets.begin()) {
|
||||||
ScriptItemList *items = &(*iter).second;
|
ScriptItemList *items = &iter->second;
|
||||||
size_t size = items->size();
|
size_t size = items->size();
|
||||||
for (ScriptItemList::iterator iter = items->begin(); iter != items->end(); iter = items->begin()) {
|
for (auto iter = items->begin(); iter != items->end(); iter = items->begin()) {
|
||||||
if (--count < 0) return;
|
if (--count < 0) return;
|
||||||
this->RemoveItem(*iter);
|
this->RemoveItem(*iter);
|
||||||
/* When the last item is removed from the bucket, the bucket itself is removed.
|
/* When the last item is removed from the bucket, the bucket itself is removed.
|
||||||
@@ -716,9 +713,9 @@ void ScriptList::RemoveTop(SQInteger count)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SORT_BY_ITEM:
|
case SORT_BY_ITEM:
|
||||||
for (ScriptListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter = this->items.begin()) {
|
for (auto iter = this->items.begin(); iter != this->items.end(); iter = this->items.begin()) {
|
||||||
if (--count < 0) return;
|
if (--count < 0) return;
|
||||||
this->RemoveItem((*iter).first);
|
this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -738,10 +735,10 @@ void ScriptList::RemoveBottom(SQInteger count)
|
|||||||
switch (this->sorter_type) {
|
switch (this->sorter_type) {
|
||||||
default: NOT_REACHED();
|
default: NOT_REACHED();
|
||||||
case SORT_BY_VALUE:
|
case SORT_BY_VALUE:
|
||||||
for (ScriptListBucket::reverse_iterator iter = this->buckets.rbegin(); iter != this->buckets.rend(); iter = this->buckets.rbegin()) {
|
for (auto iter = this->buckets.rbegin(); iter != this->buckets.rend(); iter = this->buckets.rbegin()) {
|
||||||
ScriptItemList *items = &(*iter).second;
|
ScriptItemList *items = &iter->second;
|
||||||
size_t size = items->size();
|
size_t size = items->size();
|
||||||
for (ScriptItemList::reverse_iterator iter = items->rbegin(); iter != items->rend(); iter = items->rbegin()) {
|
for (auto iter = items->rbegin(); iter != items->rend(); iter = items->rbegin()) {
|
||||||
if (--count < 0) return;
|
if (--count < 0) return;
|
||||||
this->RemoveItem(*iter);
|
this->RemoveItem(*iter);
|
||||||
/* When the last item is removed from the bucket, the bucket itself is removed.
|
/* When the last item is removed from the bucket, the bucket itself is removed.
|
||||||
@@ -753,9 +750,9 @@ void ScriptList::RemoveBottom(SQInteger count)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case SORT_BY_ITEM:
|
case SORT_BY_ITEM:
|
||||||
for (ScriptListMap::reverse_iterator iter = this->items.rbegin(); iter != this->items.rend(); iter = this->items.rbegin()) {
|
for (auto iter = this->items.rbegin(); iter != this->items.rend(); iter = this->items.rbegin()) {
|
||||||
if (--count < 0) return;
|
if (--count < 0) return;
|
||||||
this->RemoveItem((*iter).first);
|
this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -768,9 +765,8 @@ void ScriptList::RemoveList(ScriptList *list)
|
|||||||
if (list == this) {
|
if (list == this) {
|
||||||
Clear();
|
Clear();
|
||||||
} else {
|
} else {
|
||||||
ScriptListMap *list_items = &list->items;
|
for (const auto &item : list->items) {
|
||||||
for (ScriptListMap::iterator iter = list_items->begin(); iter != list_items->end(); iter++) {
|
this->RemoveItem(item.first);
|
||||||
this->RemoveItem((*iter).first);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -780,8 +776,8 @@ void ScriptList::KeepAboveValue(SQInteger value)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second <= value) this->RemoveItem((*iter).first);
|
if (iter->second <= value) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -790,8 +786,8 @@ void ScriptList::KeepBelowValue(SQInteger value)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second >= value) this->RemoveItem((*iter).first);
|
if (iter->second >= value) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -800,8 +796,8 @@ void ScriptList::KeepBetweenValue(SQInteger start, SQInteger end)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second <= start || (*iter).second >= end) this->RemoveItem((*iter).first);
|
if (iter->second <= start || iter->second >= end) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -810,8 +806,8 @@ void ScriptList::KeepValue(SQInteger value)
|
|||||||
this->modifications++;
|
this->modifications++;
|
||||||
|
|
||||||
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
for (ScriptListMap::iterator next_iter, iter = this->items.begin(); iter != this->items.end(); iter = next_iter) {
|
||||||
next_iter = iter; next_iter++;
|
next_iter = std::next(iter);
|
||||||
if ((*iter).second != value) this->RemoveItem((*iter).first);
|
if (iter->second != value) this->RemoveItem(iter->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -848,7 +844,7 @@ SQInteger ScriptList::_get(HSQUIRRELVM vm)
|
|||||||
SQInteger idx;
|
SQInteger idx;
|
||||||
sq_getinteger(vm, 2, &idx);
|
sq_getinteger(vm, 2, &idx);
|
||||||
|
|
||||||
ScriptListMap::const_iterator item_iter = this->items.find(idx);
|
auto item_iter = this->items.find(idx);
|
||||||
if (item_iter == this->items.end()) return SQ_ERROR;
|
if (item_iter == this->items.end()) return SQ_ERROR;
|
||||||
|
|
||||||
sq_pushinteger(vm, item_iter->second);
|
sq_pushinteger(vm, item_iter->second);
|
||||||
@@ -932,14 +928,14 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm)
|
|||||||
/* Push the function to call */
|
/* Push the function to call */
|
||||||
sq_push(vm, 2);
|
sq_push(vm, 2);
|
||||||
|
|
||||||
for (ScriptListMap::iterator iter = this->items.begin(); iter != this->items.end(); iter++) {
|
for (const auto &item : this->items) {
|
||||||
/* Check for changing of items. */
|
/* Check for changing of items. */
|
||||||
int previous_modification_count = this->modifications;
|
int previous_modification_count = this->modifications;
|
||||||
|
|
||||||
/* Push the root table as instance object, this is what squirrel does for meta-functions. */
|
/* Push the root table as instance object, this is what squirrel does for meta-functions. */
|
||||||
sq_pushroottable(vm);
|
sq_pushroottable(vm);
|
||||||
/* Push all arguments for the valuator function. */
|
/* Push all arguments for the valuator function. */
|
||||||
sq_pushinteger(vm, (*iter).first);
|
sq_pushinteger(vm, item.first);
|
||||||
for (int i = 0; i < nparam - 1; i++) {
|
for (int i = 0; i < nparam - 1; i++) {
|
||||||
sq_push(vm, i + 3);
|
sq_push(vm, i + 3);
|
||||||
}
|
}
|
||||||
@@ -980,7 +976,7 @@ SQInteger ScriptList::Valuate(HSQUIRRELVM vm)
|
|||||||
return sq_throwerror(vm, "modifying valuated list outside of valuator function");
|
return sq_throwerror(vm, "modifying valuated list outside of valuator function");
|
||||||
}
|
}
|
||||||
|
|
||||||
this->SetValue((*iter).first, value);
|
this->SetValue(item.first, value);
|
||||||
|
|
||||||
/* Pop the return value. */
|
/* Pop the return value. */
|
||||||
sq_poptop(vm);
|
sq_poptop(vm);
|
||||||
|
|||||||
Reference in New Issue
Block a user