xref: /freebsd/contrib/llvm-project/lldb/include/lldb/Breakpoint/BreakpointIDList.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1 //===-- BreakpointIDList.h --------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_BREAKPOINT_BREAKPOINTIDLIST_H
10 #define LLDB_BREAKPOINT_BREAKPOINTIDLIST_H
11 
12 #include <utility>
13 #include <vector>
14 
15 #include "lldb/Breakpoint/BreakpointID.h"
16 #include "lldb/Breakpoint/BreakpointName.h"
17 #include "lldb/lldb-enumerations.h"
18 #include "lldb/lldb-private.h"
19 
20 #include "llvm/Support/Error.h"
21 
22 namespace lldb_private {
23 
24 // class BreakpointIDList
25 
26 class BreakpointIDList {
27 public:
28   // TODO: Convert this class to StringRef.
29   typedef std::vector<BreakpointID> BreakpointIDArray;
30 
31   BreakpointIDList();
32 
33   virtual ~BreakpointIDList();
34 
35   size_t GetSize() const;
36 
37   BreakpointID GetBreakpointIDAtIndex(size_t index) const;
38 
39   bool RemoveBreakpointIDAtIndex(size_t index);
40 
41   void Clear();
42 
43   bool AddBreakpointID(BreakpointID bp_id);
44 
45   bool Contains(BreakpointID bp_id) const;
46 
47   // Returns a pair consisting of the beginning and end of a breakpoint
48   // ID range expression.  If the input string is not a valid specification,
49   // returns an empty pair.
50   static std::pair<llvm::StringRef, llvm::StringRef>
51   SplitIDRangeExpression(llvm::StringRef in_string);
52 
53   static llvm::Error
54   FindAndReplaceIDRanges(Args &old_args, Target *target, bool allow_locations,
55                          BreakpointName::Permissions ::PermissionKinds purpose,
56                          Args &new_args);
57 
58 private:
59   BreakpointIDArray m_breakpoint_ids;
60 
61   BreakpointIDList(const BreakpointIDList &) = delete;
62   const BreakpointIDList &operator=(const BreakpointIDList &) = delete;
63 };
64 
65 } // namespace lldb_private
66 
67 #endif // LLDB_BREAKPOINT_BREAKPOINTIDLIST_H
68