acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
static_array.h
1// Created by camilo on 2025-07-16 01:27 <3ThomasBorregaardSørensen!!
2#pragma once
3
4
5#include <initializer_list>
6
7
8template < typename TYPE, size_t t_size, typename ARG_TYPE = const TYPE & >
9class static_array
10{
11public:
12
13
14 TYPE m_elementa[t_size];
15
16
17 static_array()
18 {
19
20
21 }
22
23 static_array(::std::initializer_list < TYPE > list_base)
24 {
25
26 ::i32 i = 0;
27
28 for (auto& item : list_base)
29 {
30
31 element_at(i) == item;
32
33 i++;
34
35 }
36
37 }
38
39
40 ~static_array()
41 {
42
43
44 }
45
46
47 TYPE& element_at(::collection::index i)
48 {
49
50 return m_elementa[i];
51
52 }
53
54 const TYPE& element_at(::collection::index i) const
55 {
56
57 return m_elementa[i];
58
59 }
60
61 ::collection::count size() const
62 {
63
64 return t_size;
65
66 }
67
68 ::collection::count get_upper_bound() const
69 {
70
71 return t_size - 1;
72
73 }
74
75 TYPE& first()
76 {
77
78 return element_at(0);
79
80 }
81
82
83 TYPE& last()
84 {
85
86 return element_at(get_upper_bound());
87
88 }
89
90
91 const TYPE& first() const
92 {
93
94 return element_at(0);
95
96 }
97
98
99 const TYPE& last() const
100 {
101
102 return element_at(get_upper_bound());
103
104 }
105
106
107 TYPE* begin()
108 {
109
110 return m_elementa;
111
112 }
113
114 TYPE* end()
115 {
116
117 return this->begin() + t_size;
118
119 }
120
121 const TYPE* begin() const
122 {
123
124 return m_elementa;
125
126 }
127
128 const TYPE* end() const
129 {
130
131 return this->begin() + t_size;
132
133 }
134
135
136 static_array & operator = (std::initializer_list<TYPE > list_base)
137 {
138
139 ::i32 i = 0;
140
141 for (auto& item : list_base)
142 {
143
144 element_at(i) == item;
145
146 i++;
147
148 }
149
150 return *this;
151
152 }
153
154};
Definition item.h:93
Definition list.h:33