LCOV - code coverage report
Current view: top level - docan/include/docan/datalink - DoCanDataLinkAddressPair.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 17 100.0 %
Date: 2025-04-15 08:32:23 Functions: 0 0 -

          Line data    Source code
       1             : // Copyright 2024 Accenture.
       2             : 
       3             : #pragma once
       4             : 
       5             : #include <platform/estdint.h>
       6             : 
       7             : namespace docan
       8             : {
       9             : /**
      10             :  * helper class to store a pair of addresses. An address pair is valid if
      11             :  * at least one of the addresses is not invalid.
      12             :  * \tparam T address type
      13             :  */
      14             : template<class T>
      15             : class DoCanDataLinkAddressPair
      16             : {
      17             : public:
      18             :     using AddressType = T;
      19             : 
      20             :     DoCanDataLinkAddressPair();
      21             :     DoCanDataLinkAddressPair(AddressType receptionAddress, AddressType targetAddress);
      22             :     DoCanDataLinkAddressPair(DoCanDataLinkAddressPair const& other);
      23             : 
      24             :     bool isValid() const;
      25             : 
      26             :     AddressType getReceptionAddress() const;
      27             :     AddressType getTransmissionAddress() const;
      28             : 
      29             :     bool operator==(DoCanDataLinkAddressPair const& other) const;
      30             :     DoCanDataLinkAddressPair& operator=(DoCanDataLinkAddressPair const& other);
      31             : 
      32             : private:
      33             :     AddressType _receptionAddress;
      34             :     AddressType _transmissionAddress;
      35             : };
      36             : 
      37             : /**
      38             :  * Inline implementations.
      39             :  */
      40             : template<class T>
      41          57 : inline DoCanDataLinkAddressPair<T>::DoCanDataLinkAddressPair() : DoCanDataLinkAddressPair(0, 0)
      42             : {}
      43             : 
      44             : template<class T>
      45         217 : inline DoCanDataLinkAddressPair<T>::DoCanDataLinkAddressPair(
      46             :     AddressType const receptionAddress, AddressType const targetAddress)
      47         121 : : _receptionAddress(receptionAddress), _transmissionAddress(targetAddress)
      48             : {}
      49             : 
      50             : template<class T>
      51         324 : inline DoCanDataLinkAddressPair<T>::DoCanDataLinkAddressPair(DoCanDataLinkAddressPair const& other)
      52         324 : : _receptionAddress(other.getReceptionAddress())
      53         324 : , _transmissionAddress(other.getTransmissionAddress())
      54             : {}
      55             : 
      56             : template<class T>
      57             : inline bool DoCanDataLinkAddressPair<T>::isValid() const
      58             : {
      59             :     return _receptionAddress != _transmissionAddress;
      60             : }
      61             : 
      62             : template<class T>
      63             : inline typename DoCanDataLinkAddressPair<T>::AddressType
      64        2344 : DoCanDataLinkAddressPair<T>::getReceptionAddress() const
      65             : {
      66        1976 :     return _receptionAddress;
      67             : }
      68             : 
      69             : template<class T>
      70             : inline typename DoCanDataLinkAddressPair<T>::AddressType
      71         115 : DoCanDataLinkAddressPair<T>::getTransmissionAddress() const
      72             : {
      73         110 :     return _transmissionAddress;
      74             : }
      75             : 
      76             : template<class T>
      77          31 : inline bool DoCanDataLinkAddressPair<T>::operator==(DoCanDataLinkAddressPair const& other) const
      78             : {
      79          31 :     return (_receptionAddress == other._receptionAddress)
      80          31 :            && (_transmissionAddress == other._transmissionAddress);
      81             : }
      82             : 
      83             : template<class T>
      84             : inline DoCanDataLinkAddressPair<T>&
      85          73 : DoCanDataLinkAddressPair<T>::operator=(DoCanDataLinkAddressPair const& other)
      86             : {
      87          43 :     if (&other != this)
      88             :     {
      89          73 :         _receptionAddress    = other._receptionAddress;
      90          73 :         _transmissionAddress = other._transmissionAddress;
      91             :     }
      92             :     return *this;
      93             : }
      94             : } // namespace docan

Generated by: LCOV version 1.14