26 LittleBuffer() =
default;
32 explicit LittleBuffer(
const T&
value);
39 LittleBuffer(
const std::vector<uint8_t>& buffer,
size_t offset);
46 LittleBuffer(
const uint8_t* buffer,
size_t offset);
53 return buffer_.cbegin();
60 [[nodiscard]]
auto cend()
const {
61 return buffer_.cend();
68 [[nodiscard]]
const uint8_t*
data()
const;
74 [[nodiscard]] uint8_t*
data();
80 [[nodiscard]]
size_t size()
const;
89 std::array<uint8_t,
sizeof(T)> buffer_;
93LittleBuffer<T>::LittleBuffer(
const T&
value) {
94 if (
constexpr bool big_endian = std::endian::native == std::endian::big;
96 std::array<uint8_t,
sizeof(T)> temp = {0};
97 memcpy(temp.data(), &
value,
sizeof(T));
98 for (
size_t index =
sizeof(T); index > 0; --index) {
99 buffer_[
sizeof(T) - index] = temp[index - 1];
102 std::memcpy(buffer_.data(), &
value,
sizeof(T));
107LittleBuffer<T>::LittleBuffer(
const std::vector<uint8_t>& buffer,
109 std::memcpy(buffer_.data(), buffer.data() + offset,
sizeof(T));
113LittleBuffer<T>::LittleBuffer(
const uint8_t* buffer,
115 if (buffer !=
nullptr) {
116 std::memcpy(buffer_.data(), buffer + offset,
sizeof(T));
122 return buffer_.data();
127 return buffer_.data();
131 return buffer_.size();
137 std::array<uint8_t,
sizeof(T)> temp = {0};
138 if (
constexpr bool big_endian = std::endian::native == std::endian::big;
140 for (
size_t index =
sizeof(T); index > 0; --index) {
141 temp[
sizeof(T) - index] = buffer_[index - 1];
144 std::memcpy(temp.data(), buffer_.data(),
sizeof(T));
146 const T* val =
reinterpret_cast<const T*
>(temp.data());
T value() const
Returns the value.
Definition littlebuffer.h:135
auto cbegin() const
Returns an iterator to the first byte.
Definition littlebuffer.h:52
const uint8_t * data() const
Returns a constant pointer to the internal byte array.
Definition littlebuffer.h:121
size_t size() const
Returns size of the value type.
Definition littlebuffer.h:130
auto cend() const
Returns the an iterator to the last byte.
Definition littlebuffer.h:60
Main namespace for the MDF library.
Definition buslogstream.h:24