1 //===-- ScriptedProcessInterface.h ------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_INTERPRETER_SCRIPTEDPROCESSINTERFACE_H
10 #define LLDB_INTERPRETER_SCRIPTEDPROCESSINTERFACE_H
11 
12 #include "lldb/Core/StructuredDataImpl.h"
13 #include "lldb/Interpreter/ScriptedInterface.h"
14 #include "lldb/Target/MemoryRegionInfo.h"
15 
16 #include "lldb/lldb-private.h"
17 
18 #include <string>
19 
20 namespace lldb_private {
21 class ScriptedProcessInterface : virtual public ScriptedInterface {
22 public:
23   StructuredData::GenericSP
24   CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx,
25                      StructuredData::DictionarySP args_sp,
26                      StructuredData::Generic *script_obj = nullptr) override {
27     return nullptr;
28   }
29 
Launch()30   virtual Status Launch() { return Status("ScriptedProcess did not launch"); }
31 
Resume()32   virtual Status Resume() { return Status("ScriptedProcess did not resume"); }
33 
ShouldStop()34   virtual bool ShouldStop() { return true; }
35 
Stop()36   virtual Status Stop() { return Status("ScriptedProcess did not stop"); }
37 
38   virtual llvm::Optional<MemoryRegionInfo>
GetMemoryRegionContainingAddress(lldb::addr_t address,Status & error)39   GetMemoryRegionContainingAddress(lldb::addr_t address, Status &error) {
40     error.SetErrorString("ScriptedProcess have no memory region.");
41     return {};
42   }
43 
GetThreadsInfo()44   virtual StructuredData::DictionarySP GetThreadsInfo() { return nullptr; }
45 
GetThreadWithID(lldb::tid_t tid)46   virtual StructuredData::DictionarySP GetThreadWithID(lldb::tid_t tid) {
47     return nullptr;
48   }
49 
GetRegistersForThread(lldb::tid_t tid)50   virtual StructuredData::DictionarySP GetRegistersForThread(lldb::tid_t tid) {
51     return nullptr;
52   }
53 
54   virtual lldb::DataExtractorSP
ReadMemoryAtAddress(lldb::addr_t address,size_t size,Status & error)55   ReadMemoryAtAddress(lldb::addr_t address, size_t size, Status &error) {
56     return nullptr;
57   }
58 
GetLoadedImages()59   virtual StructuredData::ArraySP GetLoadedImages() { return nullptr; }
60 
GetProcessID()61   virtual lldb::pid_t GetProcessID() { return LLDB_INVALID_PROCESS_ID; }
62 
IsAlive()63   virtual bool IsAlive() { return true; }
64 
GetScriptedThreadPluginName()65   virtual llvm::Optional<std::string> GetScriptedThreadPluginName() {
66     return llvm::None;
67   }
68 
69 protected:
70   friend class ScriptedThread;
CreateScriptedThreadInterface()71   virtual lldb::ScriptedThreadInterfaceSP CreateScriptedThreadInterface() {
72     return nullptr;
73   }
74 };
75 
76 class ScriptedThreadInterface : virtual public ScriptedInterface {
77 public:
78   StructuredData::GenericSP
79   CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx,
80                      StructuredData::DictionarySP args_sp,
81                      StructuredData::Generic *script_obj = nullptr) override {
82     return nullptr;
83   }
84 
GetThreadID()85   virtual lldb::tid_t GetThreadID() { return LLDB_INVALID_THREAD_ID; }
86 
GetName()87   virtual llvm::Optional<std::string> GetName() { return llvm::None; }
88 
GetState()89   virtual lldb::StateType GetState() { return lldb::eStateInvalid; }
90 
GetQueue()91   virtual llvm::Optional<std::string> GetQueue() { return llvm::None; }
92 
GetStopReason()93   virtual StructuredData::DictionarySP GetStopReason() { return nullptr; }
94 
GetStackFrames()95   virtual StructuredData::ArraySP GetStackFrames() { return nullptr; }
96 
GetRegisterInfo()97   virtual StructuredData::DictionarySP GetRegisterInfo() { return nullptr; }
98 
GetRegisterContext()99   virtual llvm::Optional<std::string> GetRegisterContext() {
100     return llvm::None;
101   }
102 };
103 } // namespace lldb_private
104 
105 #endif // LLDB_INTERPRETER_SCRIPTEDPROCESSINTERFACE_H
106