52#ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_MULTI_CALLBACK_6_H
53#define LASS_GUARDIAN_OF_INCLUSION_UTIL_MULTI_CALLBACK_6_H
72 typename P1,
typename P2,
typename P3,
typename P4,
typename P5,
typename P6
76 typedef MultiCallback6 TSelf;
77 typedef Callback6<P1, P2, P3, P4, P5, P6> TCallback;
87 MultiCallback6(
const TCallback& iCallback)
89 callbacks_.push_back(iCallback);
94 MultiCallback6(
const TCallback& iCallback1,
const TCallback& iCallback2)
96 callbacks_.push_back(iCallback1);
97 callbacks_.push_back(iCallback2);
102 MultiCallback6(
const TSelf& iOther):
103 callbacks_(iOther.callbacks_)
109 MultiCallback6(TSelf&& iOther)
noexcept:
110 callbacks_(std::move(iOther.callbacks_))
116 TSelf& operator=(
const TSelf& iOther)
118 callbacks_ = std::move(iOther.callbacks_);
124 TSelf& operator=(TSelf&& iOther)
noexcept
133 void add(
const TCallback& iCallback )
135 callbacks_.push_back(iCallback);
141 void remove(
const TCallback& iCallback )
143 auto end = std::remove( callbacks_.begin(), callbacks_.end(), iCallback );
144 callbacks_.erase( end, callbacks_.end() );
149 void pop( TCallback& iCallback )
151 iCallback = callbacks_.back();
152 callbacks_.pop_back();
157 TSelf& operator += (
const TCallback& iCallback )
159 callbacks_.push_back(iCallback);
165 TSelf& operator -= (
const TCallback& iCallback )
175 return callbacks_.size();
180 void operator()(
typename util::CallTraits<P1>::TParam iP1,
typename util::CallTraits<P2>::TParam iP2,
typename util::CallTraits<P3>::TParam iP3,
typename util::CallTraits<P4>::TParam iP4,
typename util::CallTraits<P5>::TParam iP5,
typename util::CallTraits<P6>::TParam iP6)
const
182 call(iP1, iP2, iP3, iP4, iP5, iP6);
184 void call(
typename util::CallTraits<P1>::TParam iP1,
typename util::CallTraits<P2>::TParam iP2,
typename util::CallTraits<P3>::TParam iP3,
typename util::CallTraits<P4>::TParam iP4,
typename util::CallTraits<P5>::TParam iP5,
typename util::CallTraits<P6>::TParam iP6)
const
186 size_t nrCallbacks = callbacks_.size();
187 for (
size_t i=0;i<nrCallbacks;++i)
188 callbacks_[i](iP1, iP2, iP3, iP4, iP5, iP6);
191 const TCallback& operator[](
size_t index)
const
193 return callbacks_.at(index);
211 return callbacks_.size()==0;
216 bool operator!()
const
223 explicit operator bool()
const
230 void swap(TSelf& iOther)
232 callbacks_.swap(iOther.callbacks_);
238 bool operator==(
const TSelf& iOther)
const
240 size_t nrCallbacks = callbacks_.size();
241 if (nrCallbacks != iOther.callbacks_.size())
243 for (
size_t i=0;i<nrCallbacks;++i)
244 if (callbacks_[i]!=iOther.callbacks_[i])
249 std::vector<TCallback> callbacks_;
general utility, debug facilities, ...
Library for Assembled Shared Sources.