fennec
Loading...
Searching...
No Matches
swizzle_storage.h
1
// =====================================================================================================================
2
// fennec, a free and open source game engine
3
// Copyright © 2025 Medusa Slockbower
4
//
5
// This program is free software: you can redistribute it and/or modify
6
// it under the terms of the GNU General Public License as published by
7
// the Free Software Foundation, either version 3 of the License, or
8
// (at your option) any later version.
9
//
10
// This program is distributed in the hope that it will be useful,
11
// but WITHOUT ANY WARRANTY; without even the implied warranty of
12
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
// GNU General Public License for more details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with this program. If not, see <https://www.gnu.org/licenses/>.
17
// =====================================================================================================================
18
19
20
#ifndef FENNEC_MATH_SWIZZLE_STORAGE_H
21
#define FENNEC_MATH_SWIZZLE_STORAGE_H
22
23
namespace
fennec::detail
24
{
25
26
//
27
// \brief Backing storage struct for \ref fennec::swizzle "swizzle"
28
// \tparam DataT Data Type
29
// \tparam ScalarT Element Types
30
// \tparam IndicesV Swizzle Order
31
template
<
typename
DataT,
typename
ScalarT,
size_t
...IndicesV>
32
struct
swizzle_storage
33
{
34
//
35
// \brief an array containing the indices of this swizzle
36
inline
static
constexpr
size_t
indices[] = { IndicesV... };
37
38
//
39
// \brief an array containing the scalar values of this swizzle
40
DataT data;
41
42
//
43
// \brief element access, returns a copy of the value at index \p i
44
// \param i the index
45
// \returns a copy of the scalar value at index \p i
46
constexpr
ScalarT operator[](
size_t
i)
const
noexcept
{
47
return
data[indices[i]];
48
}
49
};
50
51
}
52
53
54
#endif
// FENNEC_MATH_SWIZZLE_STORAGE_H
include
fennec
math
swizzle_storage.h
Generated by
1.9.8