Skip to content

Commit d1a652f

Browse files
committed
Use overloading instead of template specilizations
1 parent 44c4d32 commit d1a652f

File tree

4 files changed

+24
-39
lines changed

4 files changed

+24
-39
lines changed

glm/detail/func_common.inl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ namespace glm
4040
};
4141

4242
// abs
43-
template<>
4443
GLM_FUNC_QUALIFIER GLM_CONSTEXPR int abs(int x)
4544
{
4645
int const y = x >> (sizeof(int) * 8 - 1);

glm/detail/func_integer_simd.inl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,12 @@ namespace detail
4545
}//namespace detail
4646

4747
# if GLM_ARCH & GLM_ARCH_AVX_BIT
48-
template<>
4948
GLM_FUNC_QUALIFIER int bitCount(uint x)
5049
{
5150
return _mm_popcnt_u32(x);
5251
}
5352

5453
# if(GLM_MODEL == GLM_MODEL_64)
55-
template<>
5654
GLM_FUNC_QUALIFIER int bitCount(detail::uint64 x)
5755
{
5856
return static_cast<int>(_mm_popcnt_u64(x));

glm/gtc/bitfield.inl

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ namespace detail
1414
template<typename PARAM, typename RET>
1515
GLM_FUNC_DECL RET bitfieldInterleave(PARAM x, PARAM y, PARAM z, PARAM w);
1616

17-
template<>
1817
GLM_FUNC_QUALIFIER glm::uint16 bitfieldInterleave(glm::uint8 x, glm::uint8 y)
1918
{
2019
glm::uint16 REG1(x);
@@ -32,7 +31,6 @@ namespace detail
3231
return REG1 | static_cast<glm::uint16>(REG2 << 1);
3332
}
3433

35-
template<>
3634
GLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint16 x, glm::uint16 y)
3735
{
3836
glm::uint32 REG1(x);
@@ -53,7 +51,6 @@ namespace detail
5351
return REG1 | (REG2 << 1);
5452
}
5553

56-
template<>
5754
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y)
5855
{
5956
glm::uint64 REG1(x);
@@ -77,7 +74,6 @@ namespace detail
7774
return REG1 | (REG2 << 1);
7875
}
7976

80-
template<>
8177
GLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z)
8278
{
8379
glm::uint32 REG1(x);
@@ -103,7 +99,6 @@ namespace detail
10399
return REG1 | (REG2 << 1) | (REG3 << 2);
104100
}
105101

106-
template<>
107102
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z)
108103
{
109104
glm::uint64 REG1(x);
@@ -133,7 +128,6 @@ namespace detail
133128
return REG1 | (REG2 << 1) | (REG3 << 2);
134129
}
135130

136-
template<>
137131
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint32 x, glm::uint32 y, glm::uint32 z)
138132
{
139133
glm::uint64 REG1(x);
@@ -163,7 +157,6 @@ namespace detail
163157
return REG1 | (REG2 << 1) | (REG3 << 2);
164158
}
165159

166-
template<>
167160
GLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(glm::uint8 x, glm::uint8 y, glm::uint8 z, glm::uint8 w)
168161
{
169162
glm::uint32 REG1(x);
@@ -189,7 +182,6 @@ namespace detail
189182
return REG1 | (REG2 << 1) | (REG3 << 2) | (REG4 << 3);
190183
}
191184

192-
template<>
193185
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(glm::uint16 x, glm::uint16 y, glm::uint16 z, glm::uint16 w)
194186
{
195187
glm::uint64 REG1(x);
@@ -329,12 +321,12 @@ namespace detail
329321

330322
GLM_FUNC_QUALIFIER uint16 bitfieldInterleave(uint8 x, uint8 y)
331323
{
332-
return detail::bitfieldInterleave<uint8, uint16>(x, y);
324+
return detail::bitfieldInterleave(x, y);
333325
}
334326

335327
GLM_FUNC_QUALIFIER uint16 bitfieldInterleave(u8vec2 const& v)
336328
{
337-
return detail::bitfieldInterleave<uint8, uint16>(v.x, v.y);
329+
return detail::bitfieldInterleave(v.x, v.y);
338330
}
339331

340332
GLM_FUNC_QUALIFIER u8vec2 bitfieldDeinterleave(glm::uint16 x)
@@ -383,12 +375,12 @@ namespace detail
383375

384376
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint16 x, uint16 y)
385377
{
386-
return detail::bitfieldInterleave<uint16, uint32>(x, y);
378+
return detail::bitfieldInterleave(x, y);
387379
}
388380

389381
GLM_FUNC_QUALIFIER glm::uint32 bitfieldInterleave(u16vec2 const& v)
390382
{
391-
return detail::bitfieldInterleave<uint16, uint32>(v.x, v.y);
383+
return detail::bitfieldInterleave(v.x, v.y);
392384
}
393385

394386
GLM_FUNC_QUALIFIER glm::u16vec2 bitfieldDeinterleave(glm::uint32 x)
@@ -437,12 +429,12 @@ namespace detail
437429

438430
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint32 x, uint32 y)
439431
{
440-
return detail::bitfieldInterleave<uint32, uint64>(x, y);
432+
return detail::bitfieldInterleave(x, y);
441433
}
442434

