Renamed string => Id, makes more sense considering the new underlying type

Fixes unnecessary copies, and issues with case sensitive comparisons.

fixed modification that wasn't necessary

Fixed type mismatch, and unecessary copy
iwyu_full
florent.teppe 2 years ago
parent 30a020883e
commit 0f3499f504

@ -111,7 +111,7 @@ namespace ESSImport
bool isDeleted = false; bool isDeleted = false;
npc.load(esm, isDeleted); npc.load(esm, isDeleted);
if (npc.mId != ESM::RefId::stringRefId("player")) if (npc.mId != "player")
{ {
// Handles changes to the NPC struct, but since there is no index here // Handles changes to the NPC struct, but since there is no index here
// it will apply to ALL instances of the class. seems to be the reason for the // it will apply to ALL instances of the class. seems to be the reason for the

@ -68,7 +68,7 @@ bool CSMDoc::SavingState::isProjectFile() const
return mProjectFile; return mProjectFile;
} }
std::map<std::string, std::deque<int>>& CSMDoc::SavingState::getSubRecords() std::map<std::string, std::deque<int>, Misc::StringUtils::CiComp>& CSMDoc::SavingState::getSubRecords()
{ {
return mSubRecords; return mSubRecords;
} }

@ -9,8 +9,8 @@
#include <components/esm3/esmwriter.hpp> #include <components/esm3/esmwriter.hpp>
#include <components/misc/algorithm.hpp>
#include <components/to_utf8/to_utf8.hpp> #include <components/to_utf8/to_utf8.hpp>
namespace CSMDoc namespace CSMDoc
{ {
class Operation; class Operation;
@ -26,7 +26,7 @@ namespace CSMDoc
ESM::ESMWriter mWriter; ESM::ESMWriter mWriter;
std::filesystem::path mProjectPath; std::filesystem::path mProjectPath;
bool mProjectFile; bool mProjectFile;
std::map<std::string, std::deque<int>> mSubRecords; // record ID, list of subrecords std::map<std::string, std::deque<int>, Misc::StringUtils::CiComp> mSubRecords; // record ID, list of subrecords
public: public:
SavingState(Operation& operation, std::filesystem::path projectPath, ToUTF8::FromType encoding); SavingState(Operation& operation, std::filesystem::path projectPath, ToUTF8::FromType encoding);
@ -47,7 +47,7 @@ namespace CSMDoc
bool isProjectFile() const; bool isProjectFile() const;
///< Currently saving project file? (instead of content file) ///< Currently saving project file? (instead of content file)
std::map<std::string, std::deque<int>>& getSubRecords(); std::map<std::string, std::deque<int>, Misc::StringUtils::CiComp>& getSubRecords();
}; };
} }

@ -2098,30 +2098,30 @@ namespace CSMWorld
void set(Record<ESXRecordT>& record, const QVariant& data) override void set(Record<ESXRecordT>& record, const QVariant& data) override
{ {
ESM::RefId* string = nullptr; ESM::RefId* id = nullptr;
ESXRecordT record2 = record.get(); ESXRecordT record2 = record.get();
switch (this->mColumnId) switch (this->mColumnId)
{ {
case Columns::ColumnId_CastingObject: case Columns::ColumnId_CastingObject:
string = &record2.mCasting; id = &record2.mCasting;
break; break;
case Columns::ColumnId_HitObject: case Columns::ColumnId_HitObject:
string = &record2.mHit; id = &record2.mHit;
break; break;
case Columns::ColumnId_AreaObject: case Columns::ColumnId_AreaObject:
string = &record2.mArea; id = &record2.mArea;
break; break;
case Columns::ColumnId_BoltObject: case Columns::ColumnId_BoltObject:
string = &record2.mBolt; id = &record2.mBolt;
break; break;
} }
if (!string) if (!id)
throw std::logic_error("Unsupported column ID"); throw std::logic_error("Unsupported column ID");
*string = ESM::RefId::stringRefId(data.toString().toUtf8().constData()); *id = ESM::RefId::stringRefId(data.toString().toUtf8().constData());
record.setModified(record2); record.setModified(record2);
} }
@ -2141,56 +2141,56 @@ namespace CSMWorld
QVariant get(const Record<ESXRecordT>& record) const override QVariant get(const Record<ESXRecordT>& record) const override
{ {
const ESM::RefId* string = nullptr; const ESM::RefId* id = nullptr;
switch (this->mColumnId) switch (this->mColumnId)
{ {
case Columns::ColumnId_CastingSound: case Columns::ColumnId_CastingSound:
string = &record.get().mCastSound; id = &record.get().mCastSound;
break; break;
case Columns::ColumnId_HitSound: case Columns::ColumnId_HitSound:
string = &record.get().mHitSound; id = &record.get().mHitSound;
break; break;
case Columns::ColumnId_AreaSound: case Columns::ColumnId_AreaSound:
string = &record.get().mAreaSound; id = &record.get().mAreaSound;
break; break;
case Columns::ColumnId_BoltSound: case Columns::ColumnId_BoltSound:
string = &record.get().mBoltSound; id = &record.get().mBoltSound;
break; break;
} }
if (!string) if (!id)
throw std::logic_error("Unsupported column ID"); throw std::logic_error("Unsupported column ID");
return QString::fromUtf8(string->getRefIdString().c_str()); return QString::fromUtf8(id->getRefIdString().c_str());
} }
void set(Record<ESXRecordT>& record, const QVariant& data) override void set(Record<ESXRecordT>& record, const QVariant& data) override
{ {
ESM::RefId* string = nullptr; ESM::RefId* id = nullptr;
ESXRecordT record2 = record.get(); ESXRecordT record2 = record.get();
switch (this->mColumnId) switch (this->mColumnId)
{ {
case Columns::ColumnId_CastingSound: case Columns::ColumnId_CastingSound:
string = &record2.mCastSound; id = &record2.mCastSound;
break; break;
case Columns::ColumnId_HitSound: case Columns::ColumnId_HitSound:
string = &record2.mHitSound; id = &record2.mHitSound;
break; break;
case Columns::ColumnId_AreaSound: case Columns::ColumnId_AreaSound:
string = &record2.mAreaSound; id = &record2.mAreaSound;
break; break;
case Columns::ColumnId_BoltSound: case Columns::ColumnId_BoltSound:
string = &record2.mBoltSound; id = &record2.mBoltSound;
break; break;
} }
if (!string) if (!id)
throw std::logic_error("Unsupported column ID"); throw std::logic_error("Unsupported column ID");
*string = ESM::RefId::stringRefId(data.toString().toUtf8().constData()); *id = ESM::RefId::stringRefId(data.toString().toUtf8().constData());
record.setModified(record2); record.setModified(record2);
} }

