use crate::{Endian, Flip};
#[cfg(doc)] use crate::SE;
pub trait FlipUnsized {
fn flip_var_swapped(&mut self);
fn flip_var(&mut self, endian: Endian) {
if endian.need_swap() {
self.flip_var_swapped();
}
}
}
impl<T> FlipUnsized for [T]
where
T: Flip
{
fn flip_var_swapped(&mut self) {
for elem in self {
elem.flip_var_swapped();
}
}
}
impl FlipUnsized for ()
{
fn flip_var_swapped(&mut self) {
}
}
impl<T0> FlipUnsized for (T0,)
where
T0: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
}
}
impl<T0, T1> FlipUnsized for (T0, T1)
where
T0: Flip,
T1: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
self.1.flip_var_swapped();
}
}
impl<T0, T1, T2> FlipUnsized for (T0, T1, T2)
where
T0: Flip,
T1: Flip,
T2: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
self.1.flip_var_swapped();
self.2.flip_var_swapped();
}
}
impl<T0, T1, T2, T3> FlipUnsized for (T0, T1, T2, T3)
where
T0: Flip,
T1: Flip,
T2: Flip,
T3: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
self.1.flip_var_swapped();
self.2.flip_var_swapped();
self.3.flip_var_swapped();
}
}
impl<T0, T1, T2, T3, T4> FlipUnsized for (T0, T1, T2, T3, T4)
where
T0: Flip,
T1: Flip,
T2: Flip,
T3: Flip,
T4: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
self.1.flip_var_swapped();
self.2.flip_var_swapped();
self.3.flip_var_swapped();
self.4.flip_var_swapped();
}
}
impl<T0, T1, T2, T3, T4, T5> FlipUnsized for (T0, T1, T2, T3, T4, T5)
where
T0: Flip,
T1: Flip,
T2: Flip,
T3: Flip,
T4: Flip,
T5: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
self.1.flip_var_swapped();
self.2.flip_var_swapped();
self.3.flip_var_swapped();
self.4.flip_var_swapped();
self.5.flip_var_swapped();
}
}
impl<T0, T1, T2, T3, T4, T5, T6> FlipUnsized for (T0, T1, T2, T3, T4, T5, T6)
where
T0: Flip,
T1: Flip,
T2: Flip,
T3: Flip,
T4: Flip,
T5: Flip,
T6: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
self.1.flip_var_swapped();
self.2.flip_var_swapped();
self.3.flip_var_swapped();
self.4.flip_var_swapped();
self.5.flip_var_swapped();
self.6.flip_var_swapped();
}
}
impl<T0, T1, T2, T3, T4, T5, T6, T7> FlipUnsized
for (T0, T1, T2, T3, T4, T5, T6, T7)
where
T0: Flip,
T1: Flip,
T2: Flip,
T3: Flip,
T4: Flip,
T5: Flip,
T6: Flip,
T7: Flip,
{
fn flip_var_swapped(&mut self) {
self.0.flip_var_swapped();
self.1.flip_var_swapped();
self.2.flip_var_swapped();
self.3.flip_var_swapped();
self.4.flip_var_swapped();
self.5.flip_var_swapped();
self.6.flip_var_swapped();
self.7.flip_var_swapped();
}
}