macro_rules! group_methods {
() => {
fn group<G: Eq + std::hash::Hash + Clone + 'static>(
&self,
group_selector_key: impl Fn(&T) -> G + 'static,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::GroupChangeSet<T, K, G>>> {
crate::cache::internal::group_on(self.change_sets(), std::rc::Rc::new(group_selector_key), None)
}
fn group_with<G: Eq + std::hash::Hash + Clone + 'static>(
&self,
group_selector_key: impl Fn(&T) -> G + 'static,
regrouper: std::rc::Rc<dyn ferroui_system::IObservable<()>>,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::GroupChangeSet<T, K, G>>> {
crate::cache::internal::group_on(self.change_sets(), std::rc::Rc::new(group_selector_key), Some(regrouper))
}
fn group_with_result_groups<G: Eq + std::hash::Hash + Clone + 'static, C: crate::cache::IChangeSet<G, G>>(
&self,
group_selector: impl Fn(&T) -> G + 'static,
result_group_source: std::rc::Rc<dyn ferroui_system::IObservable<C>>,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::GroupChangeSet<T, K, G>>> {
crate::cache::internal::specified_grouper(self.change_sets(), std::rc::Rc::new(group_selector), result_group_source)
}
fn group_dynamic<G: Eq + std::hash::Hash + Clone + 'static>(
&self,
group_selector_key_observable: std::rc::Rc<dyn ferroui_system::IObservable<std::rc::Rc<dyn Fn(&T) -> G>>>,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::GroupChangeSet<T, K, G>>> {
crate::cache::internal::group_on_dynamic(self.change_sets(), crate::cache::internal::adapt_group_selector(group_selector_key_observable), None)
}
fn group_dynamic_with<G: Eq + std::hash::Hash + Clone + 'static>(
&self,
group_selector_key_observable: std::rc::Rc<dyn ferroui_system::IObservable<std::rc::Rc<dyn Fn(&T) -> G>>>,
regrouper: std::rc::Rc<dyn ferroui_system::IObservable<()>>,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::GroupChangeSet<T, K, G>>> {
crate::cache::internal::group_on_dynamic(self.change_sets(), crate::cache::internal::adapt_group_selector(group_selector_key_observable), Some(regrouper))
}
fn group_dynamic_with_key<G: Eq + std::hash::Hash + Clone + 'static>(
&self,
group_selector_key_observable: std::rc::Rc<dyn ferroui_system::IObservable<std::rc::Rc<dyn Fn(&T, &K) -> G>>>,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::GroupChangeSet<T, K, G>>> {
crate::cache::internal::group_on_dynamic(self.change_sets(), group_selector_key_observable, None)
}
fn group_dynamic_with_key_with<G: Eq + std::hash::Hash + Clone + 'static>(
&self,
group_selector_key_observable: std::rc::Rc<dyn ferroui_system::IObservable<std::rc::Rc<dyn Fn(&T, &K) -> G>>>,
regrouper: std::rc::Rc<dyn ferroui_system::IObservable<()>>,
) -> std::rc::Rc<dyn ferroui_system::IObservable<crate::cache::GroupChangeSet<T, K, G>>> {
crate::cache::internal::group_on_dynamic(self.change_sets(), group_selector_key_observable, Some(regrouper))
}
};
}
pub(crate) use group_methods;