cmStandardLevelResolver: Add method to look up standard level by name

This commit is contained in:
Brad King
2023-10-04 15:12:47 -04:00
parent 23b57462aa
commit c1f1aedcee
2 changed files with 26 additions and 0 deletions

View File

@@ -457,6 +457,19 @@ struct StandardLevelComputer
return maxLevel;
}
cm::optional<cmStandardLevel> LanguageStandardLevel(
std::string const& standardStr) const
{
cm::optional<cmStandardLevel> langLevel;
auto const& stds = this->Levels;
auto stdIt =
std::find(cm::cbegin(stds), cm::cend(stds), ParseStd(standardStr));
if (stdIt != cm::cend(stds)) {
langLevel = cmStandardLevel(std::distance(cm::cbegin(stds), stdIt));
}
return langLevel;
}
bool IsLaterStandard(int lhs, int rhs) const
{
auto rhsIt =
@@ -661,6 +674,16 @@ cmStandardLevelResolver::CompileFeatureStandardLevel(
return mapping->second.CompileFeatureStandardLevel(this->Makefile, feature);
}
cm::optional<cmStandardLevel> cmStandardLevelResolver::LanguageStandardLevel(
std::string const& lang, std::string const& standardStr) const
{
auto mapping = StandardComputerMapping.find(lang);
if (mapping == cm::cend(StandardComputerMapping)) {
return cm::nullopt;
}
return mapping->second.LanguageStandardLevel(standardStr);
}
cmValue cmStandardLevelResolver::CompileFeaturesAvailable(
const std::string& lang, std::string* error) const
{

View File

@@ -39,6 +39,9 @@ public:
cm::optional<cmStandardLevel> CompileFeatureStandardLevel(
std::string const& lang, std::string const& feature) const;
cm::optional<cmStandardLevel> LanguageStandardLevel(
std::string const& lang, std::string const& standardStr) const;
cmValue CompileFeaturesAvailable(const std::string& lang,
std::string* error) const;