2023-05-22 18:45:02 +10:00

131 lines
2.9 KiB
C++

//
// Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Official repository: https://github.com/boostorg/url
//
#ifndef BOOST_URL_GRAMMAR_ERROR_HPP
#define BOOST_URL_GRAMMAR_ERROR_HPP
#include <boost/url/detail/config.hpp>
#include <boost/url/error_types.hpp>
namespace boost {
namespace urls {
namespace grammar {
/** Error codes returned when using rules
@see
@ref condition,
@ref parse.
*/
enum class error
{
// VFALCO 3 space indent or
// else Doxygen malfunctions
//
// (informational)
//
/**
* More input is needed to match the rule
*
* A rule reached the end of the input,
* resulting in a partial match. The error
* is recoverable; the caller may obtain
* more input if possible and attempt to
* parse the character buffer again.
* Custom rules should only return this
* error if it is completely unambiguous
* that the rule cannot be matched without
* more input.
*/
need_more = 1,
/**
* The rule did not match the input.
*
* This error is returned when a rule fails
* to match the input. The error is recoverable;
* the caller may rewind the input pointer and
* attempt to parse again using a different rule.
*/
mismatch,
/**
* A rule reached the end of a range
*
* This indicates that the input was consumed
* when parsing a @ref range. The @ref range_rule
* avoids rewinding the input buffer when
* this error is returned. Thus the consumed
* characters are be considered part of the
* range without contributing additional
* elements.
*/
end_of_range,
/**
* Leftover input remaining after match.
*/
leftover,
//--------------------------------------------
//
// condition::fatal
//
//--------------------------------------------
/**
* A rule encountered unrecoverable invalid input.
*
* This error is returned when input is matching
* but one of the requirements is violated. For
* example if a percent escape is found, but
* one or both characters that follow are not
* valid hexadecimal digits. This is usually an
* unrecoverable error.
*/
invalid,
/** An integer overflowed during parsing.
*/
out_of_range,
/**
* An unspecified syntax error was found.
*/
syntax
};
//------------------------------------------------
/** Error conditions for errors received from rules
@see
@ref error,
@ref parse.
*/
enum class condition
{
/**
* A fatal error in syntax was encountered.
This indicates that parsing cannot continue.
*/
fatal = 1
};
} // grammar
} // urls
} // boost
#include <boost/url/grammar/impl/error.hpp>
#endif