use std::io;
use crate::{Endian, write::Writable};
pub trait WriteExt: io::Write {
fn write_ty<W: Writable>(&mut self, value: &W, endian: Endian) -> io::Result<()>;
fn write_ty_be<W: Writable>(&mut self, value: &W) -> io::Result<()>;
fn write_ty_le<W: Writable>(&mut self, value: &W) -> io::Result<()>;
fn write_ty_ne<W: Writable>(&mut self, value: &W) -> io::Result<()>;
}
impl<T: io::Write> WriteExt for T {
#[inline(always)]
fn write_ty<W: Writable>(&mut self, value: &W, endian: Endian) -> io::Result<()> {
value.write(self, endian)
}
#[inline(always)]
fn write_ty_be<W: Writable>(&mut self, value: &W) -> io::Result<()> {
value.write(self, Endian::Big)
}
#[inline(always)]
fn write_ty_le<W: Writable>(&mut self, value: &W) -> io::Result<()> {
value.write(self, Endian::Little)
}
#[inline(always)]
fn write_ty_ne<W: Writable>(&mut self, value: &W) -> io::Result<()> {
value.write(self, Endian::Native)
}
}