mod builder;
mod header;
mod num;
pub mod record;
use std::io::{self, Write};
pub use self::builder::Builder;
use self::header::write_header;
pub(crate) use self::record::write_record;
use crate::{Header, Record};
pub struct Writer<W> {
inner: W,
}
impl<W> Writer<W>
where
W: Write,
{
pub fn new(inner: W) -> Self {
Self { inner }
}
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
}
pub fn write_header(&mut self, header: &Header) -> io::Result<()> {
write_header(&mut self.inner, header)
}
pub fn write_record(&mut self, header: &Header, record: &Record) -> io::Result<()> {
write_record(&mut self.inner, header, record)
}
}
impl<W> crate::alignment::io::Write for Writer<W>
where
W: Write,
{
fn write_alignment_header(&mut self, header: &Header) -> io::Result<()> {
self.write_header(header)
}
fn write_alignment_record(
&mut self,
header: &Header,
record: &dyn crate::alignment::Record,
) -> io::Result<()> {
write_record(&mut self.inner, header, record)
}
fn finish(&mut self, _: &Header) -> io::Result<()> {
Ok(())
}
}