14 #include <restinio/compiler_features.hpp> 64 m_current_symbol = byte;
66 else if( 0xC0u == (byte & 0xE0u) )
69 m_current_symbol = (byte & 0x1Fu);
71 else if( 0xE0u == (byte & 0xF0u) )
74 m_current_symbol = (byte & 0x0Fu);
76 else if( 0xF0u == (byte & 0xF8u) )
79 m_current_symbol = (byte & 0x07u);
101 if( 0x80u == (byte & 0xC0u) )
103 m_current_symbol <<= 6;
104 m_current_symbol |= (byte & 0x3Fu);
108 if( m_current_symbol < 0x0080u )
128 if( 0x80u == (byte & 0xC0u) )
130 m_current_symbol <<= 6;
131 m_current_symbol |= (byte & 0x3Fu);
144 if( 0x80u == (byte & 0xC0u) )
146 m_current_symbol <<= 6;
147 m_current_symbol |= (byte & 0x3Fu);
160 if( 0x80u == (byte & 0xC0u) )
162 m_current_symbol <<= 6;
163 m_current_symbol |= (byte & 0x3Fu);
167 if( m_current_symbol < 0x0800u )
175 if( m_current_symbol >= 0xD800 && m_current_symbol <= 0xDFFF )
190 if( 0x80u == (byte & 0xC0u) )
192 m_current_symbol <<= 6;
193 m_current_symbol |= (byte & 0x3Fu);
206 if( 0x80u == (byte & 0xC0u) )
208 m_current_symbol <<= 6;
209 m_current_symbol |= (byte & 0x3Fu);
213 if( m_current_symbol < 0x10000u )
223 if( m_current_symbol >= 0x110000 )
275 case state_t::wait_first_byte:
276 on_first_byte( byte );
279 case state_t::wait_second_of_two:
280 on_second_of_two( byte );
283 case state_t::wait_second_of_three:
284 on_second_of_three( byte );
287 case state_t::wait_second_of_four:
288 on_second_of_four( byte );
291 case state_t::wait_third_of_three:
292 on_third_of_three( byte );
295 case state_t::wait_third_of_four:
296 on_third_of_four( byte );
299 case state_t::wait_fourth_of_four:
300 on_fourth_of_four( byte );
327 m_current_symbol = 0u;
string_view_t from_string< string_view_t >(string_view_t s)
Get a value from string_view.
void on_second_of_three(std::uint8_t byte) noexcept
bool finalized() const noexcept
void on_third_of_three(std::uint8_t byte) noexcept
Helper class for checking UTF-8 byte sequence during parsing URI or incoming byte stream...
state_t
Enumeration of all possible checker states.
std::enable_if< std::is_same< Parameter_Container, query_string_params_t >::value||std::is_same< Parameter_Container, router::route_params_t >::value, std::optional< Value_Type > >::type opt_value(const Parameter_Container ¶ms, string_view_t key)
Gets the value of a parameter specified by key wrapped in std::optional<Value_Type> if parameter exis...
void on_second_of_four(std::uint8_t byte) noexcept
void on_second_of_two(std::uint8_t byte) noexcept
void on_fourth_of_four(std::uint8_t byte) noexcept
void on_third_of_four(std::uint8_t byte) noexcept
void on_first_byte(std::uint8_t byte) noexcept
std::uint32_t current_symbol() const noexcept
bool process_byte(std::uint8_t byte) noexcept
state_t m_state
The current state of the checker.
std::uint32_t m_current_symbol
The current UNICODE symbol.