Skip to content

Commit bb563dc

Browse files
committed
remove_unneccessary_overloads
Removed many overloads by using templates and delegating to already existing operators
1 parent 33b4a62 commit bb563dc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+1378
-5275
lines changed

glm/detail/_noise.hpp

+6-42
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,8 @@ namespace detail
1717
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
1818
}
1919

20-
template<typename T, qualifier Q>
21-
GLM_FUNC_QUALIFIER vec<2, T, Q> permute(vec<2, T, Q> const& x)
22-
{
23-
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
24-
}
25-
26-
template<typename T, qualifier Q>
27-
GLM_FUNC_QUALIFIER vec<3, T, Q> permute(vec<3, T, Q> const& x)
28-
{
29-
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
30-
}
31-
32-
template<typename T, qualifier Q>
33-
GLM_FUNC_QUALIFIER vec<4, T, Q> permute(vec<4, T, Q> const& x)
20+
template<length_t L,typename T, qualifier Q>
21+
GLM_FUNC_QUALIFIER vec<L, T, Q> permute(vec<L, T, Q> const& x)
3422
{
3523
return mod289(((x * static_cast<T>(34)) + static_cast<T>(1)) * x);
3624
}
@@ -41,38 +29,14 @@ namespace detail
4129
return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
4230
}
4331

44-
template<typename T, qualifier Q>
45-
GLM_FUNC_QUALIFIER vec<2, T, Q> taylorInvSqrt(vec<2, T, Q> const& r)
46-
{
47-
return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
48-
}
49-
50-
template<typename T, qualifier Q>
51-
GLM_FUNC_QUALIFIER vec<3, T, Q> taylorInvSqrt(vec<3, T, Q> const& r)
32+
template<length_t L,typename T, qualifier Q>
33+
GLM_FUNC_QUALIFIER vec<L, T, Q> taylorInvSqrt(vec<L, T, Q> const& r)
5234
{
5335
return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
5436
}
5537

56-
template<typename T, qualifier Q>
57-
GLM_FUNC_QUALIFIER vec<4, T, Q> taylorInvSqrt(vec<4, T, Q> const& r)
58-
{
59-
return static_cast<T>(1.79284291400159) - static_cast<T>(0.85373472095314) * r;
60-
}
61-
62-
template<typename T, qualifier Q>
63-
GLM_FUNC_QUALIFIER vec<2, T, Q> fade(vec<2, T, Q> const& t)
64-
{
65-
return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
66-
}
67-
68-
template<typename T, qualifier Q>
69-
GLM_FUNC_QUALIFIER vec<3, T, Q> fade(vec<3, T, Q> const& t)
70-
{
71-
return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
72-
}
73-
74-
template<typename T, qualifier Q>
75-
GLM_FUNC_QUALIFIER vec<4, T, Q> fade(vec<4, T, Q> const& t)
38+
template<length_t L,typename T, qualifier Q>
39+
GLM_FUNC_QUALIFIER vec<L, T, Q> fade(vec<L, T, Q> const& t)
7640
{
7741
return (t * t * t) * (t * (t * static_cast<T>(6) - static_cast<T>(15)) + static_cast<T>(10));
7842
}

