Automatically derive `TotalEq` whenever `Eq` is derived.

This commit is contained in:
Sébastien Crozet 2014-03-28 21:40:30 +01:00
parent 4435d2f7f4
commit 1edecbcee4
7 changed files with 23 additions and 23 deletions

View File

@ -15,7 +15,7 @@ use traits::structure::Cast;
mod metal; mod metal;
/// Matrix with dimensions unknown at compile-time. /// Matrix with dimensions unknown at compile-time.
#[deriving(Eq, Clone)] #[deriving(TotalEq, Eq, Clone)]
pub struct DMat<N> { pub struct DMat<N> {
priv nrows: uint, priv nrows: uint,
priv ncols: uint, priv ncols: uint,

View File

@ -15,7 +15,7 @@ use traits::structure::{Iterable, IterableMut};
mod metal; mod metal;
/// Vector with a dimension unknown at compile-time. /// Vector with a dimension unknown at compile-time.
#[deriving(Eq, Show, Clone)] #[deriving(TotalEq, Eq, Show, Clone)]
pub struct DVec<N> { pub struct DVec<N> {
/// Components of the vector. Contains as much elements as the vector dimension. /// Components of the vector. Contains as much elements as the vector dimension.
at: Vec<N> at: Vec<N>

View File

@ -20,7 +20,7 @@ mod iso_macros;
/// ///
/// This is the composition of a rotation followed by a translation. /// This is the composition of a rotation followed by a translation.
/// Isometries conserve angles and distances, hence do not allow shearing nor scaling. /// Isometries conserve angles and distances, hence do not allow shearing nor scaling.
#[deriving(Eq, Encodable, Decodable, Clone, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Show)]
pub struct Iso2<N> { pub struct Iso2<N> {
/// The rotation applicable by this isometry. /// The rotation applicable by this isometry.
rotation: Rot2<N>, rotation: Rot2<N>,
@ -32,7 +32,7 @@ pub struct Iso2<N> {
/// ///
/// This is the composition of a rotation followed by a translation. /// This is the composition of a rotation followed by a translation.
/// Isometries conserve angles and distances, hence do not allow shearing nor scaling. /// Isometries conserve angles and distances, hence do not allow shearing nor scaling.
#[deriving(Eq, Encodable, Decodable, Clone, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Show)]
pub struct Iso3<N> { pub struct Iso3<N> {
/// The rotation applicable by this isometry. /// The rotation applicable by this isometry.
rotation: Rot3<N>, rotation: Rot3<N>,
@ -43,7 +43,7 @@ pub struct Iso3<N> {
/// Four dimensional isometry. /// Four dimensional isometry.
/// ///
/// Isometries conserve angles and distances, hence do not allow shearing nor scaling. /// Isometries conserve angles and distances, hence do not allow shearing nor scaling.
#[deriving(Eq, Encodable, Decodable, Clone, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Show)]
pub struct Iso4<N> { pub struct Iso4<N> {
/// The rotation applicable by this isometry. /// The rotation applicable by this isometry.
rotation: Rot4<N>, rotation: Rot4<N>,

View File

@ -17,7 +17,7 @@ mod metal;
mod mat_macros; mod mat_macros;
/// Special identity matrix. All its operation are no-ops. /// Special identity matrix. All its operation are no-ops.
#[deriving(Eq, Decodable, Clone, Rand, Show)] #[deriving(TotalEq, Eq, Decodable, Clone, Rand, Show)]
pub struct Identity; pub struct Identity;
impl Identity { impl Identity {
@ -29,7 +29,7 @@ impl Identity {
} }
/// Square matrix of dimension 1. /// Square matrix of dimension 1.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Mat1<N> { pub struct Mat1<N> {
m11: N m11: N
} }
@ -121,7 +121,7 @@ from_homogeneous_impl!(Mat1, Mat2, 1, 2)
outer_impl!(Vec1, Mat1) outer_impl!(Vec1, Mat1)
/// Square matrix of dimension 2. /// Square matrix of dimension 2.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Mat2<N> { pub struct Mat2<N> {
m11: N, m21: N, m11: N, m21: N,
m12: N, m22: N m12: N, m22: N
@ -218,7 +218,7 @@ from_homogeneous_impl!(Mat2, Mat3, 2, 3)
outer_impl!(Vec2, Mat2) outer_impl!(Vec2, Mat2)
/// Square matrix of dimension 3. /// Square matrix of dimension 3.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Mat3<N> { pub struct Mat3<N> {
m11: N, m21: N, m31: N, m11: N, m21: N, m31: N,
m12: N, m22: N, m32: N, m12: N, m22: N, m32: N,
@ -329,7 +329,7 @@ from_homogeneous_impl!(Mat3, Mat4, 3, 4)
outer_impl!(Vec3, Mat3) outer_impl!(Vec3, Mat3)
/// Square matrix of dimension 4. /// Square matrix of dimension 4.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Mat4<N> { pub struct Mat4<N> {
m11: N, m21: N, m31: N, m41: N, m11: N, m21: N, m31: N, m41: N,
m12: N, m22: N, m32: N, m42: N, m12: N, m22: N, m32: N, m42: N,
@ -492,7 +492,7 @@ from_homogeneous_impl!(Mat4, Mat5, 4, 5)
outer_impl!(Vec4, Mat4) outer_impl!(Vec4, Mat4)
/// Square matrix of dimension 5. /// Square matrix of dimension 5.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Mat5<N> { pub struct Mat5<N> {
m11: N, m21: N, m31: N, m41: N, m51: N, m11: N, m21: N, m31: N, m41: N, m51: N,
m12: N, m22: N, m32: N, m42: N, m52: N, m12: N, m22: N, m32: N, m42: N, m52: N,
@ -671,7 +671,7 @@ from_homogeneous_impl!(Mat5, Mat6, 5, 6)
outer_impl!(Vec5, Mat5) outer_impl!(Vec5, Mat5)
/// Square matrix of dimension 6. /// Square matrix of dimension 6.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Mat6<N> { pub struct Mat6<N> {
m11: N, m21: N, m31: N, m41: N, m51: N, m61: N, m11: N, m21: N, m31: N, m41: N, m51: N, m61: N,
m12: N, m22: N, m32: N, m42: N, m52: N, m62: N, m12: N, m22: N, m32: N, m42: N, m52: N, m62: N,

View File

@ -15,7 +15,7 @@ mod metal;
mod rot_macros; mod rot_macros;
/// Two dimensional rotation matrix. /// Two dimensional rotation matrix.
#[deriving(Eq, Encodable, Decodable, Clone, Show, Hash)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Show, Hash)]
pub struct Rot2<N> { pub struct Rot2<N> {
priv submat: Mat2<N> priv submat: Mat2<N>
} }
@ -93,7 +93,7 @@ impl<N: Signed> AbsoluteRotate<Vec2<N>> for Rot2<N> {
* 3d rotation * 3d rotation
*/ */
/// Three dimensional rotation matrix. /// Three dimensional rotation matrix.
#[deriving(Eq, Encodable, Decodable, Clone, Show, Hash)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Show, Hash)]
pub struct Rot3<N> { pub struct Rot3<N> {
priv submat: Mat3<N> priv submat: Mat3<N>
} }
@ -264,7 +264,7 @@ impl<N: Signed> AbsoluteRotate<Vec3<N>> for Rot3<N> {
} }
/// Four dimensional rotation matrix. /// Four dimensional rotation matrix.
#[deriving(Eq, Encodable, Decodable, Clone, Show, Hash)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Show, Hash)]
pub struct Rot4<N> { pub struct Rot4<N> {
priv submat: Mat4<N> priv submat: Mat4<N>
} }

View File

@ -16,11 +16,11 @@ mod metal;
mod vec_macros; mod vec_macros;
/// Vector of dimension 0. /// Vector of dimension 0.
#[deriving(Eq, Decodable, Clone, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Decodable, Clone, Rand, Zero, Show)]
pub struct Vec0<N>; pub struct Vec0<N>;
/// Vector of dimension 1. /// Vector of dimension 1.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Vec1<N> { pub struct Vec1<N> {
/// First component of the vector. /// First component of the vector.
x: N x: N
@ -116,7 +116,7 @@ rotate_impl!(Vec1)
transform_impl!(Vec1) transform_impl!(Vec1)
/// Vector of dimension 2. /// Vector of dimension 2.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Vec2<N> { pub struct Vec2<N> {
/// First component of the vector. /// First component of the vector.
x: N, x: N,
@ -214,7 +214,7 @@ rotate_impl!(Vec2)
transform_impl!(Vec2) transform_impl!(Vec2)
/// Vector of dimension 3. /// Vector of dimension 3.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Vec3<N> { pub struct Vec3<N> {
/// First component of the vector. /// First component of the vector.
x: N, x: N,
@ -318,7 +318,7 @@ transform_impl!(Vec3)
/// Vector of dimension 4. /// Vector of dimension 4.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Vec4<N> { pub struct Vec4<N> {
/// First component of the vector. /// First component of the vector.
x: N, x: N,
@ -420,7 +420,7 @@ rotate_impl!(Vec4)
transform_impl!(Vec4) transform_impl!(Vec4)
/// Vector of dimension 5. /// Vector of dimension 5.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Vec5<N> { pub struct Vec5<N> {
/// First component of the vector. /// First component of the vector.
x: N, x: N,
@ -524,7 +524,7 @@ rotate_impl!(Vec5)
transform_impl!(Vec5) transform_impl!(Vec5)
/// Vector of dimension 6. /// Vector of dimension 6.
#[deriving(Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Hash, Rand, Zero, Show)]
pub struct Vec6<N> { pub struct Vec6<N> {
/// First component of the vector. /// First component of the vector.
x: N, x: N,

View File

@ -4,7 +4,7 @@ use std::cmp;
/// Result of a partial ordering. /// Result of a partial ordering.
#[deriving(Eq, Encodable, Decodable, Clone, Show)] #[deriving(TotalEq, Eq, Encodable, Decodable, Clone, Show)]
pub enum PartialOrdering { pub enum PartialOrdering {
/// Result of a strict comparison. /// Result of a strict comparison.
Less, Less,