1 //===-- FileLineResolver.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_FileLineResolver_h_
11 #define liblldb_FileLineResolver_h_
13 #include "lldb/Core/SearchFilter.h" // for Searcher, Searcher::CallbackR...
14 #include "lldb/Symbol/SymbolContext.h"
15 #include "lldb/Utility/FileSpec.h" // for FileSpec
16 #include "lldb/lldb-defines.h" // for DISALLOW_COPY_AND_ASSIGN
18 #include <stdint.h> // for uint32_t, UINT32_MAX
20 namespace lldb_private {
23 namespace lldb_private {
27 namespace lldb_private {
29 //----------------------------------------------------------------------
30 /// @class FileLineResolver FileLineResolver.h "lldb/Core/FileLineResolver.h"
31 /// This class finds address for source file and line. Optionally, it will
32 /// look for inlined instances of the file and line specification.
33 //----------------------------------------------------------------------
35 class FileLineResolver : public Searcher {
39 m_line_number(UINT32_MAX), // Set this to zero for all lines in a file
40 m_sc_list(), m_inlines(true) {}
42 FileLineResolver(const FileSpec &resolver, uint32_t line_no,
45 ~FileLineResolver() override;
47 Searcher::CallbackReturn SearchCallback(SearchFilter &filter,
48 SymbolContext &context, Address *addr,
49 bool containing) override;
51 Searcher::Depth GetDepth() override;
53 void GetDescription(Stream *s) override;
55 const SymbolContextList &GetFileLineMatches() { return m_sc_list; }
59 void Reset(const FileSpec &file_spec, uint32_t line, bool check_inlines);
62 FileSpec m_file_spec; // This is the file spec we are looking for.
63 uint32_t m_line_number; // This is the line number that we are looking for.
64 SymbolContextList m_sc_list;
65 bool m_inlines; // This determines whether the resolver looks for inlined
69 DISALLOW_COPY_AND_ASSIGN(FileLineResolver);
72 } // namespace lldb_private
74 #endif // liblldb_FileLineResolver_h_