aboutsummaryrefslogtreecommitdiff
path: root/include/Result.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/Result.hpp')
-rw-r--r--include/Result.hpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/include/Result.hpp b/include/Result.hpp
index 31f9e4d..3ee60e5 100644
--- a/include/Result.hpp
+++ b/include/Result.hpp
@@ -2,6 +2,7 @@
#define SIBS_RESULT_HPP
#include <cassert>
+#include <string>
namespace sibs
{
@@ -11,34 +12,39 @@ namespace sibs
public:
static Result Ok(const T &value)
{
- return Result(value);
+ Result result(value);
+ result.error = false;
+ return result;
}
- static Result Err(const char *errMsg)
+ static Result Err(const std::string &errMsg)
{
- return Result(errMsg);
+ Result result;
+ result.errMsg = errMsg;
+ result.error = true;
+ return result;
}
- bool isOk() const { return !errMsg; }
- bool isErr() const { return errMsg; }
+ bool isOk() const { return !error; }
+ bool isErr() const { return error; }
- T& unwrap()
+ const T& unwrap() const
{
assert(isOk());
return value;
}
- const char *getErrMsg() const
+ const std::string &getErrMsg() const
{
assert(isErr());
return errMsg;
}
private:
- Result(const T &_value) : value(_value), errMsg(nullptr){}
- Result(const char *_errMsg) : errMsg(_errMsg){}
+ Result(const T &_value = T()) : value(_value) {}
private:
T value;
- const char *errMsg;
+ std::string errMsg;
+ bool error;
};
}