10#include "lldb/Host/Config.h"
28using Locker = ScriptInterpreterPythonImpl::Locker;
30ScriptedFrameProviderPythonInterface::ScriptedFrameProviderPythonInterface(
31 ScriptInterpreterPythonImpl &interpreter)
34bool ScriptedFrameProviderPythonInterface::AppliesToThread(
38 constexpr bool fail_value =
true;
41 CallStaticMethod(class_name,
"applies_to_thread",
error, thread_sp);
46 return obj->GetBooleanValue(fail_value);
49llvm::Expected<StructuredData::GenericSP>
50ScriptedFrameProviderPythonInterface::CreatePluginObject(
54 return llvm::createStringError(
"invalid frame list");
57 return ScriptedPythonInterface::CreatePluginObject(class_name,
nullptr,
58 input_frames, sd_impl);
61std::string ScriptedFrameProviderPythonInterface::GetDescription(
62 llvm::StringRef class_name) {
65 CallStaticMethod(class_name,
"get_description",
error);
70 return obj->GetStringValue().str();
74ScriptedFrameProviderPythonInterface::GetFrameAtIndex(uint32_t index) {
85bool ScriptedFrameProviderPythonInterface::CreateInstance(
93void ScriptedFrameProviderPythonInterface::Initialize() {
94 const std::vector<llvm::StringRef> ci_usages = {
95 "target frame-provider register -C <script-name> [-k key -v value ...]",
96 "target frame-provider list",
97 "target frame-provider remove <provider-name>",
98 "target frame-provider clear"};
99 const std::vector<llvm::StringRef> api_usages = {
100 "SBTarget.RegisterScriptedFrameProvider",
101 "SBTarget.RemoveScriptedFrameProvider",
102 "SBTarget.ClearScriptedFrameProvider"};
104 GetPluginNameStatic(),
105 llvm::StringRef(
"Provide scripted stack frames for threads"),
109void ScriptedFrameProviderPythonInterface::Terminate() {
static llvm::raw_ostream & error(Stream &strm)
static bool RegisterPlugin(llvm::StringRef name, llvm::StringRef description, ABICreateInstance create_callback)
static bool UnregisterPlugin(ABICreateInstance create_callback)
static bool CheckStructuredDataObject(llvm::StringRef caller, T obj, Status &error)
std::shared_ptr< Dictionary > DictionarySP
std::shared_ptr< Object > ObjectSP
A class that represents a running process on the host machine.
ScriptLanguage
Script interpreter types.
std::shared_ptr< lldb_private::Thread > ThreadSP
std::shared_ptr< lldb_private::StackFrameList > StackFrameListSP