acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
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
8
template
<
typename
TYPE,
size_t
t_size,
typename
ARG_TYPE = const TYPE & >
9
class
static_array
10
{
11
public
:
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
};
item
Definition
item.h:93
list_base
Definition
list.h:33
prototype
collection
static_array.h
Generated by
1.17.0