Use Clone instead of Copy.
This commit is contained in:
parent
6f081b70b8
commit
831f561441
|
@ -15,7 +15,7 @@ use vec::Vec1;
|
||||||
use mat::{Mat2, Mat3};
|
use mat::{Mat2, Mat3};
|
||||||
use vec::Vec3;
|
use vec::Vec3;
|
||||||
|
|
||||||
#[deriving(Eq, ToStr)]
|
#[deriving(Eq, ToStr, Clone)]
|
||||||
pub struct Rotmat<M>
|
pub struct Rotmat<M>
|
||||||
{ priv submat: M }
|
{ priv submat: M }
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ use traits::rlmul::{RMul, LMul};
|
||||||
use traits::homogeneous::{ToHomogeneous, FromHomogeneous};
|
use traits::homogeneous::{ToHomogeneous, FromHomogeneous};
|
||||||
use traits::column::Column;
|
use traits::column::Column;
|
||||||
|
|
||||||
#[deriving(Eq, ToStr)]
|
#[deriving(Eq, ToStr, Clone)]
|
||||||
pub struct Transform<M, V>
|
pub struct Transform<M, V>
|
||||||
{
|
{
|
||||||
priv submat : M,
|
priv submat : M,
|
||||||
|
|
|
@ -25,6 +25,7 @@ pub struct Vec1<N>
|
||||||
{ at: [N, ..1] }
|
{ at: [N, ..1] }
|
||||||
|
|
||||||
clone_impl!(Vec1)
|
clone_impl!(Vec1)
|
||||||
|
deep_clone_impl!(Vec1)
|
||||||
new_impl!(Vec1, 1)
|
new_impl!(Vec1, 1)
|
||||||
new_repeat_impl!(Vec1, elem, [elem])
|
new_repeat_impl!(Vec1, elem, [elem])
|
||||||
indexable_impl!(Vec1)
|
indexable_impl!(Vec1)
|
||||||
|
@ -60,6 +61,7 @@ pub struct Vec2<N>
|
||||||
{ at: [N, ..2] }
|
{ at: [N, ..2] }
|
||||||
|
|
||||||
clone_impl!(Vec2)
|
clone_impl!(Vec2)
|
||||||
|
deep_clone_impl!(Vec2)
|
||||||
new_impl!(Vec2, 2)
|
new_impl!(Vec2, 2)
|
||||||
new_repeat_impl!(Vec2, elem, [elem | elem])
|
new_repeat_impl!(Vec2, elem, [elem | elem])
|
||||||
indexable_impl!(Vec2)
|
indexable_impl!(Vec2)
|
||||||
|
@ -95,6 +97,7 @@ pub struct Vec3<N>
|
||||||
{ at: [N, ..3] }
|
{ at: [N, ..3] }
|
||||||
|
|
||||||
clone_impl!(Vec3)
|
clone_impl!(Vec3)
|
||||||
|
deep_clone_impl!(Vec3)
|
||||||
new_impl!(Vec3, 3)
|
new_impl!(Vec3, 3)
|
||||||
new_repeat_impl!(Vec3, elem, [elem | elem | elem])
|
new_repeat_impl!(Vec3, elem, [elem | elem | elem])
|
||||||
indexable_impl!(Vec3)
|
indexable_impl!(Vec3)
|
||||||
|
@ -130,6 +133,7 @@ pub struct Vec4<N>
|
||||||
{ at: [N, ..4] }
|
{ at: [N, ..4] }
|
||||||
|
|
||||||
clone_impl!(Vec4)
|
clone_impl!(Vec4)
|
||||||
|
deep_clone_impl!(Vec4)
|
||||||
new_impl!(Vec4, 4)
|
new_impl!(Vec4, 4)
|
||||||
new_repeat_impl!(Vec4, elem, [elem | elem | elem | elem])
|
new_repeat_impl!(Vec4, elem, [elem | elem | elem | elem])
|
||||||
indexable_impl!(Vec4)
|
indexable_impl!(Vec4)
|
||||||
|
@ -165,6 +169,7 @@ pub struct Vec5<N>
|
||||||
{ at: [N, ..5] }
|
{ at: [N, ..5] }
|
||||||
|
|
||||||
clone_impl!(Vec5)
|
clone_impl!(Vec5)
|
||||||
|
deep_clone_impl!(Vec5)
|
||||||
new_impl!(Vec5, 5)
|
new_impl!(Vec5, 5)
|
||||||
new_repeat_impl!(Vec5, elem, [elem | elem | elem | elem | elem])
|
new_repeat_impl!(Vec5, elem, [elem | elem | elem | elem | elem])
|
||||||
indexable_impl!(Vec5)
|
indexable_impl!(Vec5)
|
||||||
|
@ -200,6 +205,7 @@ pub struct Vec6<N>
|
||||||
{ at: [N, ..6] }
|
{ at: [N, ..6] }
|
||||||
|
|
||||||
clone_impl!(Vec6)
|
clone_impl!(Vec6)
|
||||||
|
deep_clone_impl!(Vec6)
|
||||||
new_impl!(Vec6, 6)
|
new_impl!(Vec6, 6)
|
||||||
new_repeat_impl!(Vec6, elem, [elem | elem | elem | elem | elem | elem])
|
new_repeat_impl!(Vec6, elem, [elem | elem | elem | elem | elem | elem])
|
||||||
indexable_impl!(Vec6)
|
indexable_impl!(Vec6)
|
||||||
|
|
|
@ -14,6 +14,21 @@ macro_rules! clone_impl(
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
macro_rules! deep_clone_impl(
|
||||||
|
($t:ident) => (
|
||||||
|
// FIXME: use 'DeepClone' alone. For the moment, we need 'Copy' because the automatic
|
||||||
|
// implementation of DeepClone for [t, ..n] is badly typed.
|
||||||
|
// XXX: this does not do a real deep clone
|
||||||
|
impl<N: DeepClone + Copy> DeepClone for $t<N>
|
||||||
|
{
|
||||||
|
fn deep_clone(&self) -> $t<N>
|
||||||
|
{
|
||||||
|
$t { at: copy self.at }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
macro_rules! new_impl(
|
macro_rules! new_impl(
|
||||||
($t: ident, $dim: expr) => (
|
($t: ident, $dim: expr) => (
|
||||||
impl<N> $t<N>
|
impl<N> $t<N>
|
||||||
|
|
|
@ -109,3 +109,11 @@ impl UniformSphereSample for Vec2<f64>
|
||||||
{ f(sample) }
|
{ f(sample) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl UniformSphereSample for Vec3<f64>
|
||||||
|
{
|
||||||
|
pub fn sample(_: &fn(&'static Vec3<f64>))
|
||||||
|
{
|
||||||
|
fail!("UniformSphereSample for Vec3<f64> is not yet implemented.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue