/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #include "cmDebuggerThreadManager.h" #include #include #include "cmDebuggerThread.h" namespace cmDebugger { std::atomic cmDebuggerThreadManager::NextThreadId(1); std::shared_ptr cmDebuggerThreadManager::StartThread( std::string const& name) { std::shared_ptr thread = std::make_shared( cmDebuggerThreadManager::NextThreadId.fetch_add(1), name); Threads.emplace_back(thread); return thread; } void cmDebuggerThreadManager::EndThread( std::shared_ptr const& thread) { Threads.remove(thread); } cm::optional cmDebuggerThreadManager::GetThreadStackTraceResponse(int64_t id) { auto it = find_if(Threads.begin(), Threads.end(), [&](const std::shared_ptr& t) { return t->GetId() == id; }); if (it == Threads.end()) { return {}; } return GetStackTraceResponse(*it); } } // namespace cmDebugger