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_ 75