aboutsummaryrefslogtreecommitdiff
path: root/source/lib/include/wanda/optional.hpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2023-08-17 12:32:50 +0200
committerFelix Morgner <felix.morgner@gmail.com>2023-08-17 12:32:50 +0200
commit375799fa79d1af76f33299acc20a11a167a021f8 (patch)
tree8f91b982ec96225c33a2f4871730ababffe5cab0 /source/lib/include/wanda/optional.hpp
parentaf471b9b780869915d3217b228e24d025892de47 (diff)
downloadwanda-375799fa79d1af76f33299acc20a11a167a021f8.tar.xz
wanda-375799fa79d1af76f33299acc20a11a167a021f8.zip
project: restructure libraries and build env
Diffstat (limited to 'source/lib/include/wanda/optional.hpp')
-rw-r--r--source/lib/include/wanda/optional.hpp65
1 files changed, 0 insertions, 65 deletions
diff --git a/source/lib/include/wanda/optional.hpp b/source/lib/include/wanda/optional.hpp
deleted file mode 100644
index da3774c..0000000
--- a/source/lib/include/wanda/optional.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * @file optional.hpp
- * @author Felix Morgner (felix.morgner@gmail.com)
- * @since 1.0.0
- */
-
-#ifndef WANDA_OPTIONAL_HPP
-#define WANDA_OPTIONAL_HPP
-
-#include <optional>
-
-namespace wanda::std_ext
-{
- /**
- * @brief A type to represent a computation that could fail
- */
- struct failable
- {
- /**
- * @brief A factory to create a successful computation
- */
- constexpr static auto success() { return failable{false}; }
-
- /**
- * @brief A factory to create a failed computation
- */
- constexpr static auto failure() { return failable{true}; }
-
- /**
- * @brief Execute the given handler if the computation failed
- */
- template<typename Handler>
- constexpr void operator||(Handler handler) const
- {
- if (m_failed)
- {
- handler();
- }
- }
-
- private:
- constexpr explicit failable(bool failed)
- : m_failed{failed} {};
- bool const m_failed;
- };
-
- /**
- * @brief Unwrap the given optional object, if present, and pass it to the handler
- *
- * @return A successful computation iff. the object was present, a failed computation otherwise.
- */
- template<typename ObjectType, typename HandlerType>
- auto with(std::optional<ObjectType> && object, HandlerType handler)
- {
- if (object)
- {
- handler(object.value());
- return failable::success();
- }
- return failable::failure();
- }
-
-} // namespace wanda::std_ext
-
-#endif \ No newline at end of file