diff --git a/src/lol/base/features.h b/src/lol/base/features.h index 497da7bd..844f36b4 100644 --- a/src/lol/base/features.h +++ b/src/lol/base/features.h @@ -23,7 +23,6 @@ /* These features aren't necessarily supported by all compilers */ #undef LOL_FEATURE_CXX11_INHERIT_CONSTRUCTORS -#undef LOL_FEATURE_CXX11_ARRAY_INITIALIZERS #undef LOL_FEATURE_CXX11_ISNAN /* FIXME: is this the right place? */ #undef LOL_FEATURE_CXX11_NULLPTR #undef LOL_FEATURE_CXX11_TEMPLATE_ALIASES @@ -49,7 +48,6 @@ # endif # define LOL_FEATURE_CXX11_INHERIT_CONSTRUCTORS 1 # define LOL_FEATURE_CXX11_ISNAN 1 -# define LOL_FEATURE_CXX11_ARRAY_INITIALIZERS 1 # define LOL_FEATURE_CXX11_NULLPTR 1 # define LOL_FEATURE_CXX11_SFINAE_FOR_CTORS 1 # if (__GNUC__ * 100 + __GNUC_MINOR__) >= 470 @@ -60,7 +58,6 @@ /* Features supported by Clang */ #if !defined __GNUC__ && defined __has_feature # define LOL_FEATURE_CXX11_INHERIT_CONSTRUCTORS 1 -# define LOL_FEATURE_CXX11_ARRAY_INITIALIZERS 1 # if !__has_feature(cxx_constexpr) # error "sorry, this version of clang does not support constexpr" # endif @@ -82,7 +79,6 @@ # define LOL_FEATURE_CXX11_NULLPTR 1 # define LOL_FEATURE_CXX11_SFINAE_FOR_CTORS 1 # define LOL_FEATURE_CXX11_INHERIT_CONSTRUCTORS 1 -# define LOL_FEATURE_CXX11_ARRAY_INITIALIZERS 1 #endif diff --git a/src/lol/math/matrix.h b/src/lol/math/matrix.h index 9b604c7b..9a73e977 100644 --- a/src/lol/math/matrix.h +++ b/src/lol/math/matrix.h @@ -89,44 +89,22 @@ struct LOL_ATTR_NODISCARD mat_t inline mat_t() {} inline mat_t(vec_t v0, vec_t v1) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ v0, v1 } {} -#else - : m_v0(v0), m_v1(v1) {} -#endif explicit inline mat_t(T const &val) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ vec_t(val, T(0)), vec_t(T(0), val) } {} -#else - : m_v0(val, T(0)), - m_v1(T(0), val) {} -#endif explicit inline mat_t(mat_t const &m) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ m[0].xy, m[1].xy } {} -#else - : m_v0(m[0].xy), m_v1(m[1].xy) {} -#endif /* Explicit constructor for type conversion */ template explicit inline mat_t(mat_t const &m) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ (element)m[0], (element)m[1] } {} -#else - : m_v0((element)m[0]), m_v1((element)m[1]) {} -#endif -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS inline vec_t& operator[](size_t n) { return m_data[n]; } inline vec_t const& operator[](size_t n) const { return m_data[n]; } -#else - inline vec_t& operator[](size_t n) { return (&m_v0)[n]; } - inline vec_t const& operator[](size_t n) const { return (&m_v0)[n]; } -#endif /* Helpers for transformation matrices */ static mat_t rotate(T radians); @@ -141,11 +119,7 @@ struct LOL_ATTR_NODISCARD mat_t static const mat_t identity; private: -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS vec_t m_data[2]; -#else - vec_t m_v0, m_v1; -#endif }; static_assert(sizeof(imat2) == 16, "sizeof(imat2) == 16"); @@ -168,59 +142,30 @@ struct LOL_ATTR_NODISCARD mat_t inline mat_t() {} inline mat_t(vec_t v0, vec_t v1, vec_t v2) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ v0, v1, v2 } {} -#else - : m_v0(v0), m_v1(v1), m_v2(v2) {} -#endif explicit inline mat_t(T const &val) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ vec_t(val, (T)0, (T)0), vec_t((T)0, val, (T)0), vec_t((T)0, (T)0, val) } {} -#else - : m_v0(val, (T)0, (T)0), - m_v1((T)0, val, (T)0), - m_v2((T)0, (T)0, val) {} -#endif explicit inline mat_t(mat_t m, T const &val = T(1)) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ vec_t(m[0], (T)0), vec_t(m[1], (T)0), vec_t((T)0, (T)0, val) } {} -#else - : m_v0(m[0], (T)0), - m_v1(m[1], (T)0), - m_v2((T)0, (T)0, val) {} -#endif explicit inline mat_t(mat_t const &m) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ m[0].xyz, m[1].xyz, m[2].xyz } {} -#else - : m_v0(m[0].xyz), m_v1(m[1].xyz), m_v2(m[2].xyz) {} -#endif /* Explicit constructor for type conversion */ template explicit inline mat_t(mat_t const &m) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ (element)m[0], (element)m[1], (element)m[2] } {} -#else - : m_v0((element)m[0]), m_v1((element)m[1]), m_v2((element)m[2]) {} -#endif explicit mat_t(quat_t const &q); -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS inline vec_t& operator[](size_t n) { return m_data[n]; } inline vec_t const& operator[](size_t n) const { return m_data[n]; } -#else - inline vec_t& operator[](size_t n) { return (&m_v0)[n]; } - inline vec_t const& operator[](size_t n) const { return (&m_v0)[n]; } -#endif /* Helpers for transformation matrices */ static mat_t scale(T x); @@ -266,11 +211,7 @@ struct LOL_ATTR_NODISCARD mat_t static const mat_t identity; private: -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS vec_t m_data[3]; -#else - vec_t m_v0, m_v1, m_v2; -#endif }; static_assert(sizeof(imat3) == 36, "sizeof(imat3) == 36"); @@ -293,71 +234,36 @@ struct LOL_ATTR_NODISCARD mat_t inline mat_t() {} inline mat_t(vec_t v0, vec_t v1, vec_t v2, vec_t v3) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ v0, v1, v2, v3 } {} -#else - : m_v0(v0), m_v1(v1), m_v2(v2), m_v3(v3) {} -#endif explicit inline mat_t(T const &val) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ vec_t(val, (T)0, (T)0, (T)0), vec_t((T)0, val, (T)0, (T)0), vec_t((T)0, (T)0, val, (T)0), vec_t((T)0, (T)0, (T)0, val) } {} -#else - : m_v0(val, (T)0, (T)0, (T)0), - m_v1((T)0, val, (T)0, (T)0), - m_v2((T)0, (T)0, val, (T)0), - m_v3((T)0, (T)0, (T)0, val) {} -#endif explicit inline mat_t(mat_t m, T const &val = T(1)) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ vec_t(m[0], (T)0, (T)0), vec_t(m[1], (T)0, (T)0), vec_t((T)0, (T)0, val, (T)0), vec_t((T)0, (T)0, (T)0, val) } {} -#else - : m_v0(m[0], (T)0, (T)0), - m_v1(m[1], (T)0, (T)0), - m_v2((T)0, (T)0, val, (T)0), - m_v3((T)0, (T)0, (T)0, val) {} -#endif explicit inline mat_t(mat_t m, T const &val = T(1)) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ vec_t(m[0], (T)0), vec_t(m[1], (T)0), vec_t(m[2], (T)0), vec_t((T)0, (T)0, (T)0, val) } {} -#else - : m_v0(m[0], (T)0), - m_v1(m[1], (T)0), - m_v2(m[2], (T)0), - m_v3((T)0, (T)0, (T)0, val) {} -#endif /* Explicit constructor for type conversion */ template explicit inline mat_t(mat_t const &m) -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS : m_data{ (element)m[0], (element)m[1], (element)m[2], (element)m[3] } {} -#else - : m_v0((element)m[0]), m_v1((element)m[1]), - m_v2((element)m[2]), m_v3((element)m[3]) {} -#endif explicit mat_t(quat_t const &q); -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS inline vec_t& operator[](size_t n) { return m_data[n]; } inline vec_t const& operator[](size_t n) const { return m_data[n]; } -#else - inline vec_t& operator[](size_t n) { return (&m_v0)[n]; } - inline vec_t const& operator[](size_t n) const { return (&m_v0)[n]; } -#endif /* Helpers for transformation matrices */ static mat_t translate(T x, T y, T z); @@ -440,11 +346,7 @@ struct LOL_ATTR_NODISCARD mat_t static const mat_t identity; private: -#if LOL_FEATURE_CXX11_ARRAY_INITIALIZERS vec_t m_data[4]; -#else - vec_t m_v0, m_v1, m_v2, m_v3; -#endif }; static_assert(sizeof(imat4) == 64, "sizeof(imat4) == 64");