//===-- StructuredDataPlugin.cpp ------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// #include "lldb/Target/StructuredDataPlugin.h" #include "lldb/Core/Debugger.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Interpreter/CommandObjectMultiword.h" using namespace lldb; using namespace lldb_private; namespace { class CommandStructuredData : public CommandObjectMultiword { public: CommandStructuredData(CommandInterpreter &interpreter) : CommandObjectMultiword(interpreter, "structured-data", "Parent for per-plugin structured data commands", "plugin structured-data ") {} ~CommandStructuredData() override = default; }; } StructuredDataPlugin::StructuredDataPlugin(const ProcessWP &process_wp) : PluginInterface(), m_process_wp(process_wp) {} StructuredDataPlugin::~StructuredDataPlugin() = default; bool StructuredDataPlugin::GetEnabled(llvm::StringRef type_name) const { // By default, plugins are always enabled. Plugin authors should override // this if there is an enabled/disabled state for their plugin. return true; } ProcessSP StructuredDataPlugin::GetProcess() const { return m_process_wp.lock(); } void StructuredDataPlugin::InitializeBasePluginForDebugger(Debugger &debugger) { // Create our mutliword command anchor if it doesn't already exist. auto &interpreter = debugger.GetCommandInterpreter(); if (!interpreter.GetCommandObject("plugin structured-data")) { // Find the parent command. auto parent_command = debugger.GetCommandInterpreter().GetCommandObject("plugin"); if (!parent_command) return; // Create the structured-data ommand object. auto command_name = "structured-data"; auto command_sp = CommandObjectSP(new CommandStructuredData(interpreter)); // Hook it up under the top-level plugin command. parent_command->LoadSubCommand(command_name, command_sp); } } void StructuredDataPlugin::ModulesDidLoad(Process &process, ModuleList &module_list) { // Default implementation does nothing. }