glm/detail/mat2xn_common_ops.hpp

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
#pragma once
2+
3+
#include "qualifier.hpp"
4+
#include "mat_common_ops.hpp"
5+
6+
namespace glm {
7+
template<length_t R, typename T, qualifier Q>
8+
GLM_FUNC_DECL GLM_CONSTEXPR mat<2, R, T, Q> operator-(mat<2, R, T, Q> const& m1);
9+
10+
template<length_t R, typename T, qualifier Q>
11+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator++(mat<2, R, T, Q>& m);
12+
template<length_t R, typename T, qualifier Q>
13+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator--(mat<2, R, T, Q>& m);
14+
15+
16+
template<length_t R, typename T, qualifier Q, typename U>
17+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator+=(mat<2, R, T, Q>& m, U scalar);
18+
template<length_t R, typename T, qualifier Q, typename U>
19+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator-=(mat<2, R, T, Q>& m, U scalar);
20+
template<length_t R, typename T, qualifier Q, typename U>
21+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator*=(mat<2, R, T, Q>& m, U scalar);
22+
template<length_t R, typename T, qualifier Q, typename U>
23+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator/=(mat<2, R, T, Q>& m, U scalar);
24+
25+
// Matrices
26+
template<length_t R, typename T, qualifier Q, typename U>
27+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator+=(mat<2, R, T, Q>& m1, mat<2,R,U,Q> const& m2);
28+
template<length_t R, typename T, qualifier Q, typename U>
29+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<2, R, T, Q>& operator-=(mat<2, R, T, Q>& m1, mat<2,R,U,Q> const& m2);
30+
31+
32+
// Matrices
33+
template<length_t R, typename T, qualifier Q>
34+
GLM_FUNC_DECL GLM_CONSTEXPR mat<2, R, T, Q> operator+(mat<2, R, T, Q> const& m1, mat<2, R, T, Q> const& m2);
35+
template<length_t R, typename T, qualifier Q>
36+
GLM_FUNC_DECL GLM_CONSTEXPR mat<2, R, T, Q> operator-(mat<2, R, T, Q> const& m1, mat<2, R, T, Q> const& m2);
37+
38+
template<length_t R, typename T, qualifier Q>
39+
GLM_FUNC_DECL GLM_CONSTEXPR mat<2, R, T, Q> operator-(T scalar, mat<2, R, T, Q> const& m);
40+
template<length_t R, typename T, qualifier Q>
41+
GLM_FUNC_DECL GLM_CONSTEXPR mat<2, R, T, Q> operator/(T scalar, mat<2, R, T, Q>const& m);
42+
43+
// -- Boolean operators --
44+
template<length_t R, typename T, qualifier Q>
45+
GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<2, R, T, Q> const& m1, mat<2, R, T, Q> const& m2);
46+
47+
48+
}
49+
50+
51+
#ifndef GLM_EXTERNAL_TEMPLATE
52+
#include "mat2xn_common_ops.inl"
53+
#endif//!GLM_EXTERNAL_TEMPLATE

glm/detail/mat2xn_common_ops.inl

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
#include "qualifier.hpp"
2+
3+
namespace glm {
4+
5+
template<length_t R, typename T, qualifier Q>
6+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator++(mat<2, R, T, Q>& m) {
7+
++m[0];
8+
++m[1];
9+
return m;
10+
}
11+
12+
template<length_t R, typename T, qualifier Q>
13+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator--(mat<2, R, T, Q>& m) {
14+
--m[0];
15+
--m[1];
16+
return m;
17+
}
18+
19+
template<length_t R, typename T, qualifier Q, typename U>
20+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator+=(mat<2, R, T, Q>& m, U scalar) {
21+
m[0] += scalar;
22+
m[1] += scalar;
23+
return m;
24+
}
25+
template<length_t R, typename T, qualifier Q, typename U>
26+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator-=(mat<2, R, T, Q>& m, U scalar) {
27+
m[0] -= scalar;
28+
m[1] -= scalar;
29+
return m;
30+
}
31+
template<length_t R, typename T, qualifier Q, typename U>
32+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator*=(mat<2, R, T, Q>& m, U scalar) {
33+
m[0] *= scalar;
34+
m[1] *= scalar;
35+
return m;
36+
}
37+
template<length_t R, typename T, qualifier Q, typename U>
38+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator/=(mat<2, R, T, Q>& m, U scalar) {
39+
m[0] /= scalar;
40+
m[1] /= scalar;
41+
return m;
42+
}
43+
44+
// Matrices
45+
template<length_t R, typename T, qualifier Q, typename U>
46+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator+=(mat<2, R, T, Q>& m1, mat<2, R, U, Q> const& m2) {
47+
m1[0] += m2[0];
48+
m1[1] += m2[1];
49+
return m1;
50+
}
51+
52+
template<length_t R, typename T, qualifier Q, typename U>
53+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q>& operator-=(mat<2, R, T, Q>& m1, mat<2, R, U, Q> const& m2) {
54+
m1[0] -= m2[0];
55+
m1[1] -= m2[1];
56+
return m1;
57+
}
58+
59+
60+
// Matrices
61+
62+
template<length_t R, typename T, qualifier Q>
63+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q> operator+(mat<2, R, T, Q> const& m1, mat<2, R, T, Q> const& m2) {
64+
return mat<2, R, T, Q>(
65+
m1[0] + m2[0],
66+
m1[1] + m2[1]);
67+
}
68+
template<length_t R, typename T, qualifier Q>
69+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q> operator-(mat<2, R, T, Q> const& m1, mat<2, R, T, Q> const& m2) {
70+
return mat<2, R, T, Q>(
71+
m1[0] - m2[0],
72+
m1[1] - m2[1]);
73+
}
74+
75+
// Scalars
76+
77+
template<length_t R, typename T, qualifier Q>
78+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q> operator-(T scalar, mat<2, R, T, Q> const& m) {
79+
return mat<2, R, T, Q>(
80+
scalar - m[0],
81+
scalar - m[1]);
82+
}
83+
template<length_t R, typename T, qualifier Q>
84+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q> operator/(T scalar, mat<2, R, T, Q> const& m) {
85+
return mat<2, R, T, Q>(
86+
scalar / m[0],
87+
scalar / m[1]);
88+
}
89+
90+
91+
92+
template<length_t R,typename T, qualifier Q>
93+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<2, R, T, Q> operator-(mat<2, R, T, Q> const& m)
94+
{
95+
return mat<2, R, T, Q>(
96+
-m[0],
97+
-m[1]);
98+
}
99+
100+
// -- Boolean operators --
101+
template<length_t R, typename T, qualifier Q>
102+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(mat<2, R, T, Q> const& m1, mat<2, R, T, Q> const& m2) {
103+
return m1[0] == m2[0]
104+
&& m1[1] == m2[1];
105+
}
106+
}

