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

          Line data    Source code
       1             : // Copyright 2024 Accenture.
       2             : 
       3             : /**
       4             :  * \ingroup async
       5             :  */
       6             : #pragma once
       7             : 
       8             : #include <estd/functional.h>
       9             : 
      10             : namespace async
      11             : {
      12             : template<typename T>
      13             : class QueueNode
      14             : {
      15             : public:
      16             :     QueueNode();
      17             : 
      18             :     bool isEnqueued() const;
      19             : 
      20             :     T* getNext() const;
      21             :     void setNext(T* next);
      22             : 
      23             :     void enqueue();
      24             :     T* dequeue();
      25             : 
      26             : private:
      27             :     T* _next;
      28             : };
      29             : 
      30             : /**
      31             :  * Inline implementations.
      32             :  */
      33             : template<typename T>
      34          33 : inline QueueNode<T>::QueueNode() : _next(reinterpret_cast<T*>(1U))
      35             : {}
      36             : 
      37             : template<typename T>
      38          28 : inline bool QueueNode<T>::isEnqueued() const
      39             : {
      40          29 :     return _next != reinterpret_cast<T*>(1U);
      41             : }
      42             : 
      43             : template<typename T>
      44           2 : inline T* QueueNode<T>::getNext() const
      45             : {
      46           2 :     return _next;
      47             : }
      48             : 
      49             : template<typename T>
      50          11 : inline void QueueNode<T>::setNext(T* const next)
      51             : {
      52          10 :     _next = next;
      53           3 : }
      54             : 
      55             : template<typename T>
      56          21 : inline void QueueNode<T>::enqueue()
      57             : {
      58          22 :     _next = nullptr;
      59             : }
      60             : 
      61             : template<typename T>
      62          19 : inline T* QueueNode<T>::dequeue()
      63             : {
      64          19 :     T* const prevNext = _next;
      65          21 :     _next             = reinterpret_cast<T*>(1U);
      66             :     return prevNext;
      67             : }
      68             : 
      69             : } // namespace async

Generated by: LCOV version 1.14