LCOV - code coverage report
Current view: top level - cpp2can/src/can/filter - BitFieldFilter.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 16 16 100.0 %
Date: 2025-02-26 13:32:38 Functions: 4 4 100.0 %

          Line data    Source code
       1             : // Copyright 2024 Accenture.
       2             : 
       3             : #include "can/filter/BitFieldFilter.h"
       4             : 
       5             : namespace can
       6             : {
       7             : #ifdef __GNUC__
       8             : uint16_t const BitFieldFilter::NUMBER_OF_BITS;
       9             : uint16_t const BitFieldFilter::MAX_ID;
      10             : uint16_t const BitFieldFilter::MASK_SIZE;
      11             : #endif
      12             : 
      13          77 : BitFieldFilter::BitFieldFilter() { BitFieldFilter::clear(); }
      14             : 
      15             : // virtual
      16       10693 : void BitFieldFilter::add(uint32_t const filterId)
      17             : {
      18       10693 :     if (filterId <= MAX_ID)
      19             :     {
      20       10691 :         uint16_t const idx = static_cast<uint16_t>(filterId / 8U);
      21             : 
      22       10691 :         _mask[idx]
      23       10691 :             = static_cast<uint8_t>((_mask[idx] | static_cast<uint8_t>(1U << (filterId % 8U))));
      24             :     }
      25       10693 : }
      26             : 
      27             : // virtual
      28           6 : void BitFieldFilter::add(uint32_t const from, uint32_t const to)
      29             : {
      30       10555 :     for (uint32_t i = from; i <= to; ++i)
      31             :     {
      32       10549 :         add(i);
      33             :     }
      34           6 : }
      35             : 
      36             : // virtual
      37       14890 : bool BitFieldFilter::match(uint32_t const filterId) const
      38             : {
      39       14890 :     if (filterId <= MAX_ID)
      40             :     {
      41       14884 :         uint16_t const idx = static_cast<uint16_t>(filterId / 8U);
      42             : 
      43       14884 :         uint16_t const maskIndex = static_cast<uint16_t>(1U) << (filterId % 8U);
      44       14884 :         return (static_cast<uint16_t>(_mask[idx]) & maskIndex) == maskIndex;
      45             :     }
      46             :     return false;
      47             : }
      48             : 
      49             : } // namespace can

Generated by: LCOV version 1.14