1 //===-- SBBlock.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_SBBlock_h_ 11 #define LLDB_SBBlock_h_ 12 13 #include "lldb/API/SBDefines.h" 14 #include "lldb/API/SBFrame.h" 15 #include "lldb/API/SBTarget.h" 16 #include "lldb/API/SBValueList.h" 17 18 namespace lldb { 19 20 class SBBlock 21 { 22 public: 23 24 SBBlock (); 25 26 SBBlock (const lldb::SBBlock &rhs); 27 28 ~SBBlock (); 29 30 const lldb::SBBlock & 31 operator = (const lldb::SBBlock &rhs); 32 33 bool 34 IsInlined () const; 35 36 bool 37 IsValid () const; 38 39 const char * 40 GetInlinedName () const; 41 42 lldb::SBFileSpec 43 GetInlinedCallSiteFile () const; 44 45 uint32_t 46 GetInlinedCallSiteLine () const; 47 48 uint32_t 49 GetInlinedCallSiteColumn () const; 50 51 lldb::SBBlock 52 GetParent (); 53 54 lldb::SBBlock 55 GetSibling (); 56 57 lldb::SBBlock 58 GetFirstChild (); 59 60 uint32_t 61 GetNumRanges (); 62 63 lldb::SBAddress 64 GetRangeStartAddress (uint32_t idx); 65 66 lldb::SBAddress 67 GetRangeEndAddress (uint32_t idx); 68 69 uint32_t 70 GetRangeIndexForBlockAddress (lldb::SBAddress block_addr); 71 72 lldb::SBValueList 73 GetVariables (lldb::SBFrame& frame, 74 bool arguments, 75 bool locals, 76 bool statics, 77 lldb::DynamicValueType use_dynamic); 78 79 lldb::SBValueList 80 GetVariables (lldb::SBTarget& target, 81 bool arguments, 82 bool locals, 83 bool statics); 84 //------------------------------------------------------------------ 85 /// Get the inlined block that contains this block. 86 /// 87 /// @return 88 /// If this block is inlined, it will return this block, else 89 /// parent blocks will be searched to see if any contain this 90 /// block and are themselves inlined. An invalid SBBlock will 91 /// be returned if this block nor any parent blocks are inlined 92 /// function blocks. 93 //------------------------------------------------------------------ 94 lldb::SBBlock 95 GetContainingInlinedBlock (); 96 97 bool 98 GetDescription (lldb::SBStream &description); 99 100 private: 101 friend class SBAddress; 102 friend class SBFrame; 103 friend class SBFunction; 104 friend class SBSymbolContext; 105 106 lldb_private::Block * 107 GetPtr (); 108 109 void 110 SetPtr (lldb_private::Block *lldb_object_ptr); 111 112 SBBlock (lldb_private::Block *lldb_object_ptr); 113 114 void 115 AppendVariables (bool can_create, bool get_parent_variables, lldb_private::VariableList *var_list); 116 117 lldb_private::Block *m_opaque_ptr; 118 }; 119 120 121 } // namespace lldb 122 123 #endif // LLDB_SBBlock_h_ 124