//===-- SBBlock.h -----------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLDB_SBBlock_h_ #define LLDB_SBBlock_h_ #include "lldb/API/SBDefines.h" #include "lldb/API/SBFrame.h" #include "lldb/API/SBTarget.h" #include "lldb/API/SBValueList.h" namespace lldb { class SBBlock { public: SBBlock (); SBBlock (const lldb::SBBlock &rhs); ~SBBlock (); const lldb::SBBlock & operator = (const lldb::SBBlock &rhs); bool IsInlined () const; bool IsValid () const; const char * GetInlinedName () const; lldb::SBFileSpec GetInlinedCallSiteFile () const; uint32_t GetInlinedCallSiteLine () const; uint32_t GetInlinedCallSiteColumn () const; lldb::SBBlock GetParent (); lldb::SBBlock GetSibling (); lldb::SBBlock GetFirstChild (); uint32_t GetNumRanges (); lldb::SBAddress GetRangeStartAddress (uint32_t idx); lldb::SBAddress GetRangeEndAddress (uint32_t idx); uint32_t GetRangeIndexForBlockAddress (lldb::SBAddress block_addr); lldb::SBValueList GetVariables (lldb::SBFrame& frame, bool arguments, bool locals, bool statics, lldb::DynamicValueType use_dynamic); lldb::SBValueList GetVariables (lldb::SBTarget& target, bool arguments, bool locals, bool statics); //------------------------------------------------------------------ /// Get the inlined block that contains this block. /// /// @return /// If this block is inlined, it will return this block, else /// parent blocks will be searched to see if any contain this /// block and are themselves inlined. An invalid SBBlock will /// be returned if this block nor any parent blocks are inlined /// function blocks. //------------------------------------------------------------------ lldb::SBBlock GetContainingInlinedBlock (); bool GetDescription (lldb::SBStream &description); private: friend class SBAddress; friend class SBFrame; friend class SBFunction; friend class SBSymbolContext; lldb_private::Block * GetPtr (); void SetPtr (lldb_private::Block *lldb_object_ptr); SBBlock (lldb_private::Block *lldb_object_ptr); void AppendVariables (bool can_create, bool get_parent_variables, lldb_private::VariableList *var_list); lldb_private::Block *m_opaque_ptr; }; } // namespace lldb #endif // LLDB_SBBlock_h_