31llvm::Expected<StructuredData::GenericSP>
34 if (class_name.empty())
35 return llvm::createStringError(
"empty class name");
39 return llvm::createStringError(
"invalid backing value");
55 scripted_metadata,
nullptr, std::move(val_arg));
58llvm::Expected<uint32_t>
62 llvm::Expected<std::optional<StructuredData::ObjectSP>> obj_or_err =
65 return obj_or_err.takeError();
68 if (!obj || !obj->IsValid())
72 return std::min<uint32_t>(obj->GetUnsignedIntegerValue(), max);
78 LLVM_PRETTY_FUNCTION);
81llvm::Expected<uint32_t>
86 llvm::Expected<std::optional<StructuredData::ObjectSP>> obj_or_err =
89 return obj_or_err.takeError();
92 if (!obj || !obj->IsValid())
93 return llvm::createStringErrorV(
"type has no child named '{0}'", name);
99 if (obj->GetAsSignedInteger())
100 return llvm::createStringErrorV(
"type has no child named '{0}'", name);
101 return static_cast<uint32_t
>(obj->GetUnsignedIntegerValue());
119 return obj->GetBooleanValue();
125 LLVM_PRETTY_FUNCTION);
138 const std::vector<llvm::StringRef> ci_usages = {
139 "type synthetic add -l <ClassName> <TypeName>"};
140 const std::vector<llvm::StringRef> api_usages = {
141 "SBTypeSynthetic.CreateWithClassName"};
144 "Provide synthetic children for a type, used by 'type synthetic add -l'",
ScriptInterpreterPythonImpl::Locker Locker
A uniqued constant string class.
const char * GetCString() const
Get the string value as a C string.
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static bool UnregisterPlugin(ABICreateInstance create_callback)
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< std::optional< T > > DispatchToOptional(llvm::StringRef method_name, Args &&...args)
Call an optional method_name, reporting "the script doesn't implementit" as std::nullopt rather than ...
llvm::Expected< StructuredData::GenericSP > CreatePluginObject(const ScriptedMetadata &scripted_metadata, StructuredData::Generic *script_obj, Args... args)
llvm::Expected< StructuredData::GenericSP > CreatePluginObject(llvm::StringRef class_name, ValueObject &backend) override
bool MightHaveChildren() override
ScriptedSyntheticChildrenPythonInterface(ScriptInterpreterPythonImpl &interpreter)
ConstString GetSyntheticTypeName() override
lldb::ValueObjectSP GetSyntheticValue() override
llvm::Expected< uint32_t > CalculateNumChildren(uint32_t max) override
lldb::ChildCacheState Update() override
lldb::ValueObjectSP GetChildAtIndex(uint32_t idx) override
llvm::Expected< uint32_t > GetIndexOfChildWithName(ConstString name) override
static llvm::StringRef GetPluginNameStatic()
std::shared_ptr< Dictionary > DictionarySP
std::shared_ptr< Object > ObjectSP
lldb::ValueObjectSP GetSP()
static PythonObject ToSWIGWrapper(std::unique_ptr< lldb::SBValue > value_sb)
A class that represents a running process on the host machine.
@ eScriptedExtensionScriptedSyntheticChildren
ChildCacheState
Specifies if children need to be re-computed after a call to SyntheticChildrenFrontEnd::Update.
@ eRefetch
Children need to be recomputed dynamically.
@ eReuse
Children did not change and don't need to be recomputed; re-use what we computed the last time we cal...
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP