/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #include "cmObjectLocation.h" void cmObjectLocation::Update(std::string path) { this->Path = std::move(path); } std::string const& cmObjectLocation::GetPath() const { return this->Path; } cm::string_view cmObjectLocation::GetDirectory() const { auto const pos = this->Path.rfind('/'); if (pos == std::string::npos) { return {}; } return cm::string_view(this->Path.c_str(), pos); } cm::string_view cmObjectLocation::GetName() const { auto const pos = this->Path.rfind('/'); if (pos == std::string::npos) { return this->Path; } auto const nameStart = pos + 1; return cm::string_view(this->Path.c_str() + nameStart, this->Path.size() - nameStart); } cmObjectLocation const& cmObjectLocations::GetLocation(UseShortPath use) const { if (use == UseShortPath::Yes && this->ShortLoc) { return *this->ShortLoc; } return this->LongLoc; } std::string const& cmObjectLocations::GetPath(UseShortPath use) const { return this->GetLocation(use).GetPath(); } cmObjectLocation const& cmObjectLocations::GetInstallLocation( UseShortPath use, std::string const& config) const { if (use == UseShortPath::Yes && this->ShortLoc) { return *this->ShortLoc; } auto it = this->InstallLongLoc.find(config); if (it != this->InstallLongLoc.end()) { return it->second; } return this->LongLoc; } std::string const& cmObjectLocations::GetInstallPath( UseShortPath use, std::string const& config) const { return this->GetInstallLocation(use, config).GetPath(); }