Use string_view in Interpreter::Context

pull/3228/head
Evil Eye 2 years ago
parent 4eb6c48285
commit 51938f9ef7

@ -190,12 +190,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 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 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

@ -138,7 +138,7 @@ bool MWDialogue::Filter::testPlayer (const ESM::DialInfo& info) const
if (!info.mCell.empty()) if (!info.mCell.empty())
{ {
// supports partial matches, just like getPcCell // supports partial matches, just like getPcCell
const std::string& playerCell = MWBase::Environment::get().getWorld()->getCellName(player.getCell()); std::string_view playerCell = MWBase::Environment::get().getWorld()->getCellName(player.getCell());
bool match = playerCell.length()>=info.mCell.length() && bool match = playerCell.length()>=info.mCell.length() &&
Misc::StringUtils::ciEqual(playerCell.substr (0, info.mCell.length()), info.mCell); Misc::StringUtils::ciEqual(playerCell.substr (0, info.mCell.length()), info.mCell);
if (!match) if (!match)
@ -485,7 +485,7 @@ bool MWDialogue::Filter::getSelectStructBoolean (const SelectWrapper& select) co
case SelectWrapper::Function_NotCell: case SelectWrapper::Function_NotCell:
{ {
const std::string& actorCell = MWBase::Environment::get().getWorld()->getCellName(mActor.getCell()); std::string_view actorCell = MWBase::Environment::get().getWorld()->getCellName(mActor.getCell());
return !(actorCell.length() >= select.getName().length() return !(actorCell.length() >= select.getName().length()
&& Misc::StringUtils::ciEqual(actorCell.substr(0, select.getName().length()), select.getName())); && Misc::StringUtils::ciEqual(actorCell.substr(0, select.getName().length()), select.getName()));
} }

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

@ -170,11 +170,8 @@ namespace MWScript
} }
const MWWorld::CellStore *cell = MWMechanics::getPlayer().getCell(); const MWWorld::CellStore *cell = MWMechanics::getPlayer().getCell();
std::string current = MWBase::Environment::get().getWorld()->getCellName(cell); std::string_view current = MWBase::Environment::get().getWorld()->getCellName(cell);
Misc::StringUtils::lowerCaseInPlace(current); bool match = Misc::StringUtils::ciCompareLen(name, current, name.length()) == 0;
bool match = current.length()>=name.length() &&
current.substr (0, name.length())==name;
runtime.push (match ? 1 : 0); runtime.push (match ? 1 : 0);
} }

@ -95,14 +95,14 @@ namespace
struct IdGettingVisitor struct IdGettingVisitor
{ {
std::string operator()(const MWWorld::Ptr& ptr) const std::string_view operator()(const MWWorld::Ptr& ptr) const
{ {
if(ptr.isEmpty()) if(ptr.isEmpty())
return {}; return {};
return ptr.mRef->mRef.getRefId(); return ptr.mRef->mRef.getRefId();
} }
std::string operator()(const std::pair<ESM::RefNum, std::string>& pair) const std::string_view operator()(const std::pair<ESM::RefNum, std::string>& pair) const
{ {
return pair.second; return pair.second;
} }
@ -125,7 +125,7 @@ namespace MWScript
return ptr; return ptr;
} }
std::string GlobalScriptDesc::getId() const std::string_view GlobalScriptDesc::getId() const
{ {
return std::visit(IdGettingVisitor {}, mTarget); return std::visit(IdGettingVisitor {}, mTarget);
} }

@ -2,6 +2,7 @@
#define GAME_SCRIPT_GLOBALSCRIPTS_H #define GAME_SCRIPT_GLOBALSCRIPTS_H
#include <string> #include <string>
#include <string_view>
#include <map> #include <map>
#include <memory> #include <memory>
#include <utility> #include <utility>
@ -44,7 +45,7 @@ namespace MWScript
MWWorld::Ptr getPtr(); // Resolves mTarget to a Ptr and caches the (potentially empty) result MWWorld::Ptr getPtr(); // Resolves mTarget to a Ptr and caches the (potentially empty) result
std::string getId() const; // Returns the target's ID -- if any std::string_view getId() const; // Returns the target's ID -- if any
}; };
class GlobalScripts class GlobalScripts

