FileLineResolver.h revision 360784
1//===-- FileLineResolver.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_FileLineResolver_h_ 10#define liblldb_FileLineResolver_h_ 11 12#include "lldb/Core/SearchFilter.h" 13#include "lldb/Symbol/SymbolContext.h" 14#include "lldb/Utility/FileSpec.h" 15#include "lldb/lldb-defines.h" 16 17#include <stdint.h> 18 19namespace lldb_private { 20class Address; 21class Stream; 22 23/// \class FileLineResolver FileLineResolver.h "lldb/Core/FileLineResolver.h" 24/// This class finds address for source file and line. Optionally, it will 25/// look for inlined instances of the file and line specification. 26 27class FileLineResolver : public Searcher { 28public: 29 FileLineResolver() 30 : m_file_spec(), 31 m_line_number(UINT32_MAX), // Set this to zero for all lines in a file 32 m_sc_list(), m_inlines(true) {} 33 34 FileLineResolver(const FileSpec &resolver, uint32_t line_no, 35 bool check_inlines); 36 37 ~FileLineResolver() override; 38 39 Searcher::CallbackReturn SearchCallback(SearchFilter &filter, 40 SymbolContext &context, 41 Address *addr) override; 42 43 lldb::SearchDepth GetDepth() override; 44 45 void GetDescription(Stream *s) override; 46 47 const SymbolContextList &GetFileLineMatches() { return m_sc_list; } 48 49 void Clear(); 50 51 void Reset(const FileSpec &file_spec, uint32_t line, bool check_inlines); 52 53protected: 54 FileSpec m_file_spec; // This is the file spec we are looking for. 55 uint32_t m_line_number; // This is the line number that we are looking for. 56 SymbolContextList m_sc_list; 57 bool m_inlines; // This determines whether the resolver looks for inlined 58 // functions or not. 59 60private: 61 DISALLOW_COPY_AND_ASSIGN(FileLineResolver); 62}; 63 64} // namespace lldb_private 65 66#endif // liblldb_FileLineResolver_h_ 67