Coverage Report

Created: 2026-03-12 06:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/CMake/Source/cmGeneratorFileSet.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 "cmConfigure.h" // IWYU pragma: keep
6
7
#include <map>
8
#include <memory>
9
#include <string>
10
#include <utility>
11
#include <vector>
12
13
#include "cmFileSetMetadata.h"
14
#include "cmGeneratorExpression.h"
15
#include "cmTargetPropertyEntry.h"
16
#include "cmValue.h"
17
18
namespace cm {
19
namespace GenEx {
20
struct Context;
21
}
22
}
23
24
template <typename T>
25
class BT;
26
27
struct cmGeneratorExpressionDAGChecker;
28
29
class cmFileSet;
30
class cmGeneratorTarget;
31
32
class cmGeneratorFileSet
33
{
34
public:
35
  using TargetPropertyEntry = cm::TargetPropertyEntry;
36
37
  cmGeneratorFileSet(cmFileSet const*);
38
0
  ~cmGeneratorFileSet() = default;
39
40
  cmGeneratorFileSet(cmGeneratorFileSet&&) = default;
41
  cmGeneratorFileSet(cmGeneratorFileSet const&) = delete;
42
  cmGeneratorFileSet& operator=(cmGeneratorFileSet const&) = delete;
43
44
  std::string const& GetName() const;
45
  std::string const& GetType() const;
46
  cm::FileSetMetadata::Visibility GetVisibility() const;
47
48
  bool IsForSelf() const;
49
  bool IsForInterface() const;
50
  bool CanBeIncluded() const;
51
52
0
  cmFileSet const* GetFileSet() const { return this->FileSet; }
53
54
  cmValue GetProperty(std::string const& prop) const;
55
56
  std::vector<BT<std::string>> const& GetDirectoryEntries() const;
57
  std::vector<BT<std::string>> const& GetFileEntries() const;
58
59
  std::vector<std::unique_ptr<TargetPropertyEntry>> GetSources(
60
    cm::GenEx::Context const& context, cmGeneratorTarget const* target,
61
    cmGeneratorExpressionDAGChecker* dagChecker = nullptr) const;
62
63
  // returned value:
64
  // first: list of directories
65
  // second: is context sensitive
66
  std::pair<std::vector<std::string>, bool> GetDirectories(
67
    cm::GenEx::Context const& context, cmGeneratorTarget const* target,
68
    cmGeneratorExpressionDAGChecker* dagChecker = nullptr) const;
69
  // returned value:
70
  // first: list of files per directory
71
  // second: is context sensitive
72
  std::pair<std::map<std::string, std::vector<std::string>>, bool> GetFiles(
73
    cm::GenEx::Context const& context, cmGeneratorTarget const* target,
74
    cmGeneratorExpressionDAGChecker* dagChecker = nullptr) const;
75
76
  std::vector<std::unique_ptr<cmCompiledGeneratorExpression>> const&
77
  CompileFileEntries() const;
78
79
  std::vector<std::unique_ptr<cmCompiledGeneratorExpression>> const&
80
  CompileDirectoryEntries() const;
81
82
  std::vector<std::string> EvaluateDirectoryEntries(
83
    std::vector<std::unique_ptr<cmCompiledGeneratorExpression>> const& cges,
84
    cm::GenEx::Context const& context, cmGeneratorTarget const* target,
85
    cmGeneratorExpressionDAGChecker* dagChecker = nullptr) const;
86
87
  void EvaluateFileEntry(
88
    std::vector<std::string> const& dirs,
89
    std::map<std::string, std::vector<std::string>>& filesPerDir,
90
    std::unique_ptr<cmCompiledGeneratorExpression> const& cge,
91
    cm::GenEx::Context const& context, cmGeneratorTarget const* target,
92
    cmGeneratorExpressionDAGChecker* dagChecker = nullptr) const;
93
94
private:
95
  cmFileSet const* FileSet;
96
  mutable std::vector<std::unique_ptr<cmCompiledGeneratorExpression>>
97
    CompiledDirectoryEntries;
98
  mutable std::vector<std::unique_ptr<cmCompiledGeneratorExpression>>
99
    CompiledFileEntries;
100
};