LCOV - code coverage report
Current view: top level - asyncImpl/include/async - QueueNode.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 16 16 100.0 %
Date: 2025-10-07 10:52:16 Functions: 11 11 100.0 %

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

Generated by: LCOV version 1.14