enabled LLVM make style building and made this compile LLDB on Mac OS X. We can now iterate on this to make the build work on both linux and macosx. llvm-svn: 108009
202 lines
7.0 KiB
C++
202 lines
7.0 KiB
C++
//===-- BreakpointLocationCollection.h --------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef liblldb_BreakpointLocationCollection_h_
|
|
#define liblldb_BreakpointLocationCollection_h_
|
|
|
|
// C Includes
|
|
// C++ Includes
|
|
#include <vector>
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "lldb/lldb-private.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
class BreakpointLocationCollection
|
|
{
|
|
public:
|
|
BreakpointLocationCollection();
|
|
|
|
~BreakpointLocationCollection();
|
|
|
|
//------------------------------------------------------------------
|
|
/// Add the breakpoint \a bp_loc_sp to the list.
|
|
///
|
|
/// @param[in] bp_sp
|
|
/// Shared pointer to the breakpoint location that will get added
|
|
/// to the list.
|
|
///
|
|
/// @result
|
|
/// Returns breakpoint location id.
|
|
//------------------------------------------------------------------
|
|
void
|
|
Add (const lldb::BreakpointLocationSP& bp_loc_sp);
|
|
|
|
//------------------------------------------------------------------
|
|
/// Removes the breakpoint location given by \b breakID from this
|
|
/// list.
|
|
///
|
|
/// @param[in] break_id
|
|
/// The breakpoint index to remove.
|
|
///
|
|
/// @param[in] break_loc_id
|
|
/// The breakpoint location index in break_id to remove.
|
|
///
|
|
/// @result
|
|
/// \b true if the breakpoint was in the list.
|
|
//------------------------------------------------------------------
|
|
bool
|
|
Remove (lldb::break_id_t break_id, lldb::break_id_t break_loc_id);
|
|
|
|
//------------------------------------------------------------------
|
|
/// Returns a shared pointer to the breakpoint location with id \a
|
|
/// breakID.
|
|
///
|
|
/// @param[in] break_id
|
|
/// The breakpoint ID to seek for.
|
|
///
|
|
/// @param[in] break_loc_id
|
|
/// The breakpoint location ID in \a break_id to seek for.
|
|
///
|
|
/// @result
|
|
/// A shared pointer to the breakpoint. May contain a NULL
|
|
/// pointer if the breakpoint doesn't exist.
|
|
//------------------------------------------------------------------
|
|
lldb::BreakpointLocationSP
|
|
FindByIDPair (lldb::break_id_t break_id, lldb::break_id_t break_loc_id);
|
|
|
|
//------------------------------------------------------------------
|
|
/// Returns a shared pointer to the breakpoint location with id \a
|
|
/// breakID, const version.
|
|
///
|
|
/// @param[in] breakID
|
|
/// The breakpoint location ID to seek for.
|
|
///
|
|
/// @param[in] break_loc_id
|
|
/// The breakpoint location ID in \a break_id to seek for.
|
|
///
|
|
/// @result
|
|
/// A shared pointer to the breakpoint. May contain a NULL
|
|
/// pointer if the breakpoint doesn't exist.
|
|
//------------------------------------------------------------------
|
|
const lldb::BreakpointLocationSP
|
|
FindByIDPair (lldb::break_id_t break_id, lldb::break_id_t break_loc_id) const;
|
|
|
|
//------------------------------------------------------------------
|
|
/// Returns a shared pointer to the breakpoint location with index
|
|
/// \a i.
|
|
///
|
|
/// @param[in] i
|
|
/// The breakpoint location index to seek for.
|
|
///
|
|
/// @result
|
|
/// A shared pointer to the breakpoint. May contain a NULL
|
|
/// pointer if the breakpoint doesn't exist.
|
|
//------------------------------------------------------------------
|
|
lldb::BreakpointLocationSP
|
|
GetByIndex (uint32_t i);
|
|
|
|
//------------------------------------------------------------------
|
|
/// Returns a shared pointer to the breakpoint location with index
|
|
/// \a i, const version.
|
|
///
|
|
/// @param[in] i
|
|
/// The breakpoint location index to seek for.
|
|
///
|
|
/// @result
|
|
/// A shared pointer to the breakpoint. May contain a NULL
|
|
/// pointer if the breakpoint doesn't exist.
|
|
//------------------------------------------------------------------
|
|
const lldb::BreakpointLocationSP
|
|
GetByIndex (uint32_t i) const;
|
|
|
|
//------------------------------------------------------------------
|
|
/// Returns the number of elements in this breakpoint location list.
|
|
///
|
|
/// @result
|
|
/// The number of elements.
|
|
//------------------------------------------------------------------
|
|
size_t
|
|
GetSize() const { return m_break_loc_collection.size(); }
|
|
|
|
//------------------------------------------------------------------
|
|
/// Enquires of all the breakpoint locations in this list whether
|
|
/// we should stop at a hit at \a breakID.
|
|
///
|
|
/// @param[in] context
|
|
/// This contains the information about this stop.
|
|
///
|
|
/// @param[in] breakID
|
|
/// This break ID that we hit.
|
|
///
|
|
/// @return
|
|
/// \b true if we should stop, \b false otherwise.
|
|
//------------------------------------------------------------------
|
|
bool
|
|
ShouldStop (StoppointCallbackContext *context);
|
|
|
|
//------------------------------------------------------------------
|
|
/// Print a description of the breakpoint locations in this list
|
|
/// to the stream \a s.
|
|
///
|
|
/// @param[in] s
|
|
/// The stream to which to print the description.
|
|
///
|
|
/// @param[in] level
|
|
/// The description level that indicates the detail level to
|
|
/// provide.
|
|
///
|
|
/// @see lldb::DescriptionLevel
|
|
//------------------------------------------------------------------
|
|
void GetDescription (Stream *s, lldb::DescriptionLevel level);
|
|
|
|
//------------------------------------------------------------------
|
|
/// Check whether this collection of breakpoint locations have any
|
|
/// thread specifiers, and if yes, is \a thread_id contained in any
|
|
/// of these specifiers.
|
|
///
|
|
/// @param[in] thread
|
|
/// The thread against which to test.
|
|
///
|
|
/// return
|
|
/// \b true if the collection contains at least one location that
|
|
/// would be valid for this thread, false otherwise.
|
|
//------------------------------------------------------------------
|
|
bool ValidForThisThread (Thread *thread);
|
|
|
|
|
|
|
|
protected:
|
|
//------------------------------------------------------------------
|
|
// Classes that inherit from BreakpointLocationCollection can see
|
|
// and modify these
|
|
//------------------------------------------------------------------
|
|
|
|
private:
|
|
//------------------------------------------------------------------
|
|
// For BreakpointLocationCollection only
|
|
//------------------------------------------------------------------
|
|
|
|
typedef std::vector<lldb::BreakpointLocationSP> collection;
|
|
|
|
collection::iterator
|
|
GetIDPairIterator(lldb::break_id_t break_id, lldb::break_id_t break_loc_id);
|
|
|
|
collection::const_iterator
|
|
GetIDPairConstIterator(lldb::break_id_t break_id, lldb::break_id_t break_loc_id) const;
|
|
|
|
collection m_break_loc_collection;
|
|
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // liblldb_BreakpointLocationCollection_h_
|