/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include "cmConfigure.h" // IWYU pragma: keep #include <memory> #include <set> #include <string> #include <utility> #include <vector> #include "cmAlgorithms.h" #include "cmPolicies.h" class cmFileSet; class cmGlobalGenerator; class cmMakefile; class cmTarget; class cmTest; namespace cmDebugger { class cmDebuggerStackFrame; class cmDebuggerVariables; class cmDebuggerVariablesManager; } template <typename T> class BT; namespace cmDebugger { class cmDebuggerVariablesHelper { cmDebuggerVariablesHelper() = default; public: static std::shared_ptr<cmDebuggerVariables> Create( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, cmPolicies::PolicyMap const& policyMap); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::vector<std::pair<std::string, std::string>> const& list); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, cmBTStringRange const& entries); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::set<std::string> const& values); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::vector<std::string> const& values); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::vector<BT<std::string>> const& list); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, cmFileSet* fileSet); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::vector<cmFileSet*> const& fileSets); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, cmTest* test); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::vector<cmTest*> const& tests); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::vector<cmTarget*> const& targets); static std::shared_ptr<cmDebuggerVariables> Create( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, std::shared_ptr<cmDebuggerStackFrame> const& frame); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, cmMakefile* mf); static std::shared_ptr<cmDebuggerVariables> CreateIfAny( std::shared_ptr<cmDebuggerVariablesManager> const& variablesManager, std::string const& name, bool supportsVariableType, cmGlobalGenerator* gen); }; } // namespace cmDebugger