124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- SBBlock.h -----------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef LLDB_SBBlock_h_ 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define LLDB_SBBlock_h_ 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 135f81547fd786584b10999c087528b323b5945896Eli Friedman#include "lldb/API/SBDefines.h" 147dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton#include "lldb/API/SBFrame.h" 157dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton#include "lldb/API/SBTarget.h" 167dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton#include "lldb/API/SBValueList.h" 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb { 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass SBBlock 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBlock (); 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 26538eb82a89a68dbc57251915080bd5152b333978Greg Clayton SBBlock (const lldb::SBBlock &rhs); 27538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~SBBlock (); 2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 30538eb82a89a68dbc57251915080bd5152b333978Greg Clayton const lldb::SBBlock & 31538eb82a89a68dbc57251915080bd5152b333978Greg Clayton operator = (const lldb::SBBlock &rhs); 32538eb82a89a68dbc57251915080bd5152b333978Greg Clayton 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner bool 3469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton IsInlined () const; 3569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 3669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton bool 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner IsValid () const; 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3969aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton const char * 4069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton GetInlinedName () const; 4169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 4269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton lldb::SBFileSpec 4369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton GetInlinedCallSiteFile () const; 4469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 4569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton uint32_t 4669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton GetInlinedCallSiteLine () const; 4769aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 4869aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton uint32_t 4969aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton GetInlinedCallSiteColumn () const; 5069aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 5169aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton lldb::SBBlock 5269aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton GetParent (); 5369aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 5469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton lldb::SBBlock 5569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton GetSibling (); 5669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 5769aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton lldb::SBBlock 5869aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton GetFirstChild (); 5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 6023b8abbe214c252028f6e09f79169529c846409dGreg Clayton uint32_t 6123b8abbe214c252028f6e09f79169529c846409dGreg Clayton GetNumRanges (); 6223b8abbe214c252028f6e09f79169529c846409dGreg Clayton 6323b8abbe214c252028f6e09f79169529c846409dGreg Clayton lldb::SBAddress 6423b8abbe214c252028f6e09f79169529c846409dGreg Clayton GetRangeStartAddress (uint32_t idx); 6523b8abbe214c252028f6e09f79169529c846409dGreg Clayton 6623b8abbe214c252028f6e09f79169529c846409dGreg Clayton lldb::SBAddress 6723b8abbe214c252028f6e09f79169529c846409dGreg Clayton GetRangeEndAddress (uint32_t idx); 6823b8abbe214c252028f6e09f79169529c846409dGreg Clayton 6923b8abbe214c252028f6e09f79169529c846409dGreg Clayton uint32_t 7023b8abbe214c252028f6e09f79169529c846409dGreg Clayton GetRangeIndexForBlockAddress (lldb::SBAddress block_addr); 717dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton 727dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton lldb::SBValueList 737dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton GetVariables (lldb::SBFrame& frame, 747dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton bool arguments, 757dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton bool locals, 767dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton bool statics, 777dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton lldb::DynamicValueType use_dynamic); 7823b8abbe214c252028f6e09f79169529c846409dGreg Clayton 797dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton lldb::SBValueList 807dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton GetVariables (lldb::SBTarget& target, 817dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton bool arguments, 827dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton bool locals, 837dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton bool statics); 8423b8abbe214c252028f6e09f79169529c846409dGreg Clayton //------------------------------------------------------------------ 8523b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// Get the inlined block that contains this block. 8623b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// 8723b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// @return 8823b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// If this block is inlined, it will return this block, else 8923b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// parent blocks will be searched to see if any contain this 9023b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// block and are themselves inlined. An invalid SBBlock will 9123b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// be returned if this block nor any parent blocks are inlined 9223b8abbe214c252028f6e09f79169529c846409dGreg Clayton /// function blocks. 9323b8abbe214c252028f6e09f79169529c846409dGreg Clayton //------------------------------------------------------------------ 9423b8abbe214c252028f6e09f79169529c846409dGreg Clayton lldb::SBBlock 9523b8abbe214c252028f6e09f79169529c846409dGreg Clayton GetContainingInlinedBlock (); 9623b8abbe214c252028f6e09f79169529c846409dGreg Clayton 9798f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice bool 9898f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice GetDescription (lldb::SBStream &description); 9998f930f429160f9777f626c3ac6aa609f4e965d2Caroline Tice 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate: 101c51ffbf896e398ada5f7e89b2fa5aec6f2224f09Greg Clayton friend class SBAddress; 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBFrame; 1037dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton friend class SBFunction; 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner friend class SBSymbolContext; 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10623b8abbe214c252028f6e09f79169529c846409dGreg Clayton lldb_private::Block * 1077dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton GetPtr (); 108a66ba46379fe41036d870975c56ccc2319cb6618Greg Clayton 109dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton void 1107dd5c51fbab8384b18f20ecc125f9a1bb3c9bcb2Greg Clayton SetPtr (lldb_private::Block *lldb_object_ptr); 111dd62d729cf960051615a74c1e67e2e41ec789fd7Greg Clayton 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner SBBlock (lldb_private::Block *lldb_object_ptr); 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 11469aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton void 11569aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton AppendVariables (bool can_create, bool get_parent_variables, lldb_private::VariableList *var_list); 11669aa5d9a7620a183cdc4da12cc87ea82e2ffcbf9Greg Clayton 11763094e0bb161580564954dee512955c1c79d3476Greg Clayton lldb_private::Block *m_opaque_ptr; 11824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 11924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb 12224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 12324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // LLDB_SBBlock_h_ 124