@ -290,7 +290,8 @@ void CSMWorld::CommandDispatcher::executeExtendedDelete()
if (record.mState == RecordBase::State_Deleted) if (record.mState == RecordBase::State_Deleted)
continue; continue;
if (!std::binary_search(mSelection.begin(), mSelection.end(), record.get().mCell.getRefIdString())) if (!std::binary_search(mSelection.begin(), mSelection.end(),
Misc::StringUtils::lowerCase(record.get().mCell.getRefIdString())))
continue; continue;
macro.push(new CSMWorld::DeleteCommand(model, record.get().mId.getRefIdString())); macro.push(new CSMWorld::DeleteCommand(model, record.get().mId.getRefIdString()));
@ -320,7 +321,8 @@ void CSMWorld::CommandDispatcher::executeExtendedRevert()
{ {
const Record<CellRef>& record = collection.getRecord(i); const Record<CellRef>& record = collection.getRecord(i);
if (!std::binary_search(mSelection.begin(), mSelection.end(), record.get().mCell.getRefIdString())) if (!std::binary_search(mSelection.begin(), mSelection.end(),
Misc::StringUtils::lowerCase(record.get().mCell.getRefIdString())))
continue; continue;
macro.push(new CSMWorld::RevertCommand(model, record.get().mId.getRefIdString())); macro.push(new CSMWorld::RevertCommand(model, record.get().mId.getRefIdString()));

@ -33,6 +33,7 @@
#include <components/esm3/loadspel.hpp> #include <components/esm3/loadspel.hpp>
#include <components/esm3/loadsscr.hpp> #include <components/esm3/loadsscr.hpp>
#include <components/files/multidircollection.hpp> #include <components/files/multidircollection.hpp>
#include <components/misc/algorithm.hpp>
#include <components/to_utf8/to_utf8.hpp> #include <components/to_utf8/to_utf8.hpp>
#include "cell.hpp" #include "cell.hpp"
@ -122,7 +123,7 @@ namespace CSMWorld
const ESM::Dialogue* mDialogue; // last loaded dialogue const ESM::Dialogue* mDialogue; // last loaded dialogue
bool mBase; bool mBase;
bool mProject; bool mProject;
std::map<std::string, std::map<unsigned int, unsigned int>> mRefLoadCache; std::map<std::string, std::map<unsigned int, unsigned int>, Misc::StringUtils::CiComp> mRefLoadCache;
int mReaderIndex; int mReaderIndex;
bool mFsStrict; bool mFsStrict;

@ -131,7 +131,7 @@ void CSMWorld::ScriptContext::clear()
bool CSMWorld::ScriptContext::clearLocals(const std::string& script) bool CSMWorld::ScriptContext::clearLocals(const std::string& script)
{ {
std::map<std::string, Compiler::Locals>::iterator iter = mLocals.find(Misc::StringUtils::lowerCase(script)); std::map<std::string, Compiler::Locals>::iterator iter = mLocals.find(script);
if (iter != mLocals.end()) if (iter != mLocals.end())
{ {

@ -8,6 +8,7 @@
#include <components/compiler/context.hpp> #include <components/compiler/context.hpp>
#include <components/compiler/locals.hpp> #include <components/compiler/locals.hpp>
#include <components/misc/algorithm.hpp>
namespace CSMWorld namespace CSMWorld
{ {
@ -18,7 +19,7 @@ namespace CSMWorld
const Data& mData; const Data& mData;
mutable std::vector<ESM::RefId> mIds; mutable std::vector<ESM::RefId> mIds;
mutable bool mIdsUpdated; mutable bool mIdsUpdated;
mutable std::map<std::string, Compiler::Locals> mLocals; mutable std::map<std::string, Compiler::Locals, Misc::StringUtils::CiComp> mLocals;
public: public:
ScriptContext(const Data& data); ScriptContext(const Data& data);

@ -95,7 +95,7 @@ bool CSVRender::Cell::addObjects(int start, int end)
for (int i = start; i <= end; ++i) for (int i = start; i <= end; ++i)
{ {
auto cellId = collection.getRecord(i).get().mCell; const auto& cellId = collection.getRecord(i).get().mCell;
CSMWorld::RecordBase::State state = collection.getRecord(i).mState; CSMWorld::RecordBase::State state = collection.getRecord(i).mState;

@ -12,6 +12,7 @@
#include "../../model/world/cellcoordinates.hpp" #include "../../model/world/cellcoordinates.hpp"
#include "instancedragmodes.hpp" #include "instancedragmodes.hpp"
#include <components/esm/refid.hpp> #include <components/esm/refid.hpp>
#include <components/misc/algorithm.hpp>
class QModelIndex; class QModelIndex;
@ -47,7 +48,7 @@ namespace CSVRender
CSMWorld::Data& mData; CSMWorld::Data& mData;
ESM::RefId mId; ESM::RefId mId;
osg::ref_ptr<osg::Group> mCellNode; osg::ref_ptr<osg::Group> mCellNode;
std::map<std::string, Object*> mObjects; std::map<std::string, Object*, Misc::StringUtils::CiComp> mObjects;
std::unique_ptr<Terrain::TerrainGrid> mTerrain; std::unique_ptr<Terrain::TerrainGrid> mTerrain;
CSMWorld::CellCoordinates mCoordinates; CSMWorld::CellCoordinates mCoordinates;
std::unique_ptr<CellArrow> mCellArrows[4]; std::unique_ptr<CellArrow> mCellArrows[4];

@ -177,12 +177,12 @@ namespace MWBase
virtual char getGlobalVariableType(std::string_view name) const = 0; virtual char getGlobalVariableType(std::string_view name) const = 0;
///< Return ' ', if there is no global variable with this name. ///< Return ' ', if there is no global variable with this name.
virtual const std::string& getCellName(const MWWorld::CellStore* cell = nullptr) const = 0; virtual std::string_view getCellName(const MWWorld::CellStore* cell = nullptr) const = 0;
///< Return name of the cell. ///< Return name of the cell.
/// ///
/// \note If cell==0, the cell the player is currently in will be used instead to /// \note If cell==0, the cell the player is currently in will be used instead to
/// generate a name. /// generate a name.
virtual const std::string& getCellName(const ESM::Cell* cell) const = 0; virtual std::string_view getCellName(const ESM::Cell* cell) const = 0;
virtual void removeRefScript(MWWorld::RefData* ref) = 0; virtual void removeRefScript(MWWorld::RefData* ref) = 0;
//< Remove the script attached to ref from mLocalScripts //< Remove the script attached to ref from mLocalScripts
@ -660,7 +660,8 @@ namespace MWBase
virtual DetourNavigator::Navigator* getNavigator() const = 0; virtual DetourNavigator::Navigator* getNavigator() const = 0;
virtual void updateActorPath(const MWWorld::ConstPtr& actor, const std::deque<osg::Vec3f>& path, virtual void updateActorPath(const MWWorld::ConstPtr& actor, const std::deque<osg::Vec3f>& path,
const DetourNavigator::AgentBounds& agentBounds, const osg::Vec3f& start, const osg::Vec3f& end) const = 0; const DetourNavigator::AgentBounds& agentBounds, const osg::Vec3f& start, const osg::Vec3f& end) const
= 0;
virtual void removeActorPath(const MWWorld::ConstPtr& actor) const = 0; virtual void removeActorPath(const MWWorld::ConstPtr& actor) const = 0;
@ -669,10 +670,12 @@ namespace MWBase
virtual DetourNavigator::AgentBounds getPathfindingAgentBounds(const MWWorld::ConstPtr& actor) const = 0; virtual DetourNavigator::AgentBounds getPathfindingAgentBounds(const MWWorld::ConstPtr& actor) const = 0;
virtual bool hasCollisionWithDoor( virtual bool hasCollisionWithDoor(
const MWWorld::ConstPtr& door, const osg::Vec3f& position, const osg::Vec3f& destination) const = 0; const MWWorld::ConstPtr& door, const osg::Vec3f& position, const osg::Vec3f& destination) const
= 0;
virtual bool isAreaOccupiedByOtherActor(const osg::Vec3f& position, const float radius, virtual bool isAreaOccupiedByOtherActor(const osg::Vec3f& position, const float radius,
std::span<const MWWorld::ConstPtr> ignore, std::vector<MWWorld::Ptr>* occupyingActors = nullptr) const = 0; std::span<const MWWorld::ConstPtr> ignore, std::vector<MWWorld::Ptr>* occupyingActors = nullptr) const
= 0;
virtual void reportStats(unsigned int frameNumber, osg::Stats& stats) const = 0; virtual void reportStats(unsigned int frameNumber, osg::Stats& stats) const = 0;

@ -792,9 +792,9 @@ namespace MWGui
int incr = next ? 1 : -1; int incr = next ? 1 : -1;
bool found = false; bool found = false;
ESM::RefId lastId; const ESM::RefId* lastId = nullptr;
if (selected != -1) if (selected != -1)
lastId = model.getItem(selected).mBase.getCellRef().getRefId(); lastId = &model.getItem(selected).mBase.getCellRef().getRefId();
ItemModel::ModelIndex cycled = selected; ItemModel::ModelIndex cycled = selected;
for (unsigned int i = 0; i < model.getItemCount(); ++i) for (unsigned int i = 0; i < model.getItemCount(); ++i)
{ {
@ -805,10 +805,10 @@ namespace MWGui
// skip different stacks of the same item, or we will get stuck as stacking/unstacking them may change their // skip different stacks of the same item, or we will get stuck as stacking/unstacking them may change their
// relative ordering // relative ordering
if (lastId == item.getCellRef().getRefId()) if (*lastId == item.getCellRef().getRefId())
continue; continue;
lastId = item.getCellRef().getRefId(); lastId = &item.getCellRef().getRefId();
if (item.getClass().getType() == ESM::Weapon::sRecordId && isRightHandWeapon(item) if (item.getClass().getType() == ESM::Weapon::sRecordId && isRightHandWeapon(item)
&& item.getClass().canBeEquipped(item, player).first) && item.getClass().canBeEquipped(item, player).first)

@ -933,7 +933,7 @@ namespace MWGui
{ {
mMap->requestMapRender(cell); mMap->requestMapRender(cell);
std::string name = MWBase::Environment::get().getWorld()->getCellName(cell); std::string name = std::string(MWBase::Environment::get().getWorld()->getCellName(cell));
mMap->setCellName(name); mMap->setCellName(name);
mHud->setCellName(name); mHud->setCellName(name);

@ -655,14 +655,14 @@ namespace MWWorld
return mCurrentDate->getMonthName(month); return mCurrentDate->getMonthName(month);
} }
const std::string& World::getCellName(const MWWorld::CellStore* cell) const std::string_view World::getCellName(const MWWorld::CellStore* cell) const
{ {
if (!cell) if (!cell)
cell = mWorldScene->getCurrentCell(); cell = mWorldScene->getCurrentCell();
return getCellName(cell->getCell()); return getCellName(cell->getCell());
} }
const std::string& World::getCellName(const ESM::Cell* cell) const std::string_view World::getCellName(const ESM::Cell* cell) const
{ {
if (cell) if (cell)
{ {

@ -267,12 +267,12 @@ namespace MWWorld
char getGlobalVariableType(std::string_view name) const override; char getGlobalVariableType(std::string_view name) const override;
///< Return ' ', if there is no global variable with this name. ///< Return ' ', if there is no global variable with this name.
const std::string& getCellName(const MWWorld::CellStore* cell = nullptr) const override; std::string_view getCellName(const MWWorld::CellStore* cell = nullptr) const override;
///< Return name of the cell. ///< Return name of the cell.
/// ///
/// \note If cell==0, the cell the player is currently in will be used instead to /// \note If cell==0, the cell the player is currently in will be used instead to
/// generate a name. /// generate a name.
const std::string& getCellName(const ESM::Cell* cell) const override; std::string_view getCellName(const ESM::Cell* cell) const override;
void removeRefScript(MWWorld::RefData* ref) override; void removeRefScript(MWWorld::RefData* ref) override;
//< Remove the script attached to ref from mLocalScripts //< Remove the script attached to ref from mLocalScripts

Loading…
Cancel
Save