iceoryx_doc  1.0.1
reference_counter.hpp
1 // Copyright (c) 2019 by Robert Bosch GmbH. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
15 // SPDX-License-Identifier: Apache-2.0
16 #ifndef IOX_UTILS_CXX_REFERENCE_COUNTER_HPP
17 #define IOX_UTILS_CXX_REFERENCE_COUNTER_HPP
18 
19 namespace iox
20 {
21 namespace cxx
22 {
27 template <typename T>
29 {
30  public:
33  ReferenceCounter(T* const referenceCounter) noexcept;
34 
36  ReferenceCounter(const ReferenceCounter& rhs) noexcept;
37 
39  ReferenceCounter(ReferenceCounter&& f_rhs) noexcept;
40 
42  ~ReferenceCounter() noexcept;
43 
45  ReferenceCounter& operator=(const ReferenceCounter& rhs) noexcept;
46 
49 
51  T getValue() const noexcept;
52 
53  private:
54  void incrementReferenceCounter() noexcept;
55  void decrementReferenceCounter() noexcept;
56 
57  private:
58  T* m_referenceCounter;
59 };
60 } // namespace cxx
61 } // namespace iox
62 
63 #include "iceoryx_utils/internal/cxx/reference_counter.inl"
64 
65 #endif // IOX_UTILS_CXX_REFERENCE_COUNTER_HPP
reference counter abstraction for the usage in constructs like a shared_ptr. A pointer to a memory po...
Definition: reference_counter.hpp:29
ReferenceCounter(T *const referenceCounter) noexcept
increments f_referenceCounter if f_referenceCounter != nullptr
Definition: reference_counter.inl:26
T getValue() const noexcept
returns the current value of the reference counter
Definition: reference_counter.inl:77
ReferenceCounter & operator=(const ReferenceCounter &rhs) noexcept
copy assignment, increments the rhs managed reference counter if it is != nullptr
Definition: reference_counter.inl:53
~ReferenceCounter() noexcept
decrements f_referenceCounter if f_referenceCounter != nullptr
Definition: reference_counter.inl:47
building block to easily create free function for logging in a library context
Definition: lockfree_queue.hpp:28