From 8add1ddc690229c87f277033ece2d32c6146850b Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Tue, 25 Apr 2023 09:15:04 +0200 Subject: [PATCH] WIP --- items_0/src/overlap.rs | 13 ++++---- items_2/src/binsdim0.rs | 67 +++++++++-------------------------------- 2 files changed, 21 insertions(+), 59 deletions(-) diff --git a/items_0/src/overlap.rs b/items_0/src/overlap.rs index 24413db..7078feb 100644 --- a/items_0/src/overlap.rs +++ b/items_0/src/overlap.rs @@ -1,6 +1,7 @@ use netpod::log::*; use netpod::range::evrange::SeriesRange; +// TODO rename, no more deque involved pub trait HasTimestampDeque { fn timestamp_min(&self) -> Option; fn timestamp_max(&self) -> Option; @@ -96,14 +97,14 @@ macro_rules! impl_range_overlap_info_bins { { fn ends_before(&self, range: &SeriesRange) -> bool { if range.is_time() { - if let Some(&max) = self.ts2s.back() { + if let Some(max) = HasTimestampDeque::timestamp_max(self) { max <= range.beg_u64() } else { true } } else if range.is_pulse() { // TODO for the time being, the ts represent either ts or pulse - if let Some(&max) = self.ts2s.back() { + if let Some(max) = HasTimestampDeque::timestamp_max(self) { max <= range.beg_u64() } else { true @@ -116,13 +117,13 @@ macro_rules! impl_range_overlap_info_bins { fn ends_after(&self, range: &SeriesRange) -> bool { if range.is_time() { - if let Some(&max) = self.ts2s.back() { + if let Some(max) = HasTimestampDeque::timestamp_max(self) { max > range.end_u64() } else { true } } else if range.is_pulse() { - if let Some(&max) = self.ts2s.back() { + if let Some(max) = HasTimestampDeque::timestamp_max(self) { max > range.end_u64() } else { true @@ -135,13 +136,13 @@ macro_rules! impl_range_overlap_info_bins { fn starts_after(&self, range: &SeriesRange) -> bool { if range.is_time() { - if let Some(&min) = self.ts1s.front() { + if let Some(min) = HasTimestampDeque::timestamp_min(self) { min >= range.end_u64() } else { true } } else if range.is_pulse() { - if let Some(&min) = self.ts1s.front() { + if let Some(min) = HasTimestampDeque::timestamp_min(self) { min >= range.end_u64() } else { true diff --git a/items_2/src/binsdim0.rs b/items_2/src/binsdim0.rs index 195ac74..8b20909 100644 --- a/items_2/src/binsdim0.rs +++ b/items_2/src/binsdim0.rs @@ -12,6 +12,7 @@ use items_0::collect_s::CollectableType; use items_0::collect_s::Collected; use items_0::collect_s::CollectorType; use items_0::collect_s::ToJsonResult; +use items_0::overlap::HasTimestampDeque; use items_0::scalar_ops::ScalarOps; use items_0::timebin::TimeBinnable; use items_0::timebin::TimeBinned; @@ -191,66 +192,26 @@ impl WithLen for BinsDim0 { } } -impl RangeOverlapInfo for BinsDim0 { - fn ends_before(&self, range: &SeriesRange) -> bool { - if range.is_time() { - if let Some(&max) = self.ts2s.back() { - max <= range.beg_u64() - } else { - true - } - } else if range.is_pulse() { - // TODO for the time being, the ts represent either ts or pulse - if let Some(&max) = self.ts2s.back() { - max <= range.beg_u64() - } else { - true - } - } else { - error!("unexpected"); - true - } +impl HasTimestampDeque for BinsDim0 { + fn timestamp_min(&self) -> Option { + self.ts1s.front().map(|x| *x) } - fn ends_after(&self, range: &SeriesRange) -> bool { - if range.is_time() { - if let Some(&max) = self.ts2s.back() { - max > range.end_u64() - } else { - true - } - } else if range.is_pulse() { - if let Some(&max) = self.ts2s.back() { - max > range.end_u64() - } else { - true - } - } else { - error!("unexpected"); - false - } + fn timestamp_max(&self) -> Option { + self.ts2s.back().map(|x| *x) } - fn starts_after(&self, range: &SeriesRange) -> bool { - if range.is_time() { - if let Some(&min) = self.ts1s.front() { - min >= range.end_u64() - } else { - true - } - } else if range.is_pulse() { - if let Some(&min) = self.ts1s.front() { - min >= range.end_u64() - } else { - true - } - } else { - error!("unexpected"); - true - } + fn pulse_min(&self) -> Option { + todo!() + } + + fn pulse_max(&self) -> Option { + todo!() } } +items_0::impl_range_overlap_info_bins!(BinsDim0); + impl AppendEmptyBin for BinsDim0 { fn append_empty_bin(&mut self, ts1: u64, ts2: u64) { self.ts1s.push_back(ts1);