1 //===-- SBValueList.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 LLDB_SBValueList_h_
11 #define LLDB_SBValueList_h_
12 
13 #include "lldb/API/SBDefines.h"
14 
15 class ValueListImpl;
16 
17 namespace lldb {
18 
19 class SBValueList
20 {
21 public:
22 
23     SBValueList ();
24 
25     SBValueList (const lldb::SBValueList &rhs);
26 
27     ~SBValueList();
28 
29     bool
30     IsValid() const;
31 
32     void
33     Clear();
34 
35     void
36     Append (const lldb::SBValue &val_obj);
37 
38     void
39     Append (const lldb::SBValueList& value_list);
40 
41     uint32_t
42     GetSize() const;
43 
44     lldb::SBValue
45     GetValueAtIndex (uint32_t idx) const;
46 
47     lldb::SBValue
48     FindValueObjectByUID (lldb::user_id_t uid);
49 
50     const lldb::SBValueList &
51     operator = (const lldb::SBValueList &rhs);
52 
53 protected:
54 
55     // only useful for visualizing the pointer or comparing two SBValueLists
56     // to see if they are backed by the same underlying Impl.
57     void *
58     opaque_ptr ();
59 
60 private:
61     friend class SBFrame;
62 
63     SBValueList (const ValueListImpl *lldb_object_ptr);
64 
65     void
66     Append (lldb::ValueObjectSP& val_obj_sp);
67 
68     void
69     CreateIfNeeded ();
70 
71     ValueListImpl *
72     operator -> ();
73 
74     ValueListImpl &
75     operator* ();
76 
77     const ValueListImpl *
78     operator -> () const;
79 
80     const ValueListImpl &
81     operator* () const;
82 
83 
84     ValueListImpl &
85     ref ();
86 
87     std::unique_ptr<ValueListImpl> m_opaque_ap;
88 };
89 
90 
91 } // namespace lldb
92 
93 #endif  // LLDB_SBValueList_h_
94