add unit_init ctors

This commit is contained in:
BlackMATov
2021-02-25 04:24:20 +07:00
parent 9fc1e3e7ab
commit 28bc36c0cd
10 changed files with 127 additions and 129 deletions

View File

@@ -19,13 +19,13 @@
namespace vmath_hpp
{
template < typename T > inline constexpr vec<T, 2> zero2{T{0}, T{0}};
template < typename T > inline constexpr vec<T, 3> zero3{T{0}, T{0}, T{0}};
template < typename T > inline constexpr vec<T, 4> zero4{T{0}, T{0}, T{0}, T{0}};
template < typename T > inline constexpr vec<T, 2> zero2{zero_init};
template < typename T > inline constexpr vec<T, 3> zero3{zero_init};
template < typename T > inline constexpr vec<T, 4> zero4{zero_init};
template < typename T > inline constexpr vec<T, 2> unit2{T{1}, T{1}};
template < typename T > inline constexpr vec<T, 3> unit3{T{1}, T{1}, T{1}};
template < typename T > inline constexpr vec<T, 4> unit4{T{1}, T{1}, T{1}, T{1}};
template < typename T > inline constexpr vec<T, 2> unit2{unit_init};
template < typename T > inline constexpr vec<T, 3> unit3{unit_init};
template < typename T > inline constexpr vec<T, 4> unit4{unit_init};
template < typename T > inline constexpr vec<T, 2> unit2_x{T{1}, T{0}};
template < typename T > inline constexpr vec<T, 2> unit2_y{T{0}, T{1}};
@@ -39,52 +39,20 @@ namespace vmath_hpp
template < typename T > inline constexpr vec<T, 4> unit4_z{T{0}, T{0}, T{1}, T{0}};
template < typename T > inline constexpr vec<T, 4> unit4_w{T{0}, T{0}, T{0}, T{1}};
template < typename T > inline constexpr mat<T, 2> zero2x2{
T{0}, T{0},
T{0}, T{0}};
template < typename T > inline constexpr mat<T, 2> zero2x2{zero_init};
template < typename T > inline constexpr mat<T, 3> zero3x3{zero_init};
template < typename T > inline constexpr mat<T, 4> zero4x4{zero_init};
template < typename T > inline constexpr mat<T, 3> zero3x3{
T{0}, T{0}, T{0},
T{0}, T{0}, T{0},
T{0}, T{0}, T{0}};
template < typename T > inline constexpr mat<T, 2> unit2x2{unit_init};
template < typename T > inline constexpr mat<T, 3> unit3x3{unit_init};
template < typename T > inline constexpr mat<T, 4> unit4x4{unit_init};
template < typename T > inline constexpr mat<T, 4> zero4x4{
T{0}, T{0}, T{0}, T{0},
T{0}, T{0}, T{0}, T{0},
T{0}, T{0}, T{0}, T{0},
T{0}, T{0}, T{0}, T{0}};
template < typename T > inline constexpr mat<T, 2> identity2x2{identity_init};
template < typename T > inline constexpr mat<T, 3> identity3x3{identity_init};
template < typename T > inline constexpr mat<T, 4> identity4x4{identity_init};
template < typename T > inline constexpr mat<T, 2> unit2x2{
T{1}, T{1},
T{1}, T{1}};
template < typename T > inline constexpr mat<T, 3> unit3x3{
T{1}, T{1}, T{1},
T{1}, T{1}, T{1},
T{1}, T{1}, T{1}};
template < typename T > inline constexpr mat<T, 4> unit4x4{
T{1}, T{1}, T{1}, T{1},
T{1}, T{1}, T{1}, T{1},
T{1}, T{1}, T{1}, T{1},
T{1}, T{1}, T{1}, T{1}};
template < typename T > inline constexpr mat<T, 2> identity2x2{
T{1}, T{0},
T{0}, T{1}};
template < typename T > inline constexpr mat<T, 3> identity3x3{
T{1}, T{0}, T{0},
T{0}, T{1}, T{0},
T{0}, T{0}, T{1}};
template < typename T > inline constexpr mat<T, 4> identity4x4{
T{1}, T{0}, T{0}, T{0},
T{0}, T{1}, T{0}, T{0},
T{0}, T{0}, T{1}, T{0},
T{0}, T{0}, T{0}, T{1}};
template < typename T > inline constexpr qua<T> qidentity{T{0}, T{0}, T{0}, T{1}};
template < typename T > inline constexpr qua<T> qzero{zero_init};
template < typename T > inline constexpr qua<T> qidentity{identity_init};
}
//

View File

@@ -46,6 +46,9 @@ namespace vmath_hpp
struct zero_init_t { explicit zero_init_t() = default; };
inline constexpr zero_init_t zero_init{};
struct unit_init_t { explicit unit_init_t() = default; };
inline constexpr unit_init_t unit_init{};
struct identity_init_t { explicit identity_init_t() = default; };
inline constexpr identity_init_t identity_init{};
}

View File

