15 #ifndef _FASTCDR_CDRBUFFER_H_
16 #define _FASTCDR_CDRBUFFER_H_
18 #include "fastcdr_dll.h"
25 inline uint32_t size_to_uint32(
28 #if defined(_WIN32) || !defined(FASTCDR_ARM32)
30 return static_cast<uint32_t
>(val);
34 #endif // if defined(_WIN32) || !defined(FASTCDR_ARM32)
62 , current_position_(&buffer_[index])
76 ptrdiff_t diff = current_position_ - buffer_;
77 buffer_ = iterator.buffer_;
78 current_position_ = buffer_ + diff;
90 ptrdiff_t diff = iterator.current_position_ - iterator.buffer_;
91 current_position_ = buffer_ + diff;
104 memcpy(current_position_, &data,
sizeof(_T));
112 template<
typename _T>
117 memcpy(&data, current_position_,
sizeof(_T));
132 memcpy(current_position_, src, size);
148 memcpy(dst, current_position_, size);
160 current_position_ += num_bytes;
167 current_position_ -= num_bytes;
179 return static_cast<size_t>(current_position_ - it.current_position_);
213 return current_position_;
219 return other_iterator.current_position_ == current_position_;
225 return !(other_iterator == *
this);
231 char* buffer_ {
nullptr};
234 char* current_position_ {
nullptr};
265 const size_t bufferSize);
272 , m_internalBuffer(true)
274 std::swap(buffer_, fbuffer.buffer_);
275 std::swap(size_, fbuffer.size_);
276 std::swap(m_internalBuffer, fbuffer.m_internalBuffer);
283 std::swap(buffer_, fbuffer.buffer_);
284 std::swap(size_, fbuffer.size_);
285 std::swap(m_internalBuffer, fbuffer.m_internalBuffer);
346 size_t min_size_inc);
357 char* buffer_ {
nullptr };
363 bool m_internalBuffer {
true };
368 #endif // _FASTCDR_FASTCDRBUFFER_H_