27#ifndef CCSDS124_MASK_HPP
28#define CCSDS124_MASK_HPP
52template <std::
size_t N>
54 bool new_mask_flag, std::size_t t)
noexcept {
55 if (t == 0 || new_mask_flag) {
62 for (std::size_t w = 0; w < BitVector<N>::NUM_WORDS; ++w) {
63 build.data()[w] |= (input.data()[w] ^ prev_input.data()[w]);
83template <std::
size_t N>
85 const BitVector<N>& build_prev,
bool new_mask_flag)
noexcept {
89 for (std::size_t w = 0; w < BitVector<N>::NUM_WORDS; ++w) {
90 mask.data()[w] = (input.data()[w] ^ prev_input.data()[w]) | build_prev.data()[w];
94 for (std::size_t w = 0; w < BitVector<N>::NUM_WORDS; ++w) {
95 mask.data()[w] |= (input.data()[w] ^ prev_input.data()[w]);
114template <std::
size_t N>
116 std::size_t t)
noexcept {
123 change.xor_with(mask, prev_mask);
Fixed-length bit vector with static allocation.
Fixed-length bit vector with compile-time size.
CCSDS 124.0-B-1 compile-time configuration.
CCSDS 124.0-B-1 error handling.
void compute_change(BitVector< N > &change, const BitVector< N > &mask, const BitVector< N > &prev_mask, std::size_t t) noexcept
Compute change vector (CCSDS Equation 8).
void update_mask(BitVector< N > &mask, const BitVector< N > &input, const BitVector< N > &prev_input, const BitVector< N > &build_prev, bool new_mask_flag) noexcept
Update mask vector (CCSDS Equation 7).
void update_build(BitVector< N > &build, const BitVector< N > &input, const BitVector< N > &prev_input, bool new_mask_flag, std::size_t t) noexcept
Update build vector (CCSDS Equation 6).