WIP
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
use netpod::log::*;
|
use netpod::log::*;
|
||||||
use netpod::range::evrange::SeriesRange;
|
use netpod::range::evrange::SeriesRange;
|
||||||
|
|
||||||
|
// TODO rename, no more deque involved
|
||||||
pub trait HasTimestampDeque {
|
pub trait HasTimestampDeque {
|
||||||
fn timestamp_min(&self) -> Option<u64>;
|
fn timestamp_min(&self) -> Option<u64>;
|
||||||
fn timestamp_max(&self) -> Option<u64>;
|
fn timestamp_max(&self) -> Option<u64>;
|
||||||
@@ -96,14 +97,14 @@ macro_rules! impl_range_overlap_info_bins {
|
|||||||
{
|
{
|
||||||
fn ends_before(&self, range: &SeriesRange) -> bool {
|
fn ends_before(&self, range: &SeriesRange) -> bool {
|
||||||
if range.is_time() {
|
if range.is_time() {
|
||||||
if let Some(&max) = self.ts2s.back() {
|
if let Some(max) = HasTimestampDeque::timestamp_max(self) {
|
||||||
max <= range.beg_u64()
|
max <= range.beg_u64()
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
} else if range.is_pulse() {
|
} else if range.is_pulse() {
|
||||||
// TODO for the time being, the ts represent either ts or 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()
|
max <= range.beg_u64()
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
@@ -116,13 +117,13 @@ macro_rules! impl_range_overlap_info_bins {
|
|||||||
|
|
||||||
fn ends_after(&self, range: &SeriesRange) -> bool {
|
fn ends_after(&self, range: &SeriesRange) -> bool {
|
||||||
if range.is_time() {
|
if range.is_time() {
|
||||||
if let Some(&max) = self.ts2s.back() {
|
if let Some(max) = HasTimestampDeque::timestamp_max(self) {
|
||||||
max > range.end_u64()
|
max > range.end_u64()
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
} else if range.is_pulse() {
|
} else if range.is_pulse() {
|
||||||
if let Some(&max) = self.ts2s.back() {
|
if let Some(max) = HasTimestampDeque::timestamp_max(self) {
|
||||||
max > range.end_u64()
|
max > range.end_u64()
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
@@ -135,13 +136,13 @@ macro_rules! impl_range_overlap_info_bins {
|
|||||||
|
|
||||||
fn starts_after(&self, range: &SeriesRange) -> bool {
|
fn starts_after(&self, range: &SeriesRange) -> bool {
|
||||||
if range.is_time() {
|
if range.is_time() {
|
||||||
if let Some(&min) = self.ts1s.front() {
|
if let Some(min) = HasTimestampDeque::timestamp_min(self) {
|
||||||
min >= range.end_u64()
|
min >= range.end_u64()
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
} else if range.is_pulse() {
|
} else if range.is_pulse() {
|
||||||
if let Some(&min) = self.ts1s.front() {
|
if let Some(min) = HasTimestampDeque::timestamp_min(self) {
|
||||||
min >= range.end_u64()
|
min >= range.end_u64()
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
|
|||||||
+14
-53
@@ -12,6 +12,7 @@ use items_0::collect_s::CollectableType;
|
|||||||
use items_0::collect_s::Collected;
|
use items_0::collect_s::Collected;
|
||||||
use items_0::collect_s::CollectorType;
|
use items_0::collect_s::CollectorType;
|
||||||
use items_0::collect_s::ToJsonResult;
|
use items_0::collect_s::ToJsonResult;
|
||||||
|
use items_0::overlap::HasTimestampDeque;
|
||||||
use items_0::scalar_ops::ScalarOps;
|
use items_0::scalar_ops::ScalarOps;
|
||||||
use items_0::timebin::TimeBinnable;
|
use items_0::timebin::TimeBinnable;
|
||||||
use items_0::timebin::TimeBinned;
|
use items_0::timebin::TimeBinned;
|
||||||
@@ -191,66 +192,26 @@ impl<NTY> WithLen for BinsDim0<NTY> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<NTY> RangeOverlapInfo for BinsDim0<NTY> {
|
impl<STY: ScalarOps> HasTimestampDeque for BinsDim0<STY> {
|
||||||
fn ends_before(&self, range: &SeriesRange) -> bool {
|
fn timestamp_min(&self) -> Option<u64> {
|
||||||
if range.is_time() {
|
self.ts1s.front().map(|x| *x)
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn ends_after(&self, range: &SeriesRange) -> bool {
|
fn timestamp_max(&self) -> Option<u64> {
|
||||||
if range.is_time() {
|
self.ts2s.back().map(|x| *x)
|
||||||
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 starts_after(&self, range: &SeriesRange) -> bool {
|
fn pulse_min(&self) -> Option<u64> {
|
||||||
if range.is_time() {
|
todo!()
|
||||||
if let Some(&min) = self.ts1s.front() {
|
}
|
||||||
min >= range.end_u64()
|
|
||||||
} else {
|
fn pulse_max(&self) -> Option<u64> {
|
||||||
true
|
todo!()
|
||||||
}
|
|
||||||
} else if range.is_pulse() {
|
|
||||||
if let Some(&min) = self.ts1s.front() {
|
|
||||||
min >= range.end_u64()
|
|
||||||
} else {
|
|
||||||
true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
error!("unexpected");
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
items_0::impl_range_overlap_info_bins!(BinsDim0);
|
||||||
|
|
||||||
impl<NTY: ScalarOps> AppendEmptyBin for BinsDim0<NTY> {
|
impl<NTY: ScalarOps> AppendEmptyBin for BinsDim0<NTY> {
|
||||||
fn append_empty_bin(&mut self, ts1: u64, ts2: u64) {
|
fn append_empty_bin(&mut self, ts1: u64, ts2: u64) {
|
||||||
self.ts1s.push_back(ts1);
|
self.ts1s.push_back(ts1);
|
||||||
|
|||||||
Reference in New Issue
Block a user