use crate::prelude::Rinex;
mod nav;
use nav::Streamer as NavStreamer;
#[cfg(doc)]
use ublox::Parser;
enum TypeDependentStreamer<'a> {
NAV(NavStreamer<'a>),
}
impl<'a> TypeDependentStreamer<'a> {
pub fn new(rinex: &'a Rinex) -> Self {
Self::NAV(NavStreamer::new(rinex))
}
}
impl Rinex {
pub fn rnx2ubx<'a>(&'a self) -> RNX2UBX<'a> {
RNX2UBX {
streamer: TypeDependentStreamer::new(self),
}
}
}
pub struct RNX2UBX<'a> {
streamer: TypeDependentStreamer<'a>,
}
impl<'a> std::io::Read for RNX2UBX<'a> {
fn read(&mut self, buffer: &mut [u8]) -> std::io::Result<usize> {
match &mut self.streamer {
TypeDependentStreamer::NAV(ref mut streamer) => streamer.read(buffer),
}
}
}