aboutsummaryrefslogtreecommitdiff
path: root/include/Result.hpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2017-12-09 01:14:41 +0100
committerdec05eba <dec05eba@protonmail.com>2017-12-09 01:14:47 +0100
commitfb2072deb3e50afdb062570a3a80ec1afb5bfb56 (patch)
tree44baddd61a9aac3ead96ac8a6fab95d087d0bdd7 /include/Result.hpp
parentbf24f6fc48b4eebb06cdcd7029d1d31d4c6028dd (diff)
Finished project config file parsing
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;
};
}