KiCad PCB EDA Suite
|
#include <observable.h>
Public Member Functions | |
OBSERVABLE () | |
Construct an observable with empty non-shared subscription list. | |
OBSERVABLE (OBSERVABLE &aInherit) | |
Construct an observable with a shared subscription list. | |
void | SubscribeUnmanaged (ObserverInterface *aObserver) |
Add a subscription without RAII link. | |
LINK | Subscribe (ObserverInterface *aObserver) |
Add a subscription returning an RAII link. | |
void | Unsubscribe (ObserverInterface *aObserver) |
Cancel the subscription of a subscriber. | |
template<typename... Args1, typename... Args2> | |
void | Notify (void(ObserverInterface::*Ptr)(Args1...), Args2 &&... aArgs) |
Notify event to all subscribed observers. | |
template<typename... Args1, typename... Args2> | |
void | NotifyIgnore (void(ObserverInterface::*Ptr)(Args1...), ObserverInterface *aIgnore, Args2 &&... aArgs) |
Notify event to all subscribed observers but one to be ignore. | |
size_t | size () const |
Protected Member Functions | |
void | on_observers_empty () |
void | enter_iteration () |
void | leave_iteration () |
void | add_observer (void *observer) |
void | remove_observer (void *observer) |
Protected Attributes | |
std::shared_ptr< IMPL > | impl_ |
Private Member Functions | |
void | allocate_impl () |
void | allocate_shared_impl () |
void | deallocate_impl () |
std::shared_ptr< IMPL > | get_shared_impl () |
Definition at line 126 of file observable.h.
|
inline |
Construct an observable with empty non-shared subscription list.
Definition at line 132 of file observable.h.
|
inline |
Construct an observable with a shared subscription list.
aInherit | Observable to share the subscription list with. |
Definition at line 139 of file observable.h.
|
protectedinherited |
Definition at line 216 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::allocate_impl(), and UTIL::DETAIL::OBSERVABLE_BASE::impl_.
|
privateinherited |
Definition at line 188 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_.
Referenced by UTIL::DETAIL::OBSERVABLE_BASE::add_observer().
|
privateinherited |
Definition at line 195 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_.
Referenced by UTIL::DETAIL::OBSERVABLE_BASE::get_shared_impl().
|
privateinherited |
Definition at line 204 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_.
Referenced by UTIL::DETAIL::OBSERVABLE_BASE::on_observers_empty().
|
protectedinherited |
Definition at line 230 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_.
Referenced by UTIL::OBSERVABLE< ObserverInterface >::Notify(), and UTIL::OBSERVABLE< ObserverInterface >::NotifyIgnore().
|
privateinherited |
Definition at line 209 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::allocate_shared_impl(), and UTIL::DETAIL::OBSERVABLE_BASE::impl_.
|
protectedinherited |
Definition at line 237 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_.
Referenced by UTIL::OBSERVABLE< ObserverInterface >::Notify(), and UTIL::OBSERVABLE< ObserverInterface >::NotifyIgnore().
|
inline |
Notify event to all subscribed observers.
Ptr | is a pointer to method of the observer interface. |
aArgs | is a list of arguments to each notification call, will be perfectly forwarded. |
Definition at line 182 of file observable.h.
References UTIL::DETAIL::OBSERVABLE_BASE::enter_iteration(), UTIL::DETAIL::OBSERVABLE_BASE::impl_, and UTIL::DETAIL::OBSERVABLE_BASE::leave_iteration().
|
inline |
Notify event to all subscribed observers but one to be ignore.
Ptr | is a pointer to method of the observer interface. |
aIgnore | is an observer to ignore during this notification. |
aArgs | is a list of arguments to each notification call, will be perfectly forwarded. |
Definition at line 218 of file observable.h.
References UTIL::DETAIL::OBSERVABLE_BASE::enter_iteration(), UTIL::DETAIL::OBSERVABLE_BASE::impl_, and UTIL::DETAIL::OBSERVABLE_BASE::leave_iteration().
|
protectedinherited |
Definition at line 258 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::deallocate_impl().
|
protectedinherited |
Definition at line 223 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_.
|
inherited |
Definition at line 249 of file observable.cpp.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_.
|
inline |
Add a subscription returning an RAII link.
aObserver | observer to subscribe |
Definition at line 157 of file observable.h.
References UTIL::DETAIL::OBSERVABLE_BASE::impl_, and UTIL::DETAIL::OBSERVABLE_BASE::UTIL::LINK.
Referenced by KIGFX::GAL::GAL().
|
inline |
Add a subscription without RAII link.
aObserver | Observer to subscribe. |
Definition at line 146 of file observable.h.
|
inline |
Cancel the subscription of a subscriber.
This can be called during notification calls.
aObserver | observer to remove from the subscription list. |
Definition at line 170 of file observable.h.
|
protectedinherited |
Definition at line 93 of file observable.h.
Referenced by UTIL::DETAIL::OBSERVABLE_BASE::add_observer(), UTIL::DETAIL::OBSERVABLE_BASE::allocate_impl(), UTIL::DETAIL::OBSERVABLE_BASE::allocate_shared_impl(), UTIL::DETAIL::OBSERVABLE_BASE::deallocate_impl(), UTIL::DETAIL::OBSERVABLE_BASE::enter_iteration(), UTIL::DETAIL::OBSERVABLE_BASE::get_shared_impl(), UTIL::DETAIL::OBSERVABLE_BASE::leave_iteration(), UTIL::OBSERVABLE< ObserverInterface >::Notify(), UTIL::OBSERVABLE< ObserverInterface >::NotifyIgnore(), UTIL::DETAIL::OBSERVABLE_BASE::remove_observer(), UTIL::DETAIL::OBSERVABLE_BASE::size(), and UTIL::OBSERVABLE< ObserverInterface >::Subscribe().