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-07-10 11:19:33 Functions: 0 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          33 : inline QueueNode<T>::QueueNode() : _next(reinterpret_cast<T*>(1U))
      33             : {}
      34             : 
      35             : template<typename T>
      36          29 : inline bool QueueNode<T>::isEnqueued() const
      37             : {
      38          29 :     return _next != reinterpret_cast<T*>(1U);
      39             : }
      40             : 
      41             : template<typename T>
      42           2 : inline T* QueueNode<T>::getNext() const
      43             : {
      44           2 :     return _next;
      45             : }
      46             : 
      47             : template<typename T>
      48          11 : inline void QueueNode<T>::setNext(T* const next)
      49             : {
      50          10 :     _next = next;
      51           3 : }
      52             : 
      53             : template<typename T>
      54          21 : inline void QueueNode<T>::enqueue()
      55             : {
      56          22 :     _next = nullptr;
      57             : }
      58             : 
      59             : template<typename T>
      60          19 : inline T* QueueNode<T>::dequeue()
      61             : {
      62          19 :     T* const prevNext = _next;
      63          21 :     _next             = reinterpret_cast<T*>(1U);
      64             :     return prevNext;
      65             : }
      66             : 
      67             : } // namespace async

Generated by: LCOV version 1.14