From 68e16b6cee0f533027e1d8f1293b8a5582ac5a68 Mon Sep 17 00:00:00 2001 From: cc9cii Date: Sun, 6 Dec 2015 21:19:06 +1100 Subject: [PATCH] Convert RefNum index map to use find(). --- apps/opencs/model/world/data.hpp | 2 +- apps/opencs/model/world/refcollection.cpp | 15 +++++---------- apps/opencs/model/world/refcollection.hpp | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/apps/opencs/model/world/data.hpp b/apps/opencs/model/world/data.hpp index d59b83607..88a431fb7 100644 --- a/apps/opencs/model/world/data.hpp +++ b/apps/opencs/model/world/data.hpp @@ -104,7 +104,7 @@ namespace CSMWorld const ESM::Dialogue *mDialogue; // last loaded dialogue bool mBase; bool mProject; - std::map > mRefLoadCache; + std::map > mRefLoadCache; int mReaderIndex; std::vector > mReaders; diff --git a/apps/opencs/model/world/refcollection.cpp b/apps/opencs/model/world/refcollection.cpp index 117aeb012..f811131a1 100644 --- a/apps/opencs/model/world/refcollection.cpp +++ b/apps/opencs/model/world/refcollection.cpp @@ -12,7 +12,7 @@ #include "record.hpp" void CSMWorld::RefCollection::load (ESM::ESMReader& reader, int cellIndex, bool base, - std::map& cache, CSMDoc::Messages& messages) + std::map& cache, CSMDoc::Messages& messages) { Record cell = mCells.getRecord (cellIndex); @@ -71,13 +71,7 @@ void CSMWorld::RefCollection::load (ESM::ESMReader& reader, int cellIndex, bool else ref.mCell = cell2.mId; - // ignore content file number - std::map::iterator iter = cache.begin(); - for (; iter != cache.end(); ++iter) - { - if (ref.mRefNum.mIndex == iter->first.mIndex) - break; - } + std::map::iterator iter = cache.find (ref.mRefNum.mIndex); if (isDeleted) { @@ -114,11 +108,12 @@ void CSMWorld::RefCollection::load (ESM::ESMReader& reader, int cellIndex, bool std::unique_ptr > record(new Record); record->mState = base ? RecordBase::State_BaseOnly : RecordBase::State_ModifiedOnly; + + cache.insert (std::make_pair (ref.mRefNum.mIndex, ref.mId)); + (base ? record->mBase : record->mModified) = std::move(ref); appendRecord(std::move(record)); - - cache.insert (std::make_pair (ref.mRefNum, ref.mId)); } else { diff --git a/apps/opencs/model/world/refcollection.hpp b/apps/opencs/model/world/refcollection.hpp index d031398d3..42bb36357 100644 --- a/apps/opencs/model/world/refcollection.hpp +++ b/apps/opencs/model/world/refcollection.hpp @@ -27,7 +27,7 @@ namespace CSMWorld {} void load (ESM::ESMReader& reader, int cellIndex, bool base, - std::map& cache, CSMDoc::Messages& messages); + std::map& cache, CSMDoc::Messages& messages); ///< Load a sequence of references. std::string getNewId();