llvm/llvm/include/llvm/DebugInfo/LogicalView/Core/LVScope.h

//===-- LVScope.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
//
//===----------------------------------------------------------------------===//
//
// This file defines the LVScope class, which is used to describe a debug
// information scope.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSCOPE_H
#define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSCOPE_H

#include "llvm/DebugInfo/LogicalView/Core/LVElement.h"
#include "llvm/DebugInfo/LogicalView/Core/LVLocation.h"
#include "llvm/DebugInfo/LogicalView/Core/LVSort.h"
#include "llvm/Object/ObjectFile.h"
#include <list>
#include <map>
#include <set>

namespace llvm {
namespace logicalview {

// Name address, Code size.
LVNameInfo;
LVPublicNames;
LVPublicAddresses;

class LVRange;

enum class LVScopeKind {};
LVScopeKindSet;
LVScopeDispatch;
LVScopeRequest;

LVOffsetElementMap;
LVOffsetLinesMap;
LVOffsetLocationsMap;
LVOffsetSymbolMap;
LVTagOffsetsMap;

// Class to represent a DWARF Scope.
class LVScope : public LVElement {};

// Class to represent a DWARF Union/Structure/Class.
class LVScopeAggregate final : public LVScope {};

// Class to represent a DWARF Template alias.
class LVScopeAlias final : public LVScope {};

// Class to represent a DWARF array (DW_TAG_array_type).
class LVScopeArray final : public LVScope {};

// Class to represent a DWARF Compilation Unit (CU).
class LVScopeCompileUnit final : public LVScope {};

// Class to represent a DWARF enumerator (DW_TAG_enumeration_type).
class LVScopeEnumeration final : public LVScope {};

// Class to represent a DWARF formal parameter pack
// (DW_TAG_GNU_formal_parameter_pack).
class LVScopeFormalPack final : public LVScope {};

// Class to represent a DWARF Function.
class LVScopeFunction : public LVScope {};

// Class to represent a DWARF inlined function.
class LVScopeFunctionInlined final : public LVScopeFunction {};

// Class to represent a DWARF subroutine type.
class LVScopeFunctionType final : public LVScopeFunction {};

// Class to represent a DWARF Namespace.
class LVScopeNamespace final : public LVScope {};

// Class to represent the binary file being analyzed.
class LVScopeRoot final : public LVScope {};

// Class to represent a DWARF template parameter pack
// (DW_TAG_GNU_template_parameter_pack).
class LVScopeTemplatePack final : public LVScope {};

} // end namespace logicalview
} // end namespace llvm

#endif // LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSCOPE_H