14 namespace itk::itkpix::endec {
36 virtual void decode(uint64_t data) = 0;
41 virtual void decode(
const std::span<const uint8_t> buff) = 0;
45 virtual void decode(
const std::span<const uint64_t> buff64) = 0;
56 inline void decode(
const uint64_t *buff64,
size_t size64) {
decode({ buff64, size64 }); }
66 std::constructible_from<T, Options, typename T::EventCallback&> and
67 std::destructible<T> and
69 {
self.initialize() } -> std::same_as<void>;
70 {
self.finalize() } -> std::same_as<void>;
72 requires(T
self, uint64_t data) {
73 {
self.decode(data) } -> std::same_as<void>;
75 requires(T
self,
const uint8_t *buff,
size_t size) {
76 {
self.decode(buff,
size) } -> std::same_as<void>;
78 requires(T
self,
const uint64_t *buff,
size_t size) {
79 {
self.decode(buff,
size) } -> std::same_as<void>;
81 requires(T
self,
const std::span<const uint8_t> buff) {
82 {
self.decode(buff) } -> std::same_as<void>;
84 requires(T
self,
const std::span<const uint64_t> buff) {
85 {
self.decode(buff) } -> std::same_as<void>;
103 return func(opt, cb_evt, cb_type);
108 template<
template <
int>
class T>
112 if (cb_type == 0)
return static_cast<intf::DecCore*
>(
new T<0>(opt, cb_evt));
113 if (cb_type == 1)
return static_cast<intf::DecCore*
>(
new T<1>(opt, cb_evt));
114 if (cb_type == 2)
return static_cast<intf::DecCore*
>(
new T<2>(opt, cb_evt));
137 void decode(uint64_t data)
override { impl.decode(data); }
140 void decode(
const std::span<const uint8_t> buff)
override { impl.decode(buff.data(), buff.size()); }
141 void decode(
const std::span<const uint64_t> buff64)
override { impl.decode(buff64.data(), buff64.size()); }
Definition: test_enc_dec.cpp:117
Core decoding interface.
Definition: deccore.hpp:22
virtual void decode(uint64_t data)=0
Decode single 64-bit data frame.
virtual void decode(const std::span< const uint8_t > buff)=0
Decode data packet as received from FELIX. When reinterpreting as 64-bit words requires swapping of 3...
virtual void decode(const std::span< const uint64_t > buff64)=0
Decode data packet.
virtual void initialize()=0
Initialise decoder core.
virtual ~DecCore()=default
Destructor.
void decode(const uint8_t *buff, size_t size)
Decode data packet as received from FELIX. When reinterpreting as 64-bit words requires swapping of 3...
Definition: deccore.hpp:51
virtual void finalize()=0
Finalise decoder core.
void decode(const uint64_t *buff64, size_t size64)
Decode data packet.
Definition: deccore.hpp:56
Callback interface for event.
Definition: evtcallback.hpp:45
Definition: deccore.hpp:128
void finalize() override
Finalise decoder core.
Definition: deccore.hpp:136
void decode(const std::span< const uint64_t > buff64) override
Decode data packet.
Definition: deccore.hpp:141
void initialize() override
Initialise decoder core.
Definition: deccore.hpp:135
void decode(const std::span< const uint8_t > buff) override
Decode data packet as received from FELIX. When reinterpreting as 64-bit words requires swapping of 3...
Definition: deccore.hpp:140
void decode(uint64_t data) override
Decode single 64-bit data frame.
Definition: deccore.hpp:137
Interfaces for ITkPix decoder event callback.
ITkPix common Encoder/Decoder options.
Common encoder/decoder options.
Definition: options.hpp:10
Constructor for DecCore.
Definition: deccore.hpp:95
static DecCore make()
Create DecCore maker.
Definition: deccore.hpp:109
auto operator()(Options opt, intf::EventCallback &cb_evt, int cb_type=0)
Constructor.
Definition: deccore.hpp:102