152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton//===-- FileLineResolver.h --------------------------------------*- C++ -*-===// 252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton// 352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton// The LLVM Compiler Infrastructure 452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton// 552c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton// This file is distributed under the University of Illinois Open Source 652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton// License. See LICENSE.TXT for details. 752c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton// 852c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton//===----------------------------------------------------------------------===// 952c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 1052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton#ifndef liblldb_FileLineResolver_h_ 1152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton#define liblldb_FileLineResolver_h_ 1252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 1352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton// Project includes 1452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton#include "lldb/Core/AddressResolver.h" 1549ce8969d3154e1560106cfe530444c09410f217Greg Clayton#include "lldb/Symbol/SymbolContext.h" 1652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 1752c8b6e3205e11e90adc83521c01915fc13626deGreg Claytonnamespace lldb_private { 1852c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 1952c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton//---------------------------------------------------------------------- 2052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton/// @class FileLineResolver FileLineResolver.h "lldb/Core/FileLineResolver.h" 2152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton/// @brief This class finds address for source file and line. Optionally, it will look for inlined 2252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton/// instances of the file and line specification. 2352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton//---------------------------------------------------------------------- 2452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 2552c8b6e3205e11e90adc83521c01915fc13626deGreg Claytonclass FileLineResolver : 2652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton public Searcher 2752c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton{ 2852c8b6e3205e11e90adc83521c01915fc13626deGreg Claytonpublic: 2952c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton FileLineResolver () : 3052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton m_file_spec(), 3152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton m_line_number(UINT32_MAX), // Set this to zero for all lines in a file 3252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton m_sc_list (), 3352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton m_inlines (true) 3452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton { 3552c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton } 3652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 3752c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton FileLineResolver (const FileSpec &resolver, 3852c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton uint32_t line_no, 3952c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton bool check_inlines); 4052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 4152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton virtual 4252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton ~FileLineResolver (); 4352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 4452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton virtual Searcher::CallbackReturn 4552c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton SearchCallback (SearchFilter &filter, 4652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton SymbolContext &context, 4752c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton Address *addr, 4852c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton bool containing); 4952c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 5052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton virtual Searcher::Depth 5152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton GetDepth (); 5252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 5352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton virtual void 5452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton GetDescription (Stream *s); 5552c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 5652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton const SymbolContextList & 5752c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton GetFileLineMatches() 5852c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton { 5952c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton return m_sc_list; 6052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton } 6152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 6252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton void 6352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton Clear(); 6452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 6552c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton void 6652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton Reset (const FileSpec &file_spec, 6752c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton uint32_t line, 6852c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton bool check_inlines); 6952c8b6e3205e11e90adc83521c01915fc13626deGreg Claytonprotected: 7052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton FileSpec m_file_spec; // This is the file spec we are looking for. 7152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton uint32_t m_line_number; // This is the line number that we are looking for. 7252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton SymbolContextList m_sc_list; 7352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton bool m_inlines; // This determines whether the resolver looks for inlined functions or not. 7452c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 7552c8b6e3205e11e90adc83521c01915fc13626deGreg Claytonprivate: 7652c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton DISALLOW_COPY_AND_ASSIGN(FileLineResolver); 7752c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton}; 7852c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 7952c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton} // namespace lldb_private 8052c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton 8152c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton#endif // liblldb_FileLineResolver_h_ 82