Coverage Report

Created: 2023-09-30 09:22

/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