glm/detail/mat3xn_common_ops.hpp

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
#pragma once
2+
3+
#include "qualifier.hpp"
4+
#include "mat_common_ops.hpp"
5+
6+
namespace glm {
7+
template<length_t R, typename T, qualifier Q>
8+
GLM_FUNC_DECL GLM_CONSTEXPR mat<3, R, T, Q> operator-(mat<3, R, T, Q> const& m1);
9+
10+
template<length_t R, typename T, qualifier Q>
11+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator++(mat<3, R, T, Q>& m);
12+
template<length_t R, typename T, qualifier Q>
13+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator--(mat<3, R, T, Q>& m);
14+
15+
16+
template<length_t R, typename T, qualifier Q, typename U>
17+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator+=(mat<3, R, T, Q>& m, U scalar);
18+
template<length_t R, typename T, qualifier Q, typename U>
19+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator-=(mat<3, R, T, Q>& m, U scalar);
20+
template<length_t R, typename T, qualifier Q, typename U>
21+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator*=(mat<3, R, T, Q>& m, U scalar);
22+
template<length_t R, typename T, qualifier Q, typename U>
23+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator/=(mat<3, R, T, Q>& m, U scalar);
24+
25+
// Matrices
26+
template<length_t R, typename T, qualifier Q, typename U>
27+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator+=(mat<3, R, T, Q>& m1, mat<3, R, U, Q> const& m2);
28+
29+
template<length_t R, typename T, qualifier Q, typename U>
30+
GLM_FUNC_DISCARD_DECL GLM_CONSTEXPR mat<3, R, T, Q>& operator-=(mat<3, R, T, Q>& m1, mat<3, R, U, Q> const& m2);
31+
32+
// Matrices
33+
template<length_t R, typename T, qualifier Q>
34+
GLM_FUNC_DECL GLM_CONSTEXPR mat<3, R, T, Q> operator+(mat<3, R, T, Q> const& m1, mat<3, R, T, Q> const& m2);
35+
template<length_t R, typename T, qualifier Q>
36+
GLM_FUNC_DECL GLM_CONSTEXPR mat<3, R, T, Q> operator-(mat<3, R, T, Q> const& m1, mat<3, R, T, Q> const& m2);
37+
38+
// Scalars
39+
template<length_t R, typename T, qualifier Q>
40+
GLM_FUNC_DECL GLM_CONSTEXPR mat<3, R, T, Q> operator-(T scalar, mat<3, R, T, Q> const& m);
41+
template<length_t R, typename T, qualifier Q>
42+
GLM_FUNC_DECL GLM_CONSTEXPR mat<3, R, T, Q> operator/(T scalar, mat<3, R, T, Q>const& m);
43+
44+
// -- Boolean operators --
45+
template<length_t R, typename T, qualifier Q>
46+
GLM_FUNC_DECL GLM_CONSTEXPR bool operator==(mat<3, R, T, Q> const& m1, mat<3, R, T, Q> const& m3);
47+
48+
49+
}
50+
51+
52+
#ifndef GLM_EXTERNAL_TEMPLATE
53+
#include "mat3xn_common_ops.inl"
54+
#endif//!GLM_EXTERNAL_TEMPLATE

glm/detail/mat3xn_common_ops.inl

+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
#include "qualifier.hpp"
2+
3+
namespace glm {
4+
5+
template<length_t R, typename T, qualifier Q>
6+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator++(mat<3, R, T, Q>& m) {
7+
++m[0];
8+
++m[1];
9+
++m[2];
10+
return m;
11+
}
12+
13+
template<length_t R, typename T, qualifier Q>
14+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator--(mat<3, R, T, Q>& m) {
15+
--m[0];
16+
--m[1];
17+
--m[2];
18+
return m;
19+
}
20+
21+
template<length_t R, typename T, qualifier Q, typename U>
22+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator+=(mat<3, R, T, Q>& m, U scalar) {
23+
m[0] += scalar;
24+
m[1] += scalar;
25+
m[2] += scalar;
26+
return m;
27+
}
28+
template<length_t R, typename T, qualifier Q, typename U>
29+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator-=(mat<3, R, T, Q>& m, U scalar) {
30+
m[0] -= scalar;
31+
m[1] -= scalar;
32+
m[2] -= scalar;
33+
return m;
34+
}
35+
template<length_t R, typename T, qualifier Q, typename U>
36+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator*=(mat<3, R, T, Q>& m, U scalar) {
37+
m[0] *= scalar;
38+
m[1] *= scalar;
39+
m[2] *= scalar;
40+
return m;
41+
}
42+
template<length_t R, typename T, qualifier Q, typename U>
43+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator/=(mat<3, R, T, Q>& m, U scalar) {
44+
m[0] /= scalar;
45+
m[1] /= scalar;
46+
m[2] /= scalar;
47+
return m;
48+
}
49+
50+
51+
// Matrices
52+
template<length_t R, typename T, qualifier Q, typename U>
53+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator+=(mat<3, R, T, Q>& m1, mat<3, R, U, Q> const& m2) {
54+
m1[0] += m2[0];
55+
m1[1] += m2[1];
56+
m1[2] += m2[2];
57+
return m1;
58+
}
59+
60+
template<length_t R, typename T, qualifier Q, typename U>
61+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q>& operator-=(mat<3, R, T, Q>& m1, mat<3, R, U, Q> const& m2) {
62+
m1[0] -= m2[0];
63+
m1[1] -= m2[1];
64+
m1[2] -= m2[2];
65+
return m1;
66+
}
67+
68+
69+
// Matrices
70+
template<length_t R, typename T, qualifier Q>
71+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q> operator+(mat<3, R, T, Q> const& m1, mat<3, R, T, Q> const& m2) {
72+
return mat<3, R, T, Q>(
73+
m1[0] + m2[0],
74+
m1[1] + m2[1],
75+
m1[2] + m2[2]);
76+
}
77+
template<length_t R, typename T, qualifier Q>
78+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q> operator-(mat<3, R, T, Q> const& m1, mat<3, R, T, Q> const& m2) {
79+
return mat<3, R, T, Q>(
80+
m1[0] - m2[0],
81+
m1[1] - m2[1],
82+
m1[2] - m2[2]);
83+
}
84+
85+
// Scalars
86+
template<length_t R, typename T, qualifier Q>
87+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q> operator-(T scalar, mat<3, R, T, Q> const& m) {
88+
return mat<3, R, T, Q>(
89+
scalar - m[0],
90+
scalar - m[1],
91+
scalar - m[2]);
92+
}
93+
template<length_t R, typename T, qualifier Q>
94+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q> operator/(T scalar, mat<3, R, T, Q> const& m) {
95+
return mat<3, R, T, Q>(
96+
scalar / m[0],
97+
scalar / m[1],
98+
scalar / m[2]);
99+
}
100+
101+
template<length_t R, typename T, qualifier Q>
102+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR mat<3, R, T, Q> operator-(mat<3, R, T, Q> const& m)
103+
{
104+
return mat<3, R, T, Q>(
105+
-m[0],
106+
-m[1],
107+
-m[2]);
108+
}
109+
110+
// -- Boolean operators --
111+
template<length_t R, typename T, qualifier Q>
112+
GLM_FUNC_QUALIFIER GLM_CONSTEXPR bool operator==(mat<3, R, T, Q> const& m1, mat<3, R, T, Q> const& m2) {
113+
return m1[0] == m2[0]
114+
&& m1[1] == m2[1]
115+
&& m1[2] == m2[2];
116+
}
117+
}

0 commit comments

Comments
 (0)