mirror of https://github.com/OpenMW/openmw.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
C++
45 lines
1.0 KiB
C++
#include "scope.hpp"
|
|
|
|
#include <string_view>
|
|
|
|
#include <components/esm/refid.hpp>
|
|
#include <components/misc/strings/algorithm.hpp>
|
|
|
|
namespace CSMWorld
|
|
{
|
|
namespace
|
|
{
|
|
struct GetScope
|
|
{
|
|
Scope operator()(ESM::StringRefId v) const
|
|
{
|
|
std::string_view namespace_;
|
|
|
|
const std::string::size_type i = v.getValue().find("::");
|
|
|
|
if (i != std::string::npos)
|
|
namespace_ = std::string_view(v.getValue()).substr(0, i);
|
|
|
|
if (Misc::StringUtils::ciEqual(namespace_, "project"))
|
|
return Scope_Project;
|
|
|
|
if (Misc::StringUtils::ciEqual(namespace_, "session"))
|
|
return Scope_Session;
|
|
|
|
return Scope_Content;
|
|
}
|
|
|
|
template <class T>
|
|
Scope operator()(const T& /*v*/) const
|
|
{
|
|
return Scope_Content;
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
CSMWorld::Scope CSMWorld::getScopeFromId(ESM::RefId id)
|
|
{
|
|
return visit(GetScope{}, id);
|
|
}
|