Home | History | Annotate | Download | only in API
      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