33llvm::Expected<StructuredData::GenericSP>
36 if (class_name.empty())
37 return llvm::createStringError(
"empty class name");
40 return llvm::createStringError(
"invalid Debugger pointer");
46 scripted_metadata,
nullptr, debugger_sp);
69 debugger_sp, synchronicity);
71 std::string args_str = args.str();
72 Dispatch(
"__call__",
error, debugger_sp, args_str.c_str(), exe_ctx_ref_sp,
97 debugger_sp, synchronicity);
101 args_arr_sp->AddStringItem(entry.ref());
104 Dispatch(
"__call__",
error, debugger_sp, args_impl, exe_ctx_ref_sp,
113std::optional<std::string>
123 return obj->GetStringValue().str();
128 std::vector<std::string> &args,
size_t args_pos,
size_t char_in_arg) {
131 args, args_pos, char_in_arg);
143 llvm::StringRef &long_option,
size_t char_in_arg) {
145 std::string long_option_str = long_option.str();
148 long_option_str.c_str(), char_in_arg);
156 if (!obj->GetBooleanValue())
159 dict_sp->AddBooleanItem(
"no-completion",
true);
176 dest = obj->GetStringValue().str();
177 return !dest.empty();
187 dest = obj->GetStringValue().str();
188 return !dest.empty();
197 return static_cast<uint32_t
>(obj->GetUnsignedIntegerValue());
218 llvm::StringRef long_option,
219 llvm::StringRef value) {
222 exe_ctx_ref_sp = std::make_shared<ExecutionContextRef>(exe_ctx);
224 std::string long_option_str = long_option.str();
225 std::string value_str = value.str();
228 long_option_str.c_str(), value_str.c_str());
232 return obj->GetBooleanValue();
236 const std::vector<llvm::StringRef> ci_usages = {
237 "command script add -c <ClassName> <cmd>",
238 "command script add -p <ClassName> <cmd>"};
239 const std::vector<llvm::StringRef> api_usages = {};
242 "Implement a raw or parsed custom command backed by a Python class.",
static llvm::raw_ostream & error(Stream &strm)
ScriptInterpreterPythonImpl::Locker Locker
A command line argument class.
bool GetQuotedCommandString(std::string &command) const
bool GetInteractive() const
lldb::ReturnStatus GetStatus() const
Execution context objects refer to objects in the execution of the program that is being debugged.
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static bool UnregisterPlugin(ABICreateInstance create_callback)
uint32_t GetFlags() override
std::optional< std::string > GetRepeatCommand(Args &args) override
llvm::Expected< StructuredData::GenericSP > CreatePluginObject(llvm::StringRef class_name, lldb::DebuggerSP debugger_sp) override
bool RunParsedCommand(Args &args, ScriptedCommandSynchronicity synchronicity, CommandReturnObject &cmd_retobj, Status &error, const ExecutionContext &exe_ctx) override
void OptionParsingStarted() override
StructuredData::DictionarySP HandleArgumentCompletion(std::vector< std::string > &args, size_t args_pos, size_t char_in_arg) override
bool GetShortHelp(std::string &dest) override
ScriptedCommandPythonInterface(ScriptInterpreterPythonImpl &interpreter)
bool RunRawCommand(llvm::StringRef args, ScriptedCommandSynchronicity synchronicity, CommandReturnObject &cmd_retobj, Status &error, const ExecutionContext &exe_ctx) override
lldb::DebuggerSP m_debugger_sp
bool SetOptionValue(ExecutionContext *exe_ctx, llvm::StringRef long_option, llvm::StringRef value) override
StructuredData::ObjectSP GetOptionsDefinition() override
bool GetLongHelp(std::string &dest) override
StructuredData::ObjectSP GetArgumentsDefinition() override
static llvm::StringRef GetPluginNameStatic()
StructuredData::DictionarySP HandleOptionArgumentCompletion(llvm::StringRef &long_option, size_t char_in_arg) override
static bool CheckStructuredDataObject(llvm::StringRef caller, T obj, Status &error)
static bool CreateInstance(lldb::ScriptLanguage language, ScriptedInterfaceUsages usages)
ScriptInterpreterPythonImpl & m_interpreter
ScriptedPythonInterface(ScriptInterpreterPythonImpl &interpreter)
T Dispatch(llvm::StringRef method_name, Status &error, Args &&...args)
llvm::Expected< StructuredData::GenericSP > CreatePluginObject(const ScriptedMetadata &scripted_metadata, StructuredData::Generic *script_obj, Args... args)
static Status FromErrorString(const char *str)
std::shared_ptr< Dictionary > DictionarySP
std::shared_ptr< Object > ObjectSP
std::shared_ptr< Array > ArraySP
A class that represents a running process on the host machine.
ScriptedCommandSynchronicity
@ eScriptedExtensionScriptedCommand
std::shared_ptr< lldb_private::Debugger > DebuggerSP
@ eStructuredDataTypeInvalid
@ eStructuredDataTypeBoolean
std::shared_ptr< lldb_private::ExecutionContextRef > ExecutionContextRefSP