current commit
260929.11 · deps: update lief to 1.0.0
/* Copyright 2022 - 2026 R. Thomas
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

// NOLINTBEGIN
#include "LIEF/PDB/DebugInfo.hpp"
#include "LIEF/PDB/CompilationUnit.hpp"
#include "LIEF/PDB/PublicSymbol.hpp"
#include "LIEF/PDB/Function.hpp"
#include "LIEF/PDB/BuildMetadata.hpp"
#include "LIEF/PDB/Type.hpp"
#include "LIEF/PDB/utils.hpp"

#include "LIEF/PDB/types/Simple.hpp"
#include "LIEF/PDB/types/Array.hpp"
#include "LIEF/PDB/types/BitField.hpp"
#include "LIEF/PDB/types/ClassLike.hpp"
#include "LIEF/PDB/types/Enum.hpp"
#include "LIEF/PDB/types/Function.hpp"
#include "LIEF/PDB/types/Modifier.hpp"
#include "LIEF/PDB/types/Pointer.hpp"
#include "LIEF/PDB/types/Union.hpp"
#include "LIEF/PDB/types/Attribute.hpp"

#include "logging.hpp"
#include "messages.hpp"
#include "internal_utils.hpp"

namespace LIEF::details {
class DebugInfo {};
}

namespace LIEF::pdb {
namespace details {
class CompilationUnit {};
class CompilationUnitIt {};

class PublicSymbol {};
class PublicSymbolIt {};

class Function {};
class FunctionIt {};

class Type {};
class TypeIt {};

class BuildMetadata {};
}

namespace types::details {
class Attribute {};
class AttributeIt {};

class Method {};
class MethodIt {};

class EnumEntry {};
}

// ----------------------------------------------------------------------------
// PDB/DebugInfo.hpp
// ----------------------------------------------------------------------------
DebugInfo::compilation_units_it DebugInfo::compilation_units() const {
  return make_empty_iterator<CompilationUnit>();
}

DebugInfo::public_symbols_it DebugInfo::public_symbols() const {
  return make_empty_iterator<PublicSymbol>();
}

DebugInfo::types_it DebugInfo::types() const {
  return make_empty_iterator<Type>();
}

std::unique_ptr<Type> DebugInfo::find_type(const std::string& /*name*/) const {
  return nullptr;
}

std::unique_ptr<Type> DebugInfo::find_type(uint32_t /*index*/) const {
  return nullptr;
}

uint32_t DebugInfo::age() const {
  return 0;
}

std::string DebugInfo::guid() const {
  return "";
}

std::string DebugInfo::to_string() const {
  return "";
}

std::unique_ptr<PublicSymbol>
    DebugInfo::find_public_symbol(const std::string&) const {
  return nullptr;
}

std::unique_ptr<DebugInfo> DebugInfo::from_file(const std::string&) {
  LIEF_ERR(DEBUG_FMT_NOT_SUPPORTED);
  return nullptr;
}

optional<uint64_t>
    DebugInfo::find_function_address(const std::string& /*name*/) const {
  return nullopt();
}

// ----------------------------------------------------------------------------
// PDB/Utils.hpp
// ----------------------------------------------------------------------------
bool is_pdb(const std::string& /*path*/) {
  LIEF_ERR(DEBUG_FMT_NOT_SUPPORTED);
  return false;
}

// ----------------------------------------------------------------------------
// PDB/CompilationUnit.hpp
// ----------------------------------------------------------------------------
CompilationUnit::CompilationUnit(std::unique_ptr<details::CompilationUnit> impl) :
  impl_(std::move(impl)) {}

CompilationUnit::~CompilationUnit() = default;


std::string CompilationUnit::module_name() const {
  return "";
}

std::string CompilationUnit::object_filename() const {
  return "";
}

CompilationUnit::sources_iterator CompilationUnit::sources() const {
  static const std::vector<std::string> empty;
  return make_range(empty.begin(), empty.end());
}

CompilationUnit::function_iterator CompilationUnit::functions() const {
  return make_empty_iterator<Function>();
}

std::unique_ptr<BuildMetadata> CompilationUnit::build_metadata() const {
  return nullptr;
}

CompilationUnit::Iterator::Iterator() :
  impl_(nullptr) {}

CompilationUnit::Iterator::Iterator(std::unique_ptr<details::CompilationUnitIt>) :
  impl_(nullptr) {}

CompilationUnit::Iterator::Iterator(const Iterator&) :
  impl_(nullptr) {}

CompilationUnit::Iterator& CompilationUnit::Iterator::operator=(const Iterator&) {
  return *this;
}

