libsigc++: sigc::signal< T_return(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7)>::accumulated< T_accumulator > Class Template Reference

libsigc++ 2.12.1

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
Signals

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 >:
[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 ()
iterator | connect (const slot_type & slot_)
| Add a slot to the list of slots.
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.
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()).
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.
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()).
signal7 & | operator= (const signal7 & src)
slot_list_type | slots ()
| Creates an STL-style interface for the signal's list of slots.
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.
bool | blocked () const noexcept
| Returns whether all slots in the list are blocked.
void | clear ()
| Empties the list of slots.
bool | empty () const noexcept
| Returns whether the list of slots is empty.
signal_base & | operator= (const signal_base & src)
signal_base & | operator= (signal_base && src)
size_type | size () const noexcept
| Returns the number of slots in the list.
void | unblock () noexcept
| Unsets the blocking state of all slots in the list.
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.
void | notify_callbacks ()
| Execute and remove all previously installed callbacks.
trackable & | operator= (const trackable & src)
trackable & | operator= (trackable && src)
void | remove_destroy_notify_callback (void * data) const
| Remove a callback previously installed with add_destroy_notify_callback().

## 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_type > | slot_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.
iterator_type | connect (slot_base && slot_)
| Adds a slot at the end of the list of slots.
iterator_type | erase (iterator_type i)
| Removes the slot at the given position from the list of slots.
internal::signal_impl * | impl () const
| Returns the signal_impl object encapsulating the list of slots.
iterator_type | insert (iterator_type i, const slot_base & slot_)
| Adds a slot at the given position into the list of slots.
iterator_type | insert (iterator_type i, slot_base && slot_)
| Adds a slot at the given position into the list of slots.
Protected Attributes inherited from sigc::signal_base
internal::signal_impl * | impl_
| The signal_impl object encapsulating the slot list.

## Detailed Description

template <class T_return, class T_arg1, class T_arg2, class T_arg3, class T_arg4, class T_arg5, class T_arg6, class T_arg7>
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_;
  }
  };
  sigc::signal7< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7, T_accumulator >::result_type
  emitter_type::result_type result_type
  Definition signal.h:3882
  sigc::signal7< T_return, T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7, T_accumulator >::operator()
  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
  Definition signal.h:3954

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

## ◆ accumulated() [1/2]

template <class T_return, class T_arg1, class T_arg2, class T_arg3, class T_arg4, class T_arg5, class T_arg6, class T_arg7>
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

## ◆ accumulated() [2/2]

template <class T_return, class T_arg1, class T_arg2, class T_arg3, class T_arg4, class T_arg5, class T_arg6, class T_arg7>
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 & | src | ) |
| inline