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 llvm::Expected<StructuredData::ObjectSP> obj_or_err =
Dispatch(
73 "__call__", debugger_sp, args_str.c_str(), exe_ctx_ref_sp, &cmd_retobj);
98 debugger_sp, synchronicity);
102 args_arr_sp->AddStringItem(entry.ref());
105 llvm::Expected<StructuredData::ObjectSP> obj_or_err =
106 Dispatch(
"__call__", debugger_sp, args_impl, exe_ctx_ref_sp, &cmd_retobj);
115std::optional<std::string>
120 Dispatch(
"get_repeat_command", command.c_str()), LLVM_PRETTY_FUNCTION);
124 return obj->GetStringValue().str();
129 std::vector<std::string> &args,
size_t args_pos,
size_t char_in_arg) {
131 Dispatch(
"handle_argument_completion", args, args_pos, char_in_arg),
132 LLVM_PRETTY_FUNCTION);
143 llvm::StringRef &long_option,
size_t char_in_arg) {
144 std::string long_option_str = long_option.str();
147 long_option_str.c_str(), char_in_arg),
148 LLVM_PRETTY_FUNCTION);
155 if (!obj->GetBooleanValue())
158 dict_sp->AddBooleanItem(
"no-completion",
true);
174 dest = obj->GetStringValue().str();
175 return !dest.empty();
184 dest = obj->GetStringValue().str();
185 return !dest.empty();
194 return static_cast<uint32_t
>(obj->GetUnsignedIntegerValue());
200 LLVM_PRETTY_FUNCTION);
213 llvm::StringRef long_option,
214 llvm::StringRef value) {
217 exe_ctx_ref_sp = std::make_shared<ExecutionContextRef>(exe_ctx);
218 std::string long_option_str = long_option.str();
219 std::string value_str = value.str();
222 long_option_str.c_str(), value_str.c_str()),
223 LLVM_PRETTY_FUNCTION);
226 return obj->GetBooleanValue();
230 const std::vector<llvm::StringRef> ci_usages = {
231 "command script add -c <ClassName> <cmd>",
232 "command script add -p <ClassName> <cmd>"};
233 const std::vector<llvm::StringRef> api_usages = {};
236 "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 CreateInstance(lldb::ScriptLanguage language, ScriptedInterfaceUsages usages)
ScriptInterpreterPythonImpl & m_interpreter
static T LogAndDefault(llvm::Expected< T > value_or_err, llvm::StringRef caller)
Log the failure in value_or_err and fall back to a default-constructed T.
ScriptedPythonInterface(ScriptInterpreterPythonImpl &interpreter)
llvm::Expected< T > Dispatch(llvm::StringRef method_name, Args &&...args)
Call method_name on the scripted object.
llvm::Expected< StructuredData::GenericSP > CreatePluginObject(const ScriptedMetadata &scripted_metadata, StructuredData::Generic *script_obj, Args... args)
static Status FromErrorString(const char *str)
static Status FromError(llvm::Error error)
Avoid using this in new code. Migrate APIs to llvm::Expected instead.
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