#[cxx::bridge]
pub mod ffi {
unsafe extern "C++" {
include!("LIEF/rust/Stream.hpp");
type COFF_Binary = crate::coff::binary::ffi::COFF_Binary;
type ELF_Binary = crate::elf::binary::ffi::ELF_Binary;
type MachO_FatBinary = crate::macho::fat_binary::ffi::MachO_FatBinary;
type PE_Binary = crate::pe::binary::ffi::PE_Binary;
type RustStream;
#[Self = "RustStream"]
unsafe fn from_rust(buffer: *mut u8, size: usize) -> UniquePtr<RustStream>;
fn is_elf(self: &RustStream) -> bool;
fn is_pe(self: &RustStream) -> bool;
fn is_macho(self: &RustStream) -> bool;
fn is_coff(self: &RustStream) -> bool;
fn as_elf(self: Pin<&mut RustStream>) -> UniquePtr<ELF_Binary>;
fn as_macho(self: Pin<&mut RustStream>) -> UniquePtr<MachO_FatBinary>;
fn as_pe(self: Pin<&mut RustStream>) -> UniquePtr<PE_Binary>;
fn as_coff(self: Pin<&mut RustStream>) -> UniquePtr<COFF_Binary>;
}
}