summaryrefslogtreecommitdiff
path: root/asl/base/defer.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'asl/base/defer.hpp')
-rw-r--r--asl/base/defer.hpp96
1 files changed, 48 insertions, 48 deletions
diff --git a/asl/base/defer.hpp b/asl/base/defer.hpp
index e881d8a..122312a 100644
--- a/asl/base/defer.hpp
+++ b/asl/base/defer.hpp
@@ -1,48 +1,48 @@
-#pragma once
-
-#include "asl/base/utility.hpp"
-#include "asl/base/functional.hpp"
-
-namespace asl
-{
-
-template<invocable Callback>
-class DeferCallback
-{
- Callback m_callback;
- bool m_moved = false;
-
-public:
- template<typename T>
- explicit DeferCallback(T&& callback) : m_callback(ASL_FWD(callback))
- {
- }
-
- ASL_DELETE_COPY(DeferCallback);
-
- DeferCallback(DeferCallback&& other) :
- m_callback(ASL_MOVE(other.m_callback)), m_moved(exchange(other.m_moved, true))
- {
- }
-
- DeferCallback& operator=(DeferCallback&&) = delete;
-
- ~DeferCallback()
- {
- if (!m_moved) { invoke(m_callback); }
- }
-};
-
-struct DeferFactory
-{
- template<invocable Callback>
- DeferCallback<Callback> operator<<(Callback&& callback) const
- {
- return DeferCallback<Callback>(ASL_FWD(callback));
- }
-};
-
-} // namespace asl
-
-#define ASL_DEFER auto ASL_CONCAT(_defer_, __COUNTER__) = ::asl::DeferFactory{} <<
-
+#pragma once
+
+#include "asl/base/utility.hpp"
+#include "asl/base/functional.hpp"
+
+namespace asl
+{
+
+template<invocable Callback>
+class DeferCallback
+{
+ Callback m_callback;
+ bool m_moved = false;
+
+public:
+ template<typename T>
+ explicit DeferCallback(T&& callback) : m_callback(ASL_FWD(callback))
+ {
+ }
+
+ ASL_DELETE_COPY(DeferCallback);
+
+ DeferCallback(DeferCallback&& other) :
+ m_callback(ASL_MOVE(other.m_callback)), m_moved(exchange(other.m_moved, true))
+ {
+ }
+
+ DeferCallback& operator=(DeferCallback&&) = delete;
+
+ ~DeferCallback()
+ {
+ if (!m_moved) { invoke(m_callback); }
+ }
+};
+
+struct DeferFactory
+{
+ template<invocable Callback>
+ DeferCallback<Callback> operator<<(Callback&& callback) const
+ {
+ return DeferCallback<Callback>(ASL_FWD(callback));
+ }
+};
+
+} // namespace asl
+
+#define ASL_DEFER auto ASL_CONCAT(_defer_, __COUNTER__) = ::asl::DeferFactory{} <<
+