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 <vector>
16
17// Other libraries and framework includes
18// Project includes
19
20#include "lldb/lldb-private.h"
21#include "lldb/Breakpoint/BreakpointID.h"
22
23namespace lldb_private {
24
25//----------------------------------------------------------------------
26// class BreakpointIDList
27//----------------------------------------------------------------------
28
29
30class BreakpointIDList
31{
32public:
33    typedef std::vector<BreakpointID> BreakpointIDArray;
34
35    BreakpointIDList ();
36
37    virtual
38    ~BreakpointIDList ();
39
40    size_t
41    GetSize();
42
43    BreakpointID &
44    GetBreakpointIDAtIndex (size_t index);
45
46    bool
47    RemoveBreakpointIDAtIndex (size_t index);
48
49    void
50    Clear();
51
52    bool
53    AddBreakpointID (BreakpointID bp_id);
54
55    bool
56    AddBreakpointID (const char *bp_id);
57
58    bool
59    FindBreakpointID (BreakpointID &bp_id, size_t *position);
60
61    bool
62    FindBreakpointID (const char *bp_id, size_t *position);
63
64    void
65    InsertStringArray (const char **string_array, size_t array_size, CommandReturnObject &result);
66
67    static bool
68    StringContainsIDRangeExpression (const char *in_string, size_t *range_start_len, size_t *range_end_pos);
69
70    static void
71    FindAndReplaceIDRanges (Args &old_args, Target *target, CommandReturnObject &result, Args &new_args);
72
73private:
74    BreakpointIDArray m_breakpoint_ids;
75    BreakpointID m_invalid_id;
76
77    DISALLOW_COPY_AND_ASSIGN(BreakpointIDList);
78};
79
80} // namespace lldb_private
81
82#endif  // liblldb_BreakpointIDList_h_
83