]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/Breakpoint/BreakpointIDList.h
MFV r316928: 7256 low probability race in zfs_get_data
[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 // C Includes
14 // C++ Includes
15 #include <utility>
16 #include <vector>
17
18 // Other libraries and framework includes
19 // Project includes
20
21 #include "lldb/Breakpoint/BreakpointID.h"
22 #include "lldb/lldb-private.h"
23
24 namespace lldb_private {
25
26 //----------------------------------------------------------------------
27 // class BreakpointIDList
28 //----------------------------------------------------------------------
29
30 class BreakpointIDList {
31 public:
32   // TODO: Convert this class to StringRef.
33   typedef std::vector<BreakpointID> BreakpointIDArray;
34
35   BreakpointIDList();
36
37   virtual ~BreakpointIDList();
38
39   size_t GetSize() const;
40
41   const BreakpointID &GetBreakpointIDAtIndex(size_t index) const;
42
43   bool RemoveBreakpointIDAtIndex(size_t index);
44
45   void Clear();
46
47   bool AddBreakpointID(BreakpointID bp_id);
48
49   bool AddBreakpointID(const char *bp_id);
50
51   // TODO: This should take a const BreakpointID.
52   bool FindBreakpointID(BreakpointID &bp_id, size_t *position) const;
53
54   bool FindBreakpointID(const char *bp_id, size_t *position) const;
55
56   void InsertStringArray(const char **string_array, size_t array_size,
57                          CommandReturnObject &result);
58
59   // Returns a pair consisting of the beginning and end of a breakpoint
60   // ID range expression.  If the input string is not a valid specification,
61   // returns an empty pair.
62   static std::pair<llvm::StringRef, llvm::StringRef>
63   SplitIDRangeExpression(llvm::StringRef in_string);
64
65   static void FindAndReplaceIDRanges(Args &old_args, Target *target,
66                                      bool allow_locations,
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_