From e57615b6bb3efdaa5704e4acf6c6cdd7868f1154 Mon Sep 17 00:00:00 2001 From: Aaron Date: Tue, 13 Sep 2016 00:36:43 -0700 Subject: [PATCH] Changed how storage alignment is created to eliminate warnings on msvc. --- glm/detail/type_vec.hpp | 37 ++++++++++++++----------------------- 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/glm/detail/type_vec.hpp b/glm/detail/type_vec.hpp index 9d066550..af8ed14a 100644 --- a/glm/detail/type_vec.hpp +++ b/glm/detail/type_vec.hpp @@ -9,22 +9,6 @@ namespace glm{ namespace detail { -#if GLM_COMPILER & GLM_COMPILER_VC -#pragma warning(push) -#pragma warning(disable : 4324) // structure was padded due to alignment specifier -#endif - template struct aligned {}; - template<> GLM_ALIGNED_STRUCT(1) aligned<1>{}; - template<> GLM_ALIGNED_STRUCT(2) aligned<2>{}; - template<> GLM_ALIGNED_STRUCT(4) aligned<4>{}; - template<> GLM_ALIGNED_STRUCT(8) aligned<8>{}; - template<> GLM_ALIGNED_STRUCT(16) aligned<16>{}; - template<> GLM_ALIGNED_STRUCT(32) aligned<32>{}; - template<> GLM_ALIGNED_STRUCT(64) aligned<64>{}; -#if GLM_COMPILER & GLM_COMPILER_VC -#pragma warning(pop) -#endif - template struct storage { @@ -33,15 +17,22 @@ namespace detail } type; }; - template - struct storage - { - struct type : aligned - { - uint8 data[size]; + #define GLM_ALIGNED_STORAGE_TYPE_STRUCT(x) \ + template \ + struct storage { \ + GLM_ALIGNED_STRUCT(x) type { \ + uint8_t data[x]; \ + }; \ }; - }; + GLM_ALIGNED_STORAGE_TYPE_STRUCT(1) + GLM_ALIGNED_STORAGE_TYPE_STRUCT(2) + GLM_ALIGNED_STORAGE_TYPE_STRUCT(4) + GLM_ALIGNED_STORAGE_TYPE_STRUCT(8) + GLM_ALIGNED_STORAGE_TYPE_STRUCT(16) + GLM_ALIGNED_STORAGE_TYPE_STRUCT(32) + GLM_ALIGNED_STORAGE_TYPE_STRUCT(64) + # if GLM_ARCH & GLM_ARCH_SSE2_BIT template <> struct storage