mod builder;
mod record;
use std::io::{self, Write};
pub use self::builder::Builder;
use self::record::{write_record_3, write_record_4, write_record_5, write_record_6};
use crate::Record;
pub struct Writer<const N: usize, W> {
inner: W,
}
impl<const N: usize, W> Writer<N, W> {
pub fn get_ref(&self) -> &W {
&self.inner
}
pub fn get_mut(&mut self) -> &mut W {
&mut self.inner
}
pub fn into_inner(self) -> W {
self.inner
}
}
impl<const N: usize, W> Writer<N, W>
where
W: Write,
{
pub fn new(inner: W) -> Self {
Self { inner }
}
}
impl<W> Writer<3, W>
where
W: Write,
{
pub fn write_record(&mut self, record: &Record<3>) -> io::Result<()> {
self.write_feature_record(record)
}
pub fn write_feature_record<R>(&mut self, record: &R) -> io::Result<()>
where
R: crate::feature::Record<3>,
{
write_record_3(&mut self.inner, record)
}
}
impl<W> Writer<4, W>
where
W: Write,
{
pub fn write_record(&mut self, record: &Record<4>) -> io::Result<()> {
self.write_feature_record(record)
}
pub fn write_feature_record<R>(&mut self, record: &R) -> io::Result<()>
where
R: crate::feature::Record<4>,
{
write_record_4(&mut self.inner, record)
}
}
impl<W> Writer<5, W>
where
W: Write,
{
pub fn write_record(&mut self, record: &Record<5>) -> io::Result<()> {
self.write_feature_record(record)
}
pub fn write_feature_record<R>(&mut self, record: &R) -> io::Result<()>
where
R: crate::feature::Record<5>,
{
write_record_5(&mut self.inner, record)
}
}
impl<W> Writer<6, W>
where
W: Write,
{
pub fn write_record(&mut self, record: &Record<6>) -> io::Result<()> {
self.write_feature_record(record)
}
pub fn write_feature_record<R>(&mut self, record: &R) -> io::Result<()>
where
R: crate::feature::Record<6>,
{
write_record_6(&mut self.inner, record)
}
}