1 //===-- BreakpointIDList.h --------------------------------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #ifndef liblldb_BreakpointIDList_h_
11 #define liblldb_BreakpointIDList_h_
18 // Other libraries and framework includes
21 #include "lldb/lldb-enumerations.h"
22 #include "lldb/Breakpoint/BreakpointID.h"
23 #include "lldb/Breakpoint/BreakpointName.h"
24 #include "lldb/lldb-private.h"
26 namespace lldb_private {
28 //----------------------------------------------------------------------
29 // class BreakpointIDList
30 //----------------------------------------------------------------------
32 class BreakpointIDList {
34 // TODO: Convert this class to StringRef.
35 typedef std::vector<BreakpointID> BreakpointIDArray;
39 virtual ~BreakpointIDList();
41 size_t GetSize() const;
43 const BreakpointID &GetBreakpointIDAtIndex(size_t index) const;
45 bool RemoveBreakpointIDAtIndex(size_t index);
49 bool AddBreakpointID(BreakpointID bp_id);
51 bool AddBreakpointID(const char *bp_id);
53 // TODO: This should take a const BreakpointID.
54 bool FindBreakpointID(BreakpointID &bp_id, size_t *position) const;
56 bool FindBreakpointID(const char *bp_id, size_t *position) const;
58 void InsertStringArray(const char **string_array, size_t array_size,
59 CommandReturnObject &result);
61 // Returns a pair consisting of the beginning and end of a breakpoint
62 // ID range expression. If the input string is not a valid specification,
63 // returns an empty pair.
64 static std::pair<llvm::StringRef, llvm::StringRef>
65 SplitIDRangeExpression(llvm::StringRef in_string);
67 static void FindAndReplaceIDRanges(Args &old_args, Target *target,
69 BreakpointName::Permissions
70 ::PermissionKinds purpose,
71 CommandReturnObject &result,
75 BreakpointIDArray m_breakpoint_ids;
76 BreakpointID m_invalid_id;
78 DISALLOW_COPY_AND_ASSIGN(BreakpointIDList);
81 } // namespace lldb_private
83 #endif // liblldb_BreakpointIDList_h_