@ -26,8 +26,7 @@
namespace MWScript namespace MWScript
{ {
const MWWorld::Ptr InterpreterContext::getReferenceImp ( const MWWorld::Ptr InterpreterContext::getReferenceImp(std::string_view id, bool activeOnly, bool doThrow) const
const std::string& id, bool activeOnly, bool doThrow) const
{ {
if (!id.empty()) if (!id.empty())
{ {
@ -45,7 +44,7 @@ namespace MWScript
} }
} }
const Locals& InterpreterContext::getMemberLocals (std::string& id, bool global) const Locals& InterpreterContext::getMemberLocals(std::string_view& id, bool global)
const const
{ {
if (global) if (global)
@ -66,7 +65,7 @@ namespace MWScript
} }
} }
Locals& InterpreterContext::getMemberLocals (std::string& id, bool global) Locals& InterpreterContext::getMemberLocals(std::string_view& id, bool global)
{ {
if (global) if (global)
{ {
@ -88,8 +87,7 @@ namespace MWScript
MissingImplicitRefError::MissingImplicitRefError() : std::runtime_error("no implicit reference") {} MissingImplicitRefError::MissingImplicitRefError() : std::runtime_error("no implicit reference") {}
int InterpreterContext::findLocalVariableIndex (const std::string& scriptId, int InterpreterContext::findLocalVariableIndex(std::string_view scriptId, std::string_view name, char type) const
std::string_view name, char type) const
{ {
int index = MWBase::Environment::get().getScriptManager()->getLocals (scriptId). int index = MWBase::Environment::get().getScriptManager()->getLocals (scriptId).
searchIndex (type, name); searchIndex (type, name);
@ -130,7 +128,7 @@ namespace MWScript
mGlobalScriptDesc = globalScriptDesc; mGlobalScriptDesc = globalScriptDesc;
} }
std::string InterpreterContext::getTarget() const std::string_view InterpreterContext::getTarget() const
{ {
if(!mReference.isEmpty()) if(!mReference.isEmpty())
return mReference.mRef->mRef.getRefId(); return mReference.mRef->mRef.getRefId();
@ -237,7 +235,7 @@ namespace MWScript
MWBase::Environment::get().getWorld()->getStore().get<ESM::Global>(); MWBase::Environment::get().getWorld()->getStore().get<ESM::Global>();
std::vector<std::string> ids; std::vector<std::string> ids;
for (auto& globalVariable : globals) for (const auto& globalVariable : globals)
{ {
ids.emplace_back(globalVariable.mId); ids.emplace_back(globalVariable.mId);
} }
@ -273,7 +271,7 @@ namespace MWScript
return "None"; return "None";
} }
std::string InterpreterContext::getActorName() const std::string_view InterpreterContext::getActorName() const
{ {
const MWWorld::Ptr& ptr = getReferenceImp(); const MWWorld::Ptr& ptr = getReferenceImp();
if (ptr.getClass().isNpc()) if (ptr.getClass().isNpc())
@ -286,28 +284,28 @@ namespace MWScript
return creature->mName; return creature->mName;
} }
std::string InterpreterContext::getNPCRace() const std::string_view InterpreterContext::getNPCRace() const
{ {
ESM::NPC npc = *getReferenceImp().get<ESM::NPC>()->mBase; const ESM::NPC* npc = getReferenceImp().get<ESM::NPC>()->mBase;
const ESM::Race* race = MWBase::Environment::get().getWorld()->getStore().get<ESM::Race>().find(npc.mRace); const ESM::Race* race = MWBase::Environment::get().getWorld()->getStore().get<ESM::Race>().find(npc->mRace);
return race->mName; return race->mName;
} }
std::string InterpreterContext::getNPCClass() const std::string_view InterpreterContext::getNPCClass() const
{ {
ESM::NPC npc = *getReferenceImp().get<ESM::NPC>()->mBase; const ESM::NPC* npc = getReferenceImp().get<ESM::NPC>()->mBase;
const ESM::Class* class_ = MWBase::Environment::get().getWorld()->getStore().get<ESM::Class>().find(npc.mClass); const ESM::Class* class_ = MWBase::Environment::get().getWorld()->getStore().get<ESM::Class>().find(npc->mClass);
return class_->mName; return class_->mName;
} }
std::string InterpreterContext::getNPCFaction() const std::string_view InterpreterContext::getNPCFaction() const
{ {
ESM::NPC npc = *getReferenceImp().get<ESM::NPC>()->mBase; const ESM::NPC* npc = getReferenceImp().get<ESM::NPC>()->mBase;
const ESM::Faction* faction = MWBase::Environment::get().getWorld()->getStore().get<ESM::Faction>().find(npc.mFaction); const ESM::Faction* faction = MWBase::Environment::get().getWorld()->getStore().get<ESM::Faction>().find(npc->mFaction);
return faction->mName; return faction->mName;
} }
std::string InterpreterContext::getNPCRank() const std::string_view InterpreterContext::getNPCRank() const
{ {
const MWWorld::Ptr& ptr = getReferenceImp(); const MWWorld::Ptr& ptr = getReferenceImp();
std::string_view faction = ptr.getClass().getPrimaryFaction(ptr); std::string_view faction = ptr.getClass().getPrimaryFaction(ptr);
@ -324,28 +322,27 @@ namespace MWScript
return fact->mRanks[rank]; return fact->mRanks[rank];
} }
std::string InterpreterContext::getPCName() const std::string_view InterpreterContext::getPCName() const
{ {
MWBase::World *world = MWBase::Environment::get().getWorld(); MWBase::World *world = MWBase::Environment::get().getWorld();
ESM::NPC player = *world->getPlayerPtr().get<ESM::NPC>()->mBase; return world->getPlayerPtr().get<ESM::NPC>()->mBase->mName;
return player.mName;
} }
std::string InterpreterContext::getPCRace() const std::string_view InterpreterContext::getPCRace() const
{ {
MWBase::World *world = MWBase::Environment::get().getWorld(); MWBase::World *world = MWBase::Environment::get().getWorld();
const std::string& race = world->getPlayerPtr().get<ESM::NPC>()->mBase->mRace; const std::string& race = world->getPlayerPtr().get<ESM::NPC>()->mBase->mRace;
return world->getStore().get<ESM::Race>().find(race)->mName; return world->getStore().get<ESM::Race>().find(race)->mName;
} }
std::string InterpreterContext::getPCClass() const std::string_view InterpreterContext::getPCClass() const
{ {
MWBase::World *world = MWBase::Environment::get().getWorld(); MWBase::World *world = MWBase::Environment::get().getWorld();
const std::string& class_ = world->getPlayerPtr().get<ESM::NPC>()->mBase->mClass; const std::string& class_ = world->getPlayerPtr().get<ESM::NPC>()->mBase->mClass;
return world->getStore().get<ESM::Class>().find(class_)->mName; return world->getStore().get<ESM::Class>().find(class_)->mName;
} }
std::string InterpreterContext::getPCRank() const std::string_view InterpreterContext::getPCRank() const
{ {
MWBase::World *world = MWBase::Environment::get().getWorld(); MWBase::World *world = MWBase::Environment::get().getWorld();
MWWorld::Ptr player = world->getPlayerPtr(); MWWorld::Ptr player = world->getPlayerPtr();
@ -374,7 +371,7 @@ namespace MWScript
return faction->mRanks[rank]; return faction->mRanks[rank];
} }
std::string InterpreterContext::getPCNextRank() const std::string_view InterpreterContext::getPCNextRank() const
{ {
MWBase::World *world = MWBase::Environment::get().getWorld(); MWBase::World *world = MWBase::Environment::get().getWorld();
MWWorld::Ptr player = world->getPlayerPtr(); MWWorld::Ptr player = world->getPlayerPtr();
@ -411,7 +408,7 @@ namespace MWScript
return player.getClass().getNpcStats (player).getBounty(); return player.getClass().getNpcStats (player).getBounty();
} }
std::string InterpreterContext::getCurrentCellName() const std::string_view InterpreterContext::getCurrentCellName() const
{ {
return MWBase::Environment::get().getWorld()->getCellName(); return MWBase::Environment::get().getWorld()->getCellName();
} }
@ -430,59 +427,47 @@ namespace MWScript
int InterpreterContext::getMemberShort(std::string_view id, std::string_view name, int InterpreterContext::getMemberShort(std::string_view id, std::string_view name,
bool global) const bool global) const
{ {
std::string scriptId (id); const Locals& locals = getMemberLocals(id, global);
const Locals& locals = getMemberLocals (scriptId, global); return locals.mShorts[findLocalVariableIndex(id, name, 's')];
return locals.mShorts[findLocalVariableIndex (scriptId, name, 's')];
} }
int InterpreterContext::getMemberLong(std::string_view id, std::string_view name, int InterpreterContext::getMemberLong(std::string_view id, std::string_view name,
bool global) const bool global) const
{ {
std::string scriptId (id); const Locals& locals = getMemberLocals(id, global);
const Locals& locals = getMemberLocals (scriptId, global);
return locals.mLongs[findLocalVariableIndex (scriptId, name, 'l')]; return locals.mLongs[findLocalVariableIndex(id, name, 'l')];
} }
float InterpreterContext::getMemberFloat(std::string_view id, std::string_view name, float InterpreterContext::getMemberFloat(std::string_view id, std::string_view name,
bool global) const bool global) const
{ {
std::string scriptId (id); const Locals& locals = getMemberLocals(id, global);
const Locals& locals = getMemberLocals (scriptId, global);
return locals.mFloats[findLocalVariableIndex (scriptId, name, 'f')]; return locals.mFloats[findLocalVariableIndex(id, name, 'f')];
} }
void InterpreterContext::setMemberShort(std::string_view id, std::string_view name, void InterpreterContext::setMemberShort(std::string_view id, std::string_view name,
int value, bool global) int value, bool global)
{ {
std::string scriptId (id); Locals& locals = getMemberLocals(id, global);
Locals& locals = getMemberLocals (scriptId, global); locals.mShorts[findLocalVariableIndex(id, name, 's')] = value;
locals.mShorts[findLocalVariableIndex (scriptId, name, 's')] = value;
} }
void InterpreterContext::setMemberLong(std::string_view id, std::string_view name, int value, bool global) void InterpreterContext::setMemberLong(std::string_view id, std::string_view name, int value, bool global)
{ {
std::string scriptId (id); Locals& locals = getMemberLocals(id, global);
Locals& locals = getMemberLocals (scriptId, global);
locals.mLongs[findLocalVariableIndex (scriptId, name, 'l')] = value; locals.mLongs[findLocalVariableIndex(id, name, 'l')] = value;
} }
void InterpreterContext::setMemberFloat(std::string_view id, std::string_view name, float value, bool global) void InterpreterContext::setMemberFloat(std::string_view id, std::string_view name, float value, bool global)
{ {
std::string scriptId (id); Locals& locals = getMemberLocals(id, global);
Locals& locals = getMemberLocals (scriptId, global);
locals.mFloats[findLocalVariableIndex (scriptId, name, 'f')] = value; locals.mFloats[findLocalVariableIndex(id, name, 'f')] = value;
} }
MWWorld::Ptr InterpreterContext::getReference(bool required) const MWWorld::Ptr InterpreterContext::getReference(bool required) const

@ -28,18 +28,16 @@ namespace MWScript
/// If \a id is empty, a reference the script is run from is returned or in case /// If \a id is empty, a reference the script is run from is returned or in case
/// of a non-local script the reference derived from the target ID. /// of a non-local script the reference derived from the target ID.
const MWWorld::Ptr getReferenceImp (const std::string& id = "", const MWWorld::Ptr getReferenceImp(std::string_view id = {}, bool activeOnly = false, bool doThrow = true) const;
bool activeOnly = false, bool doThrow=true) const;
const Locals& getMemberLocals (std::string& id, bool global) const; const Locals& getMemberLocals(std::string_view& id, bool global) const;
///< \a id is changed to the respective script ID, if \a id wasn't a script ID before ///< \a id is changed to the respective script ID, if \a id wasn't a script ID before
Locals& getMemberLocals (std::string& id, bool global); Locals& getMemberLocals(std::string_view& id, bool global);
///< \a id is changed to the respective script ID, if \a id wasn't a script ID before ///< \a id is changed to the respective script ID, if \a id wasn't a script ID before
/// Throws an exception if local variable can't be found. /// Throws an exception if local variable can't be found.
int findLocalVariableIndex (const std::string& scriptId, std::string_view name, int findLocalVariableIndex(std::string_view scriptId, std::string_view name, char type) const;
char type) const;
public: public:
InterpreterContext (std::shared_ptr<GlobalScriptDesc> globalScriptDesc); InterpreterContext (std::shared_ptr<GlobalScriptDesc> globalScriptDesc);
@ -47,7 +45,7 @@ namespace MWScript
InterpreterContext (MWScript::Locals *locals, const MWWorld::Ptr& reference); InterpreterContext (MWScript::Locals *locals, const MWWorld::Ptr& reference);
///< The ownership of \a locals is not transferred. 0-pointer allowed. ///< The ownership of \a locals is not transferred. 0-pointer allowed.
std::string getTarget() const override; std::string_view getTarget() const override;
int getLocalShort (int index) const override; int getLocalShort (int index) const override;
@ -87,29 +85,29 @@ namespace MWScript
std::string getActionBinding(std::string_view action) const override; std::string getActionBinding(std::string_view action) const override;
std::string getActorName() const override; std::string_view getActorName() const override;
std::string getNPCRace() const override; std::string_view getNPCRace() const override;
std::string getNPCClass() const override; std::string_view getNPCClass() const override;
std::string getNPCFaction() const override; std::string_view getNPCFaction() const override;
std::string getNPCRank() const override; std::string_view getNPCRank() const override;
std::string getPCName() const override; std::string_view getPCName() const override;
std::string getPCRace() const override; std::string_view getPCRace() const override;
std::string getPCClass() const override; std::string_view getPCClass() const override;
std::string getPCRank() const override; std::string_view getPCRank() const override;
std::string getPCNextRank() const override; std::string_view getPCNextRank() const override;
int getPCBounty() const override; int getPCBounty() const override;
std::string getCurrentCellName() const override; std::string_view getCurrentCellName() const override;
void executeActivation(const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor); void executeActivation(const MWWorld::Ptr& ptr, const MWWorld::Ptr& actor);
///< Execute the activation action for this ptr. If ptr is mActivated, mark activation as handled. ///< Execute the activation action for this ptr. If ptr is mActivated, mark activation as handled.

@ -670,14 +670,14 @@ namespace MWWorld
return mCurrentDate->getMonthName(month); return mCurrentDate->getMonthName(month);
} }
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());
} }
std::string World::getCellName(const ESM::Cell* cell) const std::string_view World::getCellName(const ESM::Cell* cell) const
{ {
if (cell) if (cell)
{ {

@ -280,12 +280,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.
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.
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

@ -140,7 +140,7 @@ namespace
LocalVariables mLocals; LocalVariables mLocals;
std::map<std::string, GlobalVariables, std::less<>> mMembers; std::map<std::string, GlobalVariables, std::less<>> mMembers;
public: public:
std::string getTarget() const override { return {}; }; std::string_view getTarget() const override { return {}; };
int getLocalShort(int index) const override { return mLocals.getShort(index); }; int getLocalShort(int index) const override { return mLocals.getShort(index); };
@ -176,29 +176,29 @@ namespace
std::string getActionBinding(std::string_view action) const override { return {}; }; std::string getActionBinding(std::string_view action) const override { return {}; };
std::string getActorName() const override { return {}; }; std::string_view getActorName() const override { return {}; };
std::string getNPCRace() const override { return {}; }; std::string_view getNPCRace() const override { return {}; };
std::string getNPCClass() const override { return {}; }; std::string_view getNPCClass() const override { return {}; };
std::string getNPCFaction() const override { return {}; }; std::string_view getNPCFaction() const override { return {}; };
std::string getNPCRank() const override { return {}; }; std::string_view getNPCRank() const override { return {}; };
std::string getPCName() const override { return {}; }; std::string_view getPCName() const override { return {}; };
std::string getPCRace() const override { return {}; }; std::string_view getPCRace() const override { return {}; };
std::string getPCClass() const override { return {}; }; std::string_view getPCClass() const override { return {}; };
std::string getPCRank() const override { return {}; }; std::string_view getPCRank() const override { return {}; };
std::string getPCNextRank() const override { return {}; }; std::string_view getPCNextRank() const override { return {}; };
int getPCBounty() const override { return {}; }; int getPCBounty() const override { return {}; };
std::string getCurrentCellName() const override { return {}; }; std::string_view getCurrentCellName() const override { return {}; };
int getMemberShort(std::string_view id, std::string_view name, bool global) const override int getMemberShort(std::string_view id, std::string_view name, bool global) const override
{ {

@ -13,7 +13,7 @@ namespace Interpreter
virtual ~Context() {} virtual ~Context() {}
virtual std::string getTarget() const = 0; virtual std::string_view getTarget() const = 0;
virtual int getLocalShort (int index) const = 0; virtual int getLocalShort (int index) const = 0;
@ -56,29 +56,29 @@ namespace Interpreter
virtual std::string getActionBinding(std::string_view action) const = 0; virtual std::string getActionBinding(std::string_view action) const = 0;
virtual std::string getActorName() const = 0; virtual std::string_view getActorName() const = 0;
virtual std::string getNPCRace() const = 0; virtual std::string_view getNPCRace() const = 0;
virtual std::string getNPCClass() const = 0; virtual std::string_view getNPCClass() const = 0;
virtual std::string getNPCFaction() const = 0; virtual std::string_view getNPCFaction() const = 0;
virtual std::string getNPCRank() const = 0; virtual std::string_view getNPCRank() const = 0;
virtual std::string getPCName() const = 0; virtual std::string_view getPCName() const = 0;
virtual std::string getPCRace() const = 0; virtual std::string_view getPCRace() const = 0;
virtual std::string getPCClass() const = 0; virtual std::string_view getPCClass() const = 0;
virtual std::string getPCRank() const = 0; virtual std::string_view getPCRank() const = 0;
virtual std::string getPCNextRank() const = 0; virtual std::string_view getPCNextRank() const = 0;
virtual int getPCBounty() const = 0; virtual int getPCBounty() const = 0;
virtual std::string getCurrentCellName() const = 0; virtual std::string_view getCurrentCellName() const = 0;
virtual int getMemberShort(std::string_view id, std::string_view name, bool global) const = 0; virtual int getMemberShort(std::string_view id, std::string_view name, bool global) const = 0;

Loading…
Cancel
Save