Scanframe Modular Application 0.1.0
Loading...
Searching...
No Matches
TDynamicArray.h
Go to the documentation of this file.
1#pragma once
3
4namespace sf
5{
6
12template<typename T, typename Alloc = Allocator>
14{
15 public:
19 TDynamicArray() = default;
20
25 : _buffer(buf)
26 {}
27
31 explicit TDynamicArray(size_t sz)
32 : _buffer(sizeof(T) * sz)
33 {}
34
38 [[nodiscard]] size_t count() const
39 {
40 return _buffer.size() / sizeof(T);
41 }
42
46 [[nodiscard]] size_t size() const
47 {
48 return _buffer.size() / sizeof(T);
49 }
50
54 void* data()
55 {
56 return _buffer.data();
57 }
58
62 T& operator[](size_t i)
63 {
64 return *static_cast<T*>(_buffer.data(sizeof(T) * i));
65 }
66
70 explicit operator T*()
71 {
72 return static_cast<T*>(_buffer.data());
73 }
74
78 explicit operator T*() const
79 {
80 return static_cast<T*>(_buffer.data());
81 }
82
86 operator const void*() const// NOLINT(google-explicit-constructor)
87 {
88 return static_cast<void*>(_buffer.data());
89 }
90
94 operator void*()// NOLINT(google-explicit-constructor)
95 {
96 return static_cast<void*>(_buffer.data());
97 }
98
104 void resize(size_t sz, bool shrink = false)
105 {
106 _buffer.resize(sizeof(T) * sz, shrink);
107 }
108
112 void grow(size_t sz)
113 {
114 _buffer.grow(sizeof(T) * sz);
115 }
116
120 void zero()
121 {
122 _buffer.zero();
123 }
124
128 explicit operator TDynamicBuffer<Alloc>()
129 {
130 return _buffer;
131 }
132
137 {
138 return _buffer;
139 }
140
141 protected:
146};
147
148}// namespace sf
A dynamic buffer as typed array. Has range check on any index.
Definition TDynamicArray.h:14
TDynamicBuffer< Alloc > & getBuffer()
Gets access to the underlying buffer.
Definition TDynamicArray.h:136
void grow(size_t sz)
Grows the array to the specified size but keeps the current data intact.
Definition TDynamicArray.h:112
size_t size() const
Returns the size of the array.
Definition TDynamicArray.h:46
TDynamicArray(const TDynamicBuffer< Alloc > &buf)
Dynamic array constructor.
Definition TDynamicArray.h:24
T & operator[](size_t i)
Returns reference of the specified index.
Definition TDynamicArray.h:62
void * data()
Returns a typed pointer to the start of the array.
Definition TDynamicArray.h:54
TDynamicArray()=default
Default constructor.
void zero()
Zeroes all data.
Definition TDynamicArray.h:120
void resize(size_t sz, bool shrink=false)
Resizes the array but does leave the data in tact.
Definition TDynamicArray.h:104
size_t count() const
Returns the size of the array.
Definition TDynamicArray.h:38
TDynamicArray(size_t sz)
Initialization constructor.
Definition TDynamicArray.h:31
TDynamicBuffer< Alloc > _buffer
Holds the underlying storage buffer.
Definition TDynamicArray.h:145
Template for creating a dynamic buffer using an allocator.
Definition TDynamicBuffer.h:57
Definition Application.h:10