diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:39:07 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-18 05:39:07 +0000 |
commit | af6b8ed095f88f1df2116cdc7a9d44872cfa6074 (patch) | |
tree | 1f2df671c1f8033d5ed83f056167a0911f8d2a57 /tests/rust/euclid.rs | |
parent | Initial commit. (diff) | |
download | rust-cbindgen-af6b8ed095f88f1df2116cdc7a9d44872cfa6074.tar.xz rust-cbindgen-af6b8ed095f88f1df2116cdc7a9d44872cfa6074.zip |
Adding upstream version 0.26.0.upstream/0.26.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | tests/rust/euclid.rs | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/rust/euclid.rs b/tests/rust/euclid.rs new file mode 100644 index 0000000..d3c2940 --- /dev/null +++ b/tests/rust/euclid.rs @@ -0,0 +1,81 @@ +struct UnknownUnit; +struct LayoutUnit; + +#[repr(C)] +struct TypedLength<T, Unit>(T, PhantomData<Unit>); + +#[repr(C)] +struct TypedSideOffsets2D<T, U> { + top: T, + right: T, + bottom: T, + left: T, + _phantom: PhantomData<U>, +} + +#[repr(C)] +struct TypedSize2D<T, U> { + width: T, + height: T, + _phantom: PhantomData<U>, +} + +#[repr(C)] +struct TypedPoint2D<T, U> { + x: T, + y: T, + _phantom: PhantomData<U>, +} + +#[repr(C)] +struct TypedRect<T, U> { + origin: TypedPoint2D<T, U>, + size: TypedSize2D<T, U>, + _phantom: PhantomData<U>, +} + +#[repr(C)] +struct TypedTransform2D<T, Src, Dst> { + m11: T, m12: T, + m21: T, m22: T, + m31: T, m32: T, + _phantom: PhantomData<U>, +} + +type Length<T> = TypedLength<T, UnknownUnit>; +type SideOffsets2D<T> = TypedSideOffsets2D<T, UnknownUnit>; +type Size2D<T> = TypedSize2D<T, UnknownUnit>; +type Point2D<T> = TypedPoint2D<T, UnknownUnit>; +type Rect<T> = TypedRect<T, UnknownUnit>; + +type LayoutLength = TypedLength<f32, LayoutUnit>; +type LayoutSideOffsets2D = TypedSideOffsets2D<f32, LayoutUnit>; +type LayoutSize2D = TypedSize2D<f32, LayoutUnit>; +type LayoutPoint2D = TypedPoint2D<f32, LayoutUnit>; +type LayoutRect = TypedRect<f32, LayoutUnit>; + +#[no_mangle] +pub extern "C" fn root( + length_a: TypedLength<f32, UnknownUnit>, + length_b: TypedLength<f32, LayoutUnit>, + length_c: Length<f32>, + length_d: LayoutLength, + side_offsets_a: TypedSideOffsets2D<f32, UnknownUnit>, + side_offsets_b: TypedSideOffsets2D<f32, LayoutUnit>, + side_offsets_c: SideOffsets2D<f32>, + side_offsets_d: LayoutSideOffsets2D, + size_a: TypedSize2D<f32, UnknownUnit>, + size_b: TypedSize2D<f32, LayoutUnit>, + size_c: Size2D<f32>, + size_d: LayoutSize2D, + point_a: TypedPoint2D<f32, UnknownUnit>, + point_b: TypedPoint2D<f32, LayoutUnit>, + point_c: Point2D<f32>, + point_d: LayoutPoint2D, + rect_a: TypedRect<f32, UnknownUnit>, + rect_b: TypedRect<f32, LayoutUnit>, + rect_c: Rect<f32>, + rect_d: LayoutRect, + transform_a: TypedTransform2D<f32, UnknownUnit, LayoutUnit>, + transform_b: TypedTransform2D<f32, LayoutUnit, UnknownUnit> +) { } |