llvm/llvm/include/llvm/DebugInfo/DIContext.h

//===- DIContext.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 DIContext, an abstract data structure that holds
// debug information data.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_DEBUGINFO_DICONTEXT_H
#define LLVM_DEBUGINFO_DICONTEXT_H

#include "llvm/ADT/SmallVector.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/WithColor.h"
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <cstdint>
#include <memory>
#include <optional>
#include <string>
#include <tuple>
#include <utility>

namespace llvm {

/// A format-neutral container for source line information.
struct DILineInfo {};

DILineInfoTable;

/// A format-neutral container for inlined code description.
class DIInliningInfo {};

/// Container for description of a global variable.
struct DIGlobal {};

struct DILocal {};

/// A DINameKind is passed to name search methods to specify a
/// preference regarding the type of name resolution the caller wants.
enum class DINameKind {};

/// Controls which fields of DILineInfo container should be filled
/// with data.
struct DILineInfoSpecifier {};

/// This is just a helper to programmatically construct DIDumpType.
enum DIDumpTypeCounter {};
static_assert;

/// Selects which debug sections get dumped.
enum DIDumpType : unsigned {};

/// Container for dump options that control which debug information will be
/// dumped.
struct DIDumpOptions {};

class DIContext {};

/// An inferface for inquiring the load address of a loaded object file
/// to be used by the DIContext implementations when applying relocations
/// on the fly.
class LoadedObjectInfo {};

template <typename Derived, typename Base = LoadedObjectInfo>
struct LoadedObjectInfoHelper : Base {};

} // end namespace llvm

#endif // LLVM_DEBUGINFO_DICONTEXT_H