diff options
Diffstat (limited to 'src/scope_guard.h')
-rw-r--r-- | src/scope_guard.h | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/src/scope_guard.h b/src/scope_guard.h deleted file mode 100644 index 3a7aa01b..00000000 --- a/src/scope_guard.h +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2019 Roman Perepelitsa. -// -// This file is part of GitStatus. -// -// GitStatus is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// GitStatus is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with GitStatus. If not, see <https://www.gnu.org/licenses/>. - -#ifndef ROMKATV_GITSTATUS_SCOPE_GUARD_H_ -#define ROMKATV_GITSTATUS_SCOPE_GUARD_H_ - -#include <utility> - -#define ON_SCOPE_EXIT(capture...) \ - auto GITSTATUS_INTERNAL_CAT(_gitstatus_scope_guard_, __COUNTER__) = \ - ::gitstatus::internal_scope_guard::ScopeGuardGenerator() = [capture]() - -#define GITSTATUS_INTERNAL_CAT_I(x, y) x##y -#define GITSTATUS_INTERNAL_CAT(x, y) GITSTATUS_INTERNAL_CAT_I(x, y) - -namespace gitstatus { -namespace internal_scope_guard { - -void Undefined(); - -template <class F> -class ScopeGuard { - public: - explicit ScopeGuard(F f) : f_(std::move(f)) {} - ~ScopeGuard() { std::move(f_)(); } - ScopeGuard(ScopeGuard&& other) : f_(std::move(other.f_)) { Undefined(); } - - private: - F f_; -}; - -struct ScopeGuardGenerator { - template <class F> - ScopeGuard<F> operator=(F f) const { - return ScopeGuard<F>(std::move(f)); - } -}; - -} // namespace internal_scope_guard -} // namespace gitstatus - -#endif // ROMKATV_GITSTATUS_SCOPE_GUARD_H_ |