llvm/lldb/include/lldb/Core/Section.h

//===-- Section.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_CORE_SECTION_H
#define LLDB_CORE_SECTION_H

#include "lldb/Core/ModuleChild.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/Flags.h"
#include "lldb/Utility/UserID.h"
#include "lldb/lldb-defines.h"
#include "lldb/lldb-enumerations.h"
#include "lldb/lldb-forward.h"
#include "lldb/lldb-types.h"
#include "llvm/Support/JSON.h"

#include <memory>
#include <vector>

#include <cstddef>
#include <cstdint>

namespace lldb_private {
class Address;
class DataExtractor;
class ObjectFile;
class Section;
class Target;

class SectionList {};

struct JSONSection {};

class Section : public std::enable_shared_from_this<Section>,
                public ModuleChild,
                public UserID,
                public Flags {};

} // namespace lldb_private

namespace llvm {
namespace json {

bool fromJSON(const llvm::json::Value &value,
              lldb_private::JSONSection &section, llvm::json::Path path);

bool fromJSON(const llvm::json::Value &value, lldb::SectionType &type,
              llvm::json::Path path);

} // namespace json
} // namespace llvm

#endif // LLDB_CORE_SECTION_H