GCC Code Coverage Report


Directory: codebase/
File: codebase/library/include/public/lib.AbstractThreadTask.hpp
Date: 2023-03-16 04:37:09
Exec Total Coverage
Lines: 12 12 100.0%
Functions: 5 5 100.0%
Branches: 1 2 50.0%

Line Branch Exec Source
1 /**
2 * @file lib.AbstractThreadTask.hpp
3 * @author Sergey Baigudin, sergey@baigudin.software
4 * @copyright 2022, Sergey Baigudin, Baigudin Software
5 */
6 #ifndef LIB_ABSTRACTTHREADTASK_HPP_
7 #define LIB_ABSTRACTTHREADTASK_HPP_
8
9 #include "lib.Thread.hpp"
10
11 namespace eoos
12 {
13 namespace lib
14 {
15
16 /**
17 * @class AbstractThreadTask<A>
18 * @brief Abstract thread with a task.
19 *
20 * @tparam A Heap memory allocator class.
21 */
22 template <class A = Allocator>
23 class AbstractThreadTask : public Thread<A>, public api::Task
24 {
25 typedef Thread<A> Parent;
26
27 public:
28
29 /**
30 * @brief Constructor.
31 */
32 3 AbstractThreadTask()
33 : Thread<A>()
34 3 , api::Task() {
35
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 bool_t const isConstructed( construct() );
36 3 setConstructed( isConstructed );
37 3 }
38
39 /**
40 * @brief Destructor.
41 */
42 6 virtual ~AbstractThreadTask() {}
43
44 /**
45 * @copydoc eoos::api::Task::start()
46 */
47 virtual void start() = 0;
48
49 /**
50 * @copydoc eoos::api::Object::isConstructed()
51 */
52 15 virtual bool_t isConstructed() const
53 {
54 15 return Parent::isConstructed();
55 }
56
57 /**
58 * @copydoc eoos::api::Task::getStackSize()
59 */
60 3 virtual size_t getStackSize() const
61 {
62 3 return 0U;
63 }
64
65 protected:
66
67 using Parent::setConstructed;
68 using Parent::setTask;
69
70 private:
71
72 /**
73 * @brief Constructor.
74 *
75 * @return True if object has been constructed successfully.
76 */
77 3 bool_t construct()
78 {
79 3 return setTask(*this);
80 }
81
82 };
83
84 } // namespace lib
85 } // namespace eoos
86 #endif // LIB_ABSTRACTTHREADTASK_HPP_
87