From 9f9449ddd58eb07d20e14e7a75c7387c9cc17ebe Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 16 Jan 2023 10:57:40 +0100 Subject: write more code --- ebml/src/unflatten.rs | 64 --------------------------------------------------- 1 file changed, 64 deletions(-) delete mode 100644 ebml/src/unflatten.rs (limited to 'ebml/src/unflatten.rs') diff --git a/ebml/src/unflatten.rs b/ebml/src/unflatten.rs deleted file mode 100644 index e1dd0a2..0000000 --- a/ebml/src/unflatten.rs +++ /dev/null @@ -1,64 +0,0 @@ -use crate::{matroska::MatroskaTag, Master}; -use anyhow::Result; - -pub struct Unflat<'a> { - pub item: MatroskaTag, - pub children: Option>, -} - -pub struct Unflatten<'a> { - inner: &'a mut dyn Iterator>, - stop: bool, - end: Option, -} - -impl<'a> Unflatten<'a> { - pub fn new(inner: &'a mut dyn Iterator>) -> Self { - Self { - inner, - stop: false, - end: None, - } - } - - pub fn next(&mut self) -> Option> { - if self.stop { - return None; - } - match self.inner.next() { - None => None, - Some(Err(e)) => Some(Err(e)), - Some(Ok(item)) => { - let master = MatroskaTag::is_master(item.id()).unwrap(); - if Some(&item) == self.end.as_ref() { - self.stop = true; - None - } else { - Some(Ok(Unflat { - children: if master { - let end = - MatroskaTag::construct_master(item.id(), Master::End).unwrap(); - if end == item { - return None; - } - Some(Unflatten { - inner: self.inner, - stop: false, - end: Some(end), - }) - } else { - None - }, - item, - })) - } - } - } - } -} - -impl Drop for Unflatten<'_> { - fn drop(&mut self) { - while let Some(_) = self.next() {} - } -} -- cgit v1.2.3-70-g09d2