From bf24f6fc48b4eebb06cdcd7029d1d31d4c6028dd Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 8 Dec 2017 00:49:15 +0100 Subject: Added loading of project file and file validations Next up: parse project.conf file --- include/Result.hpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 include/Result.hpp (limited to 'include/Result.hpp') diff --git a/include/Result.hpp b/include/Result.hpp new file mode 100644 index 0000000..31f9e4d --- /dev/null +++ b/include/Result.hpp @@ -0,0 +1,45 @@ +#ifndef SIBS_RESULT_HPP +#define SIBS_RESULT_HPP + +#include + +namespace sibs +{ + template + class Result + { + public: + static Result Ok(const T &value) + { + return Result(value); + } + + static Result Err(const char *errMsg) + { + return Result(errMsg); + } + + bool isOk() const { return !errMsg; } + bool isErr() const { return errMsg; } + + T& unwrap() + { + assert(isOk()); + return value; + } + + const char *getErrMsg() const + { + assert(isErr()); + return errMsg; + } + private: + Result(const T &_value) : value(_value), errMsg(nullptr){} + Result(const char *_errMsg) : errMsg(_errMsg){} + private: + T value; + const char *errMsg; + }; +} + +#endif //SIBS_RESULT_HPP -- cgit v1.2.3