]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/lldb/include/lldb/Breakpoint/BreakpointResolverFileLine.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm-project / lldb / include / lldb / Breakpoint / BreakpointResolverFileLine.h
1 //===-- BreakpointResolverFileLine.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 liblldb_BreakpointResolverFileLine_h_
10 #define liblldb_BreakpointResolverFileLine_h_
11
12 #include "lldb/Breakpoint/BreakpointResolver.h"
13
14 namespace lldb_private {
15
16 /// \class BreakpointResolverFileLine BreakpointResolverFileLine.h
17 /// "lldb/Breakpoint/BreakpointResolverFileLine.h" This class sets breakpoints
18 /// by file and line.  Optionally, it will look for inlined instances of the
19 /// file and line specification.
20
21 class BreakpointResolverFileLine : public BreakpointResolver {
22 public:
23   BreakpointResolverFileLine(Breakpoint *bkpt, const FileSpec &resolver,
24                              uint32_t line_no, uint32_t column,
25                              lldb::addr_t m_offset, bool check_inlines,
26                              bool skip_prologue, bool exact_match);
27
28   static BreakpointResolver *
29   CreateFromStructuredData(Breakpoint *bkpt,
30                            const StructuredData::Dictionary &data_dict,
31                            Status &error);
32
33   StructuredData::ObjectSP SerializeToStructuredData() override;
34
35   ~BreakpointResolverFileLine() override;
36
37   Searcher::CallbackReturn SearchCallback(SearchFilter &filter,
38                                           SymbolContext &context,
39                                           Address *addr) override;
40
41   lldb::SearchDepth GetDepth() override;
42
43   void GetDescription(Stream *s) override;
44
45   void Dump(Stream *s) const override;
46
47   /// Methods for support type inquiry through isa, cast, and dyn_cast:
48   static inline bool classof(const BreakpointResolverFileLine *) {
49     return true;
50   }
51   static inline bool classof(const BreakpointResolver *V) {
52     return V->getResolverID() == BreakpointResolver::FileLineResolver;
53   }
54
55   lldb::BreakpointResolverSP CopyForBreakpoint(Breakpoint &breakpoint) override;
56
57 protected:
58   void FilterContexts(SymbolContextList &sc_list, bool is_relative);
59
60   friend class Breakpoint;
61   FileSpec m_file_spec;   ///< This is the file spec we are looking for.
62   uint32_t m_line_number; ///< This is the line number that we are looking for.
63   uint32_t m_column;      ///< This is the column that we are looking for.
64   bool m_inlines; ///< This determines whether the resolver looks for inlined
65                   ///< functions or not.
66   bool m_skip_prologue;
67   bool m_exact_match;
68
69 private:
70   DISALLOW_COPY_AND_ASSIGN(BreakpointResolverFileLine);
71 };
72
73 } // namespace lldb_private
74
75 #endif // liblldb_BreakpointResolverFileLine_h_