| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file LICENSE.rst or https://cmake.org/licensing for details. */ | |
| #pragma once | |
| #include "cmConfigure.h" // IWYU pragma: keep | |
| #include <vector> | |
| #include <cm/string_view> | |
| #include "cmListFileCache.h" | |
| class cmExecutionStatus; | |
| class cmMakefile; | |
| class cmFunctionBlocker | |
| { | |
| public: | |
| /** | |
| * should a function be blocked | |
| */ | |
| bool IsFunctionBlocked(cmListFileFunction const& lff, | |
| cmExecutionStatus& status); | |
| virtual ~cmFunctionBlocker() = default; | |
| /** Set/Get the context in which this blocker is created. */ | |
| void SetStartingContext(cmListFileContext const& lfc) | |
| { | |
| this->StartingContext = lfc; | |
| } | |
| cmListFileContext const& GetStartingContext() const | |
| { | |
| return this->StartingContext; | |
| } | |
| private: | |
| virtual cm::string_view StartCommandName() const = 0; | |
| virtual cm::string_view EndCommandName() const = 0; | |
| virtual bool EndCommandSupportsArguments() const { return true; } | |
| virtual bool ArgumentsMatch(cmListFileFunction const& lff, | |
| cmMakefile& mf) const = 0; | |
| virtual bool Replay(std::vector<cmListFileFunction> functions, | |
| cmExecutionStatus& status) = 0; | |
| cmListFileContext StartingContext; | |
| std::vector<cmListFileFunction> Functions; | |
| unsigned int ScopeDepth = 1; | |
| }; |