From af2ca2be45f44a3622d1551b0570990a25180380 Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Sun, 25 Nov 2012 22:05:47 +1000 Subject: [PATCH] Add size_of static method --- src/dim.rs | 3 ++- src/mat.rs | 10 ++++++++++ src/quat.rs | 4 ++++ src/vec.rs | 10 ++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/dim.rs b/src/dim.rs index 442ed72..0d5b0fa 100644 --- a/src/dim.rs +++ b/src/dim.rs @@ -1,6 +1,7 @@ use core::cmp::Eq; pub trait Dimensional: Index { - static pure fn dim() -> uint; + static pure fn dim() -> uint; // dim and size_of are pretty useless at the moment due to + static pure fn size_of() -> uint; // how Rust's static methods are currently implemented pure fn to_ptr() -> *T; } \ No newline at end of file diff --git a/src/mat.rs b/src/mat.rs index d1f4739..5e1c28f 100644 --- a/src/mat.rs +++ b/src/mat.rs @@ -1,6 +1,7 @@ use core::cast::transmute; use core::cmp::{Eq, Ord}; use core::ptr::to_unsafe_ptr; +use core::sys::size_of; use core::vec::raw::buf_as_slice; use std::cmp::FuzzyEq; @@ -172,6 +173,9 @@ pub impl Mat2: Matrix, Vec2> { #[inline(always)] static pure fn dim() -> uint { 2 } + #[inline(always)] + static pure fn size_of() -> uint { size_of::>() } + #[inline(always)] pure fn rows() -> uint { 2 } @@ -408,6 +412,9 @@ pub impl Mat3: Matrix, Vec3> { #[inline(always)] static pure fn dim() -> uint { 3 } + #[inline(always)] + static pure fn size_of() -> uint { size_of::>() } + #[inline(always)] pure fn rows() -> uint { 3 } @@ -722,6 +729,9 @@ pub impl Mat4: Matrix, Vec4> { #[inline(always)] static pure fn dim() -> uint { 4 } + #[inline(always)] + static pure fn size_of() -> uint { size_of::>() } + #[inline(always)] pure fn rows() -> uint { 4 } diff --git a/src/quat.rs b/src/quat.rs index 1e52aa0..76028b5 100644 --- a/src/quat.rs +++ b/src/quat.rs @@ -1,6 +1,7 @@ use core::cast::transmute; use core::cmp::{Eq, Ord}; use core::ptr::to_unsafe_ptr; +use core::sys::size_of; use core::vec::raw::buf_as_slice; use std::cmp::FuzzyEq; @@ -89,6 +90,9 @@ pub impl Quat: Quaternion #[inline(always)] static pure fn dim() -> uint { 4 } + #[inline(always)] + static pure fn size_of() -> uint { size_of::>() } + #[inline(always)] pure fn to_ptr() -> *T { to_unsafe_ptr(&self[0]) diff --git a/src/vec.rs b/src/vec.rs index 97475a6..aa3e516 100644 --- a/src/vec.rs +++ b/src/vec.rs @@ -1,6 +1,7 @@ use core::cast::transmute; use core::cmp::Eq; use core::ptr::to_unsafe_ptr; +use core::sys::size_of; use core::vec::raw::buf_as_slice; use std::cmp::FuzzyEq; @@ -108,6 +109,9 @@ pub impl Vec2: Vector { #[inline(always)] static pure fn dim() -> uint { 2 } + #[inline(always)] + static pure fn size_of() -> uint { size_of::>() } + #[inline(always)] pure fn index(i: uint) -> T { unsafe { do buf_as_slice( @@ -259,6 +263,9 @@ pub impl Vec3: Vector { #[inline(always)] static pure fn dim() -> uint { 3 } + #[inline(always)] + static pure fn size_of() -> uint { size_of::>() } + #[inline(always)] pure fn index(i: uint) -> T { unsafe { do buf_as_slice( @@ -428,6 +435,9 @@ pub impl Vec4: Vector { #[inline(always)] static pure fn dim() -> uint { 4 } + #[inline(always)] + static pure fn size_of() -> uint { size_of::>() } + #[inline(always)] pure fn index(i: uint) -> T { unsafe { do buf_as_slice(