Coverage Report

Created: 2026-02-09 06:05

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
  explicit cmStandardLevelResolver(cmMakefile* makefile)
21
0
    : Makefile(makefile)
22
0
  {
23
0
  }
24
25
  std::string GetCompileOptionDef(cmGeneratorTarget const* target,
26
                                  std::string const& lang,
27
                                  std::string const& config) const;
28
  std::string GetEffectiveStandard(cmGeneratorTarget const* target,
29
                                   std::string const& lang,
30
                                   std::string const& config) const;
31
32
  std::string GetLevelString(std::string const& lang,
33
                             cmStandardLevel level) const;
34
35
  bool AddRequiredTargetFeature(cmTarget* target, std::string const& feature,
36
                                std::string* error = nullptr) const;
37
38
  bool CompileFeatureKnown(std::string const& targetName,
39
                           std::string const& feature, std::string& lang,
40
                           std::string* error) const;
41
42
  cm::optional<cmStandardLevel> CompileFeatureStandardLevel(
43
    std::string const& lang, std::string const& feature) const;
44
45
  cm::optional<cmStandardLevel> LanguageStandardLevel(
46
    std::string const& lang, std::string const& standardStr) const;
47
48
  cmValue CompileFeaturesAvailable(std::string const& lang,
49
                                   std::string* error) const;
50
51
  bool GetNewRequiredStandard(std::string const& targetName,
52
                              std::string const& feature,
53
                              cmValue currentLangStandardValue,
54
                              cm::optional<cmStandardLevel>& featureLevel,
55
                              std::string& newRequiredStandard,
56
                              std::string* error = nullptr) const;
57
58
  bool HaveStandardAvailable(cmGeneratorTarget const* target,
59
                             std::string const& lang,
60
                             std::string const& config,
61
                             std::string const& feature) const;
62
63
  bool IsLaterStandard(std::string const& lang, std::string const& lhs,
64
                       std::string const& rhs) const;
65
66
private:
67
  bool CheckCompileFeaturesAvailable(std::string const& targetName,
68
                                     std::string const& feature,
69
                                     std::string& lang,
70
                                     std::string* error) const;
71
72
  cmMakefile* Makefile;
73
};