From f452df18749b13f9d83a6ea679361d195b4a9ae1 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sat, 14 Jan 2023 18:04:16 +0100 Subject: seeking and broken writing --- ebml/src/size.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 ebml/src/size.rs (limited to 'ebml/src/size.rs') diff --git a/ebml/src/size.rs b/ebml/src/size.rs new file mode 100644 index 0000000..06d6ba8 --- /dev/null +++ b/ebml/src/size.rs @@ -0,0 +1,29 @@ + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum EbmlSize { + Exact(usize), + Unknown, +} +impl EbmlSize { + pub fn from_vint((value, len): (u64, usize)) -> EbmlSize { + if value == ((1 << (7 * len)) - 1) { + Self::Unknown + } else { + Self::Exact(value as usize) + } + } + pub fn some(self) -> Option { + match self { + EbmlSize::Exact(s) => Some(s), + EbmlSize::Unknown => None, + } + } +} +impl Into for EbmlSize { + fn into(self) -> usize { + match self { + EbmlSize::Exact(s) => s, + EbmlSize::Unknown => panic!("unknown size, where it should have been known"), + } + } +} -- cgit v1.2.3-70-g09d2