| /* 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 <atomic> | |
| #include <cstdint> | |
| #include <list> | |
| #include <memory> | |
| #include <string> | |
| #include <cm/optional> | |
| namespace cmDebugger { | |
| class cmDebuggerThread; | |
| } | |
| namespace dap { | |
| struct StackTraceRequest; | |
| 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( | |
| dap::StackTraceRequest const& request); | |
| }; | |
| } // namespace cmDebugger |