macro_rules! linear_ids { ($ids:ident, $id:ident, $ty:ty $(,)?) => { #[derive(Debug)] pub struct $ids { next: jay_utils::numcell::NumCell<$ty>, } impl Default for $ids { fn default() -> Self { Self { next: jay_utils::numcell::NumCell::new(1), } } } impl $ids { pub fn next(&self) -> $id { $id(self.next.fetch_add(1)) } } #[derive(Copy, Clone, Debug, Eq, PartialEq, Hash, Ord, PartialOrd)] pub struct $id($ty); impl $id { #[allow(dead_code)] pub fn raw(&self) -> $ty { self.0 } #[allow(dead_code)] pub fn from_raw(id: $ty) -> Self { Self(id) } } impl std::fmt::Display for $id { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(&self.0, f) } } }; } pub mod cmm_description; pub mod cmm_eotf; pub mod cmm_luminance; pub mod cmm_manager; pub mod cmm_primaries; pub mod cmm_render_intent; #[cfg(test)] mod cmm_tests; pub mod cmm_transform;