gdk-graphics 0b051eb9b5c1eaa0658babaa4463dd7a80aa9d2c
Loading...
Searching...
No Matches
cube_array.h
1// © Joseph Cameron - All Rights Reserved
2
3#ifndef JFC_CUBE_ARRAY_H
4#define JFC_CUBE_ARRAY_H
5
6#include <array>
7
8namespace jfc {
11 template<typename value_type, size_t size_param>
12 class cube_array final {
13 public:
14 static constexpr size_t size = size_param;
15 static constexpr size_t size_1d = size * size * size;
16 private:
17 std::array<value_type, size_1d> m_Data;
18 public:
19 const value_type &at(const size_t aX, const size_t aY, const size_t aZ) const {
20 return m_Data[index(aX, aY, aZ)];
21 }
22
23 const decltype(m_Data) &data() const {
24 return m_Data;
25 }
26
27 value_type &at(const size_t aX, const size_t aY, const size_t aZ) {
28 return m_Data[index(aX, aY, aZ)];
29 }
30
31 decltype(m_Data) &data() {
32 return m_Data;
33 }
34
35 void clear() {
36 m_Data = {};
37 }
38 private:
39 constexpr size_t index(const size_t aX, const size_t aY, const size_t aZ) const noexcept {
40 return aX + size * aY + size * size * aZ;
41 }
42 };
43}
44
45#endif
46
3d array where its length width and height are equal
Definition cube_array.h:12