LibreOffice Module comphelper (master) 1
|
A container of interfaces. More...
#include <interfacecontainer4.hxx>
Classes | |
class | NotifySingleListener |
Public Member Functions | |
OInterfaceContainerHelper4 () | |
sal_Int32 | getLength (std::unique_lock< std::mutex > &rGuard) const |
Return the number of Elements in the container. More... | |
std::vector< css::uno::Reference< ListenerT > > | getElements (std::unique_lock< std::mutex > &rGuard) const |
Return all interfaces added to this container. More... | |
sal_Int32 | addInterface (std::unique_lock< std::mutex > &rGuard, const css::uno::Reference< ListenerT > &rxIFace) |
Inserts an element into the container. More... | |
sal_Int32 | removeInterface (std::unique_lock< std::mutex > &rGuard, const css::uno::Reference< ListenerT > &rxIFace) |
Removes an element from the container. More... | |
void | disposeAndClear (::std::unique_lock<::std::mutex > &rGuard, const css::lang::EventObject &rEvt) |
Call disposing on all object in the container that support XEventListener. More... | |
void | clear (::std::unique_lock<::std::mutex > &rGuard) |
Clears the container without calling disposing(). More... | |
template<typename FuncT > | |
void | forEach (std::unique_lock< std::mutex > &rGuard, FuncT const &func) const |
Executes a functor for each contained listener of specified type, e.g. More... | |
template<typename EventT > | |
void | notifyEach (std::unique_lock< std::mutex > &rGuard, void(SAL_CALL ListenerT::*NotificationMethod)(const EventT &), const EventT &Event) const |
Calls a UNO listener method for each contained listener. More... | |
OInterfaceContainerHelper4 (OInterfaceContainerHelper4 &&)=default | |
OInterfaceContainerHelper4 & | operator= (OInterfaceContainerHelper4 &&)=default |
Private Member Functions | |
OInterfaceContainerHelper4 (const OInterfaceContainerHelper4 &)=delete | |
OInterfaceContainerHelper4 & | operator= (const OInterfaceContainerHelper4 &)=delete |
Static Private Member Functions | |
static o3tl::cow_wrapper< std::vector< css::uno::Reference< ListenerT > >, o3tl::ThreadSafeRefCountingPolicy > & | DEFAULT () |
Private Attributes | |
o3tl::cow_wrapper< std::vector< css::uno::Reference< ListenerT > >, o3tl::ThreadSafeRefCountingPolicy > | maData |
Friends | |
class | OInterfaceIteratorHelper4< ListenerT > |
A container of interfaces.
To access the elements use an iterator. This implementation is thread-safe.
This is a copy of the code at include/comphelper/interfacecontainer3.hxx, except that it (a) uses std::mutex instead of osl::Mutex and (b) does not store a reference to the mutex, but relies on the calling class to take a lock around using it.
ListenerT | UNO event listener type |
Definition at line 126 of file interfacecontainer4.hxx.
|
inline |
Definition at line 280 of file interfacecontainer4.hxx.
References DEFAULT.
|
default |
|
privatedelete |
sal_Int32 comphelper::OInterfaceContainerHelper4< ListenerT >::addInterface | ( | std::unique_lock< std::mutex > & | rGuard, |
const css::uno::Reference< ListenerT > & | rxIFace | ||
) |
Inserts an element into the container.
The position is not specified, thus it is not specified in which order events are fired.
rxIFace | interface to be added; it is allowed to insert the same interface more than once |
rGuard | this parameter only here to make that this container is accessed while locked |
Definition at line 349 of file interfacecontainer4.hxx.
References maData.
Referenced by OInstanceLocker::addEventListener(), and comphelper::WeakComponentImplHelperBase::addEventListener().
void comphelper::OInterfaceContainerHelper4< ListenerT >::clear | ( | ::std::unique_lock<::std::mutex > & | rGuard | ) |
Clears the container without calling disposing().
rGuard | this parameter only here to make that this container is accessed while locked |
Definition at line 413 of file interfacecontainer4.hxx.
References maData.
|
inlinestaticprivate |
Definition at line 248 of file interfacecontainer4.hxx.
void comphelper::OInterfaceContainerHelper4< ListenerT >::disposeAndClear | ( | ::std::unique_lock<::std::mutex > & | rGuard, |
const css::lang::EventObject & | rEvt | ||
) |
Call disposing on all object in the container that support XEventListener.
Then clear the container. The guard is unlock()'ed before calling the listeners.
Referenced by OInstanceLocker::dispose(), and comphelper::WeakComponentImplHelperBase::dispose().
|
inline |
Executes a functor for each contained listener of specified type, e.g.
forEach<awt::XPaintListener>(...
.
If a css::lang::DisposedException occurs which relates to the called listener, then that listener is removed from the container.
FuncT | unary functor type, let your compiler deduce this for you |
func | unary functor object expecting an argument of type css::uno::Reference<ListenerT> |
rGuard | this parameter only here to make that this container is accessed while locked |
Definition at line 287 of file interfacecontainer4.hxx.
References comphelper::OInterfaceIteratorHelper4< ListenerT >::hasMoreElements(), maData, comphelper::OInterfaceContainerHelper4< ListenerT >::maData, o3tl::cow_wrapper< typename T, class MTPolicy >::make_unique(), comphelper::OInterfaceIteratorHelper4< ListenerT >::next(), comphelper::OInterfaceIteratorHelper4< ListenerT >::remove(), and size.
std::vector< css::uno::Reference< ListenerT > > comphelper::OInterfaceContainerHelper4< ListenerT >::getElements | ( | std::unique_lock< std::mutex > & | rGuard | ) | const |
Return all interfaces added to this container.
rGuard | this parameter only here to make that this container is accessed while locked |
Definition at line 340 of file interfacecontainer4.hxx.
References maData.
sal_Int32 comphelper::OInterfaceContainerHelper4< ListenerT >::getLength | ( | std::unique_lock< std::mutex > & | rGuard | ) | const |
Return the number of Elements in the container.
Only useful if you have acquired the mutex.
rGuard | this parameter only here to make that this container is accessed while locked |
Definition at line 331 of file interfacecontainer4.hxx.
References maData.
Referenced by comphelper::OPropertySetHelper::firePropertyChangeListeners(), and comphelper::OPropertySetHelper::fireVetoableChangeListeners().
|
inline |
Calls a UNO listener method for each contained listener.
The listener method must take a single argument of type EventT, and return void
.
If a css::lang::DisposedException occurs which relates to the called listener, then that listener is removed from the container.
EventT | event type, let your compiler deduce this for you |
NotificationMethod | Pointer to a method of a ListenerT interface. |
Event | Event to notify to all contained listeners |
rGuard | this parameter only here to make that this container is accessed while locked |
Example:
Definition at line 321 of file interfacecontainer4.hxx.
|
privatedelete |
|
default |
sal_Int32 comphelper::OInterfaceContainerHelper4< ListenerT >::removeInterface | ( | std::unique_lock< std::mutex > & | rGuard, |
const css::uno::Reference< ListenerT > & | rxIFace | ||
) |
Removes an element from the container.
It uses interface equality to remove the interface.
rxIFace | interface to be removed |
rGuard | this parameter only here to make that this container is accessed while locked |
Definition at line 360 of file interfacecontainer4.hxx.
References find(), and maData.
Referenced by OInstanceLocker::removeEventListener(), and comphelper::WeakComponentImplHelperBase::removeEventListener().
|
friend |
Definition at line 236 of file interfacecontainer4.hxx.
|
private |
Definition at line 242 of file interfacecontainer4.hxx.
Referenced by comphelper::OInterfaceContainerHelper4< ListenerT >::forEach().