#ifndef LOGGING_LOGGINGEXCEPT_H_ #define LOGGING_LOGGINGEXCEPT_H_ #include #include #include namespace logging { struct exceeded_maximum_length : std::exception { uint16_t exceeded_length; exceeded_maximum_length(uint16_t _exceeded_length) : exceeded_length(_exceeded_length) {} const char * what() const noexcept { return "Logging: attempts to exceed maximum allowed size"; } }; struct out_of_range : std::exception { uint16_t range; out_of_range(uint16_t _range) : range(_range) {} const char * what() const noexcept { return "Logging: arguments outside of expected range"; } }; struct max_allowed_size : std::exception { uint16_t size; max_allowed_size(size_t _size) : size(_size) { } const char * what() const noexcept { return "Logging: attempts to exceed maximum allowed size"; } }; struct logic_error : std::exception { logic_error() {} const char * what() const noexcept { return "Logging: violations of logical preconditions"; } }; struct exceptional_record : std::exception { uint16_t level; exceptional_record(uint16_t _level) : level(_level) {} const char * what() const noexcept { return "Logging: attempts to publish exceptional record"; } }; } #endif //LOGGING_LOGGINGEXCEPT_H_