1 //===-- BreakpointResolverName.h --------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_BreakpointResolverName_h_
11 #define liblldb_BreakpointResolverName_h_
18 // Other libraries and framework includes
20 #include "lldb/Breakpoint/BreakpointResolver.h"
21 #include "lldb/Core/Module.h"
23 namespace lldb_private {
25 //----------------------------------------------------------------------
26 /// @class BreakpointResolverName BreakpointResolverName.h "lldb/Breakpoint/BreakpointResolverName.h"
27 /// @brief This class sets breakpoints on a given function name, either by exact match
28 /// or by regular expression.
29 //----------------------------------------------------------------------
31 class BreakpointResolverName:
32 public BreakpointResolver
36 BreakpointResolverName (Breakpoint *bkpt,
38 uint32_t name_type_mask,
39 lldb::LanguageType language,
40 Breakpoint::MatchType type,
44 // This one takes an array of names. It is always MatchType = Exact.
45 BreakpointResolverName (Breakpoint *bkpt,
48 uint32_t name_type_mask,
49 lldb::LanguageType language,
53 // This one takes a C++ array of names. It is always MatchType = Exact.
54 BreakpointResolverName (Breakpoint *bkpt,
55 std::vector<std::string> names,
56 uint32_t name_type_mask,
57 lldb::LanguageType language,
61 // Creates a function breakpoint by regular expression. Takes over control of the lifespan of func_regex.
62 BreakpointResolverName (Breakpoint *bkpt,
63 RegularExpression &func_regex,
64 lldb::LanguageType language,
68 BreakpointResolverName (Breakpoint *bkpt,
69 const char *class_name,
71 Breakpoint::MatchType type,
75 ~BreakpointResolverName() override;
77 Searcher::CallbackReturn
78 SearchCallback (SearchFilter &filter,
79 SymbolContext &context,
81 bool containing) override;
87 GetDescription (Stream *s) override;
90 Dump (Stream *s) const override;
92 /// Methods for support type inquiry through isa, cast, and dyn_cast:
93 static inline bool classof(const BreakpointResolverName *) { return true; }
94 static inline bool classof(const BreakpointResolver *V) {
95 return V->getResolverID() == BreakpointResolver::NameResolver;
98 lldb::BreakpointResolverSP
99 CopyForBreakpoint (Breakpoint &breakpoint) override;
102 BreakpointResolverName(const BreakpointResolverName &rhs);
104 std::vector<Module::LookupInfo> m_lookups;
105 ConstString m_class_name;
106 RegularExpression m_regex;
107 Breakpoint::MatchType m_match_type;
108 lldb::LanguageType m_language;
109 bool m_skip_prologue;
112 AddNameLookup (const ConstString &name, uint32_t name_type_mask);
115 } // namespace lldb_private
117 #endif // liblldb_BreakpointResolverName_h_