124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- BreakpointID.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_BreakpointID_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_BreakpointID_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h"
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private {
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// class BreakpointID
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//----------------------------------------------------------------------
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass BreakpointID
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    BreakpointID (lldb::break_id_t bp_id = LLDB_INVALID_BREAK_ID,
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner                  lldb::break_id_t loc_id = LLDB_INVALID_BREAK_ID);
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ~BreakpointID ();
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::break_id_t
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetBreakpointID ()
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        return m_break_id;
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::break_id_t
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetLocationID ()
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        return m_location_id;
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetID (lldb::break_id_t bp_id, lldb::break_id_t loc_id)
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        m_break_id = bp_id;
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        m_location_id = loc_id;
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
5624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetBreakpointID (lldb::break_id_t bp_id)
5724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        m_break_id = bp_id;
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    SetBreakpointLocationID (lldb::break_id_t loc_id)
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    {
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner        m_location_id = loc_id;
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    }
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetDescription (Stream *s, lldb::DescriptionLevel level);
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static bool
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsRangeIdentifier (const char *str);
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static bool
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    IsValidIDExpression (const char *str);
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static const char *g_range_specifiers[];
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Takes an input string containing the description of a breakpoint or breakpoint and location
8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// and returns the breakpoint ID and the breakpoint location id.
8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[in] input
8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     A string containing JUST the breakpoint description.
8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[out] break_id
8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     This is the break id.
8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[out] break_loc_id
8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     This is breakpoint location id, or LLDB_INVALID_BREAK_ID is no location was specified.
8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @return
8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     \b true if the call was able to extract a breakpoint location from the string.  \b false otherwise.
9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static bool
9224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ParseCanonicalReference (const char *input, lldb::break_id_t *break_id, lldb::break_id_t *break_loc_id);
9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// Takes a breakpoint ID and the breakpoint location id and returns
9724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// a string containing the canonical description for the breakpoint
9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// or breakpoint location.
9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[out] break_id
10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     This is the break id.
10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///
10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    /// @param[out] break_loc_id
10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     This is breakpoint location id, or LLDB_INVALID_BREAK_ID is no
10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    ///     location is to be specified.
10624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
10724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    static void
10824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    GetCanonicalReference (Stream *s, lldb::break_id_t break_id, lldb::break_id_t break_loc_id);
10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::break_id_t m_break_id;
11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    lldb::break_id_t m_location_id;
11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
11624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
11724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // liblldb_BreakpointID_h_
118