124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- AddressResolverFileLine.h -------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef liblldb_AddressResolverFileLine_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_AddressResolverFileLine_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/AddressResolver.h"
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private {
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @class AddressResolverFileLine AddressResolverFileLine.h "lldb/Core/AddressResolverFileLine.h"
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @brief This class finds address for source file and line.  Optionally, it will look for inlined
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// instances of the file and line specification.
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass AddressResolverFileLine :
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    public AddressResolver
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    AddressResolverFileLine (const FileSpec &resolver,
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                             uint32_t line_no,
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                             bool check_inlines);
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~AddressResolverFileLine ();
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual Searcher::CallbackReturn
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SearchCallback (SearchFilter &filter,
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                    SymbolContext &context,
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                    Address *addr,
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                    bool containing);
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual Searcher::Depth
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetDepth ();
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual void
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetDescription (Stream *s);
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    FileSpec m_file_spec; // This is the file spec we are looking for.
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t m_line_number; // This is the line number that we are looking for.
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool m_inlines; // This determines whether the resolver looks for inlined functions or not.
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    DISALLOW_COPY_AND_ASSIGN(AddressResolverFileLine);
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // liblldb_AddressResolverFileLine_h_
60