mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-29 04:06:40 +00:00
Change control flow to be easier to understand
This commit is contained in:
parent
09147934fb
commit
4eac137109
1 changed files with 11 additions and 19 deletions
|
@ -38,27 +38,19 @@ namespace ESM
|
||||||
|
|
||||||
Item& item = it->second;
|
Item& item = it->second;
|
||||||
|
|
||||||
const auto insertOrSplice = [&](typename std::list<T>::const_iterator before) {
|
auto before = mOrderedInfo.begin();
|
||||||
|
if (!value.mPrev.empty())
|
||||||
|
{
|
||||||
|
const auto prevIt = mInfoPositions.find(value.mPrev);
|
||||||
|
if (prevIt != mInfoPositions.end())
|
||||||
|
before = std::next(prevIt->second.mPosition);
|
||||||
|
else
|
||||||
|
before = mOrderedInfo.end();
|
||||||
|
}
|
||||||
if (item.mPosition == mOrderedInfo.end())
|
if (item.mPosition == mOrderedInfo.end())
|
||||||
item.mPosition = mOrderedInfo.insert(before, std::forward<V>(value));
|
item.mPosition = mOrderedInfo.insert(before, std::forward<V>(value));
|
||||||
else
|
else
|
||||||
mOrderedInfo.splice(before, mOrderedInfo, item.mPosition);
|
mOrderedInfo.splice(before, mOrderedInfo, item.mPosition);
|
||||||
};
|
|
||||||
|
|
||||||
if (value.mPrev.empty())
|
|
||||||
{
|
|
||||||
insertOrSplice(mOrderedInfo.begin());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const auto prevIt = mInfoPositions.find(value.mPrev);
|
|
||||||
if (prevIt != mInfoPositions.end())
|
|
||||||
{
|
|
||||||
insertOrSplice(std::next(prevIt->second.mPosition));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
insertOrSplice(mOrderedInfo.end());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeInfo(const RefId& infoRefId)
|
void removeInfo(const RefId& infoRefId)
|
||||||
|
|
Loading…
Reference in a new issue