| //===-- Breakpoint.cpp ------------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details-> |
| // |
| //===----------------------------------------------------------------------===// |
| |
| // C Includes |
| // C++ Includes |
| // Other libraries and framework includes |
| #include "llvm/Support/Casting.h" |
| |
| // Project includes |
| #include "lldb/Breakpoint/Breakpoint.h" |
| #include "lldb/Breakpoint/BreakpointOptions.h" |
| #include "lldb/Breakpoint/BreakpointLocationCollection.h" |
| #include "lldb/Breakpoint/BreakpointResolver.h" |
| #include "lldb/Breakpoint/BreakpointResolverFileLine.h" |
| #include "lldb/Utility/Log.h" |
| #include "lldb/Utility/Stream.h" |
| #include "lldb/Utility/StreamString.h" |
| |
| using namespace lldb; |
| using namespace lldb_private; |
| |
| const Flags::ValueType BreakpointName::Permissions::permissions_mask |
| [BreakpointName::Permissions::PermissionKinds::allPerms + 1] = { |
| (1u << 0), |
| (1u << 1), |
| (1u << 2), |
| (0x5u) |
| }; |
| |
| BreakpointName::BreakpointName(const ConstString &name, const Breakpoint &bkpt, |
| const char *help) : |
| m_name(name), m_options(bkpt.GetOptions()) |
| { |
| SetHelp(help); |
| } |
| |
| bool BreakpointName::Permissions::GetDescription(Stream *s, |
| lldb::DescriptionLevel level) { |
| if (!AnySet()) |
| return false; |
| s->IndentMore(); |
| s->Indent(); |
| if (IsSet(listPerm)) |
| s->Printf("list: %s", GetAllowList() ? "allowed" : "disallowed"); |
| |
| if (IsSet(disablePerm)) |
| s->Printf("disable: %s", GetAllowDisable() ? "allowed" : "disallowed"); |
| |
| if (IsSet(deletePerm)) |
| s->Printf("delete: %s", GetAllowDelete() ? "allowed" : "disallowed"); |
| s->IndentLess(); |
| return true; |
| } |
| |
| bool BreakpointName::GetDescription(Stream *s, lldb::DescriptionLevel level) { |
| bool printed_any = false; |
| if (!m_help.empty()) |
| s->Printf("Help: %s\n", m_help.c_str()); |
| |
| if (GetOptions().AnySet()) |
| { |
| s->PutCString("Options: \n"); |
| s->IndentMore(); |
| s->Indent(); |
| GetOptions().GetDescription(s, level); |
| printed_any = true; |
| s->IndentLess(); |
| } |
| if (GetPermissions().AnySet()) |
| { |
| s->PutCString("Permissions: \n"); |
| s->IndentMore(); |
| s->Indent(); |
| GetPermissions().GetDescription(s, level); |
| printed_any = true; |
| s->IndentLess(); |
| } |
| return printed_any; |
| } |
| |
| void BreakpointName::ConfigureBreakpoint(lldb::BreakpointSP bp_sp) |
| { |
| bp_sp->GetOptions()->CopyOverSetOptions(GetOptions()); |
| bp_sp->GetPermissions().MergeInto(GetPermissions()); |
| } |