12 namespace itk::itkpix::endec {
42 virtual void add_hit(uint16_t col, uint16_t row, uint16_t tot) = 0;
49 virtual void add_hmap(uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots) = 0;
55 virtual void add_qcore(uint8_t qcol, uint8_t qrow, uint64_t qtot) = 0;
66 std::constructible_from<T, Options, typename T::OutputCallback&> and
67 std::destructible<T> and
69 {
self.initialize() } -> std::same_as<void>;
70 {
self.finalize() } -> std::same_as<void>;
72 requires(T
self, uint8_t tag) {
73 {
self.evt_init(tag) } -> std::same_as<void>;
76 {
self.evt_done() } -> std::same_as<void>;
78 requires(T
self, uint16_t col, uint16_t row, uint16_t tot) {
79 {
self.add_hit(col, row, tot) } -> std::same_as<void>;
81 requires(T
self, uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots) {
82 {
self.add_hmap(qcol, qrow, hmap, tots) } -> std::same_as<void>;
84 requires(T
self, uint8_t qcol, uint8_t qrow, uint64_t qtot) {
85 {
self.add_qcore(qcol, qrow, qtot) } -> std::same_as<void>;
123 using OutputCallback = T::OutputCallback;
125 EncCore(
Options opt, OutputCallback& cb_out) : impl(opt, cb_out) {}
129 void evt_init(uint8_t tag)
override { impl.evt_init(tag); }
130 void evt_next(uint8_t tag)
override { impl.evt_next(tag); }
132 void add_hit(uint16_t col, uint16_t row, uint16_t tot)
override {
133 impl.add_hit(col, row, tot);
135 void add_hmap(uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots)
override {
136 impl.add_hmap(qcol, qrow, hmap, tots);
138 void add_qcore(uint8_t qcol, uint8_t qrow, uint64_t qtot)
override {
139 impl.add_qcore(qcol, qrow, qtot);
Definition: enccore.hpp:16
virtual void evt_next(uint8_t tag)=0
Complete the event and start the next one.
virtual void evt_init(uint8_t tag)=0
Init a new event.
virtual void finalize()=0
Finalise encoder core.
virtual void evt_done()=0
Done event.
virtual void add_qcore(uint8_t qcol, uint8_t qrow, uint64_t qtot)=0
Add qcore: tots are decoded to 64 bit qtot, no-hit marked as 0xF.
virtual void add_hmap(uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots)=0
Add hitmap: hitmap is decoded, tots are not decoded.
virtual void initialize()=0
Initialise encoder core.
virtual void add_hit(uint16_t col, uint16_t row, uint16_t tot)=0
Add hit.
virtual ~EncCore()=default
Destructor.
Callback interface for output.
Definition: outcallback.hpp:39
Definition: enccore.hpp:42
Definition: enccore.hpp:121
void initialize() override
Initialise encoder core.
Definition: enccore.hpp:127
void add_hit(uint16_t col, uint16_t row, uint16_t tot) override
Add hit.
Definition: enccore.hpp:132
void add_hmap(uint8_t qcol, uint8_t qrow, uint16_t hmap, uint64_t tots) override
Add hitmap: hitmap is decoded, tots are not decoded.
Definition: enccore.hpp:135
void finalize() override
Finalise encoder core.
Definition: enccore.hpp:128
void evt_next(uint8_t tag) override
Complete the event and start the next one.
Definition: enccore.hpp:130
void add_qcore(uint8_t qcol, uint8_t qrow, uint64_t qtot) override
Add qcore: tots are decoded to 64 bit qtot, no-hit marked as 0xF.
Definition: enccore.hpp:138
void evt_done() override
Done event.
Definition: enccore.hpp:131
void evt_init(uint8_t tag) override
Init a new event.
Definition: enccore.hpp:129
ITkPix common Encoder/Decoder options.
Interfaces for ITkPix encoder output callback.
Common encoder/decoder options.
Definition: options.hpp:10
Constructor for EncCore.
Definition: enccore.hpp:95
auto operator()(Options opt, intf::OutputCallback &cb_out)
Constructor.
Definition: enccore.hpp:101
static EncCore make()
Create EncCore maker.
Definition: enccore.hpp:106