55#ifndef LASS_GUARDIAN_OF_INCLUSION_UTIL_MULTI_CALLBACK_0_H
56#define LASS_GUARDIAN_OF_INCLUSION_UTIL_MULTI_CALLBACK_0_H
65 typedef MultiCallback0 TSelf;
66 typedef Callback0 TCallback;
76 MultiCallback0(
const TCallback& iCallback)
78 callbacks_.push_back(iCallback);
83 MultiCallback0(
const TCallback& iCallback1,
const TCallback& iCallback2)
85 callbacks_.push_back(iCallback1);
86 callbacks_.push_back(iCallback2);
91 MultiCallback0(
const TSelf& iOther):
92 callbacks_(iOther.callbacks_)
98 MultiCallback0(TSelf&& iOther)
noexcept:
99 callbacks_(std::move(iOther.callbacks_))
105 TSelf& operator=(
const TSelf& iOther)
114 TSelf& operator=(TSelf&& iOther)
noexcept
116 callbacks_ = std::move(iOther.callbacks_);
122 void add(
const TCallback& iCallback )
124 callbacks_.push_back(iCallback);
130 void remove(
const TCallback& iCallback )
132 auto end = std::remove( callbacks_.begin(), callbacks_.end(), iCallback );
133 callbacks_.erase( end, callbacks_.end() );
138 void pop( TCallback& iCallback )
140 iCallback = callbacks_.back();
141 callbacks_.pop_back();
146 TSelf& operator += (
const TCallback& iCallback )
148 callbacks_.push_back(iCallback);
154 TSelf& operator -= (
const TCallback& iCallback )
164 return callbacks_.size();
169 void operator()()
const
175 size_t nrCallbacks = callbacks_.size();
176 for (
size_t i=0;i<nrCallbacks;++i)
181 const TCallback& operator[](
size_t index)
const
183 return callbacks_.at(index);
200 return callbacks_.size()==0;
205 bool operator!()
const
212 explicit operator bool()
const
219 void swap(TSelf& iOther)
221 callbacks_.swap(iOther.callbacks_);
227 bool operator==(
const TSelf& iOther)
const
229 size_t nrCallbacks = callbacks_.size();
230 if (nrCallbacks != iOther.callbacks_.size())
232 for (
size_t i=0;i<nrCallbacks;++i)
233 if (callbacks_[i]!=iOther.callbacks_[i])
238 std::vector<TCallback> callbacks_;
general utility, debug facilities, ...
Library for Assembled Shared Sources.