CompilationUnit::Iterator::Iterator(Iterator&&) noexcept = default;
CompilationUnit::Iterator&
    CompilationUnit::Iterator::operator=(Iterator&&) noexcept = default;

CompilationUnit::Iterator::~Iterator() = default;

bool operator==(const CompilationUnit::Iterator&,
                const CompilationUnit::Iterator&) {
  return true;
}

CompilationUnit::Iterator& CompilationUnit::Iterator::operator++() {
  return *this;
}

CompilationUnit::Iterator& CompilationUnit::Iterator::operator--() {
  return *this;
}

void CompilationUnit::Iterator::load() const {}

const CompilationUnit& CompilationUnit::Iterator::operator*() const {
  return *cached_;
}

const CompilationUnit* CompilationUnit::Iterator::operator->() const {
  return nullptr;
}

std::unique_ptr<CompilationUnit> CompilationUnit::Iterator::yield() {
  return nullptr;
}

std::string CompilationUnit::to_string() const {
  return "";
}

std::string CompilationUnit::to_decl(const DeclOpt& /*opt*/) const {
  return "";
}

// ----------------------------------------------------------------------------
// PDB/PublicSymbol.hpp
// ----------------------------------------------------------------------------
PublicSymbol::PublicSymbol(std::unique_ptr<details::PublicSymbol> impl) :
  impl_(std::move(impl)) {}

PublicSymbol::~PublicSymbol() = default;


PublicSymbol::Iterator::Iterator() :
  impl_(nullptr) {}

PublicSymbol::Iterator::Iterator(std::unique_ptr<details::PublicSymbolIt>) :
  impl_(nullptr) {}

PublicSymbol::Iterator::Iterator(const Iterator&) :
  impl_(nullptr) {}

PublicSymbol::Iterator& PublicSymbol::Iterator::operator=(const Iterator&) {
  return *this;
}

PublicSymbol::Iterator::Iterator(Iterator&&) noexcept = default;
PublicSymbol::Iterator&
    PublicSymbol::Iterator::operator=(Iterator&&) noexcept = default;

PublicSymbol::Iterator::~Iterator() = default;

bool operator==(const PublicSymbol::Iterator&, const PublicSymbol::Iterator&) {
  return true;
}

PublicSymbol::Iterator& PublicSymbol::Iterator::operator++() {
  return *this;
}

void PublicSymbol::Iterator::load() const {}

const PublicSymbol& PublicSymbol::Iterator::operator*() const {
  return *cached_;
}

const PublicSymbol* PublicSymbol::Iterator::operator->() const {
  return nullptr;
}

std::unique_ptr<PublicSymbol> PublicSymbol::Iterator::yield() {
  return nullptr;
}

std::string PublicSymbol::name() const {
  return "";
}

std::string PublicSymbol::section_name() const {
  return "";
}

uint32_t PublicSymbol::RVA() const {
  return 0;
}

std::string PublicSymbol::demangled_name() const {
  return "";
}

std::string PublicSymbol::to_string() const {
  return "";
}

// ----------------------------------------------------------------------------
// PDB/Function.hpp
// ----------------------------------------------------------------------------
Function::Function(std::unique_ptr<details::Function> impl) :
  impl_(std::move(impl)) {}

Function::~Function() = default;


Function::Iterator::Iterator() :
  impl_(nullptr) {}

Function::Iterator::Iterator(std::unique_ptr<details::FunctionIt>) :
  impl_(nullptr) {}

Function::Iterator::Iterator(const Iterator&) :
  impl_(nullptr) {}

Function::Iterator& Function::Iterator::operator=(const Iterator&) {
  return *this;
}

Function::Iterator::Iterator(Iterator&&) noexcept = default;
Function::Iterator& Function::Iterator::operator=(Iterator&&) noexcept = default;

Function::Iterator::~Iterator() = default;

bool operator==(const Function::Iterator&, const Function::Iterator&) {
  return true;
}

Function::Iterator& Function::Iterator::operator++() {
  return *this;
}

void Function::Iterator::load() const {}

const Function& Function::Iterator::operator*() const {
  return *cached_;
}

const Function* Function::Iterator::operator->() const {
  return nullptr;
}

std::unique_ptr<Function> Function::Iterator::yield() {
  return nullptr;
}

std::string Function::name() const {
  return "";
}

uint32_t Function::RVA() const {
  return 0;
}

uint32_t Function::code_size() const {
  return 0;
}

std::string Function::section_name() const {
  return "";
}

debug_location_t Function::debug_location() const {
  return {};
}

std::string Function::to_string() const {
  return "";
}

