#[cxx::bridge]
pub mod ffi {
unsafe extern "C++" {
include!("LIEF/rust/ObjC/Class.hpp");
type ObjC_DeclOpt = crate::objc::decl_opt::ffi::ObjC_DeclOpt;
type ObjC_IVar = crate::objc::i_var::ffi::ObjC_IVar;
type ObjC_Method = crate::objc::method::ffi::ObjC_Method;
type ObjC_Property = crate::objc::property::ffi::ObjC_Property;
type ObjC_Protocol = crate::objc::protocol::ffi::ObjC_Protocol;
type ObjC_Class;
fn to_decl_with_opt(self: &ObjC_Class, opt: &ObjC_DeclOpt) -> UniquePtr<CxxString>;
fn name(self: &ObjC_Class) -> UniquePtr<CxxString>;
fn demangled_name(self: &ObjC_Class) -> UniquePtr<CxxString>;
fn is_meta(self: &ObjC_Class) -> bool;
fn super_class(self: &ObjC_Class) -> UniquePtr<ObjC_Class>;
fn super_name(self: &ObjC_Class) -> UniquePtr<CxxString>;
fn demangled_super_name(self: &ObjC_Class) -> UniquePtr<CxxString>;
fn methods(self: &ObjC_Class) -> UniquePtr<ObjC_Class_it_methods>;
fn protocols(self: &ObjC_Class) -> UniquePtr<ObjC_Class_it_protocols>;
fn properties(self: &ObjC_Class) -> UniquePtr<ObjC_Class_it_properties>;
fn ivars(self: &ObjC_Class) -> UniquePtr<ObjC_Class_it_ivars>;
fn to_decl(self: &ObjC_Class) -> UniquePtr<CxxString>;
type ObjC_Class_it_ivars;
fn next(self: Pin<&mut ObjC_Class_it_ivars>) -> UniquePtr<ObjC_IVar>;
fn size(self: &ObjC_Class_it_ivars) -> u64;
type ObjC_Class_it_methods;
fn next(self: Pin<&mut ObjC_Class_it_methods>) -> UniquePtr<ObjC_Method>;
fn size(self: &ObjC_Class_it_methods) -> u64;
type ObjC_Class_it_properties;
fn next(self: Pin<&mut ObjC_Class_it_properties>) -> UniquePtr<ObjC_Property>;
fn size(self: &ObjC_Class_it_properties) -> u64;
type ObjC_Class_it_protocols;
fn next(self: Pin<&mut ObjC_Class_it_protocols>) -> UniquePtr<ObjC_Protocol>;
fn size(self: &ObjC_Class_it_protocols) -> u64;
}
impl UniquePtr<ObjC_Class> {}
impl UniquePtr<ObjC_Class_it_ivars> {}
impl UniquePtr<ObjC_Class_it_methods> {}
impl UniquePtr<ObjC_Class_it_properties> {}
impl UniquePtr<ObjC_Class_it_protocols> {}
}