diff options
Diffstat (limited to 'include/LibraryException.h')
-rw-r--r-- | include/LibraryException.h | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/include/LibraryException.h b/include/LibraryException.h index ef81624..5036320 100644 --- a/include/LibraryException.h +++ b/include/LibraryException.h @@ -1,12 +1,9 @@ -// -// Created by sz on 09.08.16. -// - #ifndef LIBNITROKEY_LIBRARYEXCEPTION_H #define LIBNITROKEY_LIBRARYEXCEPTION_H #include <exception> #include <cstdint> +#include <string> class LibraryException: std::exception { public: @@ -14,4 +11,44 @@ public: }; + +class InvalidSlotException : public LibraryException { +public: + virtual uint8_t exception_id() override { + return 201; + } + +public: + uint8_t slot_selected; + + InvalidSlotException(uint8_t slot_selected) : slot_selected(slot_selected) {} + + virtual const char *what() const throw() override { + return "Wrong slot selected"; + } + +}; + + + +class TooLongStringException : public LibraryException { +public: + virtual uint8_t exception_id() override { + return 200; + } + + std::size_t size_source; + std::size_t size_destination; + std::string message; + + TooLongStringException(size_t size_source, size_t size_destination, const std::string &message = "") : size_source( + size_source), size_destination(size_destination), message(message) {} + + virtual const char *what() const throw() override { + //TODO add sizes and message data to final message + return "Too long string has been supplied as an argument"; + } + +}; + #endif //LIBNITROKEY_LIBRARYEXCEPTION_H |