#pragma once // // This file is distributed under the MIT License. See LICENSE.md for details. // #include #include #include "revng/Yield/Function.h" namespace detail { class DissassemblyHelperImpl; } namespace model { class Function; } namespace efa { class FunctionMetadata; } class LLVMDisassemblerInterface; class RawBinaryView; class DissassemblyHelper { private: std::unique_ptr Internal; public: explicit DissassemblyHelper(); ~DissassemblyHelper(); yield::Function disassemble(const model::Function &Function, const efa::FunctionMetadata &Metadata, const RawBinaryView &BinaryView, const model::Binary &Binary); private: LLVMDisassemblerInterface & getDisassemblerFor(MetaAddressType::Values AddressType); };