]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointIDList.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / Breakpoint / BreakpointIDList.h
1 //===-- BreakpointIDList.h --------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 #ifndef liblldb_BreakpointIDList_h_
11 #define liblldb_BreakpointIDList_h_
12
13 #include <utility>
14 #include <vector>
15
16
17 #include "lldb/lldb-enumerations.h"
18 #include "lldb/Breakpoint/BreakpointID.h"
19 #include "lldb/Breakpoint/BreakpointName.h"
20 #include "lldb/lldb-private.h"
21
22 namespace lldb_private {
23
24 //----------------------------------------------------------------------
25 // class BreakpointIDList
26 //----------------------------------------------------------------------
27
28 class BreakpointIDList {
29 public:
30   // TODO: Convert this class to StringRef.
31   typedef std::vector<BreakpointID> BreakpointIDArray;
32
33   BreakpointIDList();
34
35   virtual ~BreakpointIDList();
36
37   size_t GetSize() const;
38
39   const BreakpointID &GetBreakpointIDAtIndex(size_t index) const;
40
41   bool RemoveBreakpointIDAtIndex(size_t index);
42
43   void Clear();
44
45   bool AddBreakpointID(BreakpointID bp_id);
46
47   bool AddBreakpointID(const char *bp_id);
48
49   // TODO: This should take a const BreakpointID.
50   bool FindBreakpointID(BreakpointID &bp_id, size_t *position) const;
51
52   bool FindBreakpointID(const char *bp_id, size_t *position) const;
53
54   void InsertStringArray(llvm::ArrayRef<const char *> string_array,
55                          CommandReturnObject &result);
56
57   // Returns a pair consisting of the beginning and end of a breakpoint
58   // ID range expression.  If the input string is not a valid specification,
59   // returns an empty pair.
60   static std::pair<llvm::StringRef, llvm::StringRef>
61   SplitIDRangeExpression(llvm::StringRef in_string);
62
63   static void FindAndReplaceIDRanges(Args &old_args, Target *target,
64                                      bool allow_locations,
65                                      BreakpointName::Permissions
66                                        ::PermissionKinds purpose,
67                                      CommandReturnObject &result,
68                                      Args &new_args);
69
70 private:
71   BreakpointIDArray m_breakpoint_ids;
72   BreakpointID m_invalid_id;
73
74   DISALLOW_COPY_AND_ASSIGN(BreakpointIDList);
75 };
76
77 } // namespace lldb_private
78
79 #endif // liblldb_BreakpointIDList_h_