LLDB  mainline
BreakpointIDList.h
Go to the documentation of this file.
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 liblldb_BreakpointIDList_h_
10 #define liblldb_BreakpointIDList_h_
11 
12 #include <utility>
13 #include <vector>
14 
15 
16 #include "lldb/lldb-enumerations.h"
19 #include "lldb/lldb-private.h"
20 
21 namespace lldb_private {
22 
23 // class BreakpointIDList
24 
26 public:
27  // TODO: Convert this class to StringRef.
28  typedef std::vector<BreakpointID> BreakpointIDArray;
29 
31 
32  virtual ~BreakpointIDList();
33 
34  size_t GetSize() const;
35 
36  const BreakpointID &GetBreakpointIDAtIndex(size_t index) const;
37 
38  bool RemoveBreakpointIDAtIndex(size_t index);
39 
40  void Clear();
41 
42  bool AddBreakpointID(BreakpointID bp_id);
43 
44  bool AddBreakpointID(const char *bp_id);
45 
46  // TODO: This should take a const BreakpointID.
47  bool FindBreakpointID(BreakpointID &bp_id, size_t *position) const;
48 
49  bool FindBreakpointID(const char *bp_id, size_t *position) const;
50 
51  void InsertStringArray(llvm::ArrayRef<const char *> string_array,
52  CommandReturnObject &result);
53 
54  // Returns a pair consisting of the beginning and end of a breakpoint
55  // ID range expression. If the input string is not a valid specification,
56  // returns an empty pair.
57  static std::pair<llvm::StringRef, llvm::StringRef>
58  SplitIDRangeExpression(llvm::StringRef in_string);
59 
60  static void FindAndReplaceIDRanges(Args &old_args, Target *target,
61  bool allow_locations,
63  ::PermissionKinds purpose,
64  CommandReturnObject &result,
65  Args &new_args);
66 
67 private:
68  BreakpointIDArray m_breakpoint_ids;
69  BreakpointID m_invalid_id;
70 
71  DISALLOW_COPY_AND_ASSIGN(BreakpointIDList);
72 };
73 
74 } // namespace lldb_private
75 
76 #endif // liblldb_BreakpointIDList_h_
A command line argument class.
Definition: Args.h:32
static void FindAndReplaceIDRanges(Args &old_args, Target *target, bool allow_locations, BreakpointName::Permissions ::PermissionKinds purpose, CommandReturnObject &result, Args &new_args)
Enumerations for broadcasting.
Definition: SBLaunchInfo.h:14
const BreakpointID & GetBreakpointIDAtIndex(size_t index) const
static std::pair< llvm::StringRef, llvm::StringRef > SplitIDRangeExpression(llvm::StringRef in_string)
bool FindBreakpointID(BreakpointID &bp_id, size_t *position) const
void InsertStringArray(llvm::ArrayRef< const char *> string_array, CommandReturnObject &result)
std::vector< BreakpointID > BreakpointIDArray
bool RemoveBreakpointIDAtIndex(size_t index)
bool AddBreakpointID(BreakpointID bp_id)