aboutsummaryrefslogtreecommitdiff
path: root/contrib/llvm-project/lldb/source/Commands/CommandObjectTrace.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/lldb/source/Commands/CommandObjectTrace.h')
-rw-r--r--contrib/llvm-project/lldb/source/Commands/CommandObjectTrace.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/contrib/llvm-project/lldb/source/Commands/CommandObjectTrace.h b/contrib/llvm-project/lldb/source/Commands/CommandObjectTrace.h
new file mode 100644
index 000000000000..b96a3094cefc
--- /dev/null
+++ b/contrib/llvm-project/lldb/source/Commands/CommandObjectTrace.h
@@ -0,0 +1,51 @@
+//===-- CommandObjectTrace.h ------------------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLDB_SOURCE_COMMANDS_COMMANDOBJECTTRACE_H
+#define LLDB_SOURCE_COMMANDS_COMMANDOBJECTTRACE_H
+
+#include "CommandObjectThreadUtil.h"
+
+namespace lldb_private {
+
+class CommandObjectTrace : public CommandObjectMultiword {
+public:
+ CommandObjectTrace(CommandInterpreter &interpreter);
+
+ ~CommandObjectTrace() override;
+};
+
+/// This class works by delegating the logic to the actual trace plug-in that
+/// can support the current process.
+class CommandObjectTraceProxy : public CommandObjectProxy {
+public:
+ CommandObjectTraceProxy(bool live_debug_session_only,
+ CommandInterpreter &interpreter, const char *name,
+ const char *help = nullptr,
+ const char *syntax = nullptr, uint32_t flags = 0)
+ : CommandObjectProxy(interpreter, name, help, syntax, flags),
+ m_live_debug_session_only(live_debug_session_only) {}
+
+protected:
+ virtual lldb::CommandObjectSP GetDelegateCommand(Trace &trace) = 0;
+
+ llvm::Expected<lldb::CommandObjectSP> DoGetProxyCommandObject();
+
+ CommandObject *GetProxyCommandObject() override;
+
+private:
+ llvm::StringRef GetUnsupportedError() override { return m_delegate_error; }
+
+ bool m_live_debug_session_only;
+ lldb::CommandObjectSP m_delegate_sp;
+ std::string m_delegate_error;
+};
+
+} // namespace lldb_private
+
+#endif // LLDB_SOURCE_COMMANDS_COMMANDOBJECTTRACE_H