Line | Branch | Exec | Source |
---|---|---|---|
1 | /** | ||
2 | * @file sys.NonCopyable.hpp | ||
3 | * @author Sergey Baigudin, sergey@baigudin.software | ||
4 | * @copyright 2021-2022, Sergey Baigudin, Baigudin Software | ||
5 | */ | ||
6 | #ifndef SYS_NONCOPYABLE_HPP_ | ||
7 | #define SYS_NONCOPYABLE_HPP_ | ||
8 | |||
9 | #include "sys.Object.hpp" | ||
10 | |||
11 | namespace eoos | ||
12 | { | ||
13 | namespace sys | ||
14 | { | ||
15 | |||
16 | /** | ||
17 | * @class NonCopyable | ||
18 | * @brief Root class of the operating system for objects which cannot be copied. | ||
19 | */ | ||
20 | class NonCopyable : public Object | ||
21 | { | ||
22 | typedef Object Parent; | ||
23 | |||
24 | public: | ||
25 | |||
26 | /** | ||
27 | * @brief Constructor. | ||
28 | */ | ||
29 | 1022 | NonCopyable() | |
30 | 1022 | : Object() { | |
31 | 1022 | } | |
32 | |||
33 | /** | ||
34 | * @brief Destructor. | ||
35 | */ | ||
36 |
1/2✓ Branch 1 taken 1021 times.
✗ Branch 2 not taken.
|
2042 | virtual ~NonCopyable() {} |
37 | |||
38 | private: | ||
39 | |||
40 | /** | ||
41 | * @copydoc eoos::Object::Object(Object const&) | ||
42 | */ | ||
43 | NonCopyable(NonCopyable const&); ///< SCA MISRA-C++:2008 Justified Rule 3-2-2 and Rule 3-2-4 | ||
44 | |||
45 | /** | ||
46 | * @copydoc eoos::Object::operator=(Object const&) | ||
47 | */ | ||
48 | NonCopyable& operator=(NonCopyable const&); ///< SCA MISRA-C++:2008 Justified Rule 3-2-2 and Rule 3-2-4 | ||
49 | |||
50 | #if EOOS_CPP_STANDARD >= 2011 | ||
51 | |||
52 | /** | ||
53 | * @copydoc eoos::Object::Object(Object&&) | ||
54 | */ | ||
55 | NonCopyable(NonCopyable&&) noexcept = delete; | ||
56 | |||
57 | /** | ||
58 | * @copydoc eoos::Object::operator=(Object&&) | ||
59 | */ | ||
60 | NonCopyable& operator=(NonCopyable&&) noexcept = delete; | ||
61 | |||
62 | #endif // EOOS_CPP_STANDARD >= 2011 | ||
63 | |||
64 | }; | ||
65 | |||
66 | } // namespace sys | ||
67 | } // namespace eoos | ||
68 | #endif // SYS_NONCOPYABLE_HPP_ | ||
69 |