| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 | 
							- /* 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 <atomic>
 
- #include <cstdint>
 
- #include <functional>
 
- #include <memory>
 
- #include <string>
 
- #include <utility>
 
- #include <vector>
 
- #include <cm3p/cppdap/types.h> // IWYU pragma: keep
 
- namespace cmDebugger {
 
- class cmDebuggerVariablesManager;
 
- }
 
- namespace dap {
 
- struct Variable;
 
- }
 
- namespace cmDebugger {
 
- struct cmDebuggerVariableEntry
 
- {
 
-   cmDebuggerVariableEntry()
 
-     : cmDebuggerVariableEntry("", "", "")
 
-   {
 
-   }
 
-   cmDebuggerVariableEntry(std::string name, std::string value,
 
-                           std::string type)
 
-     : Name(std::move(name))
 
-     , Value(std::move(value))
 
-     , Type(std::move(type))
 
-   {
 
-   }
 
-   cmDebuggerVariableEntry(std::string name, std::string value)
 
-     : Name(std::move(name))
 
-     , Value(std::move(value))
 
-     , Type("string")
 
-   {
 
-   }
 
-   cmDebuggerVariableEntry(std::string name, const char* value)
 
-     : Name(std::move(name))
 
-     , Value(value == nullptr ? "" : value)
 
-     , Type("string")
 
-   {
 
-   }
 
-   cmDebuggerVariableEntry(std::string name, bool value)
 
-     : Name(std::move(name))
 
-     , Value(value ? "TRUE" : "FALSE")
 
-     , Type("bool")
 
-   {
 
-   }
 
-   cmDebuggerVariableEntry(std::string name, int64_t value)
 
-     : Name(std::move(name))
 
-     , Value(std::to_string(value))
 
-     , Type("int")
 
-   {
 
-   }
 
-   cmDebuggerVariableEntry(std::string name, int value)
 
-     : Name(std::move(name))
 
-     , Value(std::to_string(value))
 
-     , Type("int")
 
-   {
 
-   }
 
-   std::string const Name;
 
-   std::string const Value;
 
-   std::string const Type;
 
- };
 
- class cmDebuggerVariables
 
- {
 
-   static std::atomic<int64_t> NextId;
 
-   int64_t Id;
 
-   std::string Name;
 
-   std::string Value;
 
-   std::function<std::vector<cmDebuggerVariableEntry>()> GetKeyValuesFunction;
 
-   std::vector<std::shared_ptr<cmDebuggerVariables>> SubVariables;
 
-   bool IgnoreEmptyStringEntries = false;
 
-   bool EnableSorting = true;
 
-   virtual dap::array<dap::Variable> HandleVariablesRequest();
 
-   friend class cmDebuggerVariablesManager;
 
- protected:
 
-   const bool SupportsVariableType;
 
-   std::shared_ptr<cmDebuggerVariablesManager> VariablesManager;
 
-   void EnumerateSubVariablesIfAny(
 
-     dap::array<dap::Variable>& toBeReturned) const;
 
-   void ClearSubVariables();
 
- public:
 
-   cmDebuggerVariables(
 
-     std::shared_ptr<cmDebuggerVariablesManager> variablesManager,
 
-     std::string name, bool supportsVariableType);
 
-   cmDebuggerVariables(
 
-     std::shared_ptr<cmDebuggerVariablesManager> variablesManager,
 
-     std::string name, bool supportsVariableType,
 
-     std::function<std::vector<cmDebuggerVariableEntry>()> getKeyValuesFunc);
 
-   inline int64_t GetId() const noexcept { return this->Id; }
 
-   inline std::string GetName() const noexcept { return this->Name; }
 
-   inline std::string GetValue() const noexcept { return this->Value; }
 
-   inline void SetValue(std::string const& value) noexcept
 
-   {
 
-     this->Value = value;
 
-   }
 
-   void AddSubVariables(std::shared_ptr<cmDebuggerVariables> const& variables);
 
-   inline void SetIgnoreEmptyStringEntries(bool value) noexcept
 
-   {
 
-     this->IgnoreEmptyStringEntries = value;
 
-   }
 
-   inline void SetEnableSorting(bool value) noexcept
 
-   {
 
-     this->EnableSorting = value;
 
-   }
 
-   virtual ~cmDebuggerVariables();
 
- };
 
- } // namespace cmDebugger
 
 
  |