124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- BreakpointResolverFileLine.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_BreakpointResolverFileLine_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_BreakpointResolverFileLine_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Breakpoint/BreakpointResolver.h"
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private {
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @class BreakpointResolverFileLine BreakpointResolverFileLine.h "lldb/Breakpoint/BreakpointResolverFileLine.h"
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @brief This class sets breakpoints by file and line.  Optionally, it will look for inlined
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// instances of the file and line specification.
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass BreakpointResolverFileLine :
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    public BreakpointResolver
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointResolverFileLine (Breakpoint *bkpt,
3252c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton                                const FileSpec &resolver,
3352c8b6e3205e11e90adc83521c01915fc13626deGreg Clayton                                uint32_t line_no,
342cf5ccbbbe3343a6c973d0d65ad5de178a414e30Jim Ingham                                bool check_inlines,
352cf5ccbbbe3343a6c973d0d65ad5de178a414e30Jim Ingham                                bool skip_prologue);
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~BreakpointResolverFileLine ();
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual Searcher::CallbackReturn
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SearchCallback (SearchFilter &filter,
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                    SymbolContext &context,
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                    Address *addr,
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                    bool containing);
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual Searcher::Depth
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetDepth ();
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual void
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetDescription (Stream *s);
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual void
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Dump (Stream *s) const;
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
55a62ad7c886252a08d614a2b391d0774a151b7196Johnny Chen    /// Methods for support type inquiry through isa, cast, and dyn_cast:
56a62ad7c886252a08d614a2b391d0774a151b7196Johnny Chen    static inline bool classof(const BreakpointResolverFileLine *) { return true; }
57a62ad7c886252a08d614a2b391d0774a151b7196Johnny Chen    static inline bool classof(const BreakpointResolver *V) {
58a62ad7c886252a08d614a2b391d0774a151b7196Johnny Chen        return V->getResolverID() == BreakpointResolver::FileLineResolver;
59a62ad7c886252a08d614a2b391d0774a151b7196Johnny Chen    }
60a62ad7c886252a08d614a2b391d0774a151b7196Johnny Chen
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
62a62ad7c886252a08d614a2b391d0774a151b7196Johnny Chen    friend class Breakpoint;
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    FileSpec m_file_spec; // This is the file spec we are looking for.
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    uint32_t m_line_number; // This is the line number that we are looking for.
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool m_inlines; // This determines whether the resolver looks for inlined functions or not.
662cf5ccbbbe3343a6c973d0d65ad5de178a414e30Jim Ingham    bool m_skip_prologue;
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    DISALLOW_COPY_AND_ASSIGN(BreakpointResolverFileLine);
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // liblldb_BreakpointResolverFileLine_h_
75