Coverage Report

Created: 2026-10-28 06:38

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/cmStandardLevelResolver.h
Line
Count
Source
1
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2
   file LICENSE.rst or https://cmake.org/licensing for details.  */
3
#pragma once
4
5
#include <string>
6
7
#include <cm/optional>
8
9
#include "cmValue.h"
10
11
class cmMakefile;
12
class cmGeneratorTarget;
13
class cmStandardLevel;
14
class cmTarget;
15
16
class cmStandardLevelResolver
17
{
18
19
public:
20
  static std::string GetStandardPropertyName(std::string const& lang);
21
22
  explicit cmStandardLevelResolver(cmMakefile* makefile)
23
99
    : Makefile(makefile)
24
99
  {
25
99
  }
26
27
  std::string GetCompileOptionDef(cmGeneratorTarget const* target,
28
                                  std::string const& lang,
29
                                  std::string const& config) const;
30
  std::string GetEffectiveStandard(cmGeneratorTarget const* target,
31
                                   std::string const& lang,
32
                                   std::string const& config) const;
33
34
  std::string GetLevelString(std::string const& lang,
35
                             cmStandardLevel level) const;
36
37
  bool AddRequiredTargetFeature(cmTarget* target, std::string const& feature,
38
                                std::string* error = nullptr) const;
39
40
  bool CompileFeatureKnown(std::string const& targetName,
41
                           std::string const& feature, std::string& lang,
42
                           std::string* error) const;
43
44
  cm::optional<cmStandardLevel> CompileFeatureStandardLevel(
45
    std::string const& lang, std::string const& feature) const;
46
47
  cm::optional<cmStandardLevel> LanguageStandardLevel(
48
    std::string const& lang, std::string const& standardStr) const;
49
50
  cmValue CompileFeaturesAvailable(std::string const& lang,
51
                                   std::string* error) const;
52
53
  bool GetNewRequiredStandard(std::string const& targetName,
54
                              std::string const& feature,
55
                              cmValue currentLangStandardValue,
56
                              cm::optional<cmStandardLevel>& featureLevel,
57
                              std::string& newRequiredStandard,
58
                              std::string* error = nullptr) const;
59
60
  bool HaveStandardAvailable(cmGeneratorTarget const* target,
61
                             std::string const& lang,
62
                             std::string const& config,
63
                             std::string const& feature) const;
64
65
  bool IsLaterStandard(std::string const& lang, std::string const& lhs,
66
                       std::string const& rhs) const;
67
68
private:
69
  bool CheckCompileFeaturesAvailable(std::string const& targetName,
70
                                     std::string const& feature,
71
                                     std::string& lang,
72
                                     std::string* error) const;
73
74
  cmMakefile* Makefile;
75
};