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/Conf.hpp | 12 ++++++++++++ include/FileUtil.hpp | 24 ++++++++++++++++++++++++ include/Result.hpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 include/Conf.hpp create mode 100644 include/FileUtil.hpp create mode 100644 include/Result.hpp (limited to 'include') diff --git a/include/Conf.hpp b/include/Conf.hpp new file mode 100644 index 0000000..2b38e95 --- /dev/null +++ b/include/Conf.hpp @@ -0,0 +1,12 @@ +#ifndef SIBS_CONF_HPP +#define SIBS_CONF_HPP + +#include "Result.hpp" +#include + +namespace sibs +{ + Result readConf(const char *filepath); +} + +#endif //SIBS_CONF_HPP diff --git a/include/FileUtil.hpp b/include/FileUtil.hpp new file mode 100644 index 0000000..402f5f1 --- /dev/null +++ b/include/FileUtil.hpp @@ -0,0 +1,24 @@ +#ifndef SIBS_FILEUTIL_HPP +#define SIBS_FILEUTIL_HPP + +#include "../external/tinydir.h" +#include "Result.hpp" +#include + +namespace sibs +{ + using FileWalkCallbackFunc = std::function; + + enum class FileType + { + FILE_NOT_FOUND, + REGULAR, + DIRECTORY + }; + + FileType getFileType(const char *path); + void walkDirectory(const char *directory, FileWalkCallbackFunc callbackFunc); + Result getFileContent(const char *filepath); +} + +#endif //SIBS_FILEUTIL_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