libfly  6.2.2
C++20 utility library for Linux, macOS, and Windows
json_exception.hpp
1 #pragma once
2 
3 #include <cstddef>
4 #include <exception>
5 #include <string>
6 
7 namespace fly {
8 
9 class Json;
10 
18 class JsonException : public std::exception
19 {
20 public:
26  explicit JsonException(std::string &&message) noexcept;
27 
34  JsonException(const Json &json, std::string &&message) noexcept;
35 
39  virtual const char *what() const noexcept override;
40 
41 protected:
48  JsonException(const char *class_name, std::string &&message) noexcept;
49 
50 private:
51  const std::string m_message;
52 };
53 
58 {
59 public:
66  JsonIteratorException(const Json &json, std::string &&message) noexcept;
67 };
68 
73 {
74 public:
81  BadJsonComparisonException(const Json &json1, const Json &json2) noexcept;
82 };
83 
88 {
89 public:
93  NullJsonException() noexcept;
94 
100  explicit NullJsonException(const Json &json) noexcept;
101 };
102 
108 {
109 public:
116  OutOfRangeJsonException(const Json &json, std::ptrdiff_t offset) noexcept;
117 
121  std::ptrdiff_t offset() const;
122 
123 private:
124  std::ptrdiff_t m_offset;
125 };
126 
127 } // namespace fly
Definition: json_exception.hpp:73
BadJsonComparisonException(const Json &json1, const Json &json2) noexcept
Definition: json_exception.cpp:38
Definition: json_exception.hpp:19
virtual const char * what() const noexcept override
Definition: json_exception.cpp:26
JsonException(std::string &&message) noexcept
Definition: json_exception.cpp:8
Definition: json.hpp:162
Definition: json_exception.hpp:58
JsonIteratorException(const Json &json, std::string &&message) noexcept
Definition: json_exception.cpp:32
Definition: json_exception.hpp:88
NullJsonException() noexcept
Definition: json_exception.cpp:59
Definition: json_exception.hpp:108
std::ptrdiff_t offset() const
Definition: json_exception.cpp:76
OutOfRangeJsonException(const Json &json, std::ptrdiff_t offset) noexcept
Definition: json_exception.cpp:67