WIP
This commit is contained in:
@@ -156,6 +156,8 @@ pub trait Events:
|
||||
fn to_json_vec_u8(&self) -> Vec<u8>;
|
||||
fn to_cbor_vec_u8(&self) -> Vec<u8>;
|
||||
fn clear(&mut self);
|
||||
// TODO: can not name EventsDim0 from here, so use trait object for now. Anyway is a workaround.
|
||||
fn to_dim0_f32_for_binning(&self) -> Box<dyn Events>;
|
||||
}
|
||||
|
||||
impl WithLen for Box<dyn Events> {
|
||||
@@ -290,4 +292,8 @@ impl Events for Box<dyn Events> {
|
||||
fn clear(&mut self) {
|
||||
Events::clear(self.as_mut())
|
||||
}
|
||||
|
||||
fn to_dim0_f32_for_binning(&self) -> Box<dyn Events> {
|
||||
Events::to_dim0_f32_for_binning(self.as_ref())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,6 +117,30 @@ macro_rules! on_sitemty_data {
|
||||
}};
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! try_map_sitemty_data {
|
||||
($item:expr, $ex:expr) => {{
|
||||
use $crate::streamitem::RangeCompletableItem;
|
||||
use $crate::streamitem::StreamItem;
|
||||
match $item {
|
||||
Ok(x) => match x {
|
||||
StreamItem::DataItem(x) => match x {
|
||||
RangeCompletableItem::Data(x) => match $ex(x) {
|
||||
Ok(x) => Ok(StreamItem::DataItem(RangeCompletableItem::Data(x))),
|
||||
Err(e) => Err(e),
|
||||
},
|
||||
RangeCompletableItem::RangeComplete => {
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::RangeComplete))
|
||||
}
|
||||
},
|
||||
StreamItem::Log(x) => Ok(StreamItem::Log(x)),
|
||||
StreamItem::Stats(x) => Ok(StreamItem::Stats(x)),
|
||||
},
|
||||
Err(x) => Err(x),
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
pub fn sitem_data<X>(x: X) -> Sitemty<X> {
|
||||
Ok(StreamItem::DataItem(RangeCompletableItem::Data(x)))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user