std::string Function::to_decl(const DeclOpt& /*opt*/) const {
  return "";
}

// ----------------------------------------------------------------------------
// PDB/Type.hpp
// ----------------------------------------------------------------------------
std::unique_ptr<Type> Type::create(std::unique_ptr<details::Type> /* impl*/) {
  return nullptr;
}

Type::KIND Type::kind() const {
  return Type::KIND::UNKNOWN;
}

optional<std::string> Type::name() const {
  return nullopt();
}

optional<uint64_t> Type::size() const {
  return nullopt();
}

std::string Type::to_decl(const DeclOpt& /*opt*/) const {
  return "";
}

Type::~Type() = default;


Type::Type(std::unique_ptr<details::Type> impl) :
  impl_(std::move(impl)) {}

Type::Iterator::Iterator() :
  impl_(nullptr) {}

Type::Iterator::Iterator(std::unique_ptr<details::TypeIt>) :
  impl_(nullptr) {}

Type::Iterator::Iterator(const Iterator&) :
  impl_(nullptr) {}

Type::Iterator& Type::Iterator::operator=(const Iterator&) {
  return *this;
}

Type::Iterator::Iterator(Iterator&&) noexcept = default;
Type::Iterator& Type::Iterator::operator=(Iterator&&) noexcept = default;

Type::Iterator::~Iterator() = default;

bool operator==(const Type::Iterator&, const Type::Iterator&) {
  return true;
}

Type::Iterator& Type::Iterator::operator++() {
  return *this;
}

void Type::Iterator::load() const {}

const Type& Type::Iterator::operator*() const {
  return *cached_;
}

const Type* Type::Iterator::operator->() const {
  return nullptr;
}

std::unique_ptr<Type> Type::Iterator::yield() {
  return nullptr;
}

