From fb2072deb3e50afdb062570a3a80ec1afb5bfb56 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 9 Dec 2017 01:14:41 +0100 Subject: Finished project config file parsing --- include/Result.hpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'include/Result.hpp') 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 +#include 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; }; } -- cgit v1.2.3