33 explicit ScopeGuard(std::function<
void() > onScopeExit) { m_onScopeExit = onScopeExit; }
35 ~
ScopeGuard() {
if(m_invoke) { m_onScopeExit(); } }
37 void dismiss() { m_invoke =
false; };
39 std::function<void()> m_onScopeExit;
43 #define SCOPEGUARD_LINENAME_CAT(name, line) name##line
44 #define SCOPEGUARD_LINENAME(name, line) SCOPEGUARD_LINENAME_CAT(name, line)
46 #define OnScopeExit( callback ) ScopeGuard SCOPEGUARD_LINENAME( myScopeGuard, __LINE__ ) ( [&] { callback; } );
48 template <
typename Container,
typename Pred>
49 Container filter(
const Container& container, Pred predicate) {
51 std::copy_if(container.begin(), container.end(), std::back_inserter(result), predicate);
58 quint64 imageSize(
const QImage&);