namespace types {

// ----------------------------------------------------------------------------
// PDB/types/Simple.hpp
// ----------------------------------------------------------------------------
Simple::TYPES Simple::type() const {
  return TYPES::UNKNOWN;
}

Simple::MODES Simple::modes() const {
  return MODES::DIRECT;
}

Simple::~Simple() = default;

// ----------------------------------------------------------------------------
// PDB/types/Array.hpp
// ----------------------------------------------------------------------------
size_t Array::numberof_elements() const {
  return 0;
}

std::unique_ptr<Type> Array::element_type() const {
  return nullptr;
}

std::unique_ptr<Type> Array::index_type() const {
  return nullptr;
}

Array::~Array() = default;

// ----------------------------------------------------------------------------
// PDB/types/BitField.hpp
// ----------------------------------------------------------------------------
BitField::~BitField() = default;

// ----------------------------------------------------------------------------
// PDB/types/ClassLike.hpp
// ----------------------------------------------------------------------------
ClassLike::attributes_iterator ClassLike::attributes() const {
  return make_empty_iterator<Attribute>();
}

ClassLike::methods_iterator ClassLike::methods() const {
  return make_empty_iterator<Method>();
}

std::string ClassLike::unique_name() const {
  return "";
}

ClassLike::~ClassLike() = default;

Class::~Class() = default;
Structure::~Structure() = default;
Interface::~Interface() = default;

// ----------------------------------------------------------------------------
// PDB/types/Enum.hpp
// ----------------------------------------------------------------------------
Enum::Entry::Entry(Entry&& other) noexcept = default;
Enum::Entry& Enum::Entry::operator=(Entry&& other) noexcept = default;

Enum::Entry::~Entry() = default;

Enum::Entry::Entry(std::unique_ptr<details::EnumEntry> impl) :
  impl_(std::move(impl)) {}

std::string Enum::Entry::name() const {
  return "";
}

int64_t Enum::Entry::value() const {
  return 0;
}

std::string Enum::unique_name() const {
  return "";
}

std::vector<Enum::Entry> Enum::entries() const {
  return {};
}

const Type* Enum::underlying_type() const {
  return nullptr;
}

optional<Enum::Entry> Enum::find_entry(int64_t /*value*/) const {
  return nullopt();
}

Enum::~Enum() = default;

// ----------------------------------------------------------------------------
// PDB/types/Function.hpp
// ----------------------------------------------------------------------------
std::unique_ptr<Type> Function::return_type() const {
  return nullptr;
}

Function::parameters_t Function::parameters() const {
  return {};
}

Function::~Function() = default;

// ----------------------------------------------------------------------------
// PDB/types/Modifier.hpp
// ----------------------------------------------------------------------------
std::unique_ptr<Type> Modifier::underlying_type() const {
  return nullptr;
}

Modifier::~Modifier() = default;

// ----------------------------------------------------------------------------
// PDB/types/Pointer.hpp
// ----------------------------------------------------------------------------
std::unique_ptr<Type> Pointer::underlying_type() const {
  return nullptr;
}

Pointer::~Pointer() = default;

// ----------------------------------------------------------------------------
// PDB/types/Union.hpp
// ----------------------------------------------------------------------------
Union::~Union() = default;

// ----------------------------------------------------------------------------
// PDB/types/Attribute.hpp
// ----------------------------------------------------------------------------
Attribute::Attribute(std::unique_ptr<details::Attribute> impl) :
  impl_(std::move(impl)) {}

Attribute::Iterator::Iterator() :
  impl_(nullptr) {}

Attribute::Iterator::Iterator(std::unique_ptr<details::AttributeIt>) :
  impl_(nullptr) {}

Attribute::Iterator::Iterator(const Iterator&) :
  impl_(nullptr) {}

Attribute::Iterator& Attribute::Iterator::operator=(const Iterator&) {
  return *this;
}

Attribute::Iterator::Iterator(Iterator&&) noexcept = default;
Attribute::Iterator& Attribute::Iterator::operator=(Iterator&&) noexcept = default;

Attribute::Iterator::~Iterator() = default;

bool operator==(const Attribute::Iterator&, const Attribute::Iterator&) {
  return true;
}

Attribute::Iterator& Attribute::Iterator::operator++() {
  return *this;
}

void Attribute::Iterator::load() const {}

const Attribute& Attribute::Iterator::operator*() const {
  return *cached_;
}

const Attribute* Attribute::Iterator::operator->() const {
  return nullptr;
}

std::unique_ptr<Attribute> Attribute::Iterator::yield() {
  return nullptr;
}

std::string Attribute::name() const {
  return "";
}

std::unique_ptr<Type> Attribute::type() const {
  return nullptr;
}

uint64_t Attribute::field_offset() const {
  return 0;
}

Attribute::~Attribute() = default;

// ----------------------------------------------------------------------------
// PDB/types/Method.hpp
// ----------------------------------------------------------------------------
Method::Method(std::unique_ptr<details::Method> impl) :
  impl_(std::move(impl)) {}

Method::Iterator::Iterator() :
  impl_(nullptr) {}

Method::Iterator::Iterator(std::unique_ptr<details::MethodIt>) :
  impl_(nullptr) {}

Method::Iterator::Iterator(const Iterator&) :
  impl_(nullptr) {}

Method::Iterator& Method::Iterator::operator=(const Iterator&) {
  return *this;
}

Method::Iterator::Iterator(Iterator&&) noexcept = default;
Method::Iterator& Method::Iterator::operator=(Iterator&&) noexcept = default;

Method::Iterator::~Iterator() = default;

bool operator==(const Method::Iterator&, const Method::Iterator&) {
  return true;
}

Method::Iterator& Method::Iterator::operator++() {
  return *this;
}

void Method::Iterator::load() const {}

const Method& Method::Iterator::operator*() const {
  return *cached_;
}

const Method* Method::Iterator::operator->() const {
  return nullptr;
}

std::unique_ptr<Method> Method::Iterator::yield() {
  return nullptr;
}

std::string Method::name() const {
  return "";
}

Method::TYPE Method::type() const {
  return TYPE::VANILLA;
}

Method::ACCESS Method::access() const {
  return ACCESS::NONE;
}

Method::~Method() = default;

}

// ----------------------------------------------------------------------------
// PDB/BuildMetadata.hpp
// ----------------------------------------------------------------------------
BuildMetadata::BuildMetadata(std::unique_ptr<details::BuildMetadata> /*impl*/) :
  impl_(nullptr) {}

BuildMetadata::~BuildMetadata() = default;

BuildMetadata::version_t BuildMetadata::frontend_version() const {
  return {};
}

BuildMetadata::version_t BuildMetadata::backend_version() const {
  return {};
}

std::string BuildMetadata::version() const {
  return "";
}

std::string BuildMetadata::to_string() const {
  return "";
}

BuildMetadata::LANG BuildMetadata::language() const {
  return LANG::UNKNOWN;
}

BuildMetadata::CPU BuildMetadata::target_cpu() const {
  return CPU::UNKNOWN;
}

optional<BuildMetadata::build_info_t> BuildMetadata::build_info() const {
  return nullopt();
}

std::vector<std::string> BuildMetadata::env() const {
  return {};
}

const char* to_string(BuildMetadata::CPU) {
  return "";
}

const char* to_string(BuildMetadata::LANG) {
  return "";
}

// NOLINTEND

}