blob: 6cc5ed1792ba576262c43527550da80297394741 [file] [log] [blame]
Todd Fiala75930012016-08-19 04:21:48 +00001//===-- StructuredDataPlugin.cpp --------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "lldb/Target/StructuredDataPlugin.h"
11
12#include "lldb/Core/Debugger.h"
13#include "lldb/Interpreter/CommandInterpreter.h"
14#include "lldb/Interpreter/CommandObjectMultiword.h"
15
16using namespace lldb;
17using namespace lldb_private;
18
19namespace
20{
21 class CommandStructuredData : public CommandObjectMultiword
22 {
23 public:
24 CommandStructuredData(CommandInterpreter &interpreter) :
25 CommandObjectMultiword(interpreter,
26 "structured-data",
27 "Parent for per-plugin structured data commands",
28 "plugin structured-data <plugin>")
29 {
30 }
31
32 ~CommandStructuredData()
33 {
34 }
35 };
36}
37
38StructuredDataPlugin::StructuredDataPlugin(const ProcessWP &process_wp) :
39 PluginInterface(),
40 m_process_wp(process_wp)
41{
42}
43
44StructuredDataPlugin::~StructuredDataPlugin()
45{
46}
47
48bool
49StructuredDataPlugin::GetEnabled(const ConstString &type_name) const
50{
51 // By default, plugins are always enabled. Plugin authors should override
52 // this if there is an enabled/disabled state for their plugin.
53 return true;
54}
55
56ProcessSP
57StructuredDataPlugin::GetProcess() const
58{
59 return m_process_wp.lock();
60}
61
62void
63StructuredDataPlugin::InitializeBasePluginForDebugger(Debugger &debugger)
64{
65 // Create our mutliword command anchor if it doesn't already exist.
66 auto &interpreter = debugger.GetCommandInterpreter();
67 if (!interpreter.GetCommandObject("plugin structured-data"))
68 {
69 // Find the parent command.
70 auto parent_command =
71 debugger.GetCommandInterpreter().GetCommandObject("plugin");
72 if (!parent_command)
73 return;
74
75 // Create the structured-data ommand object.
76 auto command_name = "structured-data";
77 auto command_sp =
78 CommandObjectSP(new CommandStructuredData(interpreter));
79
80 // Hook it up under the top-level plugin command.
81 parent_command->LoadSubCommand(command_name,
82 command_sp);
83 }
84}
85
86void
87StructuredDataPlugin::ModulesDidLoad(Process &process, ModuleList &module_list)
88{
89 // Default implementation does nothing.
90}