Skip to main content

cel_euclid/
adam.rs

1//! Optional Adam registration uses the same concrete aliases as CEL.
2//!
3//! Every alias in Euclid 0.22.14 implements `Default`: coordinates, sizes,
4//! bounds and angles default to zero; transforms default to identity.
5
6use crate::{Angle, Box2D, Point2D, Rect, Size2D, Transform2D, Vector2D};
7
8/// Registers the seven exact geometry names with their Euclid defaults.
9///
10/// Registers zero points, vectors, sizes, rectangles, boxes and angles, and an
11/// identity transform. Existing entries under these names follow
12/// [`adam_lang::TypeRegistry::register`]'s replacement semantics.
13///
14/// - Complexity: O(1) amortized time and space for seven registrations.
15///
16/// # Examples
17/// ```
18/// let mut registry = adam_lang::TypeRegistry::new();
19/// cel_euclid::register_adam_types(&mut registry);
20/// assert!(registry.get("Point2D").unwrap().default_fn.is_some());
21/// ```
22pub fn register_adam_types(registry: &mut adam_lang::TypeRegistry) {
23    registry.register::<Point2D>("Point2D");
24    registry.register::<Vector2D>("Vector2D");
25    registry.register::<Size2D>("Size2D");
26    registry.register::<Rect>("Rect");
27    registry.register::<Box2D>("Box2D");
28    registry.register::<Angle>("Angle");
29    registry.register::<Transform2D>("Transform2D");
30}