Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:42:41

0001 //===-- SBBlock.h -----------------------------------------------*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 
0009 #ifndef LLDB_API_SBBLOCK_H
0010 #define LLDB_API_SBBLOCK_H
0011 
0012 #include "lldb/API/SBAddressRange.h"
0013 #include "lldb/API/SBAddressRangeList.h"
0014 #include "lldb/API/SBDefines.h"
0015 #include "lldb/API/SBFrame.h"
0016 #include "lldb/API/SBTarget.h"
0017 #include "lldb/API/SBValueList.h"
0018 
0019 namespace lldb {
0020 
0021 class LLDB_API SBBlock {
0022 public:
0023   SBBlock();
0024 
0025   SBBlock(const lldb::SBBlock &rhs);
0026 
0027   ~SBBlock();
0028 
0029   const lldb::SBBlock &operator=(const lldb::SBBlock &rhs);
0030 
0031   bool IsInlined() const;
0032 
0033   explicit operator bool() const;
0034 
0035   bool IsValid() const;
0036 
0037   const char *GetInlinedName() const;
0038 
0039   lldb::SBFileSpec GetInlinedCallSiteFile() const;
0040 
0041   uint32_t GetInlinedCallSiteLine() const;
0042 
0043   uint32_t GetInlinedCallSiteColumn() const;
0044 
0045   lldb::SBBlock GetParent();
0046 
0047   lldb::SBBlock GetSibling();
0048 
0049   lldb::SBBlock GetFirstChild();
0050 
0051   uint32_t GetNumRanges();
0052 
0053   lldb::SBAddress GetRangeStartAddress(uint32_t idx);
0054 
0055   lldb::SBAddress GetRangeEndAddress(uint32_t idx);
0056 
0057   lldb::SBAddressRangeList GetRanges();
0058 
0059   uint32_t GetRangeIndexForBlockAddress(lldb::SBAddress block_addr);
0060 
0061   lldb::SBValueList GetVariables(lldb::SBFrame &frame, bool arguments,
0062                                  bool locals, bool statics,
0063                                  lldb::DynamicValueType use_dynamic);
0064 
0065   lldb::SBValueList GetVariables(lldb::SBTarget &target, bool arguments,
0066                                  bool locals, bool statics);
0067   /// Get the inlined block that contains this block.
0068   ///
0069   /// \return
0070   ///     If this block is inlined, it will return this block, else
0071   ///     parent blocks will be searched to see if any contain this
0072   ///     block and are themselves inlined. An invalid SBBlock will
0073   ///     be returned if this block nor any parent blocks are inlined
0074   ///     function blocks.
0075   lldb::SBBlock GetContainingInlinedBlock();
0076 
0077   bool GetDescription(lldb::SBStream &description);
0078 
0079 private:
0080   friend class SBAddress;
0081   friend class SBFrame;
0082   friend class SBFunction;
0083   friend class SBSymbolContext;
0084 
0085   lldb_private::Block *GetPtr();
0086 
0087   void SetPtr(lldb_private::Block *lldb_object_ptr);
0088 
0089   SBBlock(lldb_private::Block *lldb_object_ptr);
0090 
0091   void AppendVariables(bool can_create, bool get_parent_variables,
0092                        lldb_private::VariableList *var_list);
0093 
0094   lldb_private::Block *m_opaque_ptr = nullptr;
0095 };
0096 
0097 } // namespace lldb
0098 
0099 #endif // LLDB_API_SBBLOCK_H