//===-- Block.h -------------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLDB_SYMBOL_BLOCK_H #define LLDB_SYMBOL_BLOCK_H #include "lldb/Core/AddressRange.h" #include "lldb/Symbol/CompilerType.h" #include "lldb/Symbol/LineEntry.h" #include "lldb/Symbol/SymbolContext.h" #include "lldb/Symbol/SymbolContextScope.h" #include "lldb/Utility/RangeMap.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/UserID.h" #include "lldb/lldb-private.h" #include <vector> namespace lldb_private { /// \class Block Block.h "lldb/Symbol/Block.h" /// A class that describes a single lexical block. /// /// A Function object owns a BlockList object which owns one or more /// Block objects. The BlockList object contains a section offset address /// range, and Block objects contain one or more ranges which are offsets into /// that range. Blocks are can have discontiguous ranges within the BlockList /// address range, and each block can contain child blocks each with their own /// sets of ranges. /// /// Each block has a variable list that represents local, argument, and static /// variables that are scoped to the block. /// /// Inlined functions are represented by attaching a InlineFunctionInfo shared /// pointer object to a block. Inlined functions are represented as named /// blocks. class Block : public UserID, public SymbolContextScope { … }; } // namespace lldb_private #endif // LLDB_SYMBOL_BLOCK_H