diff options
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Commands/CommandObjectPlugin.cpp')
-rw-r--r-- | contrib/llvm/tools/lldb/source/Commands/CommandObjectPlugin.cpp | 139 |
1 files changed, 62 insertions, 77 deletions
diff --git a/contrib/llvm/tools/lldb/source/Commands/CommandObjectPlugin.cpp b/contrib/llvm/tools/lldb/source/Commands/CommandObjectPlugin.cpp index 221c9a6..7ae968b 100644 --- a/contrib/llvm/tools/lldb/source/Commands/CommandObjectPlugin.cpp +++ b/contrib/llvm/tools/lldb/source/Commands/CommandObjectPlugin.cpp @@ -19,91 +19,76 @@ using namespace lldb; using namespace lldb_private; -class CommandObjectPluginLoad : public CommandObjectParsed -{ +class CommandObjectPluginLoad : public CommandObjectParsed { public: - CommandObjectPluginLoad (CommandInterpreter &interpreter) : - CommandObjectParsed(interpreter, - "plugin load", + CommandObjectPluginLoad(CommandInterpreter &interpreter) + : CommandObjectParsed(interpreter, "plugin load", "Import a dylib that implements an LLDB plugin.", - nullptr) - { - CommandArgumentEntry arg1; - CommandArgumentData cmd_arg; - - // Define the first (and only) variant of this arg. - cmd_arg.arg_type = eArgTypeFilename; - cmd_arg.arg_repetition = eArgRepeatPlain; - - // There is only one variant this argument could be; put it into the argument entry. - arg1.push_back (cmd_arg); - - // Push the data for the first argument into the m_arguments vector. - m_arguments.push_back (arg1); - } + nullptr) { + CommandArgumentEntry arg1; + CommandArgumentData cmd_arg; - ~CommandObjectPluginLoad() override = default; - - int - HandleArgumentCompletion (Args &input, - int &cursor_index, - int &cursor_char_position, - OptionElementVector &opt_element_vector, - int match_start_point, - int max_return_elements, - bool &word_complete, - StringList &matches) override - { - std::string completion_str (input.GetArgumentAtIndex(cursor_index)); - completion_str.erase (cursor_char_position); - - CommandCompletions::InvokeCommonCompletionCallbacks(m_interpreter, - CommandCompletions::eDiskFileCompletion, - completion_str.c_str(), - match_start_point, - max_return_elements, - nullptr, - word_complete, - matches); - return matches.GetSize(); - } + // Define the first (and only) variant of this arg. + cmd_arg.arg_type = eArgTypeFilename; + cmd_arg.arg_repetition = eArgRepeatPlain; + + // There is only one variant this argument could be; put it into the + // argument entry. + arg1.push_back(cmd_arg); + + // Push the data for the first argument into the m_arguments vector. + m_arguments.push_back(arg1); + } + + ~CommandObjectPluginLoad() override = default; + + int HandleArgumentCompletion(Args &input, int &cursor_index, + int &cursor_char_position, + OptionElementVector &opt_element_vector, + int match_start_point, int max_return_elements, + bool &word_complete, + StringList &matches) override { + auto completion_str = input[cursor_index].ref; + completion_str = completion_str.take_front(cursor_char_position); + + CommandCompletions::InvokeCommonCompletionCallbacks( + GetCommandInterpreter(), CommandCompletions::eDiskFileCompletion, + completion_str, match_start_point, max_return_elements, nullptr, + word_complete, matches); + return matches.GetSize(); + } protected: - bool - DoExecute (Args& command, CommandReturnObject &result) override - { - size_t argc = command.GetArgumentCount(); - - if (argc != 1) - { - result.AppendError ("'plugin load' requires one argument"); - result.SetStatus (eReturnStatusFailed); - return false; - } - - const char* path = command.GetArgumentAtIndex(0); - - Error error; - - FileSpec dylib_fspec(path,true); - - if (m_interpreter.GetDebugger().LoadPlugin(dylib_fspec, error)) - result.SetStatus(eReturnStatusSuccessFinishResult); - else - { - result.AppendError(error.AsCString()); - result.SetStatus(eReturnStatusFailed); - } - - return result.Succeeded(); + bool DoExecute(Args &command, CommandReturnObject &result) override { + size_t argc = command.GetArgumentCount(); + + if (argc != 1) { + result.AppendError("'plugin load' requires one argument"); + result.SetStatus(eReturnStatusFailed); + return false; } + + Error error; + + FileSpec dylib_fspec(command[0].ref, true); + + if (m_interpreter.GetDebugger().LoadPlugin(dylib_fspec, error)) + result.SetStatus(eReturnStatusSuccessFinishResult); + else { + result.AppendError(error.AsCString()); + result.SetStatus(eReturnStatusFailed); + } + + return result.Succeeded(); + } }; CommandObjectPlugin::CommandObjectPlugin(CommandInterpreter &interpreter) - : CommandObjectMultiword(interpreter, "plugin", "Commands for managing LLDB plugins.", - "plugin <subcommand> [<subcommand-options>]") -{ - LoadSubCommand ("load", CommandObjectSP (new CommandObjectPluginLoad (interpreter))); + : CommandObjectMultiword(interpreter, "plugin", + "Commands for managing LLDB plugins.", + "plugin <subcommand> [<subcommand-options>]") { + LoadSubCommand("load", + CommandObjectSP(new CommandObjectPluginLoad(interpreter))); } - + CommandObjectPlugin::~CommandObjectPlugin() = default; |