| /* 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 <list> |
| #include <memory> |
| #include <string> |
| |
| #include <cm/optional> |
| |
| namespace cmDebugger { |
| class cmDebuggerThread; |
| } |
| |
| namespace dap { |
| struct StackTraceResponse; |
| } |
| |
| namespace cmDebugger { |
| |
| class cmDebuggerThreadManager |
| { |
| static std::atomic<std::int64_t> NextThreadId; |
| std::list<std::shared_ptr<cmDebuggerThread>> Threads; |
| |
| public: |
| cmDebuggerThreadManager() = default; |
| std::shared_ptr<cmDebuggerThread> StartThread(std::string const& name); |
| void EndThread(std::shared_ptr<cmDebuggerThread> const& thread); |
| cm::optional<dap::StackTraceResponse> GetThreadStackTraceResponse( |
| std::int64_t id); |
| }; |
| |
| } // namespace cmDebugger |