diff options
Diffstat (limited to 'lldb/source/API/SBBreakpointLocation.cpp')
-rw-r--r-- | lldb/source/API/SBBreakpointLocation.cpp | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/lldb/source/API/SBBreakpointLocation.cpp b/lldb/source/API/SBBreakpointLocation.cpp new file mode 100644 index 00000000000..8bb36bd7324 --- /dev/null +++ b/lldb/source/API/SBBreakpointLocation.cpp @@ -0,0 +1,162 @@ +//===-- SBBreakpointLocation.cpp --------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "lldb/API/SBBreakpointLocation.h" +#include "lldb/API/SBDefines.h" +#include "lldb/API/SBDebugger.h" + +#include "lldb/lldb-types.h" +#include "lldb/lldb-defines.h" +#include "lldb/Breakpoint/BreakpointLocation.h" +#include "lldb/Core/Stream.h" +#include "lldb/Core/StreamFile.h" + +using namespace lldb; +using namespace lldb_private; + + + +//class SBBreakpointLocation + +SBBreakpointLocation::SBBreakpointLocation () +{ +} + +SBBreakpointLocation::SBBreakpointLocation (const lldb::BreakpointLocationSP &break_loc_sp) : + m_break_loc_sp (break_loc_sp) +{ +} + +SBBreakpointLocation::~SBBreakpointLocation () +{ +} + +bool +SBBreakpointLocation::IsValid() const +{ + return m_break_loc_sp.get() != NULL; +} + +addr_t +SBBreakpointLocation::GetLoadAddress () +{ + addr_t ret_addr = LLDB_INVALID_ADDRESS; + + if (m_break_loc_sp) + { + ret_addr = m_break_loc_sp->GetLoadAddress(); + } + + return ret_addr; +} + +void +SBBreakpointLocation::SetEnabled (bool enabled) +{ + if (m_break_loc_sp) + { + m_break_loc_sp->SetEnabled (enabled); + } +} + +bool +SBBreakpointLocation::IsEnabled () +{ + if (m_break_loc_sp) + return m_break_loc_sp->IsEnabled(); + else + return false; +} + +int32_t +SBBreakpointLocation::GetIgnoreCount () +{ + if (m_break_loc_sp) + return m_break_loc_sp->GetIgnoreCount(); + else + return 0; +} + +void +SBBreakpointLocation::SetIgnoreCount (int32_t n) +{ + if (m_break_loc_sp) + m_break_loc_sp->SetIgnoreCount (n); +} + +void +SBBreakpointLocation::SetThreadID (tid_t thread_id) +{ + if (m_break_loc_sp) + m_break_loc_sp->SetThreadID (thread_id); +} + +tid_t +SBBreakpointLocation::GetThreadID () +{ + tid_t sb_thread_id = (lldb::tid_t) LLDB_INVALID_THREAD_ID; + if (m_break_loc_sp) + sb_thread_id = m_break_loc_sp->GetThreadID(); + + return sb_thread_id; +} + +bool +SBBreakpointLocation::IsResolved () +{ + if (m_break_loc_sp) + return m_break_loc_sp->IsResolved(); + else + return false; +} + +void +SBBreakpointLocation::SetLocation (const lldb::BreakpointLocationSP &break_loc_sp) +{ + if (m_break_loc_sp) + { + // Uninstall the callbacks? + } + m_break_loc_sp = break_loc_sp; +} + +void +SBBreakpointLocation::GetDescription (FILE *f, const char *description_level) +{ + if (f == NULL) + return; + + if (m_break_loc_sp) + { + DescriptionLevel level; + if (strcmp (description_level, "brief") == 0) + level = eDescriptionLevelBrief; + else if (strcmp (description_level, "full") == 0) + level = eDescriptionLevelFull; + else if (strcmp (description_level, "verbose") == 0) + level = eDescriptionLevelVerbose; + else + level = eDescriptionLevelBrief; + + StreamFile str (f); + + m_break_loc_sp->GetDescription (&str, level); + str.EOL(); + } +} + +SBBreakpoint +SBBreakpointLocation::GetBreakpoint () +{ + SBBreakpoint sb_bp; + if (m_break_loc_sp) + *sb_bp = m_break_loc_sp->GetBreakpoint ().GetSP(); + return sb_bp; +} + |