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-01-20 13:53:09 Functions: 0 0 -

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

Generated by: LCOV version 1.14