jaffarCommon
Loading...
Searching...
No Matches
deserializers/contiguous.hpp
Go to the documentation of this file.
1#pragma once
2
8#include "../exceptions.hpp"
9#include "base.hpp"
10#include <limits>
11#include <string.h>
12
13namespace jaffarCommon
14{
15
16namespace deserializer
17{
18
25class Contiguous final : public deserializer::Base
26{
27public:
34 Contiguous(const void* __restrict inputDataBuffer = nullptr, const size_t inputDataBufferSize = std::numeric_limits<uint32_t>::max())
35 : deserializer::Base(inputDataBuffer, inputDataBufferSize)
36 {
37 }
38
39 ~Contiguous() = default;
40
41 __JAFFAR_COMMON__INLINE__ void popContiguous(void* const __restrict outputDataBuffer, const size_t count) override
42 {
43 // Making sure we do not exceed the maximum size estipulated
45 JAFFAR_THROW_RUNTIME("Maximum input data position reached (%lu) by current position (%lu) + count (%lu) before contiguous deserialization", _inputDataBufferSize,
46 _inputDataBufferPos, count);
47
48 // Only perform memcpy if the input block is not null
49 if (outputDataBuffer != nullptr && _inputDataBuffer != nullptr) memcpy(outputDataBuffer, &_inputDataBuffer[_inputDataBufferPos], count);
50
51 // Moving input data pointer position
52 _inputDataBufferPos += count;
53 }
54
55 __JAFFAR_COMMON__INLINE__ void pop(void* const __restrict outputDataBuffer, const size_t count) override { popContiguous(outputDataBuffer, count); }
56};
57
58} // namespace deserializer
59
60} // namespace jaffarCommon
Definition deserializers/base.hpp:24
size_t _inputDataBufferPos
Definition deserializers/base.hpp:84
const size_t _inputDataBufferSize
Definition deserializers/base.hpp:79
const uint8_t *__restrict const _inputDataBuffer
Definition deserializers/base.hpp:74
Definition deserializers/contiguous.hpp:26
Contiguous(const void *__restrict inputDataBuffer=nullptr, const size_t inputDataBufferSize=std::numeric_limits< uint32_t >::max())
Definition deserializers/contiguous.hpp:34
__JAFFAR_COMMON__INLINE__ void pop(void *const __restrict outputDataBuffer, const size_t count) override
Definition deserializers/contiguous.hpp:55
__JAFFAR_COMMON__INLINE__ void popContiguous(void *const __restrict outputDataBuffer, const size_t count) override
Definition deserializers/contiguous.hpp:41
#define JAFFAR_THROW_RUNTIME(...)
Definition exceptions.hpp:22
Contains the base class for the data serializers.