use crate::rcont::list::ReaderList;
use crate::riofs::file::{RootFileReader, RootFileStreamerInfoContext};
use crate::rtree::tree::tio_features::TioFeatures;
use crate::{rbase, StateCallBack};
#[derive(Default)]
pub struct Clusters {
pub(crate) ranges: Vec<i64>,
pub(crate) sizes: Vec<i64>,
}
pub struct Tree<B> {
pub(crate) rvers: i16,
pub(crate) named: rbase::Named,
pub(crate) attline: rbase::AttLine,
pub(crate) attfill: rbase::AttFill,
pub(crate) attmarker: rbase::AttMarker,
pub(crate) entries: i64,
pub(crate) tot_bytes: i64,
pub(crate) zip_bytes: i64,
pub(crate) saved_bytes: i64,
pub(crate) flushed_bytes: i64,
pub(crate) weight: f64,
pub(crate) timer_interval: i32,
pub(crate) scan_field: i32,
pub(crate) update: i32,
pub(crate) default_entry_offset_len: i32,
pub(crate) max_entries: i64,
pub(crate) max_entry_loop: i64,
pub(crate) max_virtual_size: i64,
pub(crate) auto_save: i64,
pub(crate) auto_flush: i64,
pub(crate) estimate: i64,
pub(crate) clusters: Clusters,
pub(crate) iobits: TioFeatures,
pub(crate) branches: Vec<B>,
pub(crate) reader: Option<RootFileReader>,
pub(crate) sinfos: Option<RootFileStreamerInfoContext>,
pub(crate) user_infos: Option<ReaderList>,
pub(crate) callbacks: Vec<Box<dyn FnMut(StateCallBack)>>,
}
impl<B> Tree<B> {
pub fn tot_bytes(&self) -> i64 {
self.tot_bytes
}
pub fn title(&self) -> &str {
self.named.title.as_str()
}
}
impl<B> Default for Tree<B> {
fn default() -> Self {
Self {
rvers: 0,
named: rbase::Named::default(),
attline: rbase::AttLine::default(),
attfill: rbase::AttFill::default(),
attmarker: rbase::AttMarker::default(),
entries: 0,
tot_bytes: 0,
zip_bytes: 0,
saved_bytes: 0,
flushed_bytes: 0,
weight: 1.0,
timer_interval: 0,
scan_field: 0,
update: 0,
default_entry_offset_len: 0,
max_entries: 0,
max_entry_loop: 0,
max_virtual_size: 0,
auto_save: 0,
auto_flush: 0,
estimate: 0,
clusters: Clusters::default(),
iobits: TioFeatures::default(),
branches: Vec::new(),
reader: None,
sinfos: None,
user_infos: None,
callbacks: Vec::new(),
}
}
}