/// Copyright 2020 Daniel Parker // Distributed under the Boost license, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // See https://github.com/danielaparker/jsoncons for latest version #ifndef JSONCONS_JSONSCHEMA_JSONSCHEMA_ERROR_HPP #define JSONCONS_JSONSCHEMA_JSONSCHEMA_ERROR_HPP #include #include namespace jsoncons { namespace jsonschema { class schema_error : public std::runtime_error, public virtual json_exception { public: schema_error(const std::string& message) : std::runtime_error(message) { } const char* what() const noexcept override { return std::runtime_error::what(); } }; class validation_error : public std::runtime_error, public virtual json_exception { public: validation_error(const std::string& message) : std::runtime_error(message) { } const char* what() const noexcept override { return std::runtime_error::what(); } }; class validation_output { std::string keyword_; std::string absolute_keyword_location_; std::string instance_location_; std::string message_; std::vector nested_errors_; public: validation_output(std::string keyword, std::string absolute_keyword_location, std::string instance_location, std::string message) : keyword_(std::move(keyword)), absolute_keyword_location_(std::move(absolute_keyword_location)), instance_location_(std::move(instance_location)), message_(std::move(message)) { } validation_output(const std::string& keyword, const std::string& absolute_keyword_location, const std::string& instance_location, const std::string& message, const std::vector& nested_errors) : keyword_(keyword), absolute_keyword_location_(absolute_keyword_location), instance_location_(instance_location), message_(message), nested_errors_(nested_errors) { } const std::string& instance_location() const { return instance_location_; } const std::string& message() const { return message_; } const std::string& absolute_keyword_location() const { return absolute_keyword_location_; } const std::string& keyword() const { return keyword_; } const std::vector& nested_errors() const { return nested_errors_; } }; } // namespace jsonschema } // namespace jsoncons #endif // JSONCONS_JSONSCHEMA_JSONSCHEMA_ERROR_HPP