diff options
author | HampusM <hampus@hampusmat.com> | 2022-06-12 13:44:58 +0200 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2022-06-13 17:57:01 +0200 |
commit | 927e065f9829045247be7c0b3296408b6f577c1f (patch) | |
tree | 7da3d9cd5aa4070414a8708a582f6c3ab3e1e708 /src/errors/io.hpp | |
parent | eb66598c326862fd9dfc1899be4eac93f81a8023 (diff) |
feat: add reading RLE files
Diffstat (limited to 'src/errors/io.hpp')
-rw-r--r-- | src/errors/io.hpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/errors/io.hpp b/src/errors/io.hpp new file mode 100644 index 0000000..1d0aec3 --- /dev/null +++ b/src/errors/io.hpp @@ -0,0 +1,55 @@ +#pragma once + +#include "util/fs.hpp" + +#include <fmt/core.h> + +#include <filesystem> +#include <stdexcept> +#include <string> + +class IOError : public std::runtime_error +{ +public: + IOError() noexcept : std::runtime_error("Unknown IO error") {} + + explicit IOError(const std::string &error_message) noexcept + : std::runtime_error(error_message) + { + } +}; + +class NoSuchFileOrDirectoryError : public IOError +{ +public: + explicit NoSuchFileOrDirectoryError(const std::filesystem::path &path) noexcept + : IOError( + fmt::format("No file or directory exists with path '{}'", path.string())) + { + } +}; + +class WrongFileTypeError : public IOError +{ +public: + explicit WrongFileTypeError( + const std::filesystem::path &path, + std::filesystem::file_type expected_file_type, + std::filesystem::file_type actual_file_type) noexcept + : IOError(fmt::format( + "Wrong file type of file with path '{}'. Expected {}, is {}", + path.string(), + file_type_names.at(expected_file_type), + file_type_names.at(actual_file_type))) + { + } +}; + +class FileNotOpenError : public IOError +{ +public: + explicit FileNotOpenError(const std::filesystem::path &path) noexcept + : IOError(fmt::format("Failed to open file with path '{}'", path.string())) + { + } +}; |