Coverage Report

Created: 2023-09-21 18:56

/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Breakpoint/BreakpointResolverScripted.h
Line
Count
Source (jump to first uncovered line)
1
//===-- BreakpointResolverScripted.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_BREAKPOINT_BREAKPOINTRESOLVERSCRIPTED_H
10
#define LLDB_BREAKPOINT_BREAKPOINTRESOLVERSCRIPTED_H
11
12
#include "lldb/Breakpoint/BreakpointResolver.h"
13
#include "lldb/Core/ModuleSpec.h"
14
#include "lldb/Core/StructuredDataImpl.h"
15
#include "lldb/lldb-forward.h"
16
17
namespace lldb_private {
18
19
/// \class BreakpointResolverScripted BreakpointResolverScripted.h
20
/// "lldb/Breakpoint/BreakpointResolverScripted.h" This class sets breakpoints
21
/// on a given Address.  This breakpoint only takes once, and then it won't
22
/// attempt to reset itself.
23
24
class BreakpointResolverScripted : public BreakpointResolver {
25
public:
26
  BreakpointResolverScripted(const lldb::BreakpointSP &bkpt,
27
                             const llvm::StringRef class_name,
28
                             lldb::SearchDepth depth,
29
                             const StructuredDataImpl &args_data);
30
31
22
  ~BreakpointResolverScripted() override = default;
32
33
  static BreakpointResolver *
34
  CreateFromStructuredData(const lldb::BreakpointSP &bkpt,
35
                           const StructuredData::Dictionary &options_dict,
36
                           Status &error);
37
38
  StructuredData::ObjectSP SerializeToStructuredData() override;
39
40
  Searcher::CallbackReturn SearchCallback(SearchFilter &filter,
41
                                          SymbolContext &context,
42
                                          Address *addr) override;
43
44
  lldb::SearchDepth GetDepth() override;
45
46
  void GetDescription(Stream *s) override;
47
48
  void Dump(Stream *s) const override;
49
50
  /// Methods for support type inquiry through isa, cast, and dyn_cast:
51
0
  static inline bool classof(const BreakpointResolverScripted *) { return true; }
52
13
  static inline bool classof(const BreakpointResolver *V) {
53
13
    return V->getResolverID() == BreakpointResolver::PythonResolver;
54
13
  }
55
56
  lldb::BreakpointResolverSP
57
  CopyForBreakpoint(lldb::BreakpointSP &breakpoint) override;
58
59
protected:
60
  void NotifyBreakpointSet() override;
61
private:
62
  void CreateImplementationIfNeeded(lldb::BreakpointSP bkpt);
63
  ScriptInterpreter *GetScriptInterpreter();
64
  
65
  std::string m_class_name;
66
  lldb::SearchDepth m_depth;
67
  StructuredDataImpl m_args;
68
  StructuredData::GenericSP m_implementation_sp;
69
70
  BreakpointResolverScripted(const BreakpointResolverScripted &) = delete;
71
  const BreakpointResolverScripted &
72
  operator=(const BreakpointResolverScripted &) = delete;
73
};
74
75
} // namespace lldb_private
76
77
#endif // LLDB_BREAKPOINT_BREAKPOINTRESOLVERSCRIPTED_H