RESTinio

pct_encoded_symbols.hpp
Go to the documentation of this file.
1/*
2 * RESTinio
3 */
4
12#pragma once
13
14#include <restinio/helpers/http_field_parsers/basics.hpp>
15
16 namespace restinio
17{
18
19 namespace http_field_parsers
20{
21
22 namespace details
23{
24
25//
26// pct_encoded_result_type_t
27//
39 using pct_encoded_result_type_t = std::array< char, 3 >;
40
41//
42// pct_encoded_symbols_producer
43//
55 RESTINIO_NODISCARD
56 inline auto
57 pct_encoded_symbols_p()
58{
59 return produce< pct_encoded_result_type_t >(
60 symbol_p( '%' ) >> to_container(),
61 hexdigit_p() >> to_container(),
62 hexdigit_p() >> to_container()
63 );
64}
65
66//
67// pct_encoded_symbols_consumer_t
68//
78 struct pct_encoded_symbols_consumer_t
79 : public restinio::easy_parser::impl::consumer_tag
80{
81 void
82 consume( std::string & to, pct_encoded_result_type_t && from ) const
83 {
84 to.append( &from[0], from.size() );
85 }
86};
87
88} /* namespace details */
89
90} /* namespace http_field_parsers */
91
92} /* namespace restinio */
93
94
basics.hpp
Utilities for parsing values of http-fields.
RESTINIO_NODISCARD
#define RESTINIO_NODISCARD
Definition: compiler_features.hpp:33
restinio::easy_parser::hexdigit_p
RESTINIO_NODISCARD auto hexdigit_p() noexcept
A factory function to create a hexdigit_producer.
Definition: easy_parser.hpp:4172
restinio::easy_parser::to_container
RESTINIO_NODISCARD auto to_container()
A factory function to create a to_container_consumer.
Definition: easy_parser.hpp:4583
restinio::easy_parser::symbol_p
RESTINIO_NODISCARD auto symbol_p(char expected) noexcept
A factory function to create a symbol_producer.
Definition: easy_parser.hpp:3955
restinio::http_field_parsers::details::pct_encoded_result_type_t
std::array< char, 3 > pct_encoded_result_type_t
A type for representing extraction of percent-encoded char from the input stream.
Definition: pct_encoded_symbols.hpp:39
restinio::http_field_parsers::details::pct_encoded_symbols_p
RESTINIO_NODISCARD auto pct_encoded_symbols_p()
A producer that extract a sequence of symbols represented a percent-encoded character.
Definition: pct_encoded_symbols.hpp:57
restinio
Definition: asio_include.hpp:21
restinio::easy_parser::impl::consumer_tag
A special base class to be used with consumers.
Definition: easy_parser.hpp:1343
restinio::http_field_parsers::details::pct_encoded_symbols_consumer_t
A special consumer that inserts an extracted sequence of symbols into the result string.
Definition: pct_encoded_symbols.hpp:80
restinio::http_field_parsers::details::pct_encoded_symbols_consumer_t::consume
void consume(std::string &to, pct_encoded_result_type_t &&from) const
Definition: pct_encoded_symbols.hpp:82