CCSDS 124.0-B-1 C++ 1.0.0
CCSDS 124.0-B-1 Lossless Compression
Loading...
Searching...
No Matches
error.hpp
Go to the documentation of this file.
1
12#ifndef CCSDS124_ERROR_HPP
13#define CCSDS124_ERROR_HPP
14
15#include "config.hpp"
16
17#if !CCSDS124_NO_EXCEPTIONS
18#include <stdexcept>
19#include <string>
20#endif
21
22namespace ccsds124 {
23
29enum class Error {
30 Ok = 0,
31 InvalidArg = -1,
32 Overflow = -2,
33 Underflow = -3,
34 InvalidData = -4
35};
36
42inline const char* error_string(Error error) noexcept {
43 switch (error) {
44 case Error::Ok:
45 return "Success";
47 return "Invalid argument";
48 case Error::Overflow:
49 return "Buffer overflow";
51 return "Buffer underflow";
53 return "Invalid or corrupted data";
54 default:
55 return "Unknown error";
56 }
57}
58
59#if !CCSDS124_NO_EXCEPTIONS
60
64class Ccsds124Exception : public std::runtime_error {
65public:
66 explicit Ccsds124Exception(const std::string& message, Error code = Error::InvalidArg)
67 : std::runtime_error(message), error_code_(code) {}
68
69 Error code() const noexcept {
70 return error_code_;
71 }
72
73private:
74 Error error_code_;
75};
76
81public:
82 explicit InvalidArgumentException(const std::string& message)
83 : Ccsds124Exception(message, Error::InvalidArg) {}
84};
85
90public:
91 explicit OverflowException(const std::string& message)
92 : Ccsds124Exception(message, Error::Overflow) {}
93};
94
99public:
100 explicit UnderflowException(const std::string& message)
101 : Ccsds124Exception(message, Error::Underflow) {}
102};
103
108public:
109 explicit InvalidDataException(const std::string& message)
110 : Ccsds124Exception(message, Error::InvalidData) {}
111};
112
113#endif // !CCSDS124_NO_EXCEPTIONS
114
115} // namespace ccsds124
116
117#endif // CCSDS124_ERROR_HPP
Base exception for CCSDS 124.0-B-1 errors.
Definition error.hpp:64
Ccsds124Exception(const std::string &message, Error code=Error::InvalidArg)
Definition error.hpp:66
Error code() const noexcept
Definition error.hpp:69
Exception for invalid arguments.
Definition error.hpp:80
InvalidArgumentException(const std::string &message)
Definition error.hpp:82
Exception for invalid/corrupted data.
Definition error.hpp:107
InvalidDataException(const std::string &message)
Definition error.hpp:109
Exception for buffer overflow.
Definition error.hpp:89
OverflowException(const std::string &message)
Definition error.hpp:91
Exception for buffer underflow.
Definition error.hpp:98
UnderflowException(const std::string &message)
Definition error.hpp:100
CCSDS 124.0-B-1 compile-time configuration.
const char * error_string(Error error) noexcept
Get error message for error code.
Definition error.hpp:42
Error
Error codes for error-code-based error handling.
Definition error.hpp:29
@ Underflow
Buffer underflow (not enough data)
@ Overflow
Buffer overflow.
@ InvalidData
Invalid/corrupted data.
@ InvalidArg
Invalid argument.