[Lldb-commits] [lldb] [lldb][progress] Add progress manager class (PR #81319)
Chelsea Cassanova via lldb-commits
lldb-commits at lists.llvm.org
Fri Feb 9 15:56:34 PST 2024
================
@@ -66,3 +66,47 @@ void Progress::ReportProgress() {
m_debugger_id);
}
}
+
+void ProgressManager::Initialize() {
+ lldbassert(!InstanceImpl() && "A progress report manager already exists.");
+ InstanceImpl().emplace();
+}
+
+void ProgressManager::Terminate() {
+ lldbassert(InstanceImpl() &&
+ "A progress report manager has already been terminated.");
+ InstanceImpl().reset();
+}
+
+std::optional<ProgressManager> &ProgressManager::InstanceImpl() {
+ static std::optional<ProgressManager> g_progress_manager;
+ return g_progress_manager;
+}
+
+ProgressManager::ProgressManager() : m_progress_map() {}
+
+ProgressManager::~ProgressManager() {}
+
+ProgressManager &ProgressManager::Instance() { return *InstanceImpl(); }
----------------
chelcassanova wrote:
To my understanding this behaviour of the Debugger caused an issue in the unit test suite when I added the test for progress reporting since it tried to initialize the debugger after another test had already done so. Could we just place the `once_flag` in `InstanceImpl()` but keep `Initialize/Terminate` to keep the pattern we already have without having the user always check the optional?
https://github.com/llvm/llvm-project/pull/81319
More information about the lldb-commits
mailing list