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 static_cast<void>(std::remove( callbacks_.begin(), callbacks_.end(), iCallback ));
137 void pop( TCallback& iCallback )
139 iCallback = callbacks_.back();
140 callbacks_.pop_back();
145 TSelf& operator += (
const TCallback& iCallback )
147 callbacks_.push_back(iCallback);
153 TSelf& operator -= (
const TCallback& iCallback )
163 return callbacks_.size();
168 void operator()()
const
174 size_t nrCallbacks = callbacks_.size();
175 for (
size_t i=0;i<nrCallbacks;++i)
180 const TCallback& operator[](
size_t index)
const
182 return callbacks_.at(index);
199 return callbacks_.size()==0;
204 bool operator!()
const
211 explicit operator bool()
const
218 void swap(TSelf& iOther)
220 callbacks_.swap(iOther.callbacks_);
226 bool operator==(
const TSelf& iOther)
const
228 size_t nrCallbacks = callbacks_.size();
229 if (nrCallbacks != iOther.callbacks_.size())
231 for (
size_t i=0;i<nrCallbacks;++i)
232 if (callbacks_[i]!=iOther.callbacks_[i])
237 std::vector<TCallback> callbacks_;
general utility, debug facilities, ...
Library for Assembled Shared Sources.