1 #ifndef DALI_SIGNAL_SLOT_CONNECTIONS_H
2 #define DALI_SIGNAL_SLOT_CONNECTIONS_H
5 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
22 #include <dali/public-api/signals/signal-slot-observers.h>
27 * @addtogroup dali_core_signals
34 * @brief Slot connection is the connection information held by a connection tracker.
36 * A slot can have zero to many connection objects, depending
37 * on how many signals it is connected to.
39 * A connection contains:
41 * - SlotObserver -interface provided by the signal
43 * It holds a pointer to the callback, but does not own it.
46 class DALI_CORE_API SlotConnection
54 * @param[in] slotObserver The slot observer
55 * @param[in] callback A callback object (not owned)
57 SlotConnection(SlotObserver* slotObserver, CallbackBase* callback);
60 * @brief Non-virtual destructor, not intended as a base class.
66 * @brief Retrieves the callback.
69 * @return A pointer to the callback
71 CallbackBase* GetCallback();
74 * @brief Retrieves the slot observer.
77 * @return A pointer to the slot observer
79 SlotObserver* GetSlotObserver();
83 SlotConnection( const SlotConnection& ) = delete; ///< Deleted copy constructor. @SINCE_1_0.0
84 SlotConnection( SlotConnection&& ) = delete; ///< Deleted move constructor. @SINCE_1_9.25
85 SlotConnection& operator=( const SlotConnection& ) = delete; ///< Deleted copy assignment operator. @SINCE_1_0.0
86 SlotConnection& operator=( SlotConnection&& ) = delete; ///< Deleted move assignment operator. @SINCE_1_9.25
90 SlotObserver* mSlotObserver; ///< a pointer to the slot observer (not owned)
91 CallbackBase* mCallback; ///< The callback. This is not owned, the corresponding SignalConnection has ownership.
95 * @brief SignalConnection is the connection information held by the signal.
97 * A signal can have zero to many connections, depending on how
98 * many slots are connected to this signal.
100 * A connection contains:
102 * - SignalObserver - interface provided by a slot owning object.
104 * It takes ownership of the callback, and will delete it when
105 * the connection is destroyed.
108 class DALI_CORE_API SignalConnection
113 * @brief Constructor.
116 * @param[in] callback The callback which should be a C function
118 SignalConnection( CallbackBase* callback );
121 * @brief Constructor.
124 * @param[in] signalObserver The signal observer
125 * @param[in] callback Ownership of this callback object is taken
127 SignalConnection( SignalObserver* signalObserver, CallbackBase* callback );
130 * @brief Non-virtual destructor, not intended as a base class.
136 * @brief Disconnects the signal from the slot.
139 * @param[in] slotObserver The signal disconnecting from the slot
141 void Disconnect( SlotObserver* slotObserver );
144 * @brief Retrieves the callback.
147 * @return A pointer to the callback
149 CallbackBase* GetCallback();
153 SignalConnection( const SignalConnection& ) = delete; ///< Deleted copy constructor. @SINCE_1_0.0
154 SignalConnection( SignalConnection&& ) = delete; ///< Deleted move constructor. @SINCE_1_9.25
155 SignalConnection& operator=( const SignalConnection& ) = delete; ///< Deleted copy assignment operator. @SINCE_1_0.0
156 SignalConnection& operator=( SignalConnection&& ) = delete; ///< Deleted move assignment operator. @SINCE_1_9.25
160 SignalObserver* mSignalObserver; ///< a pointer to the signal observer (not owned)
161 CallbackBase* mCallback; ///< The callback, has ownership.
169 #endif // DALI_SIGNAL_SLOT_CONNECTIONS_H