1#[macro_export]
2macro_rules! define_cid_map {
3 ($($index: literal -> $ty: expr),* $(,)?) => {{
4 let mut map = ::std::collections::HashMap::new();
5 let mut elements: std::vec::Vec<::std::boxed::Box<dyn Component>> = ::std::vec::Vec::new();
6 $(
7 $ty.set_index($index);
8 elements.push(::std::boxed::Box::new($ty));
9 map.insert($index, elements.len() - 1);
10 )*
11 $crate::ui::CIDMAP.set(
12 map
13 ).map_err(|_| $crate::errors::AppError::ErrorSettingGlobal("CTIDMAP"))?;
14 Result::<std::vec::Vec<::std::boxed::Box<dyn Component>>, AppError>::Ok(elements)
15 }}
16}