semf
buffer.h
Go to the documentation of this file.
1
10#ifndef SEMF_UTILS_CORE_BUFFER_BUFFER_H_
11#define SEMF_UTILS_CORE_BUFFER_BUFFER_H_
12
15#include <cstdint>
16#include <cstddef>
17
18namespace semf
19{
40template <typename T>
41class Buffer
42{
43public:
44 Buffer() = default;
50 Buffer(T buffer[], size_t bufferSize);
51 virtual ~Buffer() = default;
52
58 void setBuffer(T buffer[], size_t bufferSize);
66 virtual T& operator[](size_t pos) const;
71 size_t size() const;
77 virtual size_t count() const;
82 T* data() const;
83
84private:
86 T* m_data = nullptr;
88 size_t m_size = 0;
89};
90
91template <typename T>
92Buffer<T>::Buffer(T buffer[], size_t bufferSize)
93: m_data(buffer),
94 m_size(bufferSize)
95{
96}
97
98template <typename T>
99void Buffer<T>::setBuffer(T buffer[], size_t bufferSize)
100{
101 if (buffer != nullptr && bufferSize > 0)
102 {
104 m_data = buffer;
105 m_size = bufferSize;
107 }
108}
109
110template <typename T>
111T& Buffer<T>::operator[](size_t pos) const
112{
113#if defined(DEBUG) || defined(USE_SEMF_DEBUG)
114 if (pos >= m_size)
115 {
116 T* p = nullptr;
117 return *p;
118 }
119#endif
121 T& entry = m_data[pos];
123 return entry;
124}
125
126template <typename T>
127size_t Buffer<T>::size() const
128{
129 return m_size;
130}
131
132template <typename T>
133size_t Buffer<T>::count() const
134{
135 return m_size;
136}
137
138template <typename T>
140{
141 return m_data;
142}
143} /* namespace semf */
144#endif /* SEMF_UTILS_CORE_BUFFER_BUFFER_H_ */
Buffer is a base class for buffer implementations.
Definition: buffer.h:42
virtual T & operator[](size_t pos) const
Returns the entry from a specific position in the buffer.
Definition: buffer.h:111
T * data() const
Returns the pointer to the first element of the data array.
Definition: buffer.h:139
virtual ~Buffer()=default
void setBuffer(T buffer[], size_t bufferSize)
Sets the data array.
Definition: buffer.h:99
virtual size_t count() const
Returns the number of entries stored in the buffer.
Definition: buffer.h:133
size_t size() const
Returns the size of the buffer.
Definition: buffer.h:127
Buffer()=default