@@ -25,17 +25,10 @@ namespace vmath_hpp::detail
constexpr mat_base()
: mat_base(identity_init) {}
constexpr explicit mat_base(uninit_t) {}
constexpr explicit mat_base(zero_init_t)
: rows{
{T{0}, T{0}},
{T{0}, T{0}}} {}
constexpr explicit mat_base(identity_init_t)
: rows{
{T{1}, T{0}},
{T{0}, T{1}}} {}
constexpr mat_base(uninit_t) {}
constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init} {}
constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init} {}
constexpr mat_base(identity_init_t) : mat_base{T{1}} {}
constexpr explicit mat_base(T d)
: rows{
@@ -69,19 +62,10 @@ namespace vmath_hpp::detail
constexpr mat_base()
: mat_base(identity_init) {}
constexpr explicit mat_base(uninit_t) {}
constexpr explicit mat_base(zero_init_t)
: rows{
{T{0}, T{0}, T{0}},
{T{0}, T{0}, T{0}},
{T{0}, T{0}, T{0}}} {}
constexpr explicit mat_base(identity_init_t)
: rows{
{T{1}, T{0}, T{0}},
{T{0}, T{1}, T{0}},
{T{0}, T{0}, T{1}}} {}
constexpr mat_base(uninit_t) {}
constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init, zero_init} {}
constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init, unit_init} {}
constexpr mat_base(identity_init_t) : mat_base{T{1}} {}
constexpr explicit mat_base(T d)
: rows{
@@ -141,21 +125,10 @@ namespace vmath_hpp::detail
constexpr mat_base()
: mat_base(identity_init) {}
constexpr explicit mat_base(uninit_t) {}
constexpr explicit mat_base(zero_init_t)
: rows{
{T{0}, T{0}, T{0}, T{0}},
{T{0}, T{0}, T{0}, T{0}},
{T{0}, T{0}, T{0}, T{0}},
{T{0}, T{0}, T{0}, T{0}}} {}
constexpr explicit mat_base(identity_init_t)
: rows{
{T{1}, T{0}, T{0}, T{0}},
{T{0}, T{1}, T{0}, T{0}},
{T{0}, T{0}, T{1}, T{0}},
{T{0}, T{0}, T{0}, T{1}}} {}
constexpr mat_base(uninit_t) {}
constexpr mat_base(zero_init_t) : mat_base{zero_init, zero_init, zero_init, zero_init} {}
constexpr mat_base(unit_init_t) : mat_base{unit_init, unit_init, unit_init, unit_init} {}
constexpr mat_base(identity_init_t) : mat_base{T{1}} {}
constexpr explicit mat_base(T d)
: rows{

View File

@@ -22,13 +22,9 @@ namespace vmath_hpp::detail
constexpr qua_base()
: qua_base(identity_init) {}
constexpr explicit qua_base(uninit_t) {}
constexpr explicit qua_base(zero_init_t)
: v{T{0}}, s{0} {}
constexpr explicit qua_base(identity_init_t)
: v{T{0}}, s{1} {}
constexpr qua_base(uninit_t) {}
constexpr qua_base(zero_init_t) : qua_base{zero_init, T{0}} {}
constexpr qua_base(identity_init_t) : qua_base{zero_init, T{1}} {}
constexpr qua_base(T vx, T vy, T vz, T s)
: v{vx, vy, vz}, s{s} {}

View File

@@ -19,12 +19,11 @@ namespace vmath_hpp::detail
T x, y;
public:
constexpr vec_base()
: vec_base(zero_init) {}
: vec_base{zero_init} {}
constexpr explicit vec_base(uninit_t) {}
constexpr explicit vec_base(zero_init_t)
: x{0}, y{0} {}
constexpr vec_base(uninit_t) {}
constexpr vec_base(zero_init_t) : vec_base{T{0}} {}
constexpr vec_base(unit_init_t) : vec_base{T{1}} {}
constexpr explicit vec_base(T v)
: x{v}, y{v} {}
@@ -55,12 +54,11 @@ namespace vmath_hpp::detail
T x, y, z;
public:
constexpr vec_base()
: vec_base(zero_init) {}
: vec_base{zero_init} {}
constexpr explicit vec_base(uninit_t) {}
constexpr explicit vec_base(zero_init_t)
: x{0}, y{0}, z{0} {}
constexpr vec_base(uninit_t) {}
constexpr vec_base(zero_init_t) : vec_base{T{0}} {}
constexpr vec_base(unit_init_t) : vec_base{T{1}} {}
constexpr explicit vec_base(T v)
: x{v}, y{v}, z{v} {}
@@ -103,12 +101,11 @@ namespace vmath_hpp::detail
T x, y, z, w;
public:
constexpr vec_base()
: vec_base(zero_init) {}
: vec_base{zero_init} {}
constexpr explicit vec_base(uninit_t) {}
constexpr explicit vec_base(zero_init_t)
: x{0}, y{0}, z{0}, w{0} {}
constexpr vec_base(uninit_t) {}
constexpr vec_base(zero_init_t) : vec_base{T{0}} {}
constexpr vec_base(unit_init_t) : vec_base{T{1}} {}
constexpr explicit vec_base(T v)
: x{v}, y{v}, z{v}, w{v} {}