443435
GLM_FUNC_QUALIFIER glm::uint64 bitfieldInterleave(u32vec2 const& v)
444436
{
445-
return detail::bitfieldInterleave<uint32, uint64>(v.x, v.y);
437+
return detail::bitfieldInterleave(v.x, v.y);
446438
}
447439

448440
GLM_FUNC_QUALIFIER glm::u32vec2 bitfieldDeinterleave(glm::uint64 x)
@@ -495,12 +487,12 @@ namespace detail
495487

496488
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z)
497489
{
498-
return detail::bitfieldInterleave<uint8, uint32>(x, y, z);
490+
return detail::bitfieldInterleave(x, y, z);
499491
}
500492

501493
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(u8vec3 const& v)
502494
{
503-
return detail::bitfieldInterleave<uint8, uint32>(v.x, v.y, v.z);
495+
return detail::bitfieldInterleave(v.x, v.y, v.z);
504496
}
505497

506498
GLM_FUNC_QUALIFIER int64 bitfieldInterleave(int16 x, int16 y, int16 z)
@@ -527,12 +519,12 @@ namespace detail
527519

528520
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z)
529521
{
530-
return detail::bitfieldInterleave<uint32, uint64>(x, y, z);
522+
return detail::bitfieldInterleave(x, y, z);
531523
}
532524

533525
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(u16vec3 const& v)
534526
{
535-
return detail::bitfieldInterleave<uint32, uint64>(v.x, v.y, v.z);
527+
return detail::bitfieldInterleave(v.x, v.y, v.z);
536528
}
537529

538530
GLM_FUNC_QUALIFIER int64 bitfieldInterleave(int32 x, int32 y, int32 z)
@@ -559,12 +551,12 @@ namespace detail
559551

560552
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint32 x, uint32 y, uint32 z)
561553
{
562-
return detail::bitfieldInterleave<uint32, uint64>(x, y, z);
554+
return detail::bitfieldInterleave(x, y, z);
563555
}
564556

565557
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(u32vec3 const& v)
566558
{
567-
return detail::bitfieldInterleave<uint32, uint64>(v.x, v.y, v.z);
559+
return detail::bitfieldInterleave(v.x, v.y, v.z);
568560
}
569561

570562
GLM_FUNC_QUALIFIER int32 bitfieldInterleave(int8 x, int8 y, int8 z, int8 w)
@@ -592,12 +584,12 @@ namespace detail
592584

593585
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(uint8 x, uint8 y, uint8 z, uint8 w)
594586
{
595-
return detail::bitfieldInterleave<uint8, uint32>(x, y, z, w);
587+
return detail::bitfieldInterleave(x, y, z, w);
596588
}
597589

598590
GLM_FUNC_QUALIFIER uint32 bitfieldInterleave(u8vec4 const& v)
599591
{
600-
return detail::bitfieldInterleave<uint8, uint32>(v.x, v.y, v.z, v.w);
592+
return detail::bitfieldInterleave(v.x, v.y, v.z, v.w);
601593
}
602594

603595
GLM_FUNC_QUALIFIER int64 bitfieldInterleave(int16 x, int16 y, int16 z, int16 w)
@@ -625,11 +617,11 @@ namespace detail
625617

626618
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(uint16 x, uint16 y, uint16 z, uint16 w)
627619
{
628-
return detail::bitfieldInterleave<uint16, uint64>(x, y, z, w);
620+
return detail::bitfieldInterleave(x, y, z, w);
629621
}
630622

631623
GLM_FUNC_QUALIFIER uint64 bitfieldInterleave(u16vec4 const& v)
632624
{
633-
return detail::bitfieldInterleave<uint16, uint64>(v.x, v.y, v.z, v.w);
625+
return detail::bitfieldInterleave(v.x, v.y, v.z, v.w);
634626
}
635627
}//namespace glm

glm/gtc/epsilon.inl

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,21 @@
66

77
namespace glm
88
{
9-
template<>
109
GLM_FUNC_QUALIFIER bool epsilonEqual
1110
(
12-
float const& x,
13-
float const& y,
14-
float const& epsilon
11+
float x,
12+
float y,
13+
float epsilon
1514
)
1615
{
1716
return abs(x - y) < epsilon;
1817
}
1918

20-
template<>
2119
GLM_FUNC_QUALIFIER bool epsilonEqual
2220
(
23-
double const& x,
24-
double const& y,
25-
double const& epsilon
21+
double x,
22+
double y,
23+
double epsilon
2624
)
2725
{
2826
return abs(x - y) < epsilon;
@@ -40,14 +38,12 @@ namespace glm
4038
return lessThan(abs(x - y), vec<L, T, Q>(epsilon));
4139
}
4240

43-
template<>
44-
GLM_FUNC_QUALIFIER bool epsilonNotEqual(float const& x, float const& y, float const& epsilon)
41+
GLM_FUNC_QUALIFIER bool epsilonNotEqual(float x, float y, float epsilon)
4542
{
4643
return abs(x - y) >= epsilon;
4744
}
4845

49-
template<>
50-
GLM_FUNC_QUALIFIER bool epsilonNotEqual(double const& x, double const& y, double const& epsilon)
46+
GLM_FUNC_QUALIFIER bool epsilonNotEqual(double x, double y, double epsilon)
5147
{
5248
return abs(x - y) >= epsilon;
5349
}

0 commit comments

Comments
 (0)