libsigc++  2.10.2
Public Member Functions | List of all members
sigc::signal< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 >::accumulated< T_accumulator > Class Template Reference

Convenience wrapper for the numbered sigc::signal# templates. More...

#include <sigc++/signal.h>

Inheritance diagram for sigc::signal< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 >::accumulated< T_accumulator >:
Inheritance graph
[legend]

Public Member Functions

 accumulated ()
 
 accumulated (const accumulated& src)
 
- Public Member Functions inherited from sigc::signal7< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7, T_accumulator >
 signal7 ()
 
 signal7 (const signal7& src)
 
 signal7 (signal7&& src)
 
iterator connect (const slot_type& slot_)
 Add a slot to the list of slots. More...
 
iterator connect (slot_type&& slot_)
 Add a slot to the list of slots. More...
 
result_type emit (type_trait_take_t< T_arg1 > _A_a1, type_trait_take_t< T_arg2 > _A_a2, type_trait_take_t< T_arg3 > _A_a3, type_trait_take_t< T_arg4 > _A_a4, type_trait_take_t< T_arg5 > _A_a5, type_trait_take_t< T_arg6 > _A_a6, type_trait_take_t< T_arg7 > _A_a7) const
 Triggers the emission of the signal. More...
 
result_type emit_reverse (type_trait_take_t< T_arg1 > _A_a1, type_trait_take_t< T_arg2 > _A_a2, type_trait_take_t< T_arg3 > _A_a3, type_trait_take_t< T_arg4 > _A_a4, type_trait_take_t< T_arg5 > _A_a5, type_trait_take_t< T_arg6 > _A_a6, type_trait_take_t< T_arg7 > _A_a7) const
 Triggers the emission of the signal in reverse order (see emit()). More...
 
bound_const_mem_functor7< result_type, signal7, type_trait_take_t< T_arg1 >, type_trait_take_t< T_arg2 >, type_trait_take_t< T_arg3 >, type_trait_take_t< T_arg4 >, type_trait_take_t< T_arg5 >, type_trait_take_t< T_arg6 >, type_trait_take_t< T_arg7 > > make_slot () const
 Creates a functor that calls emit() on this signal. More...
 
result_type operator() (type_trait_take_t< T_arg1 > _A_a1, type_trait_take_t< T_arg2 > _A_a2, type_trait_take_t< T_arg3 > _A_a3, type_trait_take_t< T_arg4 > _A_a4, type_trait_take_t< T_arg5 > _A_a5, type_trait_take_t< T_arg6 > _A_a6, type_trait_take_t< T_arg7 > _A_a7) const
 Triggers the emission of the signal (see emit()). More...
 
signal7operator= (const signal7& src)
 
signal7operator= (signal7&& src)
 
slot_list_type slots ()
 Creates an STL-style interface for the signal's list of slots. More...
 
const slot_list_type slots () const
 Creates an STL-style interface for the signal's list of slots. More...
 
- Public Member Functions inherited from sigc::signal_base
 signal_base () noexcept
 
 signal_base (const signal_base& src) noexcept
 
 signal_base (signal_base&& src)
 
 ~signal_base ()
 
void block (bool should_block=true) noexcept
 Sets the blocking state of all slots in the list. More...
 
bool blocked () const noexcept
 Returns whether all slots in the list are blocked. More...
 
void clear ()
 Empties the list of slots. More...
 
bool empty () const noexcept
 Returns whether the list of slots is empty. More...
 
signal_baseoperator= (const signal_base& src)
 
signal_baseoperator= (signal_base&& src)
 
size_type size () const noexcept
 Returns the number of slots in the list. More...
 
void unblock () noexcept
 Unsets the blocking state of all slots in the list. More...
 
- Public Member Functions inherited from sigc::trackable
 trackable () noexcept
 
 trackable (const trackable& src) noexcept
 
 trackable (trackable&& src)
 
 ~trackable ()
 
void add_destroy_notify_callback (void* data, func_destroy_notify func) const
 Add a callback that is executed (notified) when the trackable object is detroyed. More...
 
void notify_callbacks ()
 Execute and remove all previously installed callbacks. More...
 
trackableoperator= (const trackable& src)
 
trackableoperator= (trackable&& src)
 
void remove_destroy_notify_callback (void* data) const
 Remove a callback previously installed with add_destroy_notify_callback(). More...
 

Additional Inherited Members

- Public Types inherited from sigc::signal7< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7, T_accumulator >
typedef slot_list_type::const_iterator const_iterator
 
typedef slot_list_type::const_reverse_iterator const_reverse_iterator
 
typedef internal::signal_emit7< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7, T_accumulator > emitter_type
 
typedef slot_list_type::iterator iterator
 
typedef emitter_type::result_type result_type
 
typedef slot_list_type::reverse_iterator reverse_iterator
 
typedef slot_list< slot_typeslot_list_type
 
typedef slot< T_return(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7)> slot_type
 
- Public Types inherited from sigc::signal_base
typedef std::size_t size_type
 
- Public Types inherited from sigc::trackable
typedef internal::func_destroy_notify func_destroy_notify
 
- Protected Types inherited from sigc::signal_base
typedef internal::signal_impl::iterator_type iterator_type
 
- Protected Member Functions inherited from sigc::signal_base
iterator_type connect (const slot_base& slot_)
 Adds a slot at the end of the list of slots. More...
 
iterator_type connect (slot_base&& slot_)
 Adds a slot at the end of the list of slots. More...
 
iterator_type erase (iterator_type i)
 Removes the slot at the given position from the list of slots. More...
 
internal::signal_impl* impl () const
 Returns the signal_impl object encapsulating the list of slots. More...
 
iterator_type insert (iterator_type i, const slot_base& slot_)
 Adds a slot at the given position into the list of slots. More...
 
iterator_type insert (iterator_type i, slot_base&& slot_)
 Adds a slot at the given position into the list of slots. More...
 
- Protected Attributes inherited from sigc::signal_base
internal::signal_impl* impl_
 The signal_impl object encapsulating the slot list. More...
 

Detailed Description

template<class T_return, class T_arg1 = nil, class T_arg2 = nil, class T_arg3 = nil, class T_arg4 = nil, class T_arg5 = nil, class T_arg6 = nil, class T_arg7 = nil>
template <class T_accumulator>
class sigc::signal< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 >::accumulated< T_accumulator >

Convenience wrapper for the numbered sigc::signal# templates.

Like sigc::signal but the additional template parameter T_accumulator defines the accumulator type that should be used.

An accumulator is a functor that uses a pair of special iterators to step through a list of slots and calculate a return value from the results of the slot invokations. The iterators' operator*() executes the slot. The return value is buffered, so that in an expression like

a = (*i) * (*i);

the slot is executed only once. The accumulator must define its return value as result_type.

Example 1:
This accumulator calculates the arithmetic mean value:
struct arithmetic_mean_accumulator
{
typedef double result_type;
template<typename T_iterator>
result_type operator()(T_iterator first, T_iterator last) const
{
result_type value_ = 0;
int n_ = 0;
for (; first != last; ++first, ++n_)
value_ += *first;
return value_ / n_;
}
};
Example 2:
This accumulator stops signal emission when a slot returns zero:
struct interruptable_accumulator
{
typedef bool result_type;
template<typename T_iterator>
result_type operator()(T_iterator first, T_iterator last) const
{
for (; first != last; ++first, ++n_)
if (!*first) return false;
return true;
}
};

Constructor & Destructor Documentation

template <class T_return, class T_arg1 = nil, class T_arg2 = nil, class T_arg3 = nil, class T_arg4 = nil, class T_arg5 = nil, class T_arg6 = nil, class T_arg7 = nil>
template <class T_accumulator >
sigc::signal< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 >::accumulated< T_accumulator >::accumulated ( )
inline
template <class T_return, class T_arg1 = nil, class T_arg2 = nil, class T_arg3 = nil, class T_arg4 = nil, class T_arg5 = nil, class T_arg6 = nil, class T_arg7 = nil>
template <class T_accumulator >
sigc::signal< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7 >::accumulated< T_accumulator >::accumulated ( const accumulated< T_accumulator >&  src)
inline