summaryrefslogtreecommitdiffstats
path: root/lldb/source/API/SBBreakpointLocation.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/API/SBBreakpointLocation.cpp')
-rw-r--r--lldb/source/API/SBBreakpointLocation.cpp162
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;
+}
+
OpenPOWER on IntegriCloud