LibreOffice Module slideshow (master) 1
Public Types | Public Member Functions | Private Types | Private Attributes | List of all members
slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage > Class Template Reference

Container for objects that can be notified. More...

#include <listenercontainer.hxx>

Inheritance diagram for slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >:
[legend]
Collaboration diagram for slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >:
[legend]

Public Types

typedef ListenerT listener_type
 
typedef ContainerT container_type
 

Public Member Functions

bool isEmpty () const
 Check whether listener container is empty. More...
 
bool isAdded (listener_type const &rListener) const
 Check whether given listener is already added. More...
 
void add (listener_type const &rListener)
 Add new listener. More...
 
bool addSorted (listener_type const &rListener)
 Add new listener into sorted container. More...
 
bool remove (listener_type const &rListener)
 Remove listener from container. More...
 
void clear ()
 Removes all listeners in one go. More...
 
template<typename FuncT >
bool apply (FuncT func) const
 Apply functor to one listener. More...
 
template<typename FuncT >
bool applyAll (FuncT func) const
 Apply functor to all listeners. More...
 

Private Types

typedef MutexHolderBaseT::Guard Guard
 
typedef MutexHolderBaseT::ClearableGuard ClearableGuard
 

Private Attributes

ContainerT maListeners
 

Detailed Description

template<typename ListenerT, typename MutexHolderBaseT, typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
class slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >

Container for objects that can be notified.

This templatized container holds listener objects, then can get notified (by calling certain methods on them).

Template parameter: \n Listener
Type for the listener objects to be held
Template parameter: \n ContainerT
Full type of the container to store the listener objects. Defaults to std::vector<ListenerT>
Template parameter: \n MaxDeceasedListenerUllage
Threshold, from which upwards the listener container gets pruned. Avoids frequent copying of nearly empty containers.
Attention: \n internal class, not to be used. functionality is
incomplete, please use the Thread(Un)safeListenerContainer types from below

Definition at line 190 of file listenercontainer.hxx.

Member Typedef Documentation

◆ ClearableGuard

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
typedef MutexHolderBaseT::ClearableGuard slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::ClearableGuard
private

Definition at line 193 of file listenercontainer.hxx.

◆ container_type

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
typedef ContainerT slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::container_type

Definition at line 197 of file listenercontainer.hxx.

◆ Guard

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
typedef MutexHolderBaseT::Guard slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::Guard
private

Definition at line 192 of file listenercontainer.hxx.

◆ listener_type

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
typedef ListenerT slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::listener_type

Definition at line 196 of file listenercontainer.hxx.

Member Function Documentation

◆ add()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
void slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::add ( listener_type const &  rListener)
inline

◆ addSorted()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
bool slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::addSorted ( listener_type const &  rListener)
inline

Add new listener into sorted container.

The stored listeners are kept sorted (using this method requires listener_type to have operator< defined on it). Make sure to call addSorted() for each listener to add to this container - sorting is performed under the assumption that existing entries are already sorted.

Parameters
rListenerListener to add
Returns
false, if the listener is already added, true otherwise

Definition at line 264 of file listenercontainer.hxx.

References slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::isAdded(), slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::maListeners, and slideshow::internal::ListenerOperations< ListenerT >::pruneListeners().

Referenced by slideshow::internal::EventMultiplexerImpl::addMouseHandler().

◆ apply()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
template<typename FuncT >
bool slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::apply ( FuncT  func) const
inline

Apply functor to one listener.

This method applies functor to one of the listeners. Starting with the first entry of the container, the functor is called with the listener entries, until it returns true.

Parameters
funcGiven functor is called with listeners, until it returns true
Returns
true, if functor was successfully applied to a listener

Definition at line 336 of file listenercontainer.hxx.

References slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::maListeners, and slideshow::internal::ListenerOperations< ListenerT >::pruneListeners().

Referenced by slideshow::internal::EventMultiplexerImpl::notifyMouseHandlers(), and slideshow::internal::EventMultiplexerImpl::notifyNextEffect().

◆ applyAll()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
template<typename FuncT >
bool slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::applyAll ( FuncT  func) const
inline

Apply functor to all listeners.

This method applies functor to all of the listeners. Starting with the first entry of the container, the functor is called with the listener entries.

Parameters
funcGiven functor is called with listeners.
Returns
true, if functor was successfully applied to at least one listener

Definition at line 372 of file listenercontainer.hxx.

References slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::maListeners, and slideshow::internal::ListenerOperations< ListenerT >::pruneListeners().

Referenced by slideshow::internal::EventMultiplexerImpl::notifyAllAnimationHandlers().

◆ clear()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
void slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::clear ( )
inline

◆ isAdded()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
bool slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::isAdded ( listener_type const &  rListener) const
inline

◆ isEmpty()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
bool slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::isEmpty ( ) const
inline

Check whether listener container is empty.

Returns
true, if currently no listeners registered. Note that in a multi-threaded scenario, without external synchronisation to this object, the return value might become wrong at any time.

Definition at line 205 of file listenercontainer.hxx.

References slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::maListeners.

Referenced by slideshow::internal::EventMultiplexerImpl::clear(), slideshow::internal::EventMultiplexerImpl::isMouseListenerRegistered(), and slideshow::internal::EventMultiplexerImpl::tick().

◆ remove()

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
bool slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::remove ( listener_type const &  rListener)
inline

Remove listener from container.

Parameters
rListenerThe listener to remove
Returns
false, if listener not found in container, true otherwise

Definition at line 298 of file listenercontainer.hxx.

References slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::maListeners.

Member Data Documentation

◆ maListeners

template<typename ListenerT , typename MutexHolderBaseT , typename ContainerT = std::vector<ListenerT>, size_t MaxDeceasedListenerUllage = 16>
ContainerT slideshow::internal::ListenerContainerBase< ListenerT, MutexHolderBaseT, ContainerT, MaxDeceasedListenerUllage >::maListeners
private

The documentation for this class was generated from the following file: