From f0164ad7ceda986a35b13dce839aff5c875b71b3 Mon Sep 17 00:00:00 2001 From: Christophe Riccio Date: Mon, 23 May 2011 02:36:19 +0100 Subject: [PATCH] More fixing for the swizzle operators --- glm/gtc/swizzle.hpp | 421 ++++++++++++++++++++++---------------------- 1 file changed, 211 insertions(+), 210 deletions(-) diff --git a/glm/gtc/swizzle.hpp b/glm/gtc/swizzle.hpp index b2e46b89..24d36970 100644 --- a/glm/gtc/swizzle.hpp +++ b/glm/gtc/swizzle.hpp @@ -67,62 +67,63 @@ namespace swizzle ///< GLM_GTC_swizzle extension vecType & v, comp x, comp y, comp z, comp w); -# define static_swizzle1(TYPE, SIZE) \ +# define static_swizzle1_const(TYPE, SIZE) \ template \ GLM_FUNC_QUALIFIER TYPE swizzle(detail::tvec##SIZE const & v) \ - {return v[x];} \ - \ - template \ + {return v[x];} + +# define static_swizzle1_ref(TYPE, SIZE) \ + template \ GLM_FUNC_QUALIFIER TYPE& swizzle(detail::tvec##SIZE & v) \ {return v[x];} + + static_swizzle1_ref(detail::float16, 2) + static_swizzle1_ref(detail::float16, 3) + static_swizzle1_ref(detail::float16, 4) + static_swizzle1_ref(detail::float32, 2) + static_swizzle1_ref(detail::float32, 3) + static_swizzle1_ref(detail::float32, 4) + static_swizzle1_ref(detail::float64, 2) + static_swizzle1_ref(detail::float64, 3) + static_swizzle1_ref(detail::float64, 4) + + static_swizzle1_ref(detail::int8, 2) + static_swizzle1_ref(detail::int8, 3) + static_swizzle1_ref(detail::int8, 4) + static_swizzle1_ref(detail::int16, 2) + static_swizzle1_ref(detail::int16, 3) + static_swizzle1_ref(detail::int16, 4) + static_swizzle1_ref(detail::int32, 2) + static_swizzle1_ref(detail::int32, 3) + static_swizzle1_ref(detail::int32, 4) + static_swizzle1_ref(detail::int64, 2) + static_swizzle1_ref(detail::int64, 3) + static_swizzle1_ref(detail::int64, 4) + + static_swizzle1_ref(detail::uint8, 2) + static_swizzle1_ref(detail::uint8, 3) + static_swizzle1_ref(detail::uint8, 4) + static_swizzle1_ref(detail::uint16, 2) + static_swizzle1_ref(detail::uint16, 3) + static_swizzle1_ref(detail::uint16, 4) + static_swizzle1_ref(detail::uint32, 2) + static_swizzle1_ref(detail::uint32, 3) + static_swizzle1_ref(detail::uint32, 4) + static_swizzle1_ref(detail::uint64, 2) + static_swizzle1_ref(detail::uint64, 3) + static_swizzle1_ref(detail::uint64, 4) /* - static_swizzle1(detail::float16, 2) - static_swizzle1(detail::float16, 3) - static_swizzle1(detail::float16, 4) - static_swizzle1(detail::float32, 2) - static_swizzle1(detail::float32, 3) - static_swizzle1(detail::float32, 4) - static_swizzle1(detail::float64, 2) - static_swizzle1(detail::float64, 3) - static_swizzle1(detail::float64, 4) - - static_swizzle1(detail::int8, 2) - static_swizzle1(detail::int8, 3) - static_swizzle1(detail::int8, 4) - static_swizzle1(detail::int16, 2) - static_swizzle1(detail::int16, 3) - static_swizzle1(detail::int16, 4) - static_swizzle1(detail::int32, 2) - static_swizzle1(detail::int32, 3) - static_swizzle1(detail::int32, 4) - static_swizzle1(detail::int64, 2) - static_swizzle1(detail::int64, 3) - static_swizzle1(detail::int64, 4) - - static_swizzle1(detail::uint8, 2) - static_swizzle1(detail::uint8, 3) - static_swizzle1(detail::uint8, 4) - static_swizzle1(detail::uint16, 2) - static_swizzle1(detail::uint16, 3) - static_swizzle1(detail::uint16, 4) - static_swizzle1(detail::uint32, 2) - static_swizzle1(detail::uint32, 3) - static_swizzle1(detail::uint32, 4) - static_swizzle1(detail::uint64, 2) - static_swizzle1(detail::uint64, 3) - static_swizzle1(detail::uint64, 4) - -# define static_swizzle2_const(TYPE) \ +# define static_swizzle2_const(TYPE) \ template \ GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ {return TYPE(v[x], v[y]);} -# define static_swizzle3_const(TYPE) \ +# define static_swizzle3_const(TYPE) \ template \ GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ {return TYPE(v[x], v[y], v[z]);} -# define static_swizzle4_const(TYPE) \ +# define static_swizzle4_const(TYPE) \ template \ GLM_FUNC_QUALIFIER TYPE swizzle(TYPE const & v) \ {return TYPE(v[x], v[y], v[z], v[w]);} @@ -153,195 +154,195 @@ namespace swizzle ///< GLM_GTC_swizzle extension static_swizzle2_const(glm::f64vec2, 2) static_swizzle2_const(glm::f64vec3, 3) static_swizzle2_const(glm::f64vec4, 4) -/* - static_swizzle2_const(glm::i8vec2) - static_swizzle2_const(glm::i8vec3) - static_swizzle2_const(glm::i8vec4) - static_swizzle2_const(glm::i16vec2) - static_swizzle2_const(glm::i16vec3) - static_swizzle2_const(glm::i16vec4) - static_swizzle2_const(glm::i32vec2) - static_swizzle2_const(glm::i32vec3) - static_swizzle2_const(glm::i32vec4) - static_swizzle2_const(glm::i64vec2) - static_swizzle2_const(glm::i64vec3) - static_swizzle2_const(glm::i64vec4) - static_swizzle2_const(glm::u8vec2) - static_swizzle2_const(glm::u8vec3) - static_swizzle2_const(glm::u8vec4) - static_swizzle2_const(glm::u16vec2) - static_swizzle2_const(glm::u16vec3) - static_swizzle2_const(glm::u16vec4) - static_swizzle2_const(glm::u32vec2) - static_swizzle2_const(glm::u32vec3) - static_swizzle2_const(glm::u32vec4) - static_swizzle2_const(glm::u64vec2) - static_swizzle2_const(glm::u64vec3) - static_swizzle2_const(glm::u64vec4) + static_swizzle2_const(glm::i8vec2, 2) + static_swizzle2_const(glm::i8vec3, 3) + static_swizzle2_const(glm::i8vec4, 4) + static_swizzle2_const(glm::i16vec2, 2) + static_swizzle2_const(glm::i16vec3, 3) + static_swizzle2_const(glm::i16vec4, 4) + static_swizzle2_const(glm::i32vec2, 2) + static_swizzle2_const(glm::i32vec3, 3) + static_swizzle2_const(glm::i32vec4, 4) + static_swizzle2_const(glm::i64vec2, 2) + static_swizzle2_const(glm::i64vec3, 3) + static_swizzle2_const(glm::i64vec4, 4) - static_swizzle3_const(glm::f16vec2) - static_swizzle3_const(glm::f16vec3) - static_swizzle3_const(glm::f16vec4) - static_swizzle3_const(glm::f32vec2) - static_swizzle3_const(glm::f32vec3) - static_swizzle3_const(glm::f32vec4) - static_swizzle3_const(glm::f64vec2) - static_swizzle3_const(glm::f64vec3) - static_swizzle3_const(glm::f64vec4) + static_swizzle2_const(glm::u8vec2, 2) + static_swizzle2_const(glm::u8vec3, 3) + static_swizzle2_const(glm::u8vec4, 4) + static_swizzle2_const(glm::u16vec2, 2) + static_swizzle2_const(glm::u16vec3, 3) + static_swizzle2_const(glm::u16vec4, 4) + static_swizzle2_const(glm::u32vec2, 2) + static_swizzle2_const(glm::u32vec3, 3) + static_swizzle2_const(glm::u32vec4, 4) + static_swizzle2_const(glm::u64vec2, 2) + static_swizzle2_const(glm::u64vec3, 3) + static_swizzle2_const(glm::u64vec4, 4) - static_swizzle3_const(glm::i8vec2) - static_swizzle3_const(glm::i8vec3) - static_swizzle3_const(glm::i8vec4) - static_swizzle3_const(glm::i16vec2) - static_swizzle3_const(glm::i16vec3) - static_swizzle3_const(glm::i16vec4) - static_swizzle3_const(glm::i32vec2) - static_swizzle3_const(glm::i32vec3) - static_swizzle3_const(glm::i32vec4) - static_swizzle3_const(glm::i64vec2) - static_swizzle3_const(glm::i64vec3) - static_swizzle3_const(glm::i64vec4) + static_swizzle3_const(glm::f16vec2, 2) + static_swizzle3_const(glm::f16vec3, 3) + static_swizzle3_const(glm::f16vec4, 4) + static_swizzle3_const(glm::f32vec2, 2) + static_swizzle3_const(glm::f32vec3, 3) + static_swizzle3_const(glm::f32vec4, 4) + static_swizzle3_const(glm::f64vec2, 2) + static_swizzle3_const(glm::f64vec3, 3) + static_swizzle3_const(glm::f64vec4, 4) - static_swizzle3_const(glm::u8vec2) - static_swizzle3_const(glm::u8vec3) - static_swizzle3_const(glm::u8vec4) - static_swizzle3_const(glm::u16vec2) - static_swizzle3_const(glm::u16vec3) - static_swizzle3_const(glm::u16vec4) - static_swizzle3_const(glm::u32vec2) - static_swizzle3_const(glm::u32vec3) - static_swizzle3_const(glm::u32vec4) - static_swizzle3_const(glm::u64vec2) - static_swizzle3_const(glm::u64vec3) - static_swizzle3_const(glm::u64vec4) + static_swizzle3_const(glm::i8vec2, 2) + static_swizzle3_const(glm::i8vec3, 3) + static_swizzle3_const(glm::i8vec4, 4) + static_swizzle3_const(glm::i16vec2, 2) + static_swizzle3_const(glm::i16vec3, 3) + static_swizzle3_const(glm::i16vec4, 4) + static_swizzle3_const(glm::i32vec2, 2) + static_swizzle3_const(glm::i32vec3, 3) + static_swizzle3_const(glm::i32vec4, 4) + static_swizzle3_const(glm::i64vec2, 2) + static_swizzle3_const(glm::i64vec3, 3) + static_swizzle3_const(glm::i64vec4, 4) - static_swizzle4_const(glm::f16vec2) - static_swizzle4_const(glm::f16vec3) - static_swizzle4_const(glm::f16vec4) - static_swizzle4_const(glm::f32vec2) - static_swizzle4_const(glm::f32vec3) - static_swizzle4_const(glm::f32vec4) - static_swizzle4_const(glm::f64vec2) - static_swizzle4_const(glm::f64vec3) - static_swizzle4_const(glm::f64vec4) + static_swizzle3_const(glm::u8vec2, 2) + static_swizzle3_const(glm::u8vec3, 3) + static_swizzle3_const(glm::u8vec4, 4) + static_swizzle3_const(glm::u16vec2, 2) + static_swizzle3_const(glm::u16vec3, 3) + static_swizzle3_const(glm::u16vec4, 4) + static_swizzle3_const(glm::u32vec2, 2) + static_swizzle3_const(glm::u32vec3, 3) + static_swizzle3_const(glm::u32vec4, 4) + static_swizzle3_const(glm::u64vec2, 2) + static_swizzle3_const(glm::u64vec3, 3) + static_swizzle3_const(glm::u64vec4, 4) - static_swizzle4_const(glm::i8vec2) - static_swizzle4_const(glm::i8vec3) - static_swizzle4_const(glm::i8vec4) - static_swizzle4_const(glm::i16vec2) - static_swizzle4_const(glm::i16vec3) - static_swizzle4_const(glm::i16vec4) - static_swizzle4_const(glm::i32vec2) - static_swizzle4_const(glm::i32vec3) - static_swizzle4_const(glm::i32vec4) - static_swizzle4_const(glm::i64vec2) - static_swizzle4_const(glm::i64vec3) - static_swizzle4_const(glm::i64vec4) + static_swizzle4_const(glm::f16vec2, 2) + static_swizzle4_const(glm::f16vec3, 3) + static_swizzle4_const(glm::f16vec4, 4) + static_swizzle4_const(glm::f32vec2, 2) + static_swizzle4_const(glm::f32vec3, 3) + static_swizzle4_const(glm::f32vec4, 4) + static_swizzle4_const(glm::f64vec2, 2) + static_swizzle4_const(glm::f64vec3, 3) + static_swizzle4_const(glm::f64vec4, 4) - static_swizzle4_const(glm::u8vec2) - static_swizzle4_const(glm::u8vec3) - static_swizzle4_const(glm::u8vec4) - static_swizzle4_const(glm::u16vec2) - static_swizzle4_const(glm::u16vec3) - static_swizzle4_const(glm::u16vec4) - static_swizzle4_const(glm::u32vec2) - static_swizzle4_const(glm::u32vec3) - static_swizzle4_const(glm::u32vec4) - static_swizzle4_const(glm::u64vec2) - static_swizzle4_const(glm::u64vec3) - static_swizzle4_const(glm::u64vec4) + static_swizzle4_const(glm::i8vec2, 2) + static_swizzle4_const(glm::i8vec3, 3) + static_swizzle4_const(glm::i8vec4, 4) + static_swizzle4_const(glm::i16vec2, 2) + static_swizzle4_const(glm::i16vec3, 3) + static_swizzle4_const(glm::i16vec4, 4) + static_swizzle4_const(glm::i32vec2, 2) + static_swizzle4_const(glm::i32vec3, 3) + static_swizzle4_const(glm::i32vec4, 4) + static_swizzle4_const(glm::i64vec2, 2) + static_swizzle4_const(glm::i64vec3, 3) + static_swizzle4_const(glm::i64vec4, 4) -# define static_swizzle2_ref(TYPE) \ + static_swizzle4_const(glm::u8vec2, 2) + static_swizzle4_const(glm::u8vec3, 3) + static_swizzle4_const(glm::u8vec4, 4) + static_swizzle4_const(glm::u16vec2, 2) + static_swizzle4_const(glm::u16vec3, 3) + static_swizzle4_const(glm::u16vec4, 4) + static_swizzle4_const(glm::u32vec2, 2) + static_swizzle4_const(glm::u32vec3, 3) + static_swizzle4_const(glm::u32vec4, 4) + static_swizzle4_const(glm::u64vec2, 2) + static_swizzle4_const(glm::u64vec3, 3) + static_swizzle4_const(glm::u64vec4, 4) + +# define static_swizzle2_ref(TYPE, SIZE) \ template \ - GLM_FUNC_QUALIFIER glm::detail::tref2 swizzle(TYPE & v) \ - {return glm::detail::tref2(v[x], v[y]);} + GLM_FUNC_QUALIFIER glm::detail::tref2 swizzle(detail::tvec##SIZE & v) \ + {return glm::detail::tref2(v[x], v[y]);} -# define static_swizzle3_ref(TYPE) \ +# define static_swizzle3_ref(TYPE, SIZE) \ template \ - GLM_FUNC_QUALIFIER glm::detail::tref3 swizzle(TYPE & v) \ - {return glm::detail::tref3(v[x], v[y], v[z]);} + GLM_FUNC_QUALIFIER glm::detail::tref3 swizzle(detail::tvec##SIZE & v) \ + {return glm::detail::tref3(v[x], v[y], v[z]);} -# define static_swizzle4_ref(TYPE) \ +# define static_swizzle4_ref(TYPE, SIZE) \ template \ - GLM_FUNC_QUALIFIER glm::detail::tref4 swizzle(TYPE & v) \ - {return glm::detail::tref4(v[x], v[y], v[z], v[w]);} + GLM_FUNC_QUALIFIER glm::detail::tref4 swizzle(detail::tvec##SIZE & v) \ + {return glm::detail::tref4(v[x], v[y], v[z], v[w]);} - static_swizzle2_ref(glm::f16vec2) - static_swizzle2_ref(glm::f16vec3) - static_swizzle2_ref(glm::f16vec4) - static_swizzle2_ref(glm::f32vec2) - static_swizzle2_ref(glm::f32vec3) - static_swizzle2_ref(glm::f32vec4) - static_swizzle2_ref(glm::f64vec2) - static_swizzle2_ref(glm::f64vec3) - static_swizzle2_ref(glm::f64vec4) + static_swizzle2_ref(glm::f16vec2, 2) + static_swizzle2_ref(glm::f16vec3, 3) + static_swizzle2_ref(glm::f16vec4, 4) + static_swizzle2_ref(glm::f32vec2, 2) + static_swizzle2_ref(glm::f32vec3, 3) + static_swizzle2_ref(glm::f32vec4, 4) + static_swizzle2_ref(glm::f64vec2, 2) + static_swizzle2_ref(glm::f64vec3, 3) + static_swizzle2_ref(glm::f64vec4, 4) - static_swizzle2_ref(glm::i8vec2) - static_swizzle2_ref(glm::i8vec3) - static_swizzle2_ref(glm::i8vec4) - static_swizzle2_ref(glm::i16vec2) - static_swizzle2_ref(glm::i16vec3) - static_swizzle2_ref(glm::i16vec4) - static_swizzle2_ref(glm::i32vec2) - static_swizzle2_ref(glm::i32vec3) - static_swizzle2_ref(glm::i32vec4) - static_swizzle2_ref(glm::i64vec2) - static_swizzle2_ref(glm::i64vec3) - static_swizzle2_ref(glm::i64vec4) + static_swizzle2_ref(glm::i8vec2, 2) + static_swizzle2_ref(glm::i8vec3, 3) + static_swizzle2_ref(glm::i8vec4, 4) + static_swizzle2_ref(glm::i16vec2, 2) + static_swizzle2_ref(glm::i16vec3, 3) + static_swizzle2_ref(glm::i16vec4, 4) + static_swizzle2_ref(glm::i32vec2, 2) + static_swizzle2_ref(glm::i32vec3, 3) + static_swizzle2_ref(glm::i32vec4, 4) + static_swizzle2_ref(glm::i64vec2, 2) + static_swizzle2_ref(glm::i64vec3, 3) + static_swizzle2_ref(glm::i64vec4, 4) - static_swizzle2_ref(glm::u8vec2) - static_swizzle2_ref(glm::u8vec3) - static_swizzle2_ref(glm::u8vec4) - static_swizzle2_ref(glm::u16vec2) - static_swizzle2_ref(glm::u16vec3) - static_swizzle2_ref(glm::u16vec4) - static_swizzle2_ref(glm::u32vec2) - static_swizzle2_ref(glm::u32vec3) - static_swizzle2_ref(glm::u32vec4) - static_swizzle2_ref(glm::u64vec2) - static_swizzle2_ref(glm::u64vec3) - static_swizzle2_ref(glm::u64vec4) + static_swizzle2_ref(glm::u8vec2, 2) + static_swizzle2_ref(glm::u8vec3, 3) + static_swizzle2_ref(glm::u8vec4, 4) + static_swizzle2_ref(glm::u16vec2, 2) + static_swizzle2_ref(glm::u16vec3, 3) + static_swizzle2_ref(glm::u16vec4, 4) + static_swizzle2_ref(glm::u32vec2, 2) + static_swizzle2_ref(glm::u32vec3, 3) + static_swizzle2_ref(glm::u32vec4, 4) + static_swizzle2_ref(glm::u64vec2, 2) + static_swizzle2_ref(glm::u64vec3, 3) + static_swizzle2_ref(glm::u64vec4, 4) - static_swizzle3_ref(glm::f16vec3) - static_swizzle3_ref(glm::f16vec4) - static_swizzle3_ref(glm::f32vec3) - static_swizzle3_ref(glm::f32vec4) - static_swizzle3_ref(glm::f64vec3) - static_swizzle3_ref(glm::f64vec4) + static_swizzle3_ref(glm::f16vec3, 3) + static_swizzle3_ref(glm::f16vec4, 4) + static_swizzle3_ref(glm::f32vec3, 3) + static_swizzle3_ref(glm::f32vec4, 4) + static_swizzle3_ref(glm::f64vec3, 3) + static_swizzle3_ref(glm::f64vec4, 4) - static_swizzle3_ref(glm::i8vec3) - static_swizzle3_ref(glm::i8vec4) - static_swizzle3_ref(glm::i16vec3) - static_swizzle3_ref(glm::i16vec4) - static_swizzle3_ref(glm::i32vec3) - static_swizzle3_ref(glm::i32vec4) - static_swizzle3_ref(glm::i64vec3) - static_swizzle3_ref(glm::i64vec4) + static_swizzle3_ref(glm::i8vec3, 3) + static_swizzle3_ref(glm::i8vec4, 4) + static_swizzle3_ref(glm::i16vec3, 3) + static_swizzle3_ref(glm::i16vec4, 4) + static_swizzle3_ref(glm::i32vec3, 3) + static_swizzle3_ref(glm::i32vec4, 4) + static_swizzle3_ref(glm::i64vec3, 3) + static_swizzle3_ref(glm::i64vec4, 4) - static_swizzle3_ref(glm::u8vec3) - static_swizzle3_ref(glm::u8vec4) - static_swizzle3_ref(glm::u16vec3) - static_swizzle3_ref(glm::u16vec4) - static_swizzle3_ref(glm::u32vec3) - static_swizzle3_ref(glm::u32vec4) - static_swizzle3_ref(glm::u64vec3) - static_swizzle3_ref(glm::u64vec4) + static_swizzle3_ref(glm::u8vec3, 3) + static_swizzle3_ref(glm::u8vec4, 4) + static_swizzle3_ref(glm::u16vec3, 3) + static_swizzle3_ref(glm::u16vec4, 4) + static_swizzle3_ref(glm::u32vec3, 3) + static_swizzle3_ref(glm::u32vec4, 4) + static_swizzle3_ref(glm::u64vec3, 3) + static_swizzle3_ref(glm::u64vec4, 4) - static_swizzle4_ref(glm::f16vec4) - static_swizzle4_ref(glm::f32vec4) - static_swizzle4_ref(glm::f64vec4) + static_swizzle4_ref(glm::f16vec4, 4) + static_swizzle4_ref(glm::f32vec4, 4) + static_swizzle4_ref(glm::f64vec4, 4) - static_swizzle4_ref(glm::i8vec4) - static_swizzle4_ref(glm::i16vec4) - static_swizzle4_ref(glm::i32vec4) - static_swizzle4_ref(glm::i64vec4) + static_swizzle4_ref(glm::i8vec4, 4) + static_swizzle4_ref(glm::i16vec4, 4) + static_swizzle4_ref(glm::i32vec4, 4) + static_swizzle4_ref(glm::i64vec4, 4) + + static_swizzle4_ref(glm::u8vec4, 4) + static_swizzle4_ref(glm::u16vec4, 4) + static_swizzle4_ref(glm::u32vec4, 4) + static_swizzle4_ref(glm::u64vec4, 4) - static_swizzle4_ref(glm::u8vec4) - static_swizzle4_ref(glm::u16vec4) - static_swizzle4_ref(glm::u32vec4) - static_swizzle4_ref(glm::u64vec4) -*/ }//namespace swizzle }//namespace gtc }//namespace glm