use core::mem;
use super::MsgSendFn;
use crate::ffi;
use crate::runtime::Imp;
use crate::{Encode, Encoding};
unsafe impl<T: Encode> MsgSendFn for T {
const MSG_SEND: Imp = {
if let Encoding::LongDouble = T::ENCODING {
ffi::objc_msgSend_fpret
} else if let Encoding::LongDoubleComplex = T::ENCODING {
ffi::objc_msgSend_fp2ret
} else if mem::size_of::<T>() <= 16 {
ffi::objc_msgSend
} else {
ffi::objc_msgSend_stret
}
};
const MSG_SEND_SUPER: Imp = {
if mem::size_of::<T>() <= 16 {
ffi::objc_msgSendSuper
} else {
ffi::objc_msgSendSuper_stret
}
};
}