]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/lldb/include/lldb/API/SBValueList.h
Merge clang 7.0.1 and several follow-up changes
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / lldb / include / lldb / API / SBValueList.h
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 LLDB_API SBValueList {
20 public:
21   SBValueList();
22
23   SBValueList(const lldb::SBValueList &rhs);
24
25   ~SBValueList();
26
27   bool IsValid() const;
28
29   void Clear();
30
31   void Append(const lldb::SBValue &val_obj);
32
33   void Append(const lldb::SBValueList &value_list);
34
35   uint32_t GetSize() const;
36
37   lldb::SBValue GetValueAtIndex(uint32_t idx) const;
38
39   lldb::SBValue GetFirstValueByName(const char *name) const;
40
41   lldb::SBValue FindValueObjectByUID(lldb::user_id_t uid);
42
43   const lldb::SBValueList &operator=(const lldb::SBValueList &rhs);
44
45 protected:
46   // only useful for visualizing the pointer or comparing two SBValueLists to
47   // see if they are backed by the same underlying Impl.
48   void *opaque_ptr();
49
50 private:
51   friend class SBFrame;
52
53   SBValueList(const ValueListImpl *lldb_object_ptr);
54
55   void Append(lldb::ValueObjectSP &val_obj_sp);
56
57   void CreateIfNeeded();
58
59   ValueListImpl *operator->();
60
61   ValueListImpl &operator*();
62
63   const ValueListImpl *operator->() const;
64
65   const ValueListImpl &operator*() const;
66
67   ValueListImpl &ref();
68
69   std::unique_ptr<ValueListImpl> m_opaque_ap;
70 };
71
72 } // namespace lldb
73
74 #endif // LLDB_SBValueList_h_