struct UnknownUnit; struct LayoutUnit; #[repr(C)] struct TypedLength(T, PhantomData); #[repr(C)] struct TypedSideOffsets2D { top: T, right: T, bottom: T, left: T, _phantom: PhantomData, } #[repr(C)] struct TypedSize2D { width: T, height: T, _phantom: PhantomData, } #[repr(C)] struct TypedPoint2D { x: T, y: T, _phantom: PhantomData, } #[repr(C)] struct TypedRect { origin: TypedPoint2D, size: TypedSize2D, _phantom: PhantomData, } #[repr(C)] struct TypedTransform2D { m11: T, m12: T, m21: T, m22: T, m31: T, m32: T, _phantom: PhantomData, } type Length = TypedLength; type SideOffsets2D = TypedSideOffsets2D; type Size2D = TypedSize2D; type Point2D = TypedPoint2D; type Rect = TypedRect; type LayoutLength = TypedLength; type LayoutSideOffsets2D = TypedSideOffsets2D; type LayoutSize2D = TypedSize2D; type LayoutPoint2D = TypedPoint2D; type LayoutRect = TypedRect; #[no_mangle] pub extern "C" fn root( length_a: TypedLength, length_b: TypedLength, length_c: Length, length_d: LayoutLength, side_offsets_a: TypedSideOffsets2D, side_offsets_b: TypedSideOffsets2D, side_offsets_c: SideOffsets2D, side_offsets_d: LayoutSideOffsets2D, size_a: TypedSize2D, size_b: TypedSize2D, size_c: Size2D, size_d: LayoutSize2D, point_a: TypedPoint2D, point_b: TypedPoint2D, point_c: Point2D, point_d: LayoutPoint2D, rect_a: TypedRect, rect_b: TypedRect, rect_c: Rect, rect_d: LayoutRect, transform_a: TypedTransform2D, transform_b: TypedTransform2D ) { }