/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Interpreter/ScriptedInterface.h
Line | Count | Source (jump to first uncovered line) |
1 | | //===-- ScriptedInterface.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_SCRIPTEDINTERFACE_H |
10 | | #define LLDB_INTERPRETER_SCRIPTEDINTERFACE_H |
11 | | |
12 | | #include "lldb/Core/StructuredDataImpl.h" |
13 | | #include "lldb/Target/ExecutionContext.h" |
14 | | #include "lldb/Utility/LLDBLog.h" |
15 | | #include "lldb/Utility/Log.h" |
16 | | #include "lldb/lldb-private.h" |
17 | | |
18 | | #include "llvm/Support/Compiler.h" |
19 | | |
20 | | #include <string> |
21 | | |
22 | | namespace lldb_private { |
23 | | class ScriptedInterface { |
24 | | public: |
25 | 3.82k | ScriptedInterface() = default; |
26 | 3.82k | virtual ~ScriptedInterface() = default; |
27 | | |
28 | | virtual StructuredData::GenericSP |
29 | | CreatePluginObject(llvm::StringRef class_name, ExecutionContext &exe_ctx, |
30 | | StructuredData::DictionarySP args_sp, |
31 | | StructuredData::Generic *script_obj = nullptr) = 0; |
32 | | |
33 | 5 | StructuredData::GenericSP GetScriptObjectInstance() { |
34 | 5 | return m_object_instance_sp; |
35 | 5 | } |
36 | | |
37 | | template <typename Ret> |
38 | | static Ret ErrorWithMessage(llvm::StringRef caller_name, |
39 | | llvm::StringRef error_msg, Status &error, |
40 | 447 | LLDBLog log_caterogy = LLDBLog::Process) { |
41 | 447 | LLDB_LOGF(GetLog(log_caterogy), "%s ERROR = %s", caller_name.data(), |
42 | 447 | error_msg.data()); |
43 | 447 | std::string full_error_message = |
44 | 447 | llvm::Twine(caller_name + llvm::Twine(" ERROR = ") + |
45 | 447 | llvm::Twine(error_msg)) |
46 | 447 | .str(); |
47 | 447 | if (const char *detailed_error = error.AsCString()) |
48 | 213 | full_error_message += |
49 | 213 | llvm::Twine(llvm::Twine(" (") + llvm::Twine(detailed_error) + |
50 | 213 | llvm::Twine(")")) |
51 | 213 | .str(); |
52 | 447 | error.SetErrorString(full_error_message); |
53 | 447 | return {}; |
54 | 447 | } Unexecuted instantiation: unsigned long lldb_private::ScriptedInterface::ErrorWithMessage<unsigned long>(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) bool lldb_private::ScriptedInterface::ErrorWithMessage<bool>(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) Line | Count | Source | 40 | 219 | LLDBLog log_caterogy = LLDBLog::Process) { | 41 | 219 | LLDB_LOGF(GetLog(log_caterogy), "%s ERROR = %s", caller_name.data(), | 42 | 219 | error_msg.data()); | 43 | 219 | std::string full_error_message = | 44 | 219 | llvm::Twine(caller_name + llvm::Twine(" ERROR = ") + | 45 | 219 | llvm::Twine(error_msg)) | 46 | 219 | .str(); | 47 | 219 | if (const char *detailed_error = error.AsCString()) | 48 | 207 | full_error_message += | 49 | 207 | llvm::Twine(llvm::Twine(" (") + llvm::Twine(detailed_error) + | 50 | 207 | llvm::Twine(")")) | 51 | 207 | .str(); | 52 | 219 | error.SetErrorString(full_error_message); | 53 | 219 | return {}; | 54 | 219 | } |
std::__1::shared_ptr<lldb_private::StructuredData::Object> lldb_private::ScriptedInterface::ErrorWithMessage<std::__1::shared_ptr<lldb_private::StructuredData::Object> >(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) Line | Count | Source | 40 | 209 | LLDBLog log_caterogy = LLDBLog::Process) { | 41 | 209 | LLDB_LOGF(GetLog(log_caterogy), "%s ERROR = %s", caller_name.data(), | 42 | 209 | error_msg.data()); | 43 | 209 | std::string full_error_message = | 44 | 209 | llvm::Twine(caller_name + llvm::Twine(" ERROR = ") + | 45 | 209 | llvm::Twine(error_msg)) | 46 | 209 | .str(); | 47 | 209 | if (const char *detailed_error = error.AsCString()) | 48 | 0 | full_error_message += | 49 | 0 | llvm::Twine(llvm::Twine(" (") + llvm::Twine(detailed_error) + | 50 | 0 | llvm::Twine(")")) | 51 | 0 | .str(); | 52 | 209 | error.SetErrorString(full_error_message); | 53 | 209 | return {}; | 54 | 209 | } |
Unexecuted instantiation: std::__1::shared_ptr<lldb_private::StructuredData::Dictionary> lldb_private::ScriptedInterface::ErrorWithMessage<std::__1::shared_ptr<lldb_private::StructuredData::Dictionary> >(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) std::__1::shared_ptr<lldb_private::RegisterContext> lldb_private::ScriptedInterface::ErrorWithMessage<std::__1::shared_ptr<lldb_private::RegisterContext> >(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) Line | Count | Source | 40 | 12 | LLDBLog log_caterogy = LLDBLog::Process) { | 41 | 12 | LLDB_LOGF(GetLog(log_caterogy), "%s ERROR = %s", caller_name.data(), | 42 | 12 | error_msg.data()); | 43 | 12 | std::string full_error_message = | 44 | 12 | llvm::Twine(caller_name + llvm::Twine(" ERROR = ") + | 45 | 12 | llvm::Twine(error_msg)) | 46 | 12 | .str(); | 47 | 12 | if (const char *detailed_error = error.AsCString()) | 48 | 0 | full_error_message += | 49 | 0 | llvm::Twine(llvm::Twine(" (") + llvm::Twine(detailed_error) + | 50 | 0 | llvm::Twine(")")) | 51 | 0 | .str(); | 52 | 12 | error.SetErrorString(full_error_message); | 53 | 12 | return {}; | 54 | 12 | } |
Unexecuted instantiation: std::__1::shared_ptr<lldb_private::DynamicRegisterInfo> lldb_private::ScriptedInterface::ErrorWithMessage<std::__1::shared_ptr<lldb_private::DynamicRegisterInfo> >(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) Unexecuted instantiation: lldb_private::Status lldb_private::ScriptedInterface::ErrorWithMessage<lldb_private::Status>(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) std::__1::optional<lldb_private::MemoryRegionInfo> lldb_private::ScriptedInterface::ErrorWithMessage<std::__1::optional<lldb_private::MemoryRegionInfo> >(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) Line | Count | Source | 40 | 1 | LLDBLog log_caterogy = LLDBLog::Process) { | 41 | 1 | LLDB_LOGF(GetLog(log_caterogy), "%s ERROR = %s", caller_name.data(), | 42 | 1 | error_msg.data()); | 43 | 1 | std::string full_error_message = | 44 | 1 | llvm::Twine(caller_name + llvm::Twine(" ERROR = ") + | 45 | 1 | llvm::Twine(error_msg)) | 46 | 1 | .str(); | 47 | 1 | if (const char *detailed_error = error.AsCString()) | 48 | 0 | full_error_message += | 49 | 0 | llvm::Twine(llvm::Twine(" (") + llvm::Twine(detailed_error) + | 50 | 0 | llvm::Twine(")")) | 51 | 0 | .str(); | 52 | 1 | error.SetErrorString(full_error_message); | 53 | 1 | return {}; | 54 | 1 | } |
lldb_private::MemoryRegionInfo lldb_private::ScriptedInterface::ErrorWithMessage<lldb_private::MemoryRegionInfo>(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) Line | Count | Source | 40 | 1 | LLDBLog log_caterogy = LLDBLog::Process) { | 41 | 1 | LLDB_LOGF(GetLog(log_caterogy), "%s ERROR = %s", caller_name.data(), | 42 | 1 | error_msg.data()); | 43 | 1 | std::string full_error_message = | 44 | 1 | llvm::Twine(caller_name + llvm::Twine(" ERROR = ") + | 45 | 1 | llvm::Twine(error_msg)) | 46 | 1 | .str(); | 47 | 1 | if (const char *detailed_error = error.AsCString()) | 48 | 1 | full_error_message += | 49 | 1 | llvm::Twine(llvm::Twine(" (") + llvm::Twine(detailed_error) + | 50 | 1 | llvm::Twine(")")) | 51 | 1 | .str(); | 52 | 1 | error.SetErrorString(full_error_message); | 53 | 1 | return {}; | 54 | 1 | } |
std::__1::shared_ptr<lldb_private::DataExtractor> lldb_private::ScriptedInterface::ErrorWithMessage<std::__1::shared_ptr<lldb_private::DataExtractor> >(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) Line | Count | Source | 40 | 5 | LLDBLog log_caterogy = LLDBLog::Process) { | 41 | 5 | LLDB_LOGF(GetLog(log_caterogy), "%s ERROR = %s", caller_name.data(), | 42 | 5 | error_msg.data()); | 43 | 5 | std::string full_error_message = | 44 | 5 | llvm::Twine(caller_name + llvm::Twine(" ERROR = ") + | 45 | 5 | llvm::Twine(error_msg)) | 46 | 5 | .str(); | 47 | 5 | if (const char *detailed_error = error.AsCString()) | 48 | 5 | full_error_message += | 49 | 5 | llvm::Twine(llvm::Twine(" (") + llvm::Twine(detailed_error) + | 50 | 5 | llvm::Twine(")")) | 51 | 5 | .str(); | 52 | 5 | error.SetErrorString(full_error_message); | 53 | 5 | return {}; | 54 | 5 | } |
Unexecuted instantiation: std::__1::shared_ptr<lldb_private::StructuredData::Array> lldb_private::ScriptedInterface::ErrorWithMessage<std::__1::shared_ptr<lldb_private::StructuredData::Array> >(llvm::StringRef, llvm::StringRef, lldb_private::Status&, lldb_private::LLDBLog) |
55 | | |
56 | | template <typename T = StructuredData::ObjectSP> |
57 | 267 | bool CheckStructuredDataObject(llvm::StringRef caller, T obj, Status &error) { |
58 | 267 | if (!obj) |
59 | 207 | return ErrorWithMessage<bool>(caller, "Null Structured Data object", |
60 | 207 | error); |
61 | | |
62 | 60 | if (!obj->IsValid()) { |
63 | 0 | return ErrorWithMessage<bool>(caller, "Invalid StructuredData object", |
64 | 0 | error); |
65 | 0 | } |
66 | | |
67 | 60 | if (error.Fail()) |
68 | 0 | return ErrorWithMessage<bool>(caller, error.AsCString(), error); |
69 | | |
70 | 60 | return true; |
71 | 60 | } bool lldb_private::ScriptedInterface::CheckStructuredDataObject<std::__1::shared_ptr<lldb_private::StructuredData::Dictionary> >(llvm::StringRef, std::__1::shared_ptr<lldb_private::StructuredData::Dictionary>, lldb_private::Status&) Line | Count | Source | 57 | 21 | bool CheckStructuredDataObject(llvm::StringRef caller, T obj, Status &error) { | 58 | 21 | if (!obj) | 59 | 0 | return ErrorWithMessage<bool>(caller, "Null Structured Data object", | 60 | 0 | error); | 61 | | | 62 | 21 | if (!obj->IsValid()) { | 63 | 0 | return ErrorWithMessage<bool>(caller, "Invalid StructuredData object", | 64 | 0 | error); | 65 | 0 | } | 66 | | | 67 | 21 | if (error.Fail()) | 68 | 0 | return ErrorWithMessage<bool>(caller, error.AsCString(), error); | 69 | | | 70 | 21 | return true; | 71 | 21 | } |
bool lldb_private::ScriptedInterface::CheckStructuredDataObject<std::__1::shared_ptr<lldb_private::StructuredData::Object> >(llvm::StringRef, std::__1::shared_ptr<lldb_private::StructuredData::Object>, lldb_private::Status&) Line | Count | Source | 57 | 242 | bool CheckStructuredDataObject(llvm::StringRef caller, T obj, Status &error) { | 58 | 242 | if (!obj) | 59 | 207 | return ErrorWithMessage<bool>(caller, "Null Structured Data object", | 60 | 207 | error); | 61 | | | 62 | 35 | if (!obj->IsValid()) { | 63 | 0 | return ErrorWithMessage<bool>(caller, "Invalid StructuredData object", | 64 | 0 | error); | 65 | 0 | } | 66 | | | 67 | 35 | if (error.Fail()) | 68 | 0 | return ErrorWithMessage<bool>(caller, error.AsCString(), error); | 69 | | | 70 | 35 | return true; | 71 | 35 | } |
bool lldb_private::ScriptedInterface::CheckStructuredDataObject<std::__1::shared_ptr<lldb_private::StructuredData::Array> >(llvm::StringRef, std::__1::shared_ptr<lldb_private::StructuredData::Array>, lldb_private::Status&) Line | Count | Source | 57 | 4 | bool CheckStructuredDataObject(llvm::StringRef caller, T obj, Status &error) { | 58 | 4 | if (!obj) | 59 | 0 | return ErrorWithMessage<bool>(caller, "Null Structured Data object", | 60 | 0 | error); | 61 | | | 62 | 4 | if (!obj->IsValid()) { | 63 | 0 | return ErrorWithMessage<bool>(caller, "Invalid StructuredData object", | 64 | 0 | error); | 65 | 0 | } | 66 | | | 67 | 4 | if (error.Fail()) | 68 | 0 | return ErrorWithMessage<bool>(caller, error.AsCString(), error); | 69 | | | 70 | 4 | return true; | 71 | 4 | } |
|
72 | | |
73 | | protected: |
74 | | StructuredData::GenericSP m_object_instance_sp; |
75 | | }; |
76 | | } // namespace lldb_private |
77 | | #endif // LLDB_INTERPRETER_SCRIPTEDINTERFACE_H |