diff --git a/doc/modules/ROOT/nav.adoc b/doc/modules/ROOT/nav.adoc index 72c9aabf9..23e6ccbee 100644 --- a/doc/modules/ROOT/nav.adoc +++ b/doc/modules/ROOT/nav.adoc @@ -23,8 +23,4 @@ ** xref:examples/router.adoc[] ** xref:examples/sanitize.adoc[] * xref:reference.adoc[Reference] -** Concepts -*** xref:concepts/CharSet.adoc[] -*** xref:concepts/Rule.adoc[] -*** xref:concepts/StringToken.adoc[] -** xref:HelpCard.adoc[] +* xref:HelpCard.adoc[] diff --git a/doc/modules/ROOT/pages/concepts/CharSet.adoc b/doc/modules/ROOT/pages/concepts/CharSet.adoc deleted file mode 100644 index 71f0d6316..000000000 --- a/doc/modules/ROOT/pages/concepts/CharSet.adoc +++ /dev/null @@ -1,116 +0,0 @@ -// -// Copyright (c) 2023 Alan de Freitas (alandefreitas@gmail.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) -// -// Official repository: https://github.com/boostorg/url -// - - -[#charset] -= CharSet - -A __CharSet__ is a unary predicate which is invocable with this equivalent signature: - -[source,cpp] ----- -bool( char ch ) const noexcept; ----- - -The predicate returns cpp:true[] if cpp:ch[] is a member of the set, or cpp:false[] otherwise. - -== Related Identifiers - -cpp:is_charset[], -cpp:find_if[], -cpp:find_if_not[]. - -== Requirements - -In this table: - -* cpp:T[] is a type meeting the requirements of __CharSet__ -* cpp:t[] is a cpp:const[] value of type cpp:T[] -* cpp:c[] is a value of type cpp:char[] -* cpp:first[], cpp:last[] are values of type cpp:char const*[] - -[cols="1,1,3"] -|=== -// Headers -|Expression|Type|Semantics, Pre/Post-conditions - -// Row 1, Column 1 -|cpp:t(c)[] -// Row 1, Column 2 -|cpp:bool[] -// Row 1, Column 3 -|This function returns cpp:true[] if cpp:c[] is a member of -the character set, otherwise it returns cpp:false[]. - -// Row 2, Column 1 -| -cpp:t.find_if(first,last)[] - -// Row 2, Column 2 -|cpp:char const*[] -// Row 2, Column 3 -|This optional member function examines the valid range of characters in cpp:// [first, last)[] and returns -a pointer to the first occurrence of a character -which is in the set, or returns cpp:last[] if no such -character. - -The implementation of cpp:grammar::find_if[] -calls this function if provided by the character -set, allowing optimized or otherwise performant -implementations to be developed. If this member -function is not provided, a default implementation -is used which calls cpp:operator()[]. - -// Row 3, Column 1 -|cpp:t.find_if_not(first,last)[] -// Row 3, Column 2 -|cpp:char const*[] -// Row 3, Column 3 -|This optional member function examines the valid -range of characters in cpp:[first, last)[] and returns -a pointer to the first occurrence of a character -which is not in the set, or returns cpp:last[] if no -such character. - -The implementation of cpp:grammar::find_if_not[] -calls this function if provided by the character -set, allowing optimized or otherwise performant -implementations to be developed. If this member -function is not provided, a default implementation -is used which calls cpp:operator()[]. -|=== - -== Exemplar - -For best results, it is suggested that all constructors and member functions for character sets be marked cpp:constexpr[]. - -// code_charset_1 -[source,cpp] ----- -struct CharSet -{ - bool operator()( char c ) const noexcept; - - // These are both optional. If either or both are left - // unspecified, a default implementation will be used. - // - char const* find_if( char const* first, char const* last ) const noexcept; - char const* find_if_not( char const* first, char const* last ) const noexcept; -}; ----- - -== Models - -* cpp:grammar::alnum_chars[] -* cpp:grammar::alpha_chars[] -* cpp:grammar::digit_chars[] -* cpp:grammar::hexdig_chars[] -* cpp:grammar::lut_chars[] - - diff --git a/doc/modules/ROOT/pages/concepts/Rule.adoc b/doc/modules/ROOT/pages/concepts/Rule.adoc deleted file mode 100644 index c082cd8e8..000000000 --- a/doc/modules/ROOT/pages/concepts/Rule.adoc +++ /dev/null @@ -1,101 +0,0 @@ -// -// Copyright (c) 2023 Alan de Freitas (alandefreitas@gmail.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) -// -// Official repository: https://github.com/boostorg/url -// - - -= Rule - -A __Rule__ defines an algorithm used to match an input buffer of ASCII characters against a set of syntactical specifications. -Each rule represents either a terminal symbol or a composition in the represented grammar. -The library comes with a set of rules for productions typically found in RFC documents. -Rules are not invoked directly; instead, rule variables are used with overloads of cpp:parse[] which provide a convenient, uniform front end. - -== Related Identifiers - -cpp:is_rule[], cpp:parse[]. - -== Requirements - -In this table: - -* cpp:T[] is a type meeting the requirements of __Rule__ -* cpp:t[] is a const value of type cpp:T[] -* cpp:it[] is an __lvalue__ with type cpp:char const*[] -* cpp:end[] is a value of type cpp:char const*[] - -[cols="1,1,3"] -|=== -// Headers -|Expression|Type|Semantics, Pre/Post-conditions - -// Row 1, Column 1 -|cpp:T(t)[] - -// Row 1, Column 2 -| - -// Row 1, Column 3 -|Copy construction of cpp:T[] throws nothing. - -cpp:std::is_nothrow_copy_constructible::value[] == truecpp: - -// Row 2, Column 1 -|[]T::value_typecpp: - -// Row 2, Column 2 -| - -// Row 2, Column 3 -|Values of this type are returned by the rule when the -parse operation is successful - -// Row 3, Column 1 -|[]t.parse(it,end)cpp: - -// Row 3, Column 2 -|[]resultcpp: -// Row 3, Column 3 -|Attempt to parse the buffer of characters defined by -the range []// [it,end)cpp:. Upon success, the return result -holds an instance of the rule's value type, and -the reference parameter []itcpp: is modified to point -to the first unconsumed character. Otherwise, upon -failure the result holds an error. In this case -the implementation defines if and how the reference -parameter []itcpp: is modified. - -|=== - -== Exemplar - -For best results, it is suggested that all constructors for rules be marked []constexprcpp:. - -[source,cpp] ----- -struct Rule -{ - struct value_type; - - constexpr Rule( Rule const& ) noexcept = default; - - auto parse( char const*& it, char const* end ) const -> result< value_type >; -}; - -// Declare a variable of type Rule for notational convenience -constexpr Rule rule{}; ----- - -== Model - -* []grammar::dec_octet_rulecpp: -* []grammar::delim_rulecpp: -* []grammar::not_empty_rulecpp: -* []grammar::optional_rulecpp: -* []grammar::range_rulecpp: -* []grammar::token_rulecpp: -* []grammar::tuple_rulecpp: -* []grammar::unsigned_rulecpp: -* []grammar::variant_rule` diff --git a/doc/modules/ROOT/pages/concepts/StringToken.adoc b/doc/modules/ROOT/pages/concepts/StringToken.adoc deleted file mode 100644 index a743dfb39..000000000 --- a/doc/modules/ROOT/pages/concepts/StringToken.adoc +++ /dev/null @@ -1,149 +0,0 @@ -// -// Copyright (c) 2023 Alan de Freitas (alandefreitas@gmail.com) -// -// Distributed under the Boost Software License, Version 1.0. (See accompanying -// file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt) -// -// Official repository: https://github.com/boostorg/url -// - -= StringToken - -A string token is an rvalue passed to a function template which customizes the return type of the function and also controls how a modifiable character buffer is obtained and presented. -The string token's lifetime extends only for the duration of the function call in which it appears as a parameter. -A string token cannot be copied, moved, or assigned, and must be destroyed when the function returns or throws. - -== Requirements - -In this table: - -* cpp:T[] is a type meeting the requirements of __StringToken__ -* cpp:t[] is an rvalue reference of type T -* cpp:n[] is a value of type cpp:std::size_t[] - -[cols="1,1,3"] -|=== -// Headers -|Expression|Result|Semantics, Pre/Post-conditions - -// Row 1, Column 1 -| -cpp:std::derived_from[] - -// Row 1, Column 2 -|cpp:true[] - -// Row 1, Column 3 -|All string tokens must be publicly and -unambiguously derived from -cpp:string_token::arg[]. - -// Row 2, Column 1 -|cpp:T::result_type[] - -// Row 2, Column 2 -| -// Row 2, Column 3 -|This type determines the return type of functions -which accept a string token. - -// Row 3, Column 1 -|cpp:t.prepare(n);[] - -// Row 3, Column 2 -|cpp:char*[] - -// Row 3, Column 3 -|This function overrides the virtual function in the base. -It must return a pointer to a character buffer of at least -size cpp:n[], otherwise throw an exception. - -// Row 4, Column 1 -|cpp:t.result();[] - -// Row 4, Column 3 -|cpp:T::result_type[] - -// Row 4, Column 5 -|This function is invoked by the algorithm to receive the result -from the string token. -It is only invoked if cpp:prepare[] returned successfuly and the -string token was not destroyed. - -|=== - -== Algorithm Requirements - -When an algorithm accepts a string token, it must meet these requirements: - -* cpp:prepare[] is called only once or not at all, -* cpp:result[] is only called after cpp:prepare[] returns successfully, and -* The string token is destroyed when the algorithm completes or if an exception is thrown. - -String tokens cannot be reused. - -== Exemplars - -String token prototype: - -[source,cpp] ----- -struct StringToken : string_token::arg -{ - using result_type = std::string; - - char* prepare( std::size_t n ) override; - - result_type result(); -}; ----- - -Algorithm prototype: - -[source,cpp] ----- -namespace detail { - -// Algorithm implementation may be placed -// out of line, and written as an ordinary -// function (no template required). - -void algorithm_impl( string_token::arg& token ) -{ - std::size_t n = 0; - - // calculate space needed in cpp:n[] - - // acquire a destination buffer - char* dest = token.prepare( n ); - - // write the characters to the buffer -} - -} // detail - -// public interface is a function template, -// defaulting to return cpp:std::string[]. - -template< class StringToken = string_token::return_string > -auto -algorithm( StringToken&& token = {} ) -> - typename StringToken::result_type -{ - // invoke the algorithm with the token - algorithm_impl( token ); - - // return the result from the token - return token.result(); -} - ----- - -Models - -* cpp:string_token::return_string[] -* cpp:string_token::assign_to[] -* cpp:string_token::preserve_size[] -* cpp:string_token::return_string[] - - diff --git a/doc/modules/ROOT/pages/reference.adoc b/doc/modules/ROOT/pages/reference.adoc index c482224e7..0248a2300 100644 --- a/doc/modules/ROOT/pages/reference.adoc +++ b/doc/modules/ROOT/pages/reference.adoc @@ -17,137 +17,137 @@ | *Types (1/2)* -xref:reference:boost/urls/authority_view.adoc[`authority_view`] +cpp:boost::urls::authority_view[authority_view] -xref:reference:boost/urls/ignore_case_param.adoc[`ignore_case_param`] +cpp:boost::urls::ignore_case_param[ignore_case_param] -xref:reference:boost/urls/ipv4_address.adoc[`ipv4_address`] +cpp:boost::urls::ipv4_address[ipv4_address] -xref:reference:boost/urls/ipv6_address.adoc[`ipv6_address`] +cpp:boost::urls::ipv6_address[ipv6_address] -xref:reference:boost/urls/no_value_t.adoc[`no_value_t`] +cpp:boost::urls::no_value_t[no_value_t] -xref:reference:boost/urls/param.adoc[`param`] +cpp:boost::urls::param[param] -xref:reference:boost/urls/param_pct_view.adoc[`param_pct_view`] +cpp:boost::urls::param_pct_view[param_pct_view] -xref:reference:boost/urls/param_view.adoc[`param_view`] +cpp:boost::urls::param_view[param_view] -xref:reference:boost/urls/params_base.adoc[`params_base`] +cpp:boost::urls::params_base[params_base] -xref:reference:boost/urls/params_encoded_base.adoc[`params_encoded_base`] +cpp:boost::urls::params_encoded_base[params_encoded_base] -xref:reference:boost/urls/params_encoded_ref.adoc[`params_encoded_ref`] +cpp:boost::urls::params_encoded_ref[params_encoded_ref] -xref:reference:boost/urls/params_encoded_view.adoc[`params_encoded_view`] +cpp:boost::urls::params_encoded_view[params_encoded_view] -xref:reference:boost/urls/params_ref.adoc[`params_ref`] +cpp:boost::urls::params_ref[params_ref] -xref:reference:boost/urls/params_view.adoc[`params_view`] +cpp:boost::urls::params_view[params_view] -xref:reference:boost/urls/segments_base.adoc[`segments_base`] +cpp:boost::urls::segments_base[segments_base] -xref:reference:boost/urls/segments_view.adoc[`segments_view`] +cpp:boost::urls::segments_view[segments_view] -xref:reference:boost/urls/segments_encoded_base.adoc[`segments_encoded_base`] +cpp:boost::urls::segments_encoded_base[segments_encoded_base] | **Types (2/2)** -xref:reference:boost/urls/segments_encoded_ref.adoc[`segments_encoded_ref`] +cpp:boost::urls::segments_encoded_ref[segments_encoded_ref] -xref:reference:boost/urls/segments_encoded_view.adoc[`segments_encoded_view`] +cpp:boost::urls::segments_encoded_view[segments_encoded_view] -xref:reference:boost/urls/segments_ref.adoc[`segments_ref`] +cpp:boost::urls::segments_ref[segments_ref] -xref:reference:boost/urls/static_url.adoc[`static_url`] +cpp:boost::urls::static_url[static_url] -xref:reference:boost/urls/static_url_base.adoc[`static_url_base`] +cpp:boost::urls::static_url_base[static_url_base] -xref:reference:boost/urls/url.adoc[`url`] +cpp:boost::urls::url[url] -xref:reference:boost/urls/url_base.adoc[`url_base`] +cpp:boost::urls::url_base[url_base] -xref:reference:boost/urls/url_view.adoc[`url_view`] +cpp:boost::urls::url_view[url_view] -xref:reference:boost/urls/url_view_base.adoc[`url_view_base`] +cpp:boost::urls::url_view_base[url_view_base] **Constants** -xref:reference:boost/urls/error.adoc[`error`] +cpp:boost::urls::error[error] -xref:reference:boost/urls/ignore_case.adoc[`ignore_case`] +cpp:boost::urls::ignore_case[ignore_case] -xref:reference:boost/urls/host_type.adoc[`host_type`] +cpp:boost::urls::host_type[host_type] -xref:reference:boost/urls/no_value.adoc[`no_value`] +cpp:boost::urls::no_value[no_value] -xref:reference:boost/urls/scheme.adoc[`scheme`] +cpp:boost::urls::scheme[scheme] | **Functions** -xref:reference:boost/urls/operator_lshift.adoc[`operator<<`] +cpp:boost::urls::operator<<[operator<<] -xref:reference:boost/urls/arg.adoc[`arg`] +cpp:boost::urls::arg[arg] -xref:reference:boost/urls/format.adoc[`format`] +cpp:boost::urls::format[format] -xref:reference:boost/urls/format_to.adoc[`format_to`] +cpp:boost::urls::format_to[format_to] -xref:reference:boost/urls/parse_absolute_uri.adoc[`parse_absolute_uri`] +cpp:boost::urls::parse_absolute_uri[parse_absolute_uri] -xref:reference:boost/urls/parse_authority.adoc[`parse_authority`] +cpp:boost::urls::parse_authority[parse_authority] -xref:reference:boost/urls/parse_origin_form.adoc[`parse_origin_form`] +cpp:boost::urls::parse_origin_form[parse_origin_form] -xref:reference:boost/urls/parse_path.adoc[`parse_path`] +cpp:boost::urls::parse_path[parse_path] -xref:reference:boost/urls/parse_query.adoc[`parse_query`] +cpp:boost::urls::parse_query[parse_query] -xref:reference:boost/urls/parse_relative_ref.adoc[`parse_relative_ref`] +cpp:boost::urls::parse_relative_ref[parse_relative_ref] -xref:reference:boost/urls/parse_uri.adoc[`parse_uri`] +cpp:boost::urls::parse_uri[parse_uri] -xref:reference:boost/urls/parse_uri_reference.adoc[`parse_uri_reference`] +cpp:boost::urls::parse_uri_reference[parse_uri_reference] -xref:reference:boost/urls/resolve.adoc[`resolve`] +cpp:boost::urls::resolve[resolve] | **Functions** -xref:reference:boost/urls/encode.adoc[`encode`] +cpp:boost::urls::encode[encode] -xref:reference:boost/urls/encoded_size.adoc[`encoded_size`] +cpp:boost::urls::encoded_size[encoded_size] -xref:reference:boost/urls/make_pct_string_view.adoc[`make_pct_string_view`] +cpp:boost::urls::make_pct_string_view[make_pct_string_view] **Types** -xref:reference:boost/urls/decode_view.adoc[`decode_view`] +cpp:boost::urls::decode_view[decode_view] -xref:reference:boost/urls/encoding_opts.adoc[`encoding_opts`] +cpp:boost::urls::encoding_opts[encoding_opts] -xref:reference:boost/urls/pct_string_view.adoc[`pct_string_view`] +cpp:boost::urls::pct_string_view[pct_string_view] | **Types** -xref:reference:boost/urls/error_types/errc.adoc[`errc`] +cpp:boost::urls::error_types::errc[errc] -xref:reference:boost/urls/error_types/error_category.adoc[`error_category`] +cpp:boost::urls::error_types::error_category[error_category] -xref:reference:boost/urls/error_types/error_code.adoc[`error_code`] +cpp:boost::urls::error_types::error_code[error_code] -xref:reference:boost/urls/error_types/error_condition.adoc[`error_condition`] +cpp:boost::urls::error_types::error_condition[error_condition] -xref:reference:boost/urls/error_types/generic_category.adoc[`generic_category`] +cpp:boost::urls::error_types::generic_category[generic_category] -xref:reference:boost/urls/optional.adoc[`optional`] +cpp:boost::urls::optional[optional] -xref:reference:boost/urls/error_types/result.adoc[`result`] +cpp:boost::urls::error_types::result[result] -xref:reference:boost/urls/string_view.adoc[`string_view`] +cpp:boost::urls::string_view[string_view] -xref:reference:boost/urls/error_types/system_category.adoc[`system_category`] +cpp:boost::urls::error_types::system_category[system_category] -xref:reference:boost/urls/error_types/system_error.adoc[`system_error`] +cpp:boost::urls::error_types::system_error[system_error] |=== @@ -157,155 +157,156 @@ xref:reference:boost/urls/error_types/system_error.adoc[`system_error`] | **Grammar** -xref:reference:boost/urls/absolute_uri_rule.adoc[`absolute_uri_rule`] +cpp:boost::urls::absolute_uri_rule[absolute_uri_rule] -xref:reference:boost/urls/authority_rule.adoc[`authority_rule`] +cpp:boost::urls::authority_rule[authority_rule] -xref:reference:boost/urls/gen_delim_chars.adoc[`gen_delim_chars`] +cpp:boost::urls::gen_delim_chars[gen_delim_chars] -xref:reference:boost/urls/ipv4_address_rule.adoc[`ipv4_address_rule`] +cpp:boost::urls::ipv4_address_rule[ipv4_address_rule] -xref:reference:boost/urls/ipv6_address_rule.adoc[`ipv6_address_rule`] +cpp:boost::urls::ipv6_address_rule[ipv6_address_rule] -xref:reference:boost/urls/pchars.adoc[`pchars`] +cpp:boost::urls::pchars[pchars] -xref:reference:boost/urls/pct_encoded_rule.adoc[`pct_encoded_rule`] +cpp:boost::urls::pct_encoded_rule[pct_encoded_rule] -xref:reference:boost/urls/query_rule.adoc[`query_rule`] +cpp:boost::urls::query_rule[query_rule] -xref:reference:boost/urls/relative_ref_rule.adoc[`relative_ref_rule`] +cpp:boost::urls::relative_ref_rule[relative_ref_rule] -xref:reference:boost/urls/reserved_chars.adoc[`reserved_chars`] +cpp:boost::urls::reserved_chars[reserved_chars] -xref:reference:boost/urls/sub_delim_chars.adoc[`sub_delim_chars`] +cpp:boost::urls::sub_delim_chars[sub_delim_chars] -xref:reference:boost/urls/unreserved_chars.adoc[`unreserved_chars`] +cpp:boost::urls::unreserved_chars[unreserved_chars] -xref:reference:boost/urls/uri_reference_rule.adoc[`uri_reference_rule`] +cpp:boost::urls::uri_reference_rule[uri_reference_rule] -xref:reference:boost/urls/uri_rule.adoc[`uri_rule`] +cpp:boost::urls::uri_rule[uri_rule] | **Functions (1/2)** -xref:reference:boost/urls/grammar/ci_compare.adoc[`ci_compare`] +cpp:boost::urls::grammar::ci_compare[ci_compare] -xref:reference:boost/urls/grammar/ci_digest.adoc[`ci_digest`] +cpp:boost::urls::grammar::ci_digest[ci_digest] -xref:reference:boost/urls/grammar/ci_is_equal.adoc[`ci_is_equal`] +cpp:boost::urls::grammar::ci_is_equal[ci_is_equal] -xref:reference:boost/urls/grammar/ci_is_less.adoc[`ci_is_less`] +cpp:boost::urls::grammar::ci_is_less[ci_is_less] -xref:reference:boost/urls/grammar/delim_rule.adoc[`delim_rule`] +cpp:boost::urls::grammar::delim_rule[delim_rule] -xref:reference:boost/urls/grammar/find_if.adoc[`find_if`] +cpp:boost::urls::grammar::find_if[find_if] -xref:reference:boost/urls/grammar/find_if_not.adoc[`find_if_not`] +cpp:boost::urls::grammar::find_if_not[find_if_not] -xref:reference:boost/urls/grammar/hexdig_value.adoc[`hexdig_value`] +cpp:boost::urls::grammar::hexdig_value[hexdig_value] -xref:reference:boost/urls/grammar/not_empty_rule.adoc[`not_empty_rule`] +cpp:boost::urls::grammar::not_empty_rule[not_empty_rule] -xref:reference:boost/urls/grammar/optional_rule.adoc[`optional_rule`] +cpp:boost::urls::grammar::optional_rule[optional_rule] -xref:reference:boost/urls/grammar/parse.adoc[`parse`] +cpp:boost::urls::grammar::parse[parse] -xref:reference:boost/urls/grammar/range_rule.adoc[`range_rule`] +cpp:boost::urls::grammar::range_rule[range_rule] -xref:reference:boost/urls/grammar/ref.adoc[`ref`] +cpp:boost::urls::grammar::ref[ref] | **Functions (2/2)** -xref:reference:boost/urls/grammar/squelch.adoc[`squelch`] +cpp:boost::urls::grammar::squelch[squelch] -xref:reference:boost/urls/grammar/to_lower.adoc[`to_lower`] +cpp:boost::urls::grammar::to_lower[to_lower] -xref:reference:boost/urls/grammar/to_upper.adoc[`to_upper`] +cpp:boost::urls::grammar::to_upper[to_upper] -xref:reference:boost/urls/grammar/token_rule.adoc[`token_rule`] +cpp:boost::urls::grammar::token_rule[token_rule] -xref:reference:boost/urls/grammar/tuple_rule.adoc[`tuple_rule`] +cpp:boost::urls::grammar::tuple_rule[tuple_rule] -xref:reference:boost/urls/grammar/variant_rule.adoc[`variant_rule`] +cpp:boost::urls::grammar::variant_rule[variant_rule] **Type Traits** -xref:reference:boost/urls/grammar/is_charset.adoc[`is_charset`] +cpp:boost::urls::grammar::is_charset[is_charset] -xref:reference:boost/urls/grammar/is_rule.adoc[`is_rule`] +cpp:boost::urls::grammar::is_rule[is_rule] | **Types** -xref:reference:boost/urls/grammar/aligned_storage.adoc[`aligned_storage`] +cpp:boost::urls::grammar::aligned_storage[aligned_storage] -xref:reference:boost/urls/grammar/ci_hash.adoc[`ci_hash`] +cpp:boost::urls::grammar::ci_hash[ci_hash] -xref:reference:boost/urls/grammar/ci_equal.adoc[`ci_equal`] +cpp:boost::urls::grammar::ci_equal[ci_equal] -xref:reference:boost/urls/grammar/ci_less.adoc[`ci_less`] +cpp:boost::urls::grammar::ci_less[ci_less] -xref:reference:boost/urls/grammar/lut_chars.adoc[`lut_chars`] +cpp:boost::urls::grammar::lut_chars[lut_chars] -xref:reference:boost/urls/grammar/range.adoc[`range`] +cpp:boost::urls::grammar::range[range] -xref:reference:boost/urls/grammar/recycled.adoc[`recycled`] +cpp:boost::urls::grammar::recycled[recycled] -xref:reference:boost/urls/grammar/recycled_ptr.adoc[`recycled_ptr`] +cpp:boost::urls::grammar::recycled_ptr[recycled_ptr] -xref:reference:boost/urls/grammar/string_view_base.adoc[`string_view_base`] +cpp:boost::urls::grammar::string_view_base[string_view_base] -xref:reference:boost/urls/grammar/unsigned_rule.adoc[`unsigned_rule`] +cpp:boost::urls::grammar::unsigned_rule[unsigned_rule] **StringToken** -xref:reference:boost/urls/string_token/append_to.adoc[`append_to`] +cpp:boost::urls::string_token::append_to[append_to] -xref:reference:boost/urls/string_token/arg.adoc[`arg`] +cpp:boost::urls::string_token::arg[arg] -xref:reference:boost/urls/string_token/assign_to.adoc[`assign_to`] +cpp:boost::urls::string_token::assign_to[assign_to] -xref:reference:boost/urls/string_token/is_token.adoc[`is_token`] +cpp:boost::urls::string_token::is_token[is_token] -xref:reference:boost/urls/string_token/preserve_size.adoc[`preserve_size`] +cpp:boost::urls::string_token::preserve_size[preserve_size] -xref:reference:boost/urls/string_token/return_string.adoc[`return_string`] +cpp:boost::urls::string_token::return_string[return_string] + +**Concepts** + +cpp:boost::urls::string_token::StringToken[StringToken] | **Constants** -xref:reference:boost/urls/grammar/all_chars.adoc[`all_chars`] +cpp:boost::urls::grammar::all_chars[all_chars] -xref:reference:boost/urls/grammar/alnum_chars.adoc[`alnum_chars`] +cpp:boost::urls::grammar::alnum_chars[alnum_chars] -xref:reference:boost/urls/grammar/alpha_chars.adoc[`alpha_chars`] +cpp:boost::urls::grammar::alpha_chars[alpha_chars] -xref:reference:boost/urls/grammar/condition.adoc[`condition`] +cpp:boost::urls::grammar::condition[condition] -xref:reference:boost/urls/grammar/dec_octet_rule.adoc[`dec_octet_rule`] +cpp:boost::urls::grammar::dec_octet_rule[dec_octet_rule] -xref:reference:boost/urls/grammar/digit_chars.adoc[`digit_chars`] +cpp:boost::urls::grammar::digit_chars[digit_chars] -xref:reference:boost/urls/grammar/error.adoc[`error`] +cpp:boost::urls::grammar::error[error] -xref:reference:boost/urls/grammar/hexdig_chars.adoc[`hexdig_chars`] +cpp:boost::urls::grammar::hexdig_chars[hexdig_chars] -xref:reference:boost/urls/grammar/not_empty_rule.adoc[`not_empty_rule`] +cpp:boost::urls::grammar::not_empty_rule[not_empty_rule] -xref:reference:boost/urls/grammar/unsigned_rule.adoc[`unsigned_rule`] +cpp:boost::urls::grammar::unsigned_rule[unsigned_rule] -xref:reference:boost/urls/grammar/vchars.adoc[`vchars`] +cpp:boost::urls::grammar::vchars[vchars] **Enums** -xref:reference:boost/urls/grammar/error.adoc[`error`] +cpp:boost::urls::grammar::error[error] -xref:reference:boost/urls/grammar/condition.adoc[`condition`] +cpp:boost::urls::grammar::condition[condition] **Concepts** -xref:concepts/CharSet.adoc[`CharSet`] +cpp:boost::urls::grammar::CharSet[CharSet] -xref:concepts/Rule.adoc[`Rule`] - -xref:concepts/StringToken.adoc[`StringToken`] +cpp:boost::urls::grammar::Rule[Rule] |=== - diff --git a/doc/mrdocs.yml b/doc/mrdocs.yml index 7e8603de0..567617952 100644 --- a/doc/mrdocs.yml +++ b/doc/mrdocs.yml @@ -6,16 +6,33 @@ input: # Patterns to filter out the source-files in the directories file-patterns: - '*.hpp' +exclude: + - '../include/boost/url/detail' + - '../include/boost/url/impl' + - '../include/boost/url/grammar/detail' + - '../include/boost/url/grammar/impl' + - '../include/boost/url/rfc/detail' + - '../include/boost/url/rfc/impl' # Filters include-symbols: - 'boost::urls::**' -exclude-symbols: +see-below: + - 'boost::urls::format_arg' + - 'boost::urls::named_arg' + - 'boost::urls::see_below' + - 'boost::urls::*_t' + - 'boost::urls::grammar::see_below' + - 'boost::urls::string_token::see_below' + - 'boost::urls::decode_view::iterator' + - 'boost::urls::params_base::iterator' + - 'boost::urls::params_encoded_base::iterator' + - 'boost::urls::segments_base::iterator' + - 'boost::urls::segments_encoded_base::iterator' implementation-defined: - 'boost::urls::detail' - 'boost::urls::**::detail' - 'boost::urls::*_unsafe' - - 'boost::urls::*_t' - 'boost::urls::make_error_code' - 'boost::urls::make_void' - 'boost::urls::implementation_defined' @@ -25,14 +42,15 @@ implementation-defined: - 'boost::urls::grammar::make_error_*' - 'boost::urls::grammar::operator_*' - 'boost::urls::string_token::*_t' -see-below: - - 'boost::urls::see_below' - - 'boost::urls::grammar::see_below' - - 'boost::urls::string_token::see_below' +exclude-symbols: + - 'boost::urls::void_t' + +# Metadata Extraction +private-bases: false # Generator generate: adoc -base-url: https://www.github.com/boostorg/url/blob/develop/include/ # boost/url/url_view.hpp +base-url: https://www.github.com/boostorg/url/blob/develop/ # boost/url/url_view.hpp # Style verbose: true diff --git a/doc/tagfiles/boost-url-doxygen.tag.xml b/doc/tagfiles/boost-url-doxygen.tag.xml index 5582bac1f..67ebe185e 100644 --- a/doc/tagfiles/boost-url-doxygen.tag.xml +++ b/doc/tagfiles/boost-url-doxygen.tag.xml @@ -1,10 +1,11 @@ - + boost::urls boost/urls.adoc - boost::urls::url_view boost::urls::authority_view + boost::urls::decode_view + boost::urls::encoding_opts boost::urls::ignore_case_param boost::urls::ipv4_address boost::urls::ipv6_address @@ -18,29 +19,36 @@ boost::urls::params_encoded_view boost::urls::params_ref boost::urls::params_view + boost::urls::pct_string_view boost::urls::segments_base - boost::urls::segments_view boost::urls::segments_encoded_base boost::urls::segments_encoded_ref boost::urls::segments_encoded_view boost::urls::segments_ref + boost::urls::segments_view boost::urls::static_url boost::urls::static_url_base boost::urls::url boost::urls::url_base boost::urls::url_view boost::urls::url_view_base - boost::urls::decode_view - boost::urls::encoding_opts - boost::urls::pct_string_view + boost::urls::error + boost::urls::host_type + boost::urls::scheme + boost::urls::format_arg + boost::urls::named_arg + boost::urls::optional + boost::urls::string_view + boost::urls::variant boost::urls::absolute_uri_rule - boost::urls::origin_form_rule boost::urls::authority_rule boost::urls::gen_delim_chars + boost::urls::ignore_case boost::urls::ipv4_address_rule boost::urls::ipv6_address_rule + boost::urls::no_value + boost::urls::origin_form_rule boost::urls::pchars - boost::urls::pct_encoded_rule boost::urls::query_rule boost::urls::relative_ref_rule boost::urls::reserved_chars @@ -48,194 +56,2347 @@ boost::urls::unreserved_chars boost::urls::uri_reference_rule boost::urls::uri_rule - - boost::urls::error - boost::urls::ignore_case - boost::urls::host_type - boost::urls::no_value - boost::urls::scheme - boost::system::result - parse_uri - boost/urls/parse_uri.adoc - - (core::string_view s) + named_arg<T> + arg + boost/urls/arg.adoc + + (core::string_view name, const T& arg) - operator<< - boost/urls/operator_lshift.adoc - + std::uint16_t + default_port + boost/urls/default_port.adoc + + (scheme s) - arg - boost/urls/arg.adoc - + std::size_t + encode + boost/urls/encode-0a.adoc + + (char* dest, std::size_t size, core::string_view s, const CharSet& unreserved, encoding_opts + opt) + + + + StringToken::result_type + encode + boost/urls/encode-04.adoc + + (core::string_view s, const CharSet& unreserved, encoding_opts opt, StringToken&& + token) + + + + std::size_t + encode_unsafe + boost/urls/encode_unsafe.adoc + + (char* dest, std::size_t size, core::string_view s, const CharSet& unreserved, encoding_opts + opt) + + + + std::size_t + encoded_size + boost/urls/encoded_size.adoc + + (core::string_view s, const CharSet& unreserved, encoding_opts opt) + + + url + format + boost/urls/format-02.adoc + + (core::string_view fmt, std::initializer_list<format_arg> args) + url format - boost/urls/format.adoc - + boost/urls/format-05.adoc + + (core::string_view fmt, Args...&& args) + + + void + format_to + boost/urls/format_to-0b.adoc + + (url_base& u, core::string_view fmt, std::initializer_list<format_arg> args) + void format_to - boost/urls/format_to.adoc - + boost/urls/format_to-02.adoc + + (url_base& u, core::string_view fmt, Args...&& args) + + + system::result<pct_string_view> + make_pct_string_view + boost/urls/make_pct_string_view.adoc + + (core::string_view s) + + + pct_string_view + make_pct_string_view_unsafe + boost/urls/make_pct_string_view_unsafe.adoc + + (const char* data, std::size_t size, std::size_t decoded_size) + + + bool + operator!= + boost/urls/operator_not_eq-02.adoc + + (const ipv4_address& a1, const ipv4_address& a2) + + + bool + operator!= + boost/urls/operator_not_eq-07.adoc + + (const ipv6_address& a1, const ipv6_address& a2) + + + bool + operator!= + boost/urls/operator_not_eq-03.adoc + + (const authority_view& a0, const authority_view& a1) + + + bool + operator!= + boost/urls/operator_not_eq-08.adoc + + (const decode_view& lhs, const decode_view& rhs) + + + bool + operator!= + boost/urls/operator_not_eq-04.adoc + + (const url_view_base& u0, const url_view_base& u1) + + + bool + operator!= + boost/urls/operator_not_eq-06.adoc + + (const decode_view& lhs, const S& rhs) + + + bool + operator!= + boost/urls/operator_not_eq-0b.adoc + + (const S& lhs, const decode_view& rhs) + + + bool + operator< + boost/urls/operator_lt-0a.adoc + + (const authority_view& a0, const authority_view& a1) + + + bool + operator< + boost/urls/operator_lt-05.adoc + + (const decode_view& lhs, const decode_view& rhs) + + + bool + operator< + boost/urls/operator_lt-04a.adoc + + (const url_view_base& u0, const url_view_base& u1) + + + bool + operator< + boost/urls/operator_lt-047.adoc + + (const decode_view& lhs, const S& rhs) + + + bool + operator< + boost/urls/operator_lt-03.adoc + + (const S& lhs, const decode_view& rhs) + + + std::ostream& + operator<< + boost/urls/operator_lshift-0a.adoc + + (std::ostream& os, const ipv4_address& addr) + + + std::ostream& + operator<< + boost/urls/operator_lshift-0f6.adoc + + (std::ostream& os, const ipv6_address& addr) + + + std::ostream& + operator<< + boost/urls/operator_lshift-0d.adoc + + (std::ostream& os, const authority_view& a) + + + std::ostream& + operator<< + boost/urls/operator_lshift-034.adoc + + (std::ostream& os, const decode_view& s) + + + std::ostream& + operator<< + boost/urls/operator_lshift-09.adoc + + (std::ostream& os, const params_encoded_base& qp) + + + std::ostream& + operator<< + boost/urls/operator_lshift-0b.adoc + + (std::ostream& os, const params_base& qp) + + + std::ostream& + operator<< + boost/urls/operator_lshift-0c.adoc + + (std::ostream& os, const url_view_base& u) + + + std::ostream& + operator<< + boost/urls/operator_lshift-038.adoc + + (std::ostream& os, const segments_encoded_base& ps) + + + std::ostream& + operator<< + boost/urls/operator_lshift-0f4.adoc + + (std::ostream& os, const segments_base& ps) + + + bool + operator<= + boost/urls/operator_le-01.adoc + + (const authority_view& a0, const authority_view& a1) + + + bool + operator<= + boost/urls/operator_le-00.adoc + + (const decode_view& lhs, const decode_view& rhs) + + + bool + operator<= + boost/urls/operator_le-0a.adoc + + (const url_view_base& u0, const url_view_base& u1) + + + bool + operator<= + boost/urls/operator_le-0e.adoc + + (const decode_view& lhs, const S& rhs) + + + bool + operator<= + boost/urls/operator_le-06.adoc + + (const S& lhs, const decode_view& rhs) + + + bool + operator== + boost/urls/operator_eq-0f2.adoc + + (const ipv4_address& a1, const ipv4_address& a2) + + + bool + operator== + boost/urls/operator_eq-0fd.adoc + + (const ipv6_address& a1, const ipv6_address& a2) + + + bool + operator== + boost/urls/operator_eq-092.adoc + + (const authority_view& a0, const authority_view& a1) + + + bool + operator== + boost/urls/operator_eq-091.adoc + + (const decode_view& lhs, const decode_view& rhs) + + + bool + operator== + boost/urls/operator_eq-01.adoc + + (const url_view_base& u0, const url_view_base& u1) + + + bool + operator== + boost/urls/operator_eq-090.adoc + + (const decode_view& lhs, const S& rhs) + + + bool + operator== + boost/urls/operator_eq-02.adoc + + (const S& lhs, const decode_view& rhs) + + + bool + operator> + boost/urls/operator_gt-08.adoc + + (const authority_view& a0, const authority_view& a1) + + + bool + operator> + boost/urls/operator_gt-03.adoc + + (const decode_view& lhs, const decode_view& rhs) + + + bool + operator> + boost/urls/operator_gt-09.adoc + + (const url_view_base& u0, const url_view_base& u1) + bool + operator> + boost/urls/operator_gt-0a.adoc + + (const decode_view& lhs, const S& rhs) + + + bool + operator> + boost/urls/operator_gt-00.adoc + + (const S& lhs, const decode_view& rhs) + + + bool + operator>= + boost/urls/operator_ge-08.adoc + + (const authority_view& a0, const authority_view& a1) + + + bool + operator>= + boost/urls/operator_ge-06.adoc + + (const decode_view& lhs, const decode_view& rhs) + + + bool + operator>= + boost/urls/operator_ge-00.adoc + + (const url_view_base& u0, const url_view_base& u1) + + + bool + operator>= + boost/urls/operator_ge-09e.adoc + + (const decode_view& lhs, const S& rhs) + + + bool + operator>= + boost/urls/operator_ge-09c.adoc + + (const S& lhs, const decode_view& rhs) + + + system::result<url_view> parse_absolute_uri boost/urls/parse_absolute_uri.adoc - + + (core::string_view s) + system::result<authority_view> parse_authority boost/urls/parse_authority.adoc - + + (core::string_view s) + + + system::result<ipv4_address> + parse_ipv4_address + boost/urls/parse_ipv4_address.adoc + + (core::string_view s) + + + system::result<ipv6_address> + parse_ipv6_address + boost/urls/parse_ipv6_address.adoc + + (core::string_view s) + system::result<url_view> parse_origin_form boost/urls/parse_origin_form.adoc - + + (core::string_view s) + system::result<segments_encoded_view> parse_path boost/urls/parse_path.adoc - + + (core::string_view s) + system::result<params_encoded_view> parse_query boost/urls/parse_query.adoc - + + (core::string_view s) + system::result<url_view> parse_relative_ref boost/urls/parse_relative_ref.adoc - + + (core::string_view s) + system::result<url_view> parse_uri boost/urls/parse_uri.adoc - + + (core::string_view s) + system::result<url_view> parse_uri_reference boost/urls/parse_uri_reference.adoc - + + (core::string_view s) + + + implementation_defined::pct_encoded_rule_t<CS> + pct_encoded_rule + boost/urls/pct_encoded_rule.adoc + + (const CS& cs) + system::result<void> resolve boost/urls/resolve.adoc - + + (const url_view_base& base, const url_view_base& ref, url_base& dest) - encode - boost/urls/encode.adoc - + scheme + string_to_scheme + boost/urls/string_to_scheme.adoc + + (core::string_view s) - encoded_size - boost/urls/encoded_size.adoc - + void + swap + boost/urls/swap.adoc + + (url& v0, url& v1) - make_pct_string_view - boost/urls/make_pct_string_view.adoc - + core::string_view + to_string + boost/urls/to_string.adoc + + (scheme s) - boost::urls::string_token - boost/urls/string_token.adoc - boost::urls::string_token::assign_to - boost::urls::string_token::append_to - boost::urls::string_token::preserve_size - boost::urls::string_token::return_string - boost::urls::string_token::is_token + boost::urls::error_types + boost/urls/error_types.adoc + boost::urls::error_types::error_category + boost::urls::error_types::error_code + boost::urls::error_types::error_condition + boost::urls::error_types::result + boost::urls::error_types::system_error + boost::urls::error_types::errc + boost::urls::error_types::generic_category + boost::urls::error_types::system_category + + + boost::urls::error_types::error_category + boost/urls/error_types/error_category.adoc + + + boost::urls::error_types::error_code + boost/urls/error_types/error_code.adoc + + + boost::urls::error_types::error_condition + boost/urls/error_types/error_condition.adoc + + + boost::urls::error_types::result + boost/urls/error_types/result.adoc + + + boost::urls::error_types::system_error + boost/urls/error_types/system_error.adoc + + + boost::urls::error_types::errc + boost/urls/error_types/errc.adoc + + + boost::urls::error_types::generic_category + boost/urls/error_types/generic_category.adoc + + + boost::urls::error_types::system_category + boost/urls/error_types/system_category.adoc boost::urls::grammar boost/urls/grammar.adoc + boost::urls::grammar::literal_rule + boost::urls::grammar::lut_chars + boost::urls::grammar::range + boost::urls::grammar::recycled + boost::urls::grammar::recycled_ptr + boost::urls::grammar::string_view_base + boost::urls::grammar::unsigned_rule + boost::urls::grammar::condition + boost::urls::grammar::error + boost::urls::grammar::aligned_storage + boost::urls::grammar::ci_equal + boost::urls::grammar::ci_hash + boost::urls::grammar::ci_less + boost::urls::grammar::is_charset + boost::urls::grammar::is_rule + boost::urls::grammar::all_chars + boost::urls::grammar::alnum_chars + boost::urls::grammar::alpha_chars + boost::urls::grammar::dec_octet_rule + boost::urls::grammar::digit_chars + boost::urls::grammar::hexdig_chars + boost::urls::grammar::vchars + boost::urls::grammar::string_token + boost::urls::grammar::CharSet + boost::urls::grammar::Rule - parse - boost/urls/grammar/parse.adoc - + int + ci_compare + boost/urls/grammar/ci_compare.adoc + + (core::string_view s0, core::string_view s1) + + + std::size_t + ci_digest + boost/urls/grammar/ci_digest.adoc + + (core::string_view s) + + + bool + ci_is_equal + boost/urls/grammar/ci_is_equal-0b.adoc + + (core::string_view s0, core::string_view s1) + bool + ci_is_equal + boost/urls/grammar/ci_is_equal-0a.adoc + + (const String0& s0, const String1& s1) + + + bool + ci_is_less + boost/urls/grammar/ci_is_less.adoc + + (core::string_view s0, core::string_view s1) + + + implementation_defined::ch_delim_rule delim_rule - boost/urls/grammar/delim_rule.adoc - + boost/urls/grammar/delim_rule-02.adoc + + (char ch) - literal_rule - boost/urls/grammar/literal_rule.adoc - + implementation_defined::cs_delim_rule<CS> + delim_rule + boost/urls/grammar/delim_rule-01.adoc + + (const CS& cs) + const char* find_if boost/urls/grammar/find_if.adoc - + + (const char* const first, const char* const last, const CS& cs) + const char* find_if_not boost/urls/grammar/find_if_not.adoc - + + (const char* const first, const char* const last, const CS& cs) + + + signed char + hexdig_value + boost/urls/grammar/hexdig_value.adoc + + (char ch) + + + implementation_defined::not_empty_rule_t<R> + not_empty_rule + boost/urls/grammar/not_empty_rule.adoc + + (const R& r) + + + bool + operator!= + boost/urls/grammar/operator_not_eq.adoc + + (const S0& s0, const S1& s1) + + + lut_chars + operator+ + boost/urls/grammar/operator_plus.adoc + + (const lut_chars& cs0, const lut_chars& cs1) + + + lut_chars + operator- + boost/urls/grammar/operator_minus.adoc + + (const lut_chars& cs0, const lut_chars& cs1) + + + bool + operator< + boost/urls/grammar/operator_lt.adoc + + (const S0& s0, const S1& s1) + + + std::ostream& + operator<< + boost/urls/grammar/operator_lshift.adoc + + (std::ostream& os, const string_view_base& s) + + + bool + operator<= + boost/urls/grammar/operator_le.adoc + + (const S0& s0, const S1& s1) + + + bool + operator== + boost/urls/grammar/operator_eq.adoc + + (const S0& s0, const S1& s1) + + + bool + operator> + boost/urls/grammar/operator_gt.adoc + + (const S0& s0, const S1& s1) + + + bool + operator>= + boost/urls/grammar/operator_ge.adoc + + (const S0& s0, const S1& s1) + + + implementation_defined::optional_rule_t<R> + optional_rule + boost/urls/grammar/optional_rule.adoc + + (const R& r) + + + system::result<R::value_type> + parse + boost/urls/grammar/parse-06.adoc + + (const char*& it, const char* end, const R& r) + + + system::result<R::value_type> + parse + boost/urls/grammar/parse-02.adoc + + (core::string_view s, const R& r) + + + implementation_defined::range_rule_t<R> + range_rule + boost/urls/grammar/range_rule-0e7.adoc + + (const R& next, std::size_t N, std::size_t M) + + + implementation_defined::range_rule_t<R1, R2> + range_rule + boost/urls/grammar/range_rule-0e0.adoc + + (const R1& first, const R2& next, std::size_t N, std::size_t M) + + + implementation_defined::charset_ref<CS> + ref + boost/urls/grammar/ref-02.adoc + + (const CS& cs) + + + implementation_defined::rule_ref<R> + ref + boost/urls/grammar/ref-0e.adoc + + (const R& r) + + + implementation_defined::squelch_rule_t<R> + squelch + boost/urls/grammar/squelch.adoc + + (const R& r) + + + char + to_lower + boost/urls/grammar/to_lower.adoc + + (char c) + + + char + to_upper + boost/urls/grammar/to_upper.adoc + + (char c) + + + implementation_defined::token_rule_t<CharSet> + token_rule + boost/urls/grammar/token_rule.adoc + + (const CharSet& cs) + + + implementation_defined::tuple_rule_t<R0, Rn...> + tuple_rule + boost/urls/grammar/tuple_rule.adoc + + (const R0& r0, const Rn...& rn) + + + implementation_defined::variant_rule_t<R0, Rn...> + variant_rule + boost/urls/grammar/variant_rule.adoc + + (const R0& r0, const Rn...& rn) + + + + boost::urls::grammar::literal_rule + boost/urls/grammar/literal_rule.adoc + + void + literal_rule + boost/urls/grammar/literal_rule/2constructor.adoc + + (const char* s) + + + system::result<value_type> + parse + boost/urls/grammar/literal_rule/parse.adoc + + (const char*& it, const char* end) + + + + boost::urls::grammar::lut_chars + boost/urls/grammar/lut_chars.adoc + + void + lut_chars + boost/urls/grammar/lut_chars/2constructor-079.adoc + + (char ch) + + + void + lut_chars + boost/urls/grammar/lut_chars/2constructor-074.adoc + + (const char* s) + + + void + lut_chars + boost/urls/grammar/lut_chars/2constructor-02.adoc + + (const Pred& pred) + + + bool + operator() + boost/urls/grammar/lut_chars/operator_call-0fe.adoc + + (unsigned char ch) + + + bool + operator() + boost/urls/grammar/lut_chars/operator_call-0f6.adoc + + (char ch) + + + lut_chars + operator~ + boost/urls/grammar/lut_chars/operator_bitnot.adoc + + () + + + + boost::urls::grammar::range + boost/urls/grammar/range.adoc + + iterator + begin + boost/urls/grammar/range/begin.adoc + + () + + + bool + empty + boost/urls/grammar/range/empty.adoc + + () + + + iterator + end + boost/urls/grammar/range/end.adoc + + () + + + range& + operator= + boost/urls/grammar/range/operator_assign-08.adoc + + (range&& ) + + + range& + operator= + boost/urls/grammar/range/operator_assign-0e.adoc + + (const range& ) + + + void + range + boost/urls/grammar/range/2constructor-01e.adoc + + () + + + void + range + boost/urls/grammar/range/2constructor-08.adoc + + (range&& ) + + + void + range + boost/urls/grammar/range/2constructor-01b.adoc + + (const range& ) + + + std::size_t + size + boost/urls/grammar/range/size.adoc + + () + + + core::string_view + string + boost/urls/grammar/range/string.adoc + + () + + + void + ~range + boost/urls/grammar/range/2destructor.adoc + + () + + + + boost::urls::grammar::recycled + boost/urls/grammar/recycled.adoc + + void + recycled + boost/urls/grammar/recycled/2constructor.adoc + + () + + + void + ~recycled + boost/urls/grammar/recycled/2destructor.adoc + + () + + + + boost::urls::grammar::recycled_ptr + boost/urls/grammar/recycled_ptr.adoc + + T& + acquire + boost/urls/grammar/recycled_ptr/acquire.adoc + + () + + + recycled<T>& + bin + boost/urls/grammar/recycled_ptr/bin.adoc + + () + + + bool + empty + boost/urls/grammar/recycled_ptr/empty.adoc + + () + + + T* + get + boost/urls/grammar/recycled_ptr/get.adoc + + () + + + bool + operator bool + boost/urls/grammar/recycled_ptr/2conversion.adoc + + () + + + T& + operator* + boost/urls/grammar/recycled_ptr/operator_star.adoc + + () + + + T* + operator-> + boost/urls/grammar/recycled_ptr/operator_ptr.adoc + + () + + + recycled_ptr& + operator= + boost/urls/grammar/recycled_ptr/operator_assign-0b.adoc + + (recycled_ptr&& other) + + + recycled_ptr& + operator= + boost/urls/grammar/recycled_ptr/operator_assign-09.adoc + + (const recycled_ptr& other) + + + void + recycled_ptr + boost/urls/grammar/recycled_ptr/2constructor-08.adoc + + (recycled<T>& bin) + + + void + recycled_ptr + boost/urls/grammar/recycled_ptr/2constructor-0ac.adoc + + (recycled<T>& bin, std::nullptr_t ) + + + void + recycled_ptr + boost/urls/grammar/recycled_ptr/2constructor-056.adoc + + () + + + void + recycled_ptr + boost/urls/grammar/recycled_ptr/2constructor-05e.adoc + + (std::nullptr_t ) + + + void + recycled_ptr + boost/urls/grammar/recycled_ptr/2constructor-0ab.adoc + + (const recycled_ptr& other) + + + void + recycled_ptr + boost/urls/grammar/recycled_ptr/2constructor-0f.adoc + + (recycled_ptr&& other) + + + void + release + boost/urls/grammar/recycled_ptr/release.adoc + + () + + + void + ~recycled_ptr + boost/urls/grammar/recycled_ptr/2destructor.adoc + + () + + + + boost::urls::grammar::string_view_base + boost/urls/grammar/string_view_base.adoc + + const_reference + at + boost/urls/grammar/string_view_base/at.adoc + + (size_type pos) + + + const_reference + back + boost/urls/grammar/string_view_base/back.adoc + + () + + + const_iterator + begin + boost/urls/grammar/string_view_base/begin.adoc + + () + + + const_iterator + cbegin + boost/urls/grammar/string_view_base/cbegin.adoc + + () + + + const_iterator + cend + boost/urls/grammar/string_view_base/cend.adoc + + () + + + int + compare + boost/urls/grammar/string_view_base/compare-02.adoc + + (core::string_view str) + + + int + compare + boost/urls/grammar/string_view_base/compare-0e.adoc + + (size_type pos1, size_type n1, core::string_view str) + + + int + compare + boost/urls/grammar/string_view_base/compare-03.adoc + + (size_type pos1, size_type n1, core::string_view str, size_type pos2, size_type n2) + + + int + compare + boost/urls/grammar/string_view_base/compare-07.adoc + + (const char* s) + + + int + compare + boost/urls/grammar/string_view_base/compare-09.adoc + + (size_type pos1, size_type n1, const char* s) + + + int + compare + boost/urls/grammar/string_view_base/compare-08.adoc + + (size_type pos1, size_type n1, const char* s, size_type n2) + + + bool + contains + boost/urls/grammar/string_view_base/contains-08.adoc + + (core::string_view sv) + + + bool + contains + boost/urls/grammar/string_view_base/contains-04.adoc + + (char c) + + + bool + contains + boost/urls/grammar/string_view_base/contains-03.adoc + + (const char* s) + + + size_type + copy + boost/urls/grammar/string_view_base/copy.adoc + + (char* s, size_type n, size_type pos) + + + const_reverse_iterator + crbegin + boost/urls/grammar/string_view_base/crbegin.adoc + + () + + + const_reverse_iterator + crend + boost/urls/grammar/string_view_base/crend.adoc + + () + + + const_pointer + data + boost/urls/grammar/string_view_base/data.adoc + + () + + + bool + empty + boost/urls/grammar/string_view_base/empty.adoc + + () + + + const_iterator + end + boost/urls/grammar/string_view_base/end.adoc + + () + + + bool + ends_with + boost/urls/grammar/string_view_base/ends_with-0a.adoc + + (core::string_view x) + + + bool + ends_with + boost/urls/grammar/string_view_base/ends_with-06.adoc + + (char x) + + + bool + ends_with + boost/urls/grammar/string_view_base/ends_with-0c.adoc + + (const char* x) + + + size_type + find + boost/urls/grammar/string_view_base/find-0e.adoc + + (core::string_view str, size_type pos) + + + size_type + find + boost/urls/grammar/string_view_base/find-026.adoc + + (char c, size_type pos) + + + size_type + find + boost/urls/grammar/string_view_base/find-07.adoc + + (const char* s, size_type pos, size_type n) + + + size_type + find + boost/urls/grammar/string_view_base/find-02a.adoc + + (const char* s, size_type pos) + + + size_type + find_first_not_of + boost/urls/grammar/string_view_base/find_first_not_of-0c.adoc + + (core::string_view str, size_type pos) + + + size_type + find_first_not_of + boost/urls/grammar/string_view_base/find_first_not_of-0d.adoc + + (char c, size_type pos) + + + size_type + find_first_not_of + boost/urls/grammar/string_view_base/find_first_not_of-048.adoc + + (const char* s, size_type pos, size_type n) + + + size_type + find_first_not_of + boost/urls/grammar/string_view_base/find_first_not_of-04e.adoc + + (const char* s, size_type pos) + + + size_type + find_first_of + boost/urls/grammar/string_view_base/find_first_of-0d.adoc + + (core::string_view str, size_type pos) + + + size_type + find_first_of + boost/urls/grammar/string_view_base/find_first_of-0ae.adoc + + (char c, size_type pos) + + + size_type + find_first_of + boost/urls/grammar/string_view_base/find_first_of-02.adoc + + (const char* s, size_type pos, size_type n) + + + size_type + find_first_of + boost/urls/grammar/string_view_base/find_first_of-0a5.adoc + + (const char* s, size_type pos) + + + size_type + find_last_not_of + boost/urls/grammar/string_view_base/find_last_not_of-00d.adoc + + (core::string_view str, size_type pos) + + + size_type + find_last_not_of + boost/urls/grammar/string_view_base/find_last_not_of-06.adoc + + (char c, size_type pos) + + + size_type + find_last_not_of + boost/urls/grammar/string_view_base/find_last_not_of-009.adoc + + (const char* s, size_type pos, size_type n) + + + size_type + find_last_not_of + boost/urls/grammar/string_view_base/find_last_not_of-0f.adoc + + (const char* s, size_type pos) + + + size_type + find_last_of + boost/urls/grammar/string_view_base/find_last_of-0e.adoc + + (core::string_view str, size_type pos) + + + size_type + find_last_of + boost/urls/grammar/string_view_base/find_last_of-011.adoc + + (char c, size_type pos) + + + size_type + find_last_of + boost/urls/grammar/string_view_base/find_last_of-08.adoc + + (const char* s, size_type pos, size_type n) + + + size_type + find_last_of + boost/urls/grammar/string_view_base/find_last_of-016.adoc + + (const char* s, size_type pos) + + + const_reference + front + boost/urls/grammar/string_view_base/front.adoc + + () + + + size_type + length + boost/urls/grammar/string_view_base/length.adoc + + () + + + size_type + max_size + boost/urls/grammar/string_view_base/max_size.adoc + + () + + + std::string + operator basic_string<char> + boost/urls/grammar/string_view_base/2conversion-06.adoc + + () + + + std::string_view + operator basic_string_view<char> + boost/urls/grammar/string_view_base/2conversion-0e.adoc + + () + + + string_view_base& + operator= + boost/urls/grammar/string_view_base/operator_assign.adoc + + (const string_view_base& ) + + + const_reference + operator[] + boost/urls/grammar/string_view_base/operator_subs.adoc + + (size_type pos) + + + const_reverse_iterator + rbegin + boost/urls/grammar/string_view_base/rbegin.adoc + + () + + + const_reverse_iterator + rend + boost/urls/grammar/string_view_base/rend.adoc + + () + + + size_type + rfind + boost/urls/grammar/string_view_base/rfind-0a.adoc + + (core::string_view str, size_type pos) + + + size_type + rfind + boost/urls/grammar/string_view_base/rfind-03.adoc + + (char c, size_type pos) + + + size_type + rfind + boost/urls/grammar/string_view_base/rfind-09.adoc + + (const char* s, size_type pos, size_type n) + + + size_type + rfind + boost/urls/grammar/string_view_base/rfind-0d.adoc + + (const char* s, size_type pos) + + + size_type + size + boost/urls/grammar/string_view_base/size.adoc + + () + + + bool + starts_with + boost/urls/grammar/string_view_base/starts_with-06.adoc + + (core::string_view x) + + + bool + starts_with + boost/urls/grammar/string_view_base/starts_with-0b.adoc + + (char x) + + + bool + starts_with + boost/urls/grammar/string_view_base/starts_with-0d.adoc + + (const char* x) + + + void + string_view_base + boost/urls/grammar/string_view_base/2constructor-09.adoc + + (core::string_view s) + + + void + string_view_base + boost/urls/grammar/string_view_base/2constructor-04.adoc + + (const char* data, std::size_t size) + + + void + string_view_base + boost/urls/grammar/string_view_base/2constructor-02.adoc + + () + + + void + string_view_base + boost/urls/grammar/string_view_base/2constructor-0e.adoc + + (const string_view_base& ) + + + core::string_view + substr + boost/urls/grammar/string_view_base/substr.adoc + + (size_type pos, size_type n) + + + void + swap + boost/urls/grammar/string_view_base/swap.adoc + + (string_view_base& s) + + + + boost::urls::grammar::unsigned_rule + boost/urls/grammar/unsigned_rule.adoc + + system::result<value_type> + parse + boost/urls/grammar/unsigned_rule/parse.adoc + + (const char*& it, const char* end) + + + + boost::urls::grammar::condition + boost/urls/grammar/condition.adoc + + + boost::urls::grammar::error + boost/urls/grammar/error.adoc + + + boost::urls::grammar::aligned_storage + boost/urls/grammar/aligned_storage.adoc + + + boost::urls::grammar::ci_equal + boost/urls/grammar/ci_equal.adoc + + + boost::urls::grammar::ci_hash + boost/urls/grammar/ci_hash.adoc + + + boost::urls::grammar::ci_less + boost/urls/grammar/ci_less.adoc + + + boost::urls::grammar::is_charset + boost/urls/grammar/is_charset.adoc + + + boost::urls::grammar::is_rule + boost/urls/grammar/is_rule.adoc + + + boost::urls::grammar::all_chars + boost/urls/grammar/all_chars.adoc + + + boost::urls::grammar::alnum_chars + boost/urls/grammar/alnum_chars.adoc + + + boost::urls::grammar::alpha_chars + boost/urls/grammar/alpha_chars.adoc + + + boost::urls::grammar::dec_octet_rule + boost/urls/grammar/dec_octet_rule.adoc + + + boost::urls::grammar::digit_chars + boost/urls/grammar/digit_chars.adoc + + + boost::urls::grammar::hexdig_chars + boost/urls/grammar/hexdig_chars.adoc + + + boost::urls::grammar::vchars + boost/urls/grammar/vchars.adoc + + + boost::urls::grammar::string_token + boost/urls/grammar/string_token.adoc + + + boost::urls::grammar::CharSet + boost/urls/grammar/CharSet.adoc + + + boost::urls::grammar::Rule + boost/urls/grammar/Rule.adoc + + + boost::urls::string_token + boost/urls/string_token.adoc + boost::urls::string_token::arg + boost::urls::string_token::is_token + boost::urls::string_token::return_string + boost::urls::string_token::StringToken + + implementation_defined::append_to_t<Alloc> + append_to + boost/urls/string_token/append_to.adoc + + (std::basic_string<char, std::char_traits<char>, Alloc>& s) + + + implementation_defined::assign_to_t<Alloc> + assign_to + boost/urls/string_token/assign_to.adoc + + (std::basic_string<char, std::char_traits<char>, Alloc>& s) + + + implementation_defined::preserve_size_t<Alloc> + preserve_size + boost/urls/string_token/preserve_size.adoc + + (std::basic_string<char, std::char_traits<char>, Alloc>& s) + + + + boost::urls::string_token::arg + boost/urls/string_token/arg.adoc + + void + arg + boost/urls/string_token/arg/2constructor-01.adoc + + () + + + void + arg + boost/urls/string_token/arg/2constructor-0c.adoc + + (arg&& ) + + + void + arg + boost/urls/string_token/arg/2constructor-05.adoc + + (const arg& ) + + + arg& + operator= + boost/urls/string_token/arg/operator_assign-0f.adoc + + (arg&& ) + + + arg& + operator= + boost/urls/string_token/arg/operator_assign-01.adoc + + (const arg& ) + + + char* + prepare + boost/urls/string_token/arg/prepare.adoc + + (std::size_t n) + + + void + ~arg + boost/urls/string_token/arg/2destructor.adoc + + () + + + + boost::urls::string_token::is_token + boost/urls/string_token/is_token.adoc + + + boost::urls::string_token::return_string + boost/urls/string_token/return_string.adoc + + + boost::urls::string_token::StringToken + boost/urls/string_token/StringToken.adoc + + + boost::urls::authority_view + boost/urls/authority_view.adoc + + void + authority_view + boost/urls/authority_view/2constructor-0e.adoc + + () + + + void + authority_view + boost/urls/authority_view/2constructor-03.adoc + + (core::string_view s) + + + void + authority_view + boost/urls/authority_view/2constructor-04.adoc + + (const authority_view& ) + + + core::string_view + buffer + boost/urls/authority_view/buffer.adoc + + () + + + int + compare + boost/urls/authority_view/compare.adoc + + (const authority_view& other) + + + const char* + data + boost/urls/authority_view/data.adoc + + () + + + bool + empty + boost/urls/authority_view/empty.adoc + + () + + + pct_string_view + encoded_host + boost/urls/authority_view/encoded_host.adoc + + () + + + pct_string_view + encoded_host_address + boost/urls/authority_view/encoded_host_address.adoc + + () + + + pct_string_view + encoded_host_and_port + boost/urls/authority_view/encoded_host_and_port.adoc + + () + + + pct_string_view + encoded_host_name + boost/urls/authority_view/encoded_host_name.adoc + + () + + + pct_string_view + encoded_password + boost/urls/authority_view/encoded_password.adoc + + () + + + pct_string_view + encoded_user + boost/urls/authority_view/encoded_user.adoc + + () + + + pct_string_view + encoded_userinfo + boost/urls/authority_view/encoded_userinfo.adoc + + () + + + bool + has_password + boost/urls/authority_view/has_password.adoc + + () + + + bool + has_port + boost/urls/authority_view/has_port.adoc + + () + + + bool + has_userinfo + boost/urls/authority_view/has_userinfo.adoc + + () + + + StringToken::result_type + host + boost/urls/authority_view/host.adoc + + (StringToken&& token) + + + StringToken::result_type + host_address + boost/urls/authority_view/host_address.adoc + + (StringToken&& token) + + + ipv4_address + host_ipv4_address + boost/urls/authority_view/host_ipv4_address.adoc + + () + + + ipv6_address + host_ipv6_address + boost/urls/authority_view/host_ipv6_address.adoc + + () + + + core::string_view + host_ipvfuture + boost/urls/authority_view/host_ipvfuture.adoc + + () + + + StringToken::result_type + host_name + boost/urls/authority_view/host_name.adoc + + (StringToken&& token) + + + urls::host_type + host_type + boost/urls/authority_view/host_type.adoc + + () + + + authority_view& + operator= + boost/urls/authority_view/operator_assign.adoc + + (const authority_view& ) + + + StringToken::result_type + password + boost/urls/authority_view/password.adoc + + (StringToken&& token) + + + core::string_view + port + boost/urls/authority_view/port.adoc + + () + + + std::uint16_t + port_number + boost/urls/authority_view/port_number.adoc + + () + + + std::size_t + size + boost/urls/authority_view/size.adoc + + () + + + StringToken::result_type + user + boost/urls/authority_view/user.adoc + + (StringToken&& token) + + + StringToken::result_type + userinfo + boost/urls/authority_view/userinfo.adoc + + (StringToken&& token) + + + void + ~authority_view + boost/urls/authority_view/2destructor.adoc + + () - boost::urls::grammar::unsigned_rule - boost::urls::grammar::tuple_rule - boost::urls::grammar::to_lower - boost::urls::grammar::to_upper - boost::urls::grammar::token_rule - boost::urls::grammar::dec_octet_rule - boost::urls::grammar::squelch - boost::urls::grammar::optional_rule - boost::urls::grammar::ipv4_address_rule - boost::urls::grammar::variant_rule - boost::urls::grammar::is_charset - boost::urls::grammar::is_rule - boost::urls::grammar::alnum_chars - boost::urls::grammar::alpha_chars - boost::urls::grammar::digit_chars - boost::urls::grammar::hexdig_chars - boost::urls::grammar::vchars - boost::urls::grammar::lut_chars - boost::urls::grammar::ci_compare - boost::urls::grammar::ci_digest - boost::urls::grammar::ci_is_equal - boost::urls::grammar::ci_is_less - boost::urls::grammar::hexdig_value - boost::urls::grammar::not_empty_rule - boost::urls::grammar::optional_rule - boost::urls::grammar::range_rule - boost::urls::grammar::ref - boost::urls::grammar::aligned_storage - boost::urls::grammar::ci_hash - boost::urls::grammar::ci_equal - boost::urls::grammar::ci_less - boost::urls::grammar::lut_chars - boost::urls::grammar::range - boost::urls::grammar::recycled - boost::urls::grammar::recycled_ptr - boost::urls::grammar::string_view_base - boost::urls::grammar::unsigned_rule - boost::urls::url_view - boost/urls/url_view.adoc + boost::urls::decode_view + boost/urls/decode_view.adoc + + reference + back + boost/urls/decode_view/back.adoc + + () + + + iterator + begin + boost/urls/decode_view/begin.adoc + + () + + + int + compare + boost/urls/decode_view/compare-02.adoc + + (core::string_view other) + + + int + compare + boost/urls/decode_view/compare-01.adoc + + (decode_view other) + + + void + decode_view + boost/urls/decode_view/2constructor-07.adoc + + () + + + void + decode_view + boost/urls/decode_view/2constructor-03.adoc + + (pct_string_view s, encoding_opts opt) + + + bool + empty + boost/urls/decode_view/empty.adoc + + () + + + iterator + end + boost/urls/decode_view/end.adoc + + () + + + bool + ends_with + boost/urls/decode_view/ends_with-04.adoc + + (core::string_view s) + + + bool + ends_with + boost/urls/decode_view/ends_with-0d.adoc + + (char ch) + + + const_iterator + find + boost/urls/decode_view/find.adoc + + (char ch) + + + reference + front + boost/urls/decode_view/front.adoc + + () + + + encoding_opts + options + boost/urls/decode_view/options.adoc + + () + + + void + remove_prefix + boost/urls/decode_view/remove_prefix.adoc + + (size_type n) + + + void + remove_suffix + boost/urls/decode_view/remove_suffix.adoc + + (size_type n) + + + const_iterator + rfind + boost/urls/decode_view/rfind.adoc + + (char ch) + + + size_type + size + boost/urls/decode_view/size.adoc + + () + + + bool + starts_with + boost/urls/decode_view/starts_with-01.adoc + + (core::string_view s) + + + bool + starts_with + boost/urls/decode_view/starts_with-0b.adoc + + (char ch) + - boost::urls::authority_view - boost/urls/authority_view.adoc + boost::urls::encoding_opts + boost/urls/encoding_opts.adoc + + void + encoding_opts + boost/urls/encoding_opts/2constructor.adoc + + (bool space_as_plus_, bool lower_case_, bool disallow_null_) + boost::urls::ignore_case_param boost/urls/ignore_case_param.adoc + + void + ignore_case_param + boost/urls/ignore_case_param/2constructor-03.adoc + + () + + + void + ignore_case_param + boost/urls/ignore_case_param/2constructor-00.adoc + + (implementation_defined::ignore_case_t ) + + + bool + operator bool + boost/urls/ignore_case_param/2conversion.adoc + + () + boost::urls::ipv4_address boost/urls/ipv4_address.adoc + + ipv4_address + any + boost/urls/ipv4_address/any.adoc + + () + + + ipv4_address + broadcast + boost/urls/ipv4_address/broadcast.adoc + + () + + + void + ipv4_address + boost/urls/ipv4_address/2constructor-0c.adoc + + () + + + void + ipv4_address + boost/urls/ipv4_address/2constructor-0d.adoc + + (const ipv4_address& ) + + + void + ipv4_address + boost/urls/ipv4_address/2constructor-06.adoc + + (uint_type u) + + + void + ipv4_address + boost/urls/ipv4_address/2constructor-0b.adoc + + (const bytes_type& bytes) + + + void + ipv4_address + boost/urls/ipv4_address/2constructor-08.adoc + + (core::string_view s) + + + bool + is_loopback + boost/urls/ipv4_address/is_loopback.adoc + + () + + + bool + is_multicast + boost/urls/ipv4_address/is_multicast.adoc + + () + + + bool + is_unspecified + boost/urls/ipv4_address/is_unspecified.adoc + + () + + + ipv4_address + loopback + boost/urls/ipv4_address/loopback.adoc + + () + + + ipv4_address& + operator= + boost/urls/ipv4_address/operator_assign.adoc + + (const ipv4_address& ) + + + core::string_view + to_buffer + boost/urls/ipv4_address/to_buffer.adoc + + (char* dest, std::size_t dest_size) + + + bytes_type + to_bytes + boost/urls/ipv4_address/to_bytes.adoc + + () + + + StringToken::result_type + to_string + boost/urls/ipv4_address/to_string.adoc + + (StringToken&& token) + + + uint_type + to_uint + boost/urls/ipv4_address/to_uint.adoc + + () + boost::urls::ipv6_address boost/urls/ipv6_address.adoc + + void + ipv6_address + boost/urls/ipv6_address/2constructor-04.adoc + + () + + + void + ipv6_address + boost/urls/ipv6_address/2constructor-06.adoc + + (const ipv6_address& ) + + + void + ipv6_address + boost/urls/ipv6_address/2constructor-0a.adoc + + (const bytes_type& bytes) + + + void + ipv6_address + boost/urls/ipv6_address/2constructor-08.adoc + + (const ipv4_address& addr) + + + void + ipv6_address + boost/urls/ipv6_address/2constructor-00.adoc + + (core::string_view s) + + + bool + is_loopback + boost/urls/ipv6_address/is_loopback.adoc + + () + + + bool + is_unspecified + boost/urls/ipv6_address/is_unspecified.adoc + + () + + + bool + is_v4_mapped + boost/urls/ipv6_address/is_v4_mapped.adoc + + () + + + ipv6_address + loopback + boost/urls/ipv6_address/loopback.adoc + + () + + + ipv6_address& + operator= + boost/urls/ipv6_address/operator_assign.adoc + + (const ipv6_address& ) + + + core::string_view + to_buffer + boost/urls/ipv6_address/to_buffer.adoc + + (char* dest, std::size_t dest_size) + + + bytes_type + to_bytes + boost/urls/ipv6_address/to_bytes.adoc + + () + + + StringToken::result_type + to_string + boost/urls/ipv6_address/to_string.adoc + + (StringToken&& token) + boost::urls::no_value_t @@ -244,66 +2405,1701 @@ boost::urls::param boost/urls/param.adoc + + const param* + operator-> + boost/urls/param/operator_ptr.adoc + + () + + + param& + operator= + boost/urls/param/operator_assign-0b.adoc + + (param&& other) + + + param& + operator= + boost/urls/param/operator_assign-0cd.adoc + + (const param& ) + + + param& + operator= + boost/urls/param/operator_assign-0cb.adoc + + (const param_view& other) + + + param& + operator= + boost/urls/param/operator_assign-03.adoc + + (const param_pct_view& other) + + + void + param + boost/urls/param/2constructor-09.adoc + + () + + + void + param + boost/urls/param/2constructor-07.adoc + + (param&& other) + + + void + param + boost/urls/param/2constructor-0d.adoc + + (const param& other) + + + void + param + boost/urls/param/2constructor-0a.adoc + + (core::string_view key, core::string_view value, bool has_value) + + + void + param + boost/urls/param/2constructor-0b.adoc + + (core::string_view key, const OptionalString& value) + boost::urls::param_pct_view boost/urls/param_pct_view.adoc + + param + operator param + boost/urls/param_pct_view/2conversion-00.adoc + + () + + + param_view + operator param_view + boost/urls/param_pct_view/2conversion-0c.adoc + + () + + + const param_pct_view* + operator-> + boost/urls/param_pct_view/operator_ptr.adoc + + () + + + void + param_pct_view + boost/urls/param_pct_view/2constructor-00.adoc + + () + + + void + param_pct_view + boost/urls/param_pct_view/2constructor-0e.adoc + + (pct_string_view key, pct_string_view value) + + + void + param_pct_view + boost/urls/param_pct_view/2constructor-03.adoc + + (const param_view& p) + + + void + param_pct_view + boost/urls/param_pct_view/2constructor-02.adoc + + (pct_string_view key, pct_string_view value, bool has_value) + + + void + param_pct_view + boost/urls/param_pct_view/2constructor-05.adoc + + (pct_string_view key, const OptionalString& value) + boost::urls::param_view boost/urls/param_view.adoc + + param + operator param + boost/urls/param_view/2conversion.adoc + + () + + + const param_view* + operator-> + boost/urls/param_view/operator_ptr.adoc + + () + + + void + param_view + boost/urls/param_view/2constructor-07a.adoc + + () + + + void + param_view + boost/urls/param_view/2constructor-07e.adoc + + (const param& other) + + + void + param_view + boost/urls/param_view/2constructor-03.adoc + + (core::string_view key_, core::string_view value_, bool has_value_) + + + void + param_view + boost/urls/param_view/2constructor-01.adoc + + (core::string_view key, const OptionalString& value) + boost::urls::params_base boost/urls/params_base.adoc + + iterator + begin + boost/urls/params_base/begin.adoc + + () + + + pct_string_view + buffer + boost/urls/params_base/buffer.adoc + + () + + + bool + contains + boost/urls/params_base/contains.adoc + + (core::string_view key, ignore_case_param ic) + + + std::size_t + count + boost/urls/params_base/count.adoc + + (core::string_view key, ignore_case_param ic) + + + bool + empty + boost/urls/params_base/empty.adoc + + () + + + iterator + end + boost/urls/params_base/end.adoc + + () + + + iterator + find + boost/urls/params_base/find-09.adoc + + (core::string_view key, ignore_case_param ic) + + + iterator + find + boost/urls/params_base/find-04.adoc + + (iterator from, core::string_view key, ignore_case_param ic) + + + iterator + find_last + boost/urls/params_base/find_last-04.adoc + + (core::string_view key, ignore_case_param ic) + + + iterator + find_last + boost/urls/params_base/find_last-0d.adoc + + (iterator before, core::string_view key, ignore_case_param ic) + + + std::size_t + max_size + boost/urls/params_base/max_size.adoc + + () + + + std::size_t + size + boost/urls/params_base/size.adoc + + () + boost::urls::params_encoded_base boost/urls/params_encoded_base.adoc + + iterator + begin + boost/urls/params_encoded_base/begin.adoc + + () + + + pct_string_view + buffer + boost/urls/params_encoded_base/buffer.adoc + + () + + + bool + contains + boost/urls/params_encoded_base/contains.adoc + + (pct_string_view key, ignore_case_param ic) + + + std::size_t + count + boost/urls/params_encoded_base/count.adoc + + (pct_string_view key, ignore_case_param ic) + + + bool + empty + boost/urls/params_encoded_base/empty.adoc + + () + + + iterator + end + boost/urls/params_encoded_base/end.adoc + + () + + + iterator + find + boost/urls/params_encoded_base/find-03.adoc + + (pct_string_view key, ignore_case_param ic) + + + iterator + find + boost/urls/params_encoded_base/find-00.adoc + + (iterator from, pct_string_view key, ignore_case_param ic) + + + iterator + find_last + boost/urls/params_encoded_base/find_last-05.adoc + + (pct_string_view key, ignore_case_param ic) + + + iterator + find_last + boost/urls/params_encoded_base/find_last-0d.adoc + + (iterator before, pct_string_view key, ignore_case_param ic) + + + std::size_t + max_size + boost/urls/params_encoded_base/max_size.adoc + + () + + + std::size_t + size + boost/urls/params_encoded_base/size.adoc + + () + boost::urls::params_encoded_ref boost/urls/params_encoded_ref.adoc + + iterator + append + boost/urls/params_encoded_ref/append-07.adoc + + (const param_pct_view& p) + + + iterator + append + boost/urls/params_encoded_ref/append-0e.adoc + + (std::initializer_list<param_pct_view> init) + + + iterator + append + boost/urls/params_encoded_ref/append-08.adoc + + (FwdIt first, FwdIt last) + + + void + assign + boost/urls/params_encoded_ref/assign-00.adoc + + (std::initializer_list<param_pct_view> init) + + + void + assign + boost/urls/params_encoded_ref/assign-07.adoc + + (FwdIt first, FwdIt last) + + + void + clear + boost/urls/params_encoded_ref/clear.adoc + + () + + + iterator + erase + boost/urls/params_encoded_ref/erase-08.adoc + + (iterator pos) + + + iterator + erase + boost/urls/params_encoded_ref/erase-0b.adoc + + (iterator first, iterator last) + + + std::size_t + erase + boost/urls/params_encoded_ref/erase-00.adoc + + (pct_string_view key, ignore_case_param ic) + + + iterator + insert + boost/urls/params_encoded_ref/insert-03.adoc + + (iterator before, const param_pct_view& p) + + + iterator + insert + boost/urls/params_encoded_ref/insert-0b.adoc + + (iterator before, std::initializer_list<param_pct_view> init) + + + iterator + insert + boost/urls/params_encoded_ref/insert-05.adoc + + (iterator before, FwdIt first, FwdIt last) + + + params_encoded_view + operator params_encoded_view + boost/urls/params_encoded_ref/2conversion.adoc + + () + + + params_encoded_ref& + operator= + boost/urls/params_encoded_ref/operator_assign-02.adoc + + (const params_encoded_ref& other) + + + params_encoded_ref& + operator= + boost/urls/params_encoded_ref/operator_assign-03.adoc + + (std::initializer_list<param_pct_view> init) + + + void + params_encoded_ref + boost/urls/params_encoded_ref/2constructor.adoc + + (const params_encoded_ref& other) + + + iterator + replace + boost/urls/params_encoded_ref/replace-0f.adoc + + (iterator pos, const param_pct_view& p) + + + iterator + replace + boost/urls/params_encoded_ref/replace-08.adoc + + (iterator from, iterator to, std::initializer_list<param_pct_view> init) + + + iterator + replace + boost/urls/params_encoded_ref/replace-06.adoc + + (iterator from, iterator to, FwdIt first, FwdIt last) + + + iterator + set + boost/urls/params_encoded_ref/set-0d.adoc + + (iterator pos, pct_string_view value) + + + iterator + set + boost/urls/params_encoded_ref/set-07.adoc + + (pct_string_view key, pct_string_view value, ignore_case_param ic) + + + iterator + unset + boost/urls/params_encoded_ref/unset.adoc + + (iterator pos) + + + url_base& + url + boost/urls/params_encoded_ref/url.adoc + + () + boost::urls::params_encoded_view boost/urls/params_encoded_view.adoc + + params_view + operator params_view + boost/urls/params_encoded_view/2conversion.adoc + + () + + + params_encoded_view& + operator= + boost/urls/params_encoded_view/operator_assign.adoc + + (const params_encoded_view& ) + + + void + params_encoded_view + boost/urls/params_encoded_view/2constructor-02.adoc + + () + + + void + params_encoded_view + boost/urls/params_encoded_view/2constructor-06.adoc + + (const params_encoded_view& other) + + + void + params_encoded_view + boost/urls/params_encoded_view/2constructor-0c.adoc + + (core::string_view s) + boost::urls::params_ref boost/urls/params_ref.adoc + + iterator + append + boost/urls/params_ref/append-0f.adoc + + (const param_view& p) + + + iterator + append + boost/urls/params_ref/append-07.adoc + + (std::initializer_list<param_view> init) + + + iterator + append + boost/urls/params_ref/append-0c.adoc + + (FwdIt first, FwdIt last) + + + void + assign + boost/urls/params_ref/assign-09.adoc + + (std::initializer_list<param_view> init) + + + void + assign + boost/urls/params_ref/assign-02.adoc + + (FwdIt first, FwdIt last) + + + void + clear + boost/urls/params_ref/clear.adoc + + () + + + iterator + erase + boost/urls/params_ref/erase-05.adoc + + (iterator pos) + + + iterator + erase + boost/urls/params_ref/erase-0f.adoc + + (iterator first, iterator last) + + + std::size_t + erase + boost/urls/params_ref/erase-00.adoc + + (core::string_view key, ignore_case_param ic) + + + iterator + insert + boost/urls/params_ref/insert-08.adoc + + (iterator before, const param_view& p) + + + iterator + insert + boost/urls/params_ref/insert-02.adoc + + (iterator before, std::initializer_list<param_view> init) + + + iterator + insert + boost/urls/params_ref/insert-05.adoc + + (iterator before, FwdIt first, FwdIt last) + + + params_view + operator params_view + boost/urls/params_ref/2conversion.adoc + + () + + + params_ref& + operator= + boost/urls/params_ref/operator_assign-0c.adoc + + (const params_ref& other) + + + params_ref& + operator= + boost/urls/params_ref/operator_assign-03.adoc + + (std::initializer_list<param_view> init) + + + void + params_ref + boost/urls/params_ref/2constructor-0b.adoc + + (const params_ref& other) + + + void + params_ref + boost/urls/params_ref/2constructor-09.adoc + + (const params_ref& other, encoding_opts opt) + + + iterator + replace + boost/urls/params_ref/replace-0d.adoc + + (iterator pos, const param_view& p) + + + iterator + replace + boost/urls/params_ref/replace-0b.adoc + + (iterator from, iterator to, std::initializer_list<param_view> init) + + + iterator + replace + boost/urls/params_ref/replace-01.adoc + + (iterator from, iterator to, FwdIt first, FwdIt last) + + + iterator + set + boost/urls/params_ref/set-09.adoc + + (iterator pos, core::string_view value) + + + iterator + set + boost/urls/params_ref/set-01.adoc + + (core::string_view key, core::string_view value, ignore_case_param ic) + + + iterator + unset + boost/urls/params_ref/unset.adoc + + (iterator pos) + + + url_base& + url + boost/urls/params_ref/url.adoc + + () + boost::urls::params_view boost/urls/params_view.adoc + + params_view& + operator= + boost/urls/params_view/operator_assign.adoc + + (const params_view& ) + + + void + params_view + boost/urls/params_view/2constructor-0d.adoc + + () + + + void + params_view + boost/urls/params_view/2constructor-091.adoc + + (const params_view& other) + + + void + params_view + boost/urls/params_view/2constructor-01.adoc + + (const params_view& other, encoding_opts opt) + + + void + params_view + boost/urls/params_view/2constructor-09a.adoc + + (core::string_view s) + + + void + params_view + boost/urls/params_view/2constructor-04.adoc + + (core::string_view s, encoding_opts opt) + - boost::urls::segments_base - boost/urls/segments_base.adoc + boost::urls::pct_string_view + boost/urls/pct_string_view.adoc + + StringToken::result_type + decode + boost/urls/pct_string_view/decode.adoc + + (encoding_opts opt, StringToken&& token) + + + std::size_t + decoded_size + boost/urls/pct_string_view/decoded_size.adoc + + () + + + decode_view + operator* + boost/urls/pct_string_view/operator_star.adoc + + () + + + const pct_string_view* + operator-> + boost/urls/pct_string_view/operator_ptr.adoc + + () + + + pct_string_view& + operator= + boost/urls/pct_string_view/operator_assign.adoc + + (const pct_string_view& other) + + + void + pct_string_view + boost/urls/pct_string_view/2constructor-00.adoc + + () + + + void + pct_string_view + boost/urls/pct_string_view/2constructor-07.adoc + + (const pct_string_view& other) + + + void + pct_string_view + boost/urls/pct_string_view/2constructor-0f.adoc + + (std::nullptr_t ) + + + void + pct_string_view + boost/urls/pct_string_view/2constructor-05.adoc + + (const char* s, std::size_t len) + + + void + pct_string_view + boost/urls/pct_string_view/2constructor-0d.adoc + + (core::string_view s) + + + void + pct_string_view + boost/urls/pct_string_view/2constructor-0c.adoc + + (const String& s) + + + void + swap + boost/urls/pct_string_view/swap.adoc + + (pct_string_view& s) + - boost::urls::segments_view - boost/urls/segments_view.adoc + boost::urls::segments_base + boost/urls/segments_base.adoc + + std::string + back + boost/urls/segments_base/back.adoc + + () + + + iterator + begin + boost/urls/segments_base/begin.adoc + + () + + + pct_string_view + buffer + boost/urls/segments_base/buffer.adoc + + () + + + bool + empty + boost/urls/segments_base/empty.adoc + + () + + + iterator + end + boost/urls/segments_base/end.adoc + + () + + + std::string + front + boost/urls/segments_base/front.adoc + + () + + + bool + is_absolute + boost/urls/segments_base/is_absolute.adoc + + () + + + std::size_t + max_size + boost/urls/segments_base/max_size.adoc + + () + + + std::size_t + size + boost/urls/segments_base/size.adoc + + () + boost::urls::segments_encoded_base boost/urls/segments_encoded_base.adoc + + pct_string_view + back + boost/urls/segments_encoded_base/back.adoc + + () + + + iterator + begin + boost/urls/segments_encoded_base/begin.adoc + + () + + + pct_string_view + buffer + boost/urls/segments_encoded_base/buffer.adoc + + () + + + bool + empty + boost/urls/segments_encoded_base/empty.adoc + + () + + + iterator + end + boost/urls/segments_encoded_base/end.adoc + + () + + + pct_string_view + front + boost/urls/segments_encoded_base/front.adoc + + () + + + bool + is_absolute + boost/urls/segments_encoded_base/is_absolute.adoc + + () + + + std::size_t + max_size + boost/urls/segments_encoded_base/max_size.adoc + + () + + + std::size_t + size + boost/urls/segments_encoded_base/size.adoc + + () + boost::urls::segments_encoded_ref boost/urls/segments_encoded_ref.adoc + + void + assign + boost/urls/segments_encoded_ref/assign-0e.adoc + + (std::initializer_list<pct_string_view> init) + + + void + assign + boost/urls/segments_encoded_ref/assign-0b.adoc + + (FwdIt first, FwdIt last) + + + void + clear + boost/urls/segments_encoded_ref/clear.adoc + + () + + + iterator + erase + boost/urls/segments_encoded_ref/erase-006.adoc + + (iterator pos) + + + iterator + erase + boost/urls/segments_encoded_ref/erase-00a.adoc + + (iterator first, iterator last) + + + iterator + insert + boost/urls/segments_encoded_ref/insert-04.adoc + + (iterator before, pct_string_view s) + + + iterator + insert + boost/urls/segments_encoded_ref/insert-0d.adoc + + (iterator before, std::initializer_list<pct_string_view> init) + + + iterator + insert + boost/urls/segments_encoded_ref/insert-07.adoc + + (iterator before, FwdIt first, FwdIt last) + + + segments_encoded_view + operator segments_encoded_view + boost/urls/segments_encoded_ref/2conversion.adoc + + () + + + segments_encoded_ref& + operator= + boost/urls/segments_encoded_ref/operator_assign-02c.adoc + + (const segments_encoded_ref& other) + + + segments_encoded_ref& + operator= + boost/urls/segments_encoded_ref/operator_assign-02e.adoc + + (const segments_encoded_view& other) + + + segments_encoded_ref& + operator= + boost/urls/segments_encoded_ref/operator_assign-08.adoc + + (std::initializer_list<pct_string_view> init) + + + void + pop_back + boost/urls/segments_encoded_ref/pop_back.adoc + + () + + + void + push_back + boost/urls/segments_encoded_ref/push_back.adoc + + (pct_string_view s) + + + iterator + replace + boost/urls/segments_encoded_ref/replace-07.adoc + + (iterator pos, pct_string_view s) + + + iterator + replace + boost/urls/segments_encoded_ref/replace-06.adoc + + (iterator from, iterator to, pct_string_view s) + + + iterator + replace + boost/urls/segments_encoded_ref/replace-08.adoc + + (iterator from, iterator to, std::initializer_list<pct_string_view> init) + + + iterator + replace + boost/urls/segments_encoded_ref/replace-0f.adoc + + (iterator from, iterator to, FwdIt first, FwdIt last) + + + void + segments_encoded_ref + boost/urls/segments_encoded_ref/2constructor.adoc + + (const segments_encoded_ref& other) + + + url_base& + url + boost/urls/segments_encoded_ref/url.adoc + + () + boost::urls::segments_encoded_view boost/urls/segments_encoded_view.adoc + + segments_view + operator segments_view + boost/urls/segments_encoded_view/2conversion.adoc + + () + + + segments_encoded_view& + operator= + boost/urls/segments_encoded_view/operator_assign.adoc + + (const segments_encoded_view& ) + + + void + segments_encoded_view + boost/urls/segments_encoded_view/2constructor-0c.adoc + + () + + + void + segments_encoded_view + boost/urls/segments_encoded_view/2constructor-0b.adoc + + (const segments_encoded_view& ) + + + void + segments_encoded_view + boost/urls/segments_encoded_view/2constructor-02.adoc + + (core::string_view s) + boost::urls::segments_ref boost/urls/segments_ref.adoc + + void + assign + boost/urls/segments_ref/assign-08.adoc + + (std::initializer_list<core::string_view> init) + + + void + assign + boost/urls/segments_ref/assign-0d.adoc + + (FwdIt first, FwdIt last) + + + void + clear + boost/urls/segments_ref/clear.adoc + + () + + + iterator + erase + boost/urls/segments_ref/erase-0af2.adoc + + (iterator pos) + + + iterator + erase + boost/urls/segments_ref/erase-0af5.adoc + + (iterator first, iterator last) + + + iterator + insert + boost/urls/segments_ref/insert-05.adoc + + (iterator before, core::string_view s) + + + iterator + insert + boost/urls/segments_ref/insert-09.adoc + + (iterator before, std::initializer_list<core::string_view> init) + + + iterator + insert + boost/urls/segments_ref/insert-07.adoc + + (iterator before, FwdIt first, FwdIt last) + + + segments_view + operator segments_view + boost/urls/segments_ref/2conversion.adoc + + () + + + segments_ref& + operator= + boost/urls/segments_ref/operator_assign-0d.adoc + + (const segments_ref& other) + + + segments_ref& + operator= + boost/urls/segments_ref/operator_assign-08.adoc + + (const segments_view& other) + + + segments_ref& + operator= + boost/urls/segments_ref/operator_assign-0f.adoc + + (std::initializer_list<core::string_view> init) + + + void + pop_back + boost/urls/segments_ref/pop_back.adoc + + () + + + void + push_back + boost/urls/segments_ref/push_back.adoc + + (core::string_view s) + + + iterator + replace + boost/urls/segments_ref/replace-05.adoc + + (iterator pos, core::string_view s) + + + iterator + replace + boost/urls/segments_ref/replace-04.adoc + + (iterator from, iterator to, core::string_view s) + + + iterator + replace + boost/urls/segments_ref/replace-02.adoc + + (iterator from, iterator to, std::initializer_list<core::string_view> init) + + + iterator + replace + boost/urls/segments_ref/replace-07.adoc + + (iterator from, iterator to, FwdIt first, FwdIt last) + + + void + segments_ref + boost/urls/segments_ref/2constructor.adoc + + (const segments_ref& other) + + + url_base& + url + boost/urls/segments_ref/url.adoc + + () + + + + boost::urls::segments_view + boost/urls/segments_view.adoc + + segments_view& + operator= + boost/urls/segments_view/operator_assign.adoc + + (const segments_view& other) + + + void + segments_view + boost/urls/segments_view/2constructor-0c.adoc + + () + + + void + segments_view + boost/urls/segments_view/2constructor-0d.adoc + + (const segments_view& other) + + + void + segments_view + boost/urls/segments_view/2constructor-0e.adoc + + (core::string_view s) + boost::urls::static_url boost/urls/static_url.adoc + + static_url& + normalize + boost/urls/static_url/normalize.adoc + + () + + + static_url& + normalize_authority + boost/urls/static_url/normalize_authority.adoc + + () + + + static_url& + normalize_fragment + boost/urls/static_url/normalize_fragment.adoc + + () + + + static_url& + normalize_path + boost/urls/static_url/normalize_path.adoc + + () + + + static_url& + normalize_query + boost/urls/static_url/normalize_query.adoc + + () + + + static_url& + normalize_scheme + boost/urls/static_url/normalize_scheme.adoc + + () + + + static_url& + operator= + boost/urls/static_url/operator_assign-07.adoc + + (const static_url& u) + + + static_url& + operator= + boost/urls/static_url/operator_assign-0e.adoc + + (const url_view_base& u) + + + static_url& + remove_authority + boost/urls/static_url/remove_authority.adoc + + () + + + static_url& + remove_fragment + boost/urls/static_url/remove_fragment.adoc + + () + + + static_url& + remove_origin + boost/urls/static_url/remove_origin.adoc + + () + + + static_url& + remove_password + boost/urls/static_url/remove_password.adoc + + () + + + static_url& + remove_port + boost/urls/static_url/remove_port.adoc + + () + + + static_url& + remove_query + boost/urls/static_url/remove_query.adoc + + () + + + static_url& + remove_scheme + boost/urls/static_url/remove_scheme.adoc + + () + + + static_url& + remove_userinfo + boost/urls/static_url/remove_userinfo.adoc + + () + + + static_url& + set_encoded_authority + boost/urls/static_url/set_encoded_authority.adoc + + (pct_string_view s) + + + static_url& + set_encoded_fragment + boost/urls/static_url/set_encoded_fragment.adoc + + (pct_string_view s) + + + static_url& + set_encoded_host + boost/urls/static_url/set_encoded_host.adoc + + (pct_string_view s) + + + static_url& + set_encoded_host_address + boost/urls/static_url/set_encoded_host_address.adoc + + (pct_string_view s) + + + static_url& + set_encoded_host_name + boost/urls/static_url/set_encoded_host_name.adoc + + (pct_string_view s) + + + static_url& + set_encoded_password + boost/urls/static_url/set_encoded_password.adoc + + (pct_string_view s) + + + static_url& + set_encoded_path + boost/urls/static_url/set_encoded_path.adoc + + (pct_string_view s) + + + static_url& + set_encoded_query + boost/urls/static_url/set_encoded_query.adoc + + (pct_string_view s) + + + static_url& + set_encoded_user + boost/urls/static_url/set_encoded_user.adoc + + (pct_string_view s) + + + static_url& + set_encoded_userinfo + boost/urls/static_url/set_encoded_userinfo.adoc + + (pct_string_view s) + + + static_url& + set_fragment + boost/urls/static_url/set_fragment.adoc + + (core::string_view s) + + + static_url& + set_host + boost/urls/static_url/set_host.adoc + + (core::string_view s) + + + static_url& + set_host_address + boost/urls/static_url/set_host_address.adoc + + (core::string_view s) + + + static_url& + set_host_ipv4 + boost/urls/static_url/set_host_ipv4.adoc + + (const ipv4_address& addr) + + + static_url& + set_host_ipv6 + boost/urls/static_url/set_host_ipv6.adoc + + (const ipv6_address& addr) + + + static_url& + set_host_ipvfuture + boost/urls/static_url/set_host_ipvfuture.adoc + + (core::string_view s) + + + static_url& + set_host_name + boost/urls/static_url/set_host_name.adoc + + (core::string_view s) + + + static_url& + set_params + boost/urls/static_url/set_params.adoc + + (std::initializer_list<param_view> ps, encoding_opts opts) + + + static_url& + set_password + boost/urls/static_url/set_password.adoc + + (core::string_view s) + + + static_url& + set_path + boost/urls/static_url/set_path.adoc + + (core::string_view s) + + + static_url& + set_port + boost/urls/static_url/set_port.adoc + + (core::string_view s) + + + static_url& + set_port_number + boost/urls/static_url/set_port_number.adoc + + (std::uint16_t n) + + + static_url& + set_query + boost/urls/static_url/set_query.adoc + + (core::string_view s) + + + static_url& + set_scheme + boost/urls/static_url/set_scheme.adoc + + (core::string_view s) + + + static_url& + set_scheme_id + boost/urls/static_url/set_scheme_id.adoc + + (urls::scheme id) + + + static_url& + set_user + boost/urls/static_url/set_user.adoc + + (core::string_view s) + + + static_url& + set_userinfo + boost/urls/static_url/set_userinfo.adoc + + (core::string_view s) + + + void + static_url + boost/urls/static_url/2constructor-06.adoc + + () + + + void + static_url + boost/urls/static_url/2constructor-08.adoc + + (core::string_view s) + + + void + static_url + boost/urls/static_url/2constructor-00.adoc + + (const static_url& u) + + + void + static_url + boost/urls/static_url/2constructor-09.adoc + + (const url_view_base& u) + + + void + ~static_url + boost/urls/static_url/2destructor.adoc + + () + boost::urls::static_url_base @@ -312,878 +4108,1272 @@ boost::urls::url boost/urls/url.adoc + + url& + normalize + boost/urls/url/normalize.adoc + + () + + + url& + normalize_authority + boost/urls/url/normalize_authority.adoc + + () + + + url& + normalize_fragment + boost/urls/url/normalize_fragment.adoc + + () + + + url& + normalize_path + boost/urls/url/normalize_path.adoc + + () + + + url& + normalize_query + boost/urls/url/normalize_query.adoc + + () + + + url& + normalize_scheme + boost/urls/url/normalize_scheme.adoc + + () + + + url& + operator= + boost/urls/url/operator_assign-09.adoc + + (url&& u) + + + url& + operator= + boost/urls/url/operator_assign-0b.adoc + + (const url_view_base& u) + + + url& + operator= + boost/urls/url/operator_assign-06.adoc + + (const url& u) + + + url& + remove_authority + boost/urls/url/remove_authority.adoc + + () + + + url& + remove_fragment + boost/urls/url/remove_fragment.adoc + + () + + + url& + remove_origin + boost/urls/url/remove_origin.adoc + + () + + + url& + remove_password + boost/urls/url/remove_password.adoc + + () + + + url& + remove_port + boost/urls/url/remove_port.adoc + + () + + + url& + remove_query + boost/urls/url/remove_query.adoc + + () + + + url& + remove_scheme + boost/urls/url/remove_scheme.adoc + + () + + + url& + remove_userinfo + boost/urls/url/remove_userinfo.adoc + + () + + + url& + set_encoded_authority + boost/urls/url/set_encoded_authority.adoc + + (pct_string_view s) + + + url& + set_encoded_fragment + boost/urls/url/set_encoded_fragment.adoc + + (pct_string_view s) + + + url& + set_encoded_host + boost/urls/url/set_encoded_host.adoc + + (pct_string_view s) + + + url& + set_encoded_host_address + boost/urls/url/set_encoded_host_address.adoc + + (pct_string_view s) + + + url& + set_encoded_host_name + boost/urls/url/set_encoded_host_name.adoc + + (pct_string_view s) + + + url& + set_encoded_params + boost/urls/url/set_encoded_params.adoc + + (std::initializer_list<param_pct_view> ps) + + + url& + set_encoded_password + boost/urls/url/set_encoded_password.adoc + + (pct_string_view s) + + + url& + set_encoded_path + boost/urls/url/set_encoded_path.adoc + + (pct_string_view s) + + + url& + set_encoded_query + boost/urls/url/set_encoded_query.adoc + + (pct_string_view s) + + + url& + set_encoded_user + boost/urls/url/set_encoded_user.adoc + + (pct_string_view s) + + + url& + set_encoded_userinfo + boost/urls/url/set_encoded_userinfo.adoc + + (pct_string_view s) + + + url& + set_fragment + boost/urls/url/set_fragment.adoc + + (core::string_view s) + + + url& + set_host + boost/urls/url/set_host.adoc + + (core::string_view s) + + + url& + set_host_address + boost/urls/url/set_host_address.adoc + + (core::string_view s) + + + url& + set_host_ipv4 + boost/urls/url/set_host_ipv4.adoc + + (const ipv4_address& addr) + + + url& + set_host_ipv6 + boost/urls/url/set_host_ipv6.adoc + + (const ipv6_address& addr) + + + url& + set_host_ipvfuture + boost/urls/url/set_host_ipvfuture.adoc + + (core::string_view s) + + + url& + set_host_name + boost/urls/url/set_host_name.adoc + + (core::string_view s) + + + url& + set_params + boost/urls/url/set_params.adoc + + (std::initializer_list<param_view> ps, encoding_opts opts) + + + url& + set_password + boost/urls/url/set_password.adoc + + (core::string_view s) + + + url& + set_path + boost/urls/url/set_path.adoc + + (core::string_view s) + + + url& + set_port + boost/urls/url/set_port.adoc + + (core::string_view s) + + + url& + set_port_number + boost/urls/url/set_port_number.adoc + + (std::uint16_t n) + + + url& + set_query + boost/urls/url/set_query.adoc + + (core::string_view s) + + + url& + set_scheme + boost/urls/url/set_scheme.adoc + + (core::string_view s) + + + url& + set_scheme_id + boost/urls/url/set_scheme_id.adoc + + (urls::scheme id) + + + url& + set_user + boost/urls/url/set_user.adoc + + (core::string_view s) + + + url& + set_userinfo + boost/urls/url/set_userinfo.adoc + + (core::string_view s) + + + void + swap + boost/urls/url/swap.adoc + + (url& other) + + + void + url + boost/urls/url/2constructor-0f0.adoc + + () + + + void + url + boost/urls/url/2constructor-002.adoc + + (core::string_view s) + + + void + url + boost/urls/url/2constructor-01.adoc + + (url&& u) + + + void + url + boost/urls/url/2constructor-001.adoc + + (const url_view_base& u) + + + void + url + boost/urls/url/2constructor-0f7.adoc + + (const url& u) + + + void + ~url + boost/urls/url/2destructor.adoc + + () + boost::urls::url_base boost/urls/url_base.adoc - - - boost::urls::url_view - boost/urls/url_view.adoc - boost::urls::segments_view - segments - boost/urls/url_view_base/segments.adoc - + const char* + c_str + boost/urls/url_base/c_str.adoc + () - boost::urls::params_view - params - boost/urls/url_view_base/params.adoc - + std::size_t + capacity + boost/urls/url_base/capacity.adoc + () - boost::urls::segments_encoded_view - encoded_segments - boost/urls/url_view_base/encoded_segments.adoc - + void + clear + boost/urls/url_base/clear.adoc + () - boost::urls::params_encoded_view + params_encoded_view encoded_params - boost/urls/url_view_base/encoded_params.adoc - + boost/urls/url_base/encoded_params-02.adoc + () - bool - has_authority - boost/urls/url_view_base/has_authority.adoc - + params_encoded_ref + encoded_params + boost/urls/url_base/encoded_params-06.adoc + () - - - boost::urls::url_view_base - boost/urls/url_view_base.adoc - authority - boost/urls/url_view_base/authority.adoc - + segments_encoded_ref + encoded_segments + boost/urls/url_base/encoded_segments-0e8.adoc + + () - buffer - boost/urls/url_view_base/buffer.adoc - + segments_encoded_view + encoded_segments + boost/urls/url_base/encoded_segments-0e5.adoc + + () - compare - boost/urls/url_view_base/compare.adoc - + url_base& + normalize + boost/urls/url_base/normalize.adoc + + () - data - boost/urls/url_view_base/data.adoc - + url_base& + normalize_authority + boost/urls/url_base/normalize_authority.adoc + + () - digest - boost/urls/url_view_base/digest.adoc - + url_base& + normalize_fragment + boost/urls/url_base/normalize_fragment.adoc + + () - empty - boost/urls/url_view_base/empty.adoc - + url_base& + normalize_path + boost/urls/url_base/normalize_path.adoc + + () - encoded_authority - boost/urls/url_view_base/encoded_authority.adoc - + url_base& + normalize_query + boost/urls/url_base/normalize_query.adoc + + () - encoded_fragment - boost/urls/url_view_base/encoded_fragment.adoc - + url_base& + normalize_scheme + boost/urls/url_base/normalize_scheme.adoc + + () - encoded_host - boost/urls/url_view_base/encoded_host.adoc - + params_ref + params + boost/urls/url_base/params-03.adoc + + () - encoded_host_address - boost/urls/url_view_base/encoded_host_address.adoc - + params_view + params + boost/urls/url_base/params-0b.adoc + + () - encoded_host_and_port - boost/urls/url_view_base/encoded_host_and_port.adoc - + params_ref + params + boost/urls/url_base/params-0c.adoc + + (encoding_opts opt) - encoded_host_name - boost/urls/url_view_base/encoded_host_name.adoc - + url_base& + remove_authority + boost/urls/url_base/remove_authority.adoc + + () - encoded_origin - boost/urls/url_view_base/encoded_origin.adoc - + url_base& + remove_fragment + boost/urls/url_base/remove_fragment.adoc + + () - encoded_params - boost/urls/url_view_base/encoded_params.adoc - + url_base& + remove_origin + boost/urls/url_base/remove_origin.adoc + + () - encoded_password - boost/urls/url_view_base/encoded_password.adoc - + url_base& + remove_password + boost/urls/url_base/remove_password.adoc + + () - encoded_path - boost/urls/url_view_base/encoded_path.adoc - + url_base& + remove_port + boost/urls/url_base/remove_port.adoc + + () - encoded_query - boost/urls/url_view_base/encoded_query.adoc - + url_base& + remove_query + boost/urls/url_base/remove_query.adoc + + () - encoded_resource - boost/urls/url_view_base/encoded_resource.adoc - + url_base& + remove_scheme + boost/urls/url_base/remove_scheme.adoc + + () - encoded_segments - boost/urls/url_view_base/encoded_segments.adoc - + url_base& + remove_userinfo + boost/urls/url_base/remove_userinfo.adoc + + () - encoded_target - boost/urls/url_view_base/encoded_target.adoc - + void + reserve + boost/urls/url_base/reserve.adoc + + (std::size_t n) - encoded_user - boost/urls/url_view_base/encoded_user.adoc - + system::result<void> + resolve + boost/urls/url_base/resolve.adoc + + (const url_view_base& ref) - encoded_userinfo - boost/urls/url_view_base/encoded_userinfo.adoc - + urls::segments_ref + segments + boost/urls/url_base/segments-0e.adoc + + () - encoded_zone_id - boost/urls/url_view_base/encoded_zone_id.adoc - + segments_view + segments + boost/urls/url_base/segments-04.adoc + + () - fragment - boost/urls/url_view_base/fragment.adoc - + url_base& + set_encoded_authority + boost/urls/url_base/set_encoded_authority.adoc + + (pct_string_view s) - has_authority - boost/urls/url_view_base/has_authority.adoc - + url_base& + set_encoded_fragment + boost/urls/url_base/set_encoded_fragment.adoc + + (pct_string_view s) - has_fragment - boost/urls/url_view_base/has_fragment.adoc - + url_base& + set_encoded_host + boost/urls/url_base/set_encoded_host.adoc + + (pct_string_view s) - has_password - boost/urls/url_view_base/has_password.adoc - + url_base& + set_encoded_host_address + boost/urls/url_base/set_encoded_host_address.adoc + + (pct_string_view s) - has_port - boost/urls/url_view_base/has_port.adoc - + url_base& + set_encoded_host_name + boost/urls/url_base/set_encoded_host_name.adoc + + (pct_string_view s) - has_query - boost/urls/url_view_base/has_query.adoc - + url_base& + set_encoded_params + boost/urls/url_base/set_encoded_params.adoc + + (std::initializer_list<param_pct_view> ps) - has_scheme - boost/urls/url_view_base/has_scheme.adoc - + url_base& + set_encoded_password + boost/urls/url_base/set_encoded_password.adoc + + (pct_string_view s) - has_userinfo - boost/urls/url_view_base/has_userinfo.adoc - + url_base& + set_encoded_path + boost/urls/url_base/set_encoded_path.adoc + + (pct_string_view s) - host - boost/urls/url_view_base/host.adoc - + url_base& + set_encoded_query + boost/urls/url_base/set_encoded_query.adoc + + (pct_string_view s) - host_address - boost/urls/url_view_base/host_address.adoc - + url_base& + set_encoded_user + boost/urls/url_base/set_encoded_user.adoc + + (pct_string_view s) - host_ipv4_address - boost/urls/url_view_base/host_ipv4_address.adoc - + url_base& + set_encoded_userinfo + boost/urls/url_base/set_encoded_userinfo.adoc + + (pct_string_view s) - host_ipv6_address - boost/urls/url_view_base/host_ipv6_address.adoc - + url_base& + set_fragment + boost/urls/url_base/set_fragment.adoc + + (core::string_view s) - host_ipvfuture - boost/urls/url_view_base/host_ipvfuture.adoc - + url_base& + set_host + boost/urls/url_base/set_host.adoc + + (core::string_view s) - host_name - boost/urls/url_view_base/host_name.adoc - + url_base& + set_host_address + boost/urls/url_base/set_host_address.adoc + + (core::string_view s) - host_type - boost/urls/url_view_base/host_type.adoc - + url_base& + set_host_ipv4 + boost/urls/url_base/set_host_ipv4.adoc + + (const ipv4_address& addr) - is_path_absolute - boost/urls/url_view_base/is_path_absolute.adoc - + url_base& + set_host_ipv6 + boost/urls/url_base/set_host_ipv6.adoc + + (const ipv6_address& addr) - operator core::string_view - boost/urls/url_view_base/2conversion.adoc - string_view`] ¦ + url_base& + set_host_ipvfuture + boost/urls/url_base/set_host_ipvfuture.adoc + + (core::string_view s) - params - boost/urls/url_view_base/params.adoc - + url_base& + set_host_name + boost/urls/url_base/set_host_name.adoc + + (core::string_view s) - password - boost/urls/url_view_base/password.adoc - + url_base& + set_params + boost/urls/url_base/set_params.adoc + + (std::initializer_list<param_view> ps, encoding_opts opts) - path - boost/urls/url_view_base/path.adoc - + url_base& + set_password + boost/urls/url_base/set_password.adoc + + (core::string_view s) - persist - boost/urls/url_view_base/persist.adoc - + url_base& + set_path + boost/urls/url_base/set_path.adoc + + (core::string_view s) - port - boost/urls/url_view_base/port.adoc - + bool + set_path_absolute + boost/urls/url_base/set_path_absolute.adoc + + (bool absolute) - port_number - boost/urls/url_view_base/port_number.adoc - + url_base& + set_port + boost/urls/url_base/set_port.adoc + + (core::string_view s) - query - boost/urls/url_view_base/query.adoc - + url_base& + set_port_number + boost/urls/url_base/set_port_number.adoc + + (std::uint16_t n) + + + url_base& + set_query + boost/urls/url_base/set_query.adoc + + (core::string_view s) + + + url_base& + set_scheme + boost/urls/url_base/set_scheme.adoc + + (core::string_view s) + + + url_base& + set_scheme_id + boost/urls/url_base/set_scheme_id.adoc + + (urls::scheme id) + + + url_base& + set_user + boost/urls/url_base/set_user.adoc + + (core::string_view s) + + + url_base& + set_userinfo + boost/urls/url_base/set_userinfo.adoc + + (core::string_view s) + + + + boost::urls::url_view + boost/urls/url_view.adoc + + std::size_t + max_size + boost/urls/url_view/max_size.adoc + + () - scheme - boost/urls/url_view_base/scheme.adoc - + url_view& + operator= + boost/urls/url_view/operator_assign-02.adoc + + (const url_view& other) - scheme_id - boost/urls/url_view_base/scheme_id.adoc - + url_view& + operator= + boost/urls/url_view/operator_assign-0f.adoc + + (const url_view_base& other) - segments - boost/urls/url_view_base/segments.adoc - + void + url_view + boost/urls/url_view/2constructor-0c.adoc + + () - size - boost/urls/url_view_base/size.adoc - + void + url_view + boost/urls/url_view/2constructor-025.adoc + + (core::string_view s) - user - boost/urls/url_view_base/user.adoc - + void + url_view + boost/urls/url_view/2constructor-024.adoc + + (const url_view& other) - userinfo - boost/urls/url_view_base/userinfo.adoc - + void + url_view + boost/urls/url_view/2constructor-0a.adoc + + (const url_view_base& other) - zone_id - boost/urls/url_view_base/zone_id.adoc - + void + url_view + boost/urls/url_view/2constructor-00.adoc + + (const String& s) - max_size - boost/urls/url_view_base/max_size.adoc - + void + ~url_view + boost/urls/url_view/2destructor.adoc + + () - boost::urls::url_base - boost/urls/url_base.adoc + boost::urls::url_view_base + boost/urls/url_view_base.adoc + authority_view authority boost/urls/url_view_base/authority.adoc - + + () + core::string_view buffer boost/urls/url_view_base/buffer.adoc - - - - c_str - boost/urls/url_base/c_str.adoc - - - - capacity - boost/urls/url_base/capacity.adoc - - - - clear - boost/urls/url_base/clear.adoc - + + () + int compare boost/urls/url_view_base/compare.adoc - + + (const url_view_base& other) + const char* data boost/urls/url_view_base/data.adoc - + + () + std::size_t digest boost/urls/url_view_base/digest.adoc - + + (std::size_t salt) + bool empty boost/urls/url_view_base/empty.adoc - + + () + pct_string_view encoded_authority boost/urls/url_view_base/encoded_authority.adoc - + + () + pct_string_view encoded_fragment boost/urls/url_view_base/encoded_fragment.adoc - + + () + pct_string_view encoded_host boost/urls/url_view_base/encoded_host.adoc - + + () + pct_string_view encoded_host_address boost/urls/url_view_base/encoded_host_address.adoc - + + () + pct_string_view encoded_host_and_port boost/urls/url_view_base/encoded_host_and_port.adoc - + + () + pct_string_view encoded_host_name boost/urls/url_view_base/encoded_host_name.adoc - + + () + pct_string_view encoded_origin boost/urls/url_view_base/encoded_origin.adoc - + + () + params_encoded_view encoded_params boost/urls/url_view_base/encoded_params.adoc - + + () + pct_string_view encoded_password boost/urls/url_view_base/encoded_password.adoc - + + () + pct_string_view encoded_path boost/urls/url_view_base/encoded_path.adoc - + + () + pct_string_view encoded_query boost/urls/url_view_base/encoded_query.adoc - + + () + pct_string_view encoded_resource boost/urls/url_view_base/encoded_resource.adoc - + + () + segments_encoded_view encoded_segments boost/urls/url_view_base/encoded_segments.adoc - + + () + pct_string_view encoded_target boost/urls/url_view_base/encoded_target.adoc - + + () + pct_string_view encoded_user boost/urls/url_view_base/encoded_user.adoc - + + () + pct_string_view encoded_userinfo boost/urls/url_view_base/encoded_userinfo.adoc - + + () + pct_string_view encoded_zone_id boost/urls/url_view_base/encoded_zone_id.adoc - + + () + StringToken::result_type fragment boost/urls/url_view_base/fragment.adoc - + + (StringToken&& token) + bool has_authority boost/urls/url_view_base/has_authority.adoc - + + () + bool has_fragment boost/urls/url_view_base/has_fragment.adoc - + + () + bool has_password boost/urls/url_view_base/has_password.adoc - + + () + bool has_port boost/urls/url_view_base/has_port.adoc - + + () + bool has_query boost/urls/url_view_base/has_query.adoc - + + () + bool has_scheme boost/urls/url_view_base/has_scheme.adoc - + + () + bool has_userinfo boost/urls/url_view_base/has_userinfo.adoc - + + () + StringToken::result_type host boost/urls/url_view_base/host.adoc - + + (StringToken&& token) + StringToken::result_type host_address boost/urls/url_view_base/host_address.adoc - + + (StringToken&& token) + ipv4_address host_ipv4_address boost/urls/url_view_base/host_ipv4_address.adoc - + + () + ipv6_address host_ipv6_address boost/urls/url_view_base/host_ipv6_address.adoc - + + () + core::string_view host_ipvfuture boost/urls/url_view_base/host_ipvfuture.adoc - + + () + StringToken::result_type host_name boost/urls/url_view_base/host_name.adoc - + + (StringToken&& token) + urls::host_type host_type boost/urls/url_view_base/host_type.adoc - + + () + bool is_path_absolute boost/urls/url_view_base/is_path_absolute.adoc - - - - normalize - boost/urls/url_base/normalize.adoc - - - - normalize_authority - boost/urls/url_base/normalize_authority.adoc - - - - normalize_fragment - boost/urls/url_base/normalize_fragment.adoc - - - - normalize_path - boost/urls/url_base/normalize_path.adoc - - - - normalize_query - boost/urls/url_base/normalize_query.adoc - - - - normalize_scheme - boost/urls/url_base/normalize_scheme.adoc - - - - operator core::string_view - boost/urls/url_view_base/2conversion.adoc - - - - params - boost/urls/url_view_base/params.adoc - - - - password - boost/urls/url_view_base/password.adoc - - - - path - boost/urls/url_view_base/path.adoc - - - - persist - boost/urls/url_view_base/persist.adoc - - - - port - boost/urls/url_view_base/port.adoc - - - - port_number - boost/urls/url_view_base/port_number.adoc - - - - query - boost/urls/url_view_base/query.adoc - - - - remove_authority - boost/urls/url_base/remove_authority.adoc - - - - remove_fragment - boost/urls/url_base/remove_fragment.adoc - - - - remove_origin - boost/urls/url_base/remove_origin.adoc - - - - remove_password - boost/urls/url_base/remove_password.adoc - - - - remove_port - boost/urls/url_base/remove_port.adoc - - - - remove_query - boost/urls/url_base/remove_query.adoc - - - - remove_scheme - boost/urls/url_base/remove_scheme.adoc - - - - remove_userinfo - boost/urls/url_base/remove_userinfo.adoc - - - - reserve - boost/urls/url_base/reserve.adoc - - - - resolve - boost/urls/url_base/resolve.adoc - - - - scheme - boost/urls/url_view_base/scheme.adoc - - - - scheme_id - boost/urls/url_view_base/scheme_id.adoc - - - - segments - boost/urls/url_view_base/segments.adoc - - - - set_encoded_authority - boost/urls/url_base/set_encoded_authority.adoc - - - - set_encoded_fragment - boost/urls/url_base/set_encoded_fragment.adoc - - - - set_encoded_host - boost/urls/url_base/set_encoded_host.adoc - - - - set_encoded_host_address - boost/urls/url_base/set_encoded_host_address.adoc - - - - set_encoded_host_name - boost/urls/url_base/set_encoded_host_name.adoc - - - - set_encoded_params - boost/urls/url_base/set_encoded_params.adoc - - - - set_encoded_password - boost/urls/url_base/set_encoded_password.adoc - - - - set_encoded_path - boost/urls/url_base/set_encoded_path.adoc - - - - set_encoded_query - boost/urls/url_base/set_encoded_query.adoc - - - - set_encoded_user - boost/urls/url_base/set_encoded_user.adoc - - - - set_encoded_userinfo - boost/urls/url_base/set_encoded_userinfo.adoc - - - - set_fragment - boost/urls/url_base/set_fragment.adoc - - - - set_host - boost/urls/url_base/set_host.adoc - - - - set_host_address - boost/urls/url_base/set_host_address.adoc - - - - set_host_ipv4 - boost/urls/url_base/set_host_ipv4.adoc - - - - set_host_ipv6 - boost/urls/url_base/set_host_ipv6.adoc - + + () - set_host_ipvfuture - boost/urls/url_base/set_host_ipvfuture.adoc - + std::size_t + max_size + boost/urls/url_view_base/max_size.adoc + + () - set_host_name - boost/urls/url_base/set_host_name.adoc - + core::string_view + operator basic_string_view<char> + boost/urls/url_view_base/2conversion.adoc + + () - set_params - boost/urls/url_base/set_params.adoc - + params_view + params + boost/urls/url_view_base/params-06.adoc + + () - set_password - boost/urls/url_base/set_password.adoc - + params_view + params + boost/urls/url_view_base/params-05.adoc + + (encoding_opts opt) - set_path - boost/urls/url_base/set_path.adoc - + StringToken::result_type + password + boost/urls/url_view_base/password.adoc + + (StringToken&& token) - set_path_absolute - boost/urls/url_base/set_path_absolute.adoc - + StringToken::result_type + path + boost/urls/url_view_base/path.adoc + + (StringToken&& token) - set_port - boost/urls/url_base/set_port.adoc - + std::shared_ptr<const url_view> + persist + boost/urls/url_view_base/persist.adoc + + () - set_port_number - boost/urls/url_base/set_port_number.adoc - + core::string_view + port + boost/urls/url_view_base/port.adoc + + () - set_query - boost/urls/url_base/set_query.adoc - + std::uint16_t + port_number + boost/urls/url_view_base/port_number.adoc + + () - set_scheme - boost/urls/url_base/set_scheme.adoc - + StringToken::result_type + query + boost/urls/url_view_base/query.adoc + + (StringToken&& token) - set_scheme_id - boost/urls/url_base/set_scheme_id.adoc - + core::string_view + scheme + boost/urls/url_view_base/scheme.adoc + + () - set_user - boost/urls/url_base/set_user.adoc - + urls::scheme + scheme_id + boost/urls/url_view_base/scheme_id.adoc + + () - set_userinfo - boost/urls/url_base/set_userinfo.adoc - + segments_view + segments + boost/urls/url_view_base/segments.adoc + + () + std::size_t size boost/urls/url_view_base/size.adoc - + + () + StringToken::result_type user boost/urls/url_view_base/user.adoc - + + (StringToken&& token) + StringToken::result_type userinfo boost/urls/url_view_base/userinfo.adoc - + + (StringToken&& token) + StringToken::result_type zone_id boost/urls/url_view_base/zone_id.adoc - - - - max_size - boost/urls/url_view_base/max_size.adoc - + + (StringToken&& token) - - boost::urls::decode_view - boost/urls/decode_view.adoc + boost::urls::error + boost/urls/error.adoc - boost::urls::encoding_opts - boost/urls/encoding_opts.adoc + boost::urls::host_type + boost/urls/host_type.adoc - boost::urls::pct_string_view - boost/urls/pct_string_view.adoc - - operator* - boost/urls/pct_string_view/operator_star.adoc - - - - decode - boost/urls/pct_string_view/decode.adoc - - + boost::urls::scheme + boost/urls/scheme.adoc - boost::urls::absolute_uri_rule - boost/urls/absolute_uri_rule.adoc + boost::urls::format_arg + boost/urls/format_arg.adoc - boost::urls::origin_form_rule - boost/urls/origin_form_rule.adoc + boost::urls::named_arg + boost/urls/named_arg.adoc + + + boost::urls::optional + boost/urls/optional.adoc + + + boost::urls::string_view + boost/urls/string_view.adoc + + + boost::urls::variant + boost/urls/variant.adoc + + + boost::urls::absolute_uri_rule + boost/urls/absolute_uri_rule.adoc boost::urls::authority_rule @@ -1193,6 +5383,10 @@ boost::urls::gen_delim_chars boost/urls/gen_delim_chars.adoc + + boost::urls::ignore_case + boost/urls/ignore_case.adoc + boost::urls::ipv4_address_rule boost/urls/ipv4_address_rule.adoc @@ -1202,12 +5396,16 @@ boost/urls/ipv6_address_rule.adoc - boost::urls::pchars - boost/urls/pchars.adoc + boost::urls::no_value + boost/urls/no_value.adoc + + + boost::urls::origin_form_rule + boost/urls/origin_form_rule.adoc - boost::urls::pct_encoded_rule - boost/urls/pct_encoded_rule.adoc + boost::urls::pchars + boost/urls/pchars.adoc boost::urls::query_rule @@ -1237,194 +5435,4 @@ boost::urls::uri_rule boost/urls/uri_rule.adoc - - - boost::urls::error - boost/urls/error.adoc - - - boost::urls::ignore_case - boost/urls/ignore_case.adoc - - - boost::urls::host_type - boost/urls/host_type.adoc - - - boost::urls::no_value - boost/urls/no_value.adoc - - - boost::urls::scheme - boost/urls/scheme.adoc - - - boost::urls::string_token::assign_to - boost/urls/string_token/assign_to.adoc - - - boost::urls::string_token::append_to - boost/urls/string_token/append_to.adoc - - - boost::urls::string_token::preserve_size - boost/urls/string_token/preserve_size.adoc - - - boost::urls::string_token::return_string - boost/urls/string_token/return_string.adoc - - - boost::urls::string_token::is_token - boost/urls/string_token/is_token.adoc - - - boost::urls::grammar::unsigned_rule - boost/urls/grammar/unsigned_rule.adoc - - - boost::urls::grammar::tuple_rule - boost/urls/grammar/tuple_rule.adoc - - - boost::urls::grammar::to_lower - boost/urls/grammar/to_lower.adoc - - - boost::urls::grammar::to_upper - boost/urls/grammar/to_upper.adoc - - - boost::urls::grammar::token_rule - boost/urls/grammar/token_rule.adoc - - - boost::urls::grammar::is_charset - boost/urls/grammar/is_charset.adoc - - - boost::urls::grammar::is_rule - boost/urls/grammar/is_rule.adoc - - - boost::urls::grammar::alnum_chars - boost/urls/grammar/alnum_chars.adoc - - - boost::urls::grammar::alpha_chars - boost/urls/grammar/alpha_chars.adoc - - - boost::urls::grammar::digit_chars - boost/urls/grammar/digit_chars.adoc - - - boost::urls::grammar::hexdig_chars - boost/urls/grammar/hexdig_chars.adoc - - - boost::urls::grammar::vchars - boost/urls/grammar/vchars.adoc - - - boost::urls::grammar::lut_chars - boost/urls/grammar/lut_chars.adoc - - - boost::urls::grammar::ci_compare - boost/urls/grammar/ci_compare.adoc - - - boost::urls::grammar::ci_digest - boost/urls/grammar/ci_digest.adoc - - - boost::urls::grammar::ci_is_equal - boost/urls/grammar/ci_is_equal.adoc - - - boost::urls::grammar::ci_is_less - boost/urls/grammar/ci_is_less.adoc - - - boost::urls::grammar::hexdig_value - boost/urls/grammar/hexdig_value.adoc - - - boost::urls::grammar::not_empty_rule - boost/urls/grammar/not_empty_rule.adoc - - - boost::urls::grammar::optional_rule - boost/urls/grammar/optional_rule.adoc - - - boost::urls::grammar::range_rule - boost/urls/grammar/range_rule.adoc - - - boost::urls::grammar::ref - boost/urls/grammar/ref.adoc - - - boost::urls::grammar::aligned_storage - boost/urls/grammar/aligned_storage.adoc - - - boost::urls::grammar::ci_hash - boost/urls/grammar/ci_hash.adoc - - - boost::urls::grammar::ci_equal - boost/urls/grammar/ci_equal.adoc - - - boost::urls::grammar::ci_less - boost/urls/grammar/ci_less.adoc - - - boost::urls::grammar::lut_chars - boost/urls/grammar/lut_chars.adoc - - - boost::urls::grammar::range - boost/urls/grammar/range.adoc - - - boost::urls::grammar::recycled - boost/urls/grammar/recycled.adoc - - - boost::urls::grammar::recycled_ptr - boost/urls/grammar/recycled_ptr.adoc - - - boost::urls::grammar::string_view_base - boost/urls/grammar/string_view_base.adoc - - - boost::urls::grammar::unsigned_rule - boost/urls/grammar/unsigned_rule.adoc - - - - boost::urls::grammar::dec_octet_rule - boost/urls/grammar/dec_octet_rule.adoc - - - boost::urls::grammar::squelch - boost/urls/grammar/squelch.adoc - - - boost::urls::grammar::optional_rule - boost/urls/grammar/optional_rule.adoc - - - boost::urls::ipv4_address_rule - boost/urls/ipv4_address_rule.adoc - - - boost::urls::grammar::variant_rule - boost/urls/grammar/variant_rule.adoc - diff --git a/include/boost/url/authority_view.hpp b/include/boost/url/authority_view.hpp index 285b019d4..aa2a28e29 100644 --- a/include/boost/url/authority_view.hpp +++ b/include/boost/url/authority_view.hpp @@ -1222,7 +1222,7 @@ class BOOST_URL_DECL @par Exception Safety Throws nothing. - @return -1 if `*this < other`, 0 if + @return `-1` if `*this < other`, `0` if `this == other`, and 1 if `this > other`. @par Specification diff --git a/include/boost/url/decode_view.hpp b/include/boost/url/decode_view.hpp index f92318055..3ff333249 100644 --- a/include/boost/url/decode_view.hpp +++ b/include/boost/url/decode_view.hpp @@ -68,21 +68,6 @@ make_decode_view( of the character buffer from which the view is constructed extends unmodified until the view is no longer accessed. - - @par Operators - The following operators are supported between - @ref decode_view and any object that is convertible - to `core::string_view` - - @code - bool operator==( decode_view, decode_view ) noexcept; - bool operator!=( decode_view, decode_view ) noexcept; - bool operator<=( decode_view, decode_view ) noexcept; - bool operator< ( decode_view, decode_view ) noexcept; - bool operator> ( decode_view, decode_view ) noexcept; - bool operator>=( decode_view, decode_view ) noexcept; - @endcode - */ class decode_view { @@ -130,25 +115,12 @@ class decode_view /** An iterator of constant, decoded characters. This iterator is used to access the encoded - string as a bidirectional range of characters - with percent-decoding applied. Escape sequences - are not decoded until the iterator is - dereferenced. - */ -#ifdef BOOST_URL_DOCS - using iterator = __see_below__ -#else - - /** An iterator of constant, decoded characters. - - This iterator is used to access the encoded - string as a bidirectional range of characters + string as a *bidirectional* range of characters with percent-decoding applied. Escape sequences are not decoded until the iterator is dereferenced. */ class iterator; -#endif /// @copydoc iterator using const_iterator = iterator; @@ -203,13 +175,15 @@ class decode_view Linear in `s.size()`. @par Exception Safety - Exceptions thrown on invalid input. - - @throw system_error - The string contains an invalid percent encoding. + Although this function does not throw exceptions, + implicitly constructing a @ref pct_string_view + for the first argument can throw exceptions + on invalid input. @param s A percent-encoded string that has - already been validated. + already been validated. Implicit conversion + from other string types is supported but + may throw exceptions. @param opt The options for decoding. If this parameter is omitted, the default @@ -544,7 +518,6 @@ class decode_view //-------------------------------------------- // relational operators -#ifndef BOOST_URL_DOCS private: template using is_match = std::integral_constant BOOST_CXX14_CONSTEXPR friend auto operator==( - S0 const& s0, S1 const& s1) noexcept -> + S0 const& lhs, S1 const& rhs) noexcept -> typename std::enable_if< is_match::value, bool>::type { - return decode_compare(s0, s1) == 0; + return decode_compare(lhs, rhs) == 0; + } +#else + /// Compare two decode views for equality + BOOST_CXX14_CONSTEXPR + friend + bool + operator==( + decode_view const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) == 0; + } + + /// Compare two decode views for equality + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator==( + decode_view const& lhs, + S const& rhs) noexcept + { + return decode_compare(lhs, rhs) == 0; } + /// Compare two decode views for equality + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator==( + S const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) == 0; + } +#endif + +#ifndef BOOST_URL_HAS_CONCEPTS /// Compare two decode views for inequality - /** - * This function is only enabled if both types are - * decode_view or convertible to `core::string_view`, - * but not both are convertible to `core::string_view` - */ template BOOST_CXX14_CONSTEXPR friend auto operator!=( - S0 const& s0, S1 const& s1) noexcept -> + S0 const& lhs, S1 const& rhs) noexcept -> typename std::enable_if< is_match::value, bool>::type { - return decode_compare(s0, s1) != 0; + return decode_compare(lhs, rhs) != 0; + } +#else + /// Compare two decode views for inequality + BOOST_CXX14_CONSTEXPR + friend + bool + operator!=( + decode_view const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) != 0; + } + + /// Compare two decode views for inequality + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator!=( + decode_view const& lhs, + S const& rhs) noexcept + { + return decode_compare(lhs, rhs) != 0; + } + + /// Compare two decode views for inequality + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator!=( + S const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) != 0; } +#endif +#ifndef BOOST_URL_HAS_CONCEPTS /// Compare two decode views for less than - /** - * This function is only enabled if both types are - * decode_view or convertible to `core::string_view`, - * but not both are convertible to `core::string_view` - */ template BOOST_CXX14_CONSTEXPR friend auto operator<( - S0 const& s0, S1 const& s1) noexcept -> + S0 const& lhs, S1 const& rhs) noexcept -> typename std::enable_if< is_match::value, bool>::type { - return decode_compare(s0, s1) < 0; + return decode_compare(lhs, rhs) < 0; + } +#else + /// Compare two decode views for less than + BOOST_CXX14_CONSTEXPR + friend + bool + operator<( + decode_view const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) < 0; + } + + /// Compare two decode views for less than + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator<( + decode_view const& lhs, + S const& rhs) noexcept + { + return decode_compare(lhs, rhs) < 0; } + /// Compare two decode views for less than + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator<( + S const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) < 0; + } +#endif + +#ifndef BOOST_URL_HAS_CONCEPTS /// Compare two decode views for less than or equal - /** - * This function is only enabled if both types are - * decode_view or convertible to `core::string_view`, - * but not both are convertible to `core::string_view` - */ template BOOST_CXX14_CONSTEXPR friend auto operator<=( - S0 const& s0, S1 const& s1) noexcept -> + S0 const& lhs, S1 const& rhs) noexcept -> typename std::enable_if< is_match::value, bool>::type { - return decode_compare(s0, s1) <= 0; + return decode_compare(lhs, rhs) <= 0; + } +#else + /// Compare two decode views for less than or equal + BOOST_CXX14_CONSTEXPR + friend + bool + operator<=( + decode_view const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) <= 0; } + /// Compare two decode views for less than or equal + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator<=( + decode_view const& lhs, + S const& rhs) noexcept + { + return decode_compare(lhs, rhs) <= 0; + } + + /// Compare two decode views for less than or equal + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator<=( + S const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) <= 0; + } +#endif + +#ifndef BOOST_URL_HAS_CONCEPTS /// Compare two decode views for greater than - /** - * This function is only enabled if both types are - * decode_view or convertible to `core::string_view`, - * but not both are convertible to `core::string_view` - */ template BOOST_CXX14_CONSTEXPR friend auto operator>( - S0 const& s0, S1 const& s1) noexcept -> + S0 const& lhs, S1 const& rhs) noexcept -> typename std::enable_if< is_match::value, bool>::type { - return decode_compare(s0, s1) > 0; + return decode_compare(lhs, rhs) > 0; } +#else + /// Compare two decode views for greater than + BOOST_CXX14_CONSTEXPR + friend + bool + operator>( + decode_view const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) > 0; + } + + /// Compare two decode views for greater than + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator>( + decode_view const& lhs, + S const& rhs) noexcept + { + return decode_compare(lhs, rhs) > 0; + } + + /// Compare two decode views for greater than + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator>( + S const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) > 0; + } +#endif +#ifndef BOOST_URL_HAS_CONCEPTS /// Compare two decode views for greater than or equal - /** - * This function is only enabled if both types are - * decode_view or convertible to `core::string_view`, - * but not both are convertible to `core::string_view` - */ template BOOST_CXX14_CONSTEXPR friend auto operator>=( - S0 const& s0, S1 const& s1) noexcept -> + S0 const& lhs, S1 const& rhs) noexcept -> typename std::enable_if< is_match::value, bool>::type { - return decode_compare(s0, s1) >= 0; + return decode_compare(lhs, rhs) >= 0; + } +#else + /// Compare two decode views for greater than or equal + BOOST_CXX14_CONSTEXPR + friend + bool + operator>=( + decode_view const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) >= 0; + } + + /// Compare two decode views for greater than or equal + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator>=( + decode_view const& lhs, + S const& rhs) noexcept + { + return decode_compare(lhs, rhs) >= 0; + } + + /// Compare two decode views for greater than or equal + template S> + BOOST_CXX14_CONSTEXPR + friend + bool + operator>=( + S const& lhs, + decode_view const& rhs) noexcept + { + return decode_compare(lhs, rhs) >= 0; } #endif diff --git a/include/boost/url/detail/config.hpp b/include/boost/url/detail/config.hpp index fc6045e9f..4b495ff5c 100644 --- a/include/boost/url/detail/config.hpp +++ b/include/boost/url/detail/config.hpp @@ -75,9 +75,19 @@ # define BOOST_URL_POS (BOOST_CURRENT_LOCATION) #endif +#if !defined(BOOST_NO_CXX20_HDR_CONCEPTS) && defined(__cpp_lib_concepts) +#define BOOST_URL_HAS_CONCEPTS +#endif + +#ifdef BOOST_URL_HAS_CONCEPTS +#define BOOST_URL_CONSTRAINT(C) C +#else +#define BOOST_URL_CONSTRAINT(C) class +#endif + // String token parameters #ifndef BOOST_URL_STRTOK_TPARAM -#define BOOST_URL_STRTOK_TPARAM class StringToken = string_token::return_string +#define BOOST_URL_STRTOK_TPARAM BOOST_URL_CONSTRAINT(string_token::StringToken) StringToken = string_token::return_string #endif #ifndef BOOST_URL_STRTOK_RETURN #define BOOST_URL_STRTOK_RETURN typename StringToken::result_type diff --git a/include/boost/url/detail/format_args.hpp b/include/boost/url/detail/format_args.hpp index 92ad6e3cd..0d8416cd6 100644 --- a/include/boost/url/detail/format_args.hpp +++ b/include/boost/url/detail/format_args.hpp @@ -332,17 +332,9 @@ template struct formatter; } // detail -namespace see_below { -using format_arg = detail::format_arg; -} -namespace implementation_defined { -template -using named_arg = detail::named_arg; -} } // url } // boost - #include #endif diff --git a/include/boost/url/encode.hpp b/include/boost/url/encode.hpp index c7d149665..44c361a21 100644 --- a/include/boost/url/encode.hpp +++ b/include/boost/url/encode.hpp @@ -186,7 +186,7 @@ encode( core::string_view s, CharSet const& unreserved, encoding_opts opt = {}, - BOOST_URL_STRTOK_ARG(token)) noexcept; + StringToken&& token = {}) noexcept; } // urls } // boost diff --git a/include/boost/url/format.hpp b/include/boost/url/format.hpp index 3fad7d992..550045d08 100644 --- a/include/boost/url/format.hpp +++ b/include/boost/url/format.hpp @@ -16,9 +16,61 @@ #include #include +#ifdef BOOST_URL_HAS_CONCEPTS +#include +#endif + namespace boost { namespace urls { +/** A temporary reference to a named formatting argument + + This class represents a temporary reference + to a named formatting argument used by the + @ref format function. + + Named arguments should always be created + with the @ref arg function. + + Any type that can be formatted into a URL + with the @ref format function can also be used + in a named argument. All named arguments + are convertible to @ref format_arg and + can be used in the @ref format function. + + @see + @ref arg, + @ref format, + @ref format_to, + @ref format_arg. + */ +template +using named_arg = detail::named_arg; + +/** A temporary reference to a formatting argument + + This class represents a temporary reference + to a formatting argument used by the + @ref format function. + + A @ref format argument should always be + created by passing the argument to be + formatted directly to the @ref format function. + + Any type that can be formatted into a URL + with the @ref format function is convertible + to this type. + + This includes basic types, types convertible + to `core::string_view`, and @ref named_arg. + + @see + @ref format, + @ref format_to, + @ref arg. + */ +using format_arg = detail::format_arg; + /** Format arguments into a URL Format arguments according to the format @@ -84,10 +136,10 @@ namespace urls { >Format String Syntax @see - @ref format_to. - + @ref format_to, + @ref arg. */ -template +template )... Args> url format( core::string_view fmt, @@ -170,7 +222,7 @@ format( @ref format. */ -template +template )... Args> void format_to( url_base& u, @@ -263,12 +315,7 @@ inline url format( core::string_view fmt, -#ifdef BOOST_URL_DOCS - std::initializer_list<__see_below__> args -#else - std::initializer_list args -#endif - ) + std::initializer_list args) { return detail::vformat( fmt, detail::format_args( @@ -361,12 +408,7 @@ void format_to( url_base& u, core::string_view fmt, -#ifdef BOOST_URL_DOCS - std::initializer_list<__see_below__> args -#else - std::initializer_list args -#endif - ) + std::initializer_list args) { detail::vformat_to( u, fmt, detail::format_args( @@ -384,15 +426,18 @@ format_to( potentially used as a format argument. @par Example + The function should be used to designate a named + argument for a replacement field in a format + URL string. @code assert(format("user/{id}", arg("id", 1)).buffer() == "user/1"); @endcode - @return An temporary object with reference + @return A temporary object with reference semantics for a named argument - @param name The argument name - @param arg The argument value + @param name The format argument name + @param arg The format argument value @see @ref format, @@ -400,7 +445,7 @@ format_to( */ template -BOOST_URL_IMPLEMENTATION_DEFINED(implementation_defined::named_arg) +named_arg arg(core::string_view name, T const& arg) { return {name, arg}; diff --git a/include/boost/url/grammar/charset.hpp b/include/boost/url/grammar/charset.hpp index 16da97d2a..b5adab02c 100644 --- a/include/boost/url/grammar/charset.hpp +++ b/include/boost/url/grammar/charset.hpp @@ -21,7 +21,7 @@ namespace boost { namespace urls { namespace grammar { -namespace see_below +namespace implementation_defined { template struct is_charset : std::false_type {}; @@ -37,7 +37,7 @@ struct is_charsetCharSet. +/** Alias for `std::true_type` if T satisfies @ref CharSet. This metafunction determines if the type `T` meets these requirements of @@ -60,7 +60,61 @@ struct is_charset -using is_charset = BOOST_URL_SEE_BELOW(see_below::is_charset); +using is_charset = BOOST_URL_SEE_BELOW(implementation_defined::is_charset); + +#ifdef BOOST_URL_HAS_CONCEPTS +/** Concept for a CharSet + + A `CharSet` is a unary predicate which is invocable with + this equivalent signature: + + @code + bool( char ch ) const noexcept; + @endcode + + The predicate returns `true` if `ch` is a member of the + set, or `false` otherwise. + + @par Exemplar + + For best results, it is suggested that all constructors and + member functions for character sets be marked `constexpr`. + + @code + struct CharSet + { + bool operator()( char c ) const noexcept; + + // These are both optional. If either or both are left + // unspecified, a default implementation will be used. + // + char const* find_if( char const* first, char const* last ) const noexcept; + char const* find_if_not( char const* first, char const* last ) const noexcept; + }; + @endcode + + @par Models + + @li @ref alnum_chars + @li @ref alpha_chars + @li @ref digit_chars + @li @ref hexdig_chars + @li @ref lut_chars + + @see + @ref is_charset, + @ref find_if, + @ref find_if_not. + + */ +template +concept CharSet = + requires (T const t, char c) +{ + { t(c) } -> std::convertible_to; +}; +#endif + //------------------------------------------------ @@ -83,23 +137,23 @@ using is_charset = BOOST_URL_SEE_BELOW(see_below::is_charset); @see @ref find_if_not. */ -template +template char const* find_if( char const* const first, char const* const last, - CharSet const& cs) noexcept + CS const& cs) noexcept { // If you get a compile error here // it means your type does not meet // the requirements. Please check the // documentation. static_assert( - is_charset::value, + is_charset::value, "CharSet requirements not met"); return detail::find_if(first, last, cs, - detail::has_find_if{}); + detail::has_find_if{}); } /** Find the first character in the string that is not in CharSet @@ -121,30 +175,28 @@ find_if( @see @ref find_if_not. */ -template +template char const* find_if_not( char const* const first, char const* const last, - CharSet const& cs) noexcept + CS const& cs) noexcept { // If you get a compile error here // it means your type does not meet // the requirements. Please check the // documentation. static_assert( - is_charset::value, + is_charset::value, "CharSet requirements not met"); return detail::find_if_not(first, last, cs, - detail::has_find_if_not{}); + detail::has_find_if_not{}); } //------------------------------------------------ -#ifndef BOOST_URL_DOCS namespace implementation_defined { - template struct charset_ref { @@ -175,9 +227,7 @@ struct charset_ref first, last, cs_ ); } }; - } // implementation_defined -#endif /** Return a reference to a character set @@ -194,41 +244,17 @@ struct charset_ref `ref` should only be used with compile-time constants. */ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -ref(CharSet const& cs) noexcept; -#else - -/** Return a reference to a character set - - This function returns a character set which - references the specified object. This is - used to reduce the number of bytes of - storage (`sizeof`) required by a combinator - when it stores a copy of the object. -
- Ownership of the object is not transferred; - the caller is responsible for ensuring the - lifetime of the object is extended until it - is no longer referenced. For best results, - `ref` should only be used with compile-time - constants. -*/ -template +template constexpr typename std::enable_if< - is_charset::value && - ! std::is_same >::value, - implementation_defined::charset_ref >::type -ref(CharSet const& cs) noexcept + is_charset::value && + ! std::is_same >::value, + implementation_defined::charset_ref >::type +ref(CS const& cs) noexcept { - return implementation_defined::charset_ref< - CharSet>{cs}; + return implementation_defined::charset_ref{cs}; } -#endif } // grammar } // urls diff --git a/include/boost/url/grammar/ci_string.hpp b/include/boost/url/grammar/ci_string.hpp index c615780eb..6714601d6 100644 --- a/include/boost/url/grammar/ci_string.hpp +++ b/include/boost/url/grammar/ci_string.hpp @@ -143,30 +143,6 @@ ci_digest( //------------------------------------------------ -/** Return true if s0 equals s1 using case-insensitive comparison - - The function is defined only for strings - containing low-ASCII characters. - - @par Example - @code - assert( ci_is_equal( "Boost", "boost" ) ); - @endcode - - @see - @ref ci_compare, - @ref ci_is_less. -*/ -#ifdef BOOST_URL_DOCS -template< - class String0, - class String1> -bool -ci_is_equal( - String0 const& s0, - String1 const& s1); -#else - /** Return true if s0 equals s1 using case-insensitive comparison The function is defined only for strings @@ -229,7 +205,6 @@ ci_is_equal( return false; return detail::ci_is_equal(s0, s1); } -#endif /** Return true if s0 is less than s1 using case-insensitive comparison @@ -262,31 +237,7 @@ ci_is_less( //------------------------------------------------ -/** A case-insensitive hash function object for strings - - The hash function is non-cryptographic and - not hardened against algorithmic complexity - attacks. - This is a suitable hash function for - unordered containers. - The function is defined only for strings - containing low-ASCII characters. - - @par Example - @code - boost::unordered_map< std::string, std::string, ci_hash, ci_equal > m1; - - std::unordered_map < std::string, std::string, ci_hash, ci_equal > m2; // (since C++20) - @endcode - - @see - @ref ci_equal, - @ref ci_less. -*/ -#ifdef BOOST_URL_DOCS -using ci_hash = __see_below__; -#else -namespace see_below { +namespace implementation_defined { struct ci_hash { using is_transparent = void; @@ -321,33 +272,9 @@ struct ci_hash @ref ci_equal, @ref ci_less. */ -using ci_hash = see_below::ci_hash; -#endif +using ci_hash = implementation_defined::ci_hash; -/** A case-insensitive equals predicate for strings - - The function object returns `true` when - two strings are equal, ignoring case. - This is a suitable equality predicate for - unordered containers. - The function is defined only for strings - containing low-ASCII characters. - - @par Example - @code - boost::unordered_map< std::string, std::string, ci_hash, ci_equal > m1; - - std::unordered_map < std::string, std::string, ci_hash, ci_equal > m2; // (since C++20) - @endcode - - @see - @ref ci_hash, - @ref ci_less. -*/ -#ifdef BOOST_URL_DOCS -using ci_equal = __see_below__; -#else -namespace see_below { +namespace implementation_defined { struct ci_equal { using is_transparent = void; @@ -362,7 +289,7 @@ struct ci_equal return ci_is_equal(s0, s1); } }; -} // see_below +} // implementation_defined /** A case-insensitive equals predicate for strings @@ -384,35 +311,9 @@ struct ci_equal @ref ci_hash, @ref ci_less. */ -using ci_equal = see_below::ci_equal; -#endif - -/** A case-insensitive less predicate for strings - - The comparison algorithm implements a - case-insensitive total order on the set - of all ASCII strings; however, it is - not a lexicographical comparison. - This is a suitable predicate for - ordered containers. - The function is defined only for strings - containing low-ASCII characters. - - @par Example - @code - boost::container::map< std::string, std::string, ci_less > m1; - - std::map< std::string, std::string, ci_less > m2; // (since C++14) - @endcode +using ci_equal = implementation_defined::ci_equal; - @see - @ref ci_equal, - @ref ci_hash. -*/ -#ifdef BOOST_URL_DOCS -using ci_less = __see_below__; -#else -namespace see_below { +namespace implementation_defined { struct ci_less { using is_transparent = void; @@ -449,8 +350,7 @@ struct ci_less @ref ci_equal, @ref ci_hash. */ -using ci_less = see_below::ci_less; -#endif +using ci_less = implementation_defined::ci_less; } // grammar } // urls diff --git a/include/boost/url/grammar/delim_rule.hpp b/include/boost/url/grammar/delim_rule.hpp index ad9cc0853..85b00f780 100644 --- a/include/boost/url/grammar/delim_rule.hpp +++ b/include/boost/url/grammar/delim_rule.hpp @@ -21,44 +21,6 @@ namespace boost { namespace urls { namespace grammar { -/** Match a character literal - - This matches the specified character. - The value is a reference to the character - in the underlying buffer, expressed as a - `core::string_view`. The function @ref squelch - may be used to turn this into `void` instead. - If there is no more input, the error code - @ref error::need_more is returned. - - @par Value Type - @code - using value_type = core::string_view; - @endcode - - @par Example - Rules are used with the function @ref parse. - @code - system::result< core::string_view > rv = parse( ".", delim_rule('.') ); - @endcode - - @par BNF - @code - char = %00-FF - @endcode - - @param ch The character to match - - @see - @ref parse, - @ref squelch. -*/ -#ifdef BOOST_URL_DOCS -constexpr -__implementation_defined__ -delim_rule( char ch ) noexcept; -#else - namespace implementation_defined { struct ch_delim_rule { @@ -119,45 +81,9 @@ delim_rule( char ch ) noexcept { return {ch}; } -#endif //------------------------------------------------ -/** Match a single character from a character set - - This matches exactly one character which - belongs to the specified character set. - The value is a reference to the character - in the underlying buffer, expressed as a - `core::string_view`. The function @ref squelch - may be used to turn this into `void` instead. - If there is no more input, the error code - @ref error::need_more is returned. - - @par Value Type - @code - using value_type = core::string_view; - @endcode - - @par Example - Rules are used with the function @ref parse. - @code - system::result< core::string_view > rv = parse( "X", delim_rule( alpha_chars ) ); - @endcode - - @param cs The character set to use. - - @see - @ref alpha_chars, - @ref parse, - @ref squelch. -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -delim_rule( CharSet const& cs ) noexcept; -#else namespace implementation_defined { template struct cs_delim_rule @@ -226,26 +152,25 @@ struct cs_delim_rule @ref parse, @ref squelch. */ -template +template constexpr typename std::enable_if< ! std::is_convertible< - CharSet, char>::value, - implementation_defined::cs_delim_rule>::type + CS, char>::value, + implementation_defined::cs_delim_rule>::type delim_rule( - CharSet const& cs) noexcept + CS const& cs) noexcept { // If you get a compile error here it // means that your type does not meet // the requirements for a CharSet. // Please consult the documentation. static_assert( - is_charset::value, + is_charset::value, "CharSet requirements not met"); - return implementation_defined::cs_delim_rule(cs); + return implementation_defined::cs_delim_rule(cs); } -#endif } // grammar } // urls diff --git a/include/boost/url/grammar/detail/recycled.hpp b/include/boost/url/grammar/detail/recycled.hpp index 482815615..5f3001087 100644 --- a/include/boost/url/grammar/detail/recycled.hpp +++ b/include/boost/url/grammar/detail/recycled.hpp @@ -15,7 +15,7 @@ namespace boost { namespace urls { namespace grammar { -namespace see_below { +namespace implementation_defined { template< std::size_t Size, diff --git a/include/boost/url/grammar/impl/parse.hpp b/include/boost/url/grammar/impl/parse.hpp index 5bb687874..ef0862618 100644 --- a/include/boost/url/grammar/impl/parse.hpp +++ b/include/boost/url/grammar/impl/parse.hpp @@ -17,7 +17,7 @@ namespace boost { namespace urls { namespace grammar { -template +template BOOST_URL_NO_INLINE auto parse( @@ -36,7 +36,7 @@ parse( return r.parse(it, end); } -template +template BOOST_URL_NO_INLINE auto parse( diff --git a/include/boost/url/grammar/impl/recycled.hpp b/include/boost/url/grammar/impl/recycled.hpp index 4392381cc..e57eb9540 100644 --- a/include/boost/url/grammar/impl/recycled.hpp +++ b/include/boost/url/grammar/impl/recycled.hpp @@ -36,7 +36,7 @@ recycled:: delete it; it = next; } - see_below::recycled_remove( + implementation_defined::recycled_remove( sizeof(U) * n); } @@ -57,7 +57,7 @@ acquire() -> { // reuse head_ = head_->next; - see_below::recycled_remove( + implementation_defined::recycled_remove( sizeof(U)); ++p->refs; } @@ -85,7 +85,7 @@ release(U* u) noexcept u->next = head_; head_ = u; } - see_below::recycled_add( + implementation_defined::recycled_add( sizeof(U)); } diff --git a/include/boost/url/grammar/impl/variant_rule.hpp b/include/boost/url/grammar/impl/variant_rule.hpp index 407c437a0..9bd8e5f4f 100644 --- a/include/boost/url/grammar/impl/variant_rule.hpp +++ b/include/boost/url/grammar/impl/variant_rule.hpp @@ -98,7 +98,7 @@ parse( //------------------------------------------------ -template +template auto constexpr variant_rule( diff --git a/include/boost/url/grammar/literal_rule.hpp b/include/boost/url/grammar/literal_rule.hpp index 31c148dde..7389c8af8 100644 --- a/include/boost/url/grammar/literal_rule.hpp +++ b/include/boost/url/grammar/literal_rule.hpp @@ -41,11 +41,6 @@ namespace grammar { @ref delim_rule, @ref parse. */ -#ifdef BOOST_URL_DOCS -constexpr -__implementation_defined__ -literal_rule( char const* s ); -#else class literal_rule { char const* s_ = nullptr; @@ -79,7 +74,6 @@ class literal_rule char const*& it, char const* end) const noexcept; }; -#endif } // grammar } // urls diff --git a/include/boost/url/grammar/not_empty_rule.hpp b/include/boost/url/grammar/not_empty_rule.hpp index 81fcb308f..164fe37dd 100644 --- a/include/boost/url/grammar/not_empty_rule.hpp +++ b/include/boost/url/grammar/not_empty_rule.hpp @@ -18,37 +18,6 @@ namespace boost { namespace urls { namespace grammar { -/** Match another rule, if the result is not empty - - This adapts another rule such that - when an empty string is successfully - parsed, the result is an error. - - @par Value Type - @code - using value_type = typename Rule::value_type; - @endcode - - @par Example - Rules are used with the function @ref parse. - @code - system::result< decode_view > rv = parse( "Program%20Files", - not_empty_rule( pct_encoded_rule( unreserved_chars ) ) ); - @endcode - - @param r The rule to match - - @see - @ref parse, - @ref pct_encoded_rule, - @ref unreserved_chars. -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -not_empty_rule( Rule r ); -#else namespace implementation_defined { template struct not_empty_rule_t @@ -99,24 +68,23 @@ struct not_empty_rule_t @ref pct_encoded_rule, @ref unreserved_chars. */ -template +template auto constexpr not_empty_rule( - Rule const& r) -> - implementation_defined::not_empty_rule_t + R const& r) -> + implementation_defined::not_empty_rule_t { // If you get a compile error here it // means that your rule does not meet // the type requirements. Please check // the documentation. static_assert( - is_rule::value, + is_rule::value, "Rule requirements not met"); return { r }; } -#endif } // grammar } // urls diff --git a/include/boost/url/grammar/optional_rule.hpp b/include/boost/url/grammar/optional_rule.hpp index 9ee44a757..7fff01b95 100644 --- a/include/boost/url/grammar/optional_rule.hpp +++ b/include/boost/url/grammar/optional_rule.hpp @@ -20,47 +20,6 @@ namespace boost { namespace urls { namespace grammar { -/** Match a rule, or the empty string - - Optional BNF elements are denoted with - square brackets. If the specified rule - returns any error it is treated as if - the rule did not match. - - @par Value Type - @code - using value_type = optional< typename Rule::value_type >; - @endcode - - @par Example - Rules are used with the function @ref grammar::parse. - @code - system::result< optional< core::string_view > > rv = parse( "", optional_rule( token_rule( alpha_chars ) ) ); - @endcode - - @par BNF - @code - optional = [ rule ] - @endcode - - @par Specification - @li 3.8. Optional Sequence (rfc5234) - - @param r The rule to match - - @see - @ref alpha_chars, - @ref parse, - @ref optional, - @ref token_rule. -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -optional_rule( Rule r ) noexcept; -#else namespace implementation_defined { template struct optional_rule_t @@ -120,16 +79,15 @@ struct optional_rule_t @ref optional, @ref token_rule. */ -template +template auto constexpr optional_rule( - Rule const& r) -> - implementation_defined::optional_rule_t + R const& r) -> + implementation_defined::optional_rule_t { return { r }; } -#endif } // grammar } // urls diff --git a/include/boost/url/grammar/parse.hpp b/include/boost/url/grammar/parse.hpp index 924b6ecec..ee459fe67 100644 --- a/include/boost/url/grammar/parse.hpp +++ b/include/boost/url/grammar/parse.hpp @@ -34,12 +34,12 @@ namespace grammar { @return The parsed value upon success, otherwise an error. */ -template -system::result +template +system::result parse( char const*& it, char const* end, - Rule const& r); + R const& r); /** Parse a character buffer using a rule @@ -55,17 +55,15 @@ parse( @return The parsed value upon success, otherwise an error. */ -template -system::result +template +system::result parse( core::string_view s, - Rule const& r); + R const& r); //------------------------------------------------ -#ifndef BOOST_URL_DOCS namespace implementation_defined { - template struct rule_ref { @@ -82,33 +80,7 @@ struct rule_ref return r_.parse(it, end); } }; - -} // detail -#endif - -/** Return a reference to a rule - - This function returns a rule which - references the specified object. This is - used to reduce the number of bytes of - storage (`sizeof`) required by a combinator - when it stores a copy of the object. -
- Ownership of the object is not transferred; - the caller is responsible for ensuring the - lifetime of the object is extended until it - is no longer referenced. For best results, - `ref` should only be used with compile-time - constants. - - @param r The rule to use -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -ref(Rule const& r) noexcept; -#else +} // implementation_defined /** Return a reference to a rule @@ -127,19 +99,17 @@ ref(Rule const& r) noexcept; @param r The rule to use */ -template +template constexpr typename std::enable_if< - is_rule::value && - ! std::is_same >::value, - implementation_defined::rule_ref >::type -ref(Rule const& r) noexcept + is_rule::value && + ! std::is_same >::value, + implementation_defined::rule_ref >::type +ref(R const& r) noexcept { - return implementation_defined::rule_ref< - Rule>{r}; + return implementation_defined::rule_ref{r}; } -#endif #ifndef BOOST_URL_DOCS #ifndef BOOST_URL_MRDOCS diff --git a/include/boost/url/grammar/range_rule.hpp b/include/boost/url/grammar/range_rule.hpp index e8f1a5f86..256e72611 100644 --- a/include/boost/url/grammar/range_rule.hpp +++ b/include/boost/url/grammar/range_rule.hpp @@ -275,91 +275,15 @@ class range //------------------------------------------------ -#ifndef BOOST_URL_DOCS namespace implementation_defined { template< class R0, class R1 = void> struct range_rule_t; } -#endif //------------------------------------------------ -/** Match a repeating number of elements - - Elements are matched using the passed rule. -
- Normally when the rule returns an error, - the range ends and the input is rewound to - one past the last character that matched - successfully. However, if the rule returns - the special value @ref error::end_of_range, the - input is not rewound. This allows for rules - which consume input without producing - elements in the range. For example, to - relax the grammar for a comma-delimited - list by allowing extra commas in between - elements. - - @par Value Type - @code - using value_type = range< typename Rule::value_type >; - @endcode - - @par Example - Rules are used with the function @ref parse. - @code - // range = 1*( ";" token ) - - system::result< range > rv = parse( ";alpha;xray;charlie", - range_rule( - tuple_rule( - squelch( delim_rule( ';' ) ), - token_rule( alpha_chars ) ), - 1 ) ); - @endcode - - @par BNF - @code - range = *next - @endcode - - @par Specification - @li 3.6. Variable Repetition (rfc5234) - - @param next The rule to use for matching - each element. The range extends until this - rule returns an error. - - @param N The minimum number of elements for - the range to be valid. If omitted, this - defaults to zero. - - @param M The maximum number of elements for - the range to be valid. If omitted, this - defaults to unlimited. - - @see - @ref alpha_chars, - @ref delim_rule, - @ref error::end_of_range, - @ref parse, - @ref range, - @ref tuple_rule, - @ref squelch. -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -range_rule( - Rule next, - std::size_t N = 0, - std::size_t M = - std::size_t(-1)) noexcept; -#else namespace implementation_defined { template struct range_rule_t @@ -454,11 +378,11 @@ struct range_rule_t @ref tuple_rule, @ref squelch. */ -template +template constexpr -implementation_defined::range_rule_t +implementation_defined::range_rule_t range_rule( - Rule const& next, + R const& next, std::size_t N = 0, std::size_t M = std::size_t(-1)) noexcept @@ -468,100 +392,15 @@ range_rule( // the type requirements. Please check // the documentation. static_assert( - is_rule::value, + is_rule::value, "Rule requirements not met"); - return implementation_defined::range_rule_t{ + return implementation_defined::range_rule_t{ next, N, M}; } -#endif //------------------------------------------------ -/** Match a repeating number of elements - - Two rules are used for match. The rule - `first` is used for matching the first - element, while the `next` rule is used - to match every subsequent element. -
- Normally when the rule returns an error, - the range ends and the input is rewound to - one past the last character that matched - successfully. However, if the rule returns - the special value @ref error::end_of_range, the - input is not rewound. This allows for rules - which consume input without producing - elements in the range. For example, to - relax the grammar for a comma-delimited - list by allowing extra commas in between - elements. - - @par Value Type - @code - using value_type = range< typename Rule::value_type >; - @endcode - - @par Example - Rules are used with the function @ref parse. - @code - // range = [ token ] *( "," token ) - - system::result< range< core::string_view > > rv = parse( "whiskey,tango,foxtrot", - range_rule( - token_rule( alpha_chars ), // first - tuple_rule( // next - squelch( delim_rule(',') ), - token_rule( alpha_chars ) ) ) ); - @endcode - - @par BNF - @code - range = <1>*<1>first - / first *next - @endcode - - @par Specification - @li 3.6. Variable Repetition (rfc5234) - - @param first The rule to use for matching - the first element. If this rule returns - an error, the range is empty. - - @param next The rule to use for matching - each subsequent element. The range extends - until this rule returns an error. - - @param N The minimum number of elements for - the range to be valid. If omitted, this - defaults to zero. - - @param M The maximum number of elements for - the range to be valid. If omitted, this - defaults to unlimited. - - @see - @ref alpha_chars, - @ref delim_rule, - @ref error::end_of_range, - @ref parse, - @ref range, - @ref tuple_rule, - @ref squelch. -*/ -#ifdef BOOST_URL_DOCS -template< - class Rule1, class Rule2> -constexpr -__implementation_defined__ -range_rule( - Rule1 first, - Rule2 next, - std::size_t N = 0, - std::size_t M = - std::size_t(-1)) noexcept; -#else namespace implementation_defined { template struct range_rule_t @@ -668,21 +507,22 @@ struct range_rule_t @ref squelch. */ template< - class Rule1, class Rule2> + BOOST_URL_CONSTRAINT(Rule) R1, + BOOST_URL_CONSTRAINT(Rule) R2> constexpr auto range_rule( - Rule1 const& first, - Rule2 const& next, + R1 const& first, + R2 const& next, std::size_t N = 0, std::size_t M = std::size_t(-1)) noexcept -> #if 1 typename std::enable_if< - ! std::is_integral::value, - implementation_defined::range_rule_t>::type + ! std::is_integral::value, + implementation_defined::range_rule_t>::type #else - range_rule_t + range_rule_t #endif { // If you get a compile error here it @@ -690,10 +530,10 @@ range_rule( // the type requirements. Please check // the documentation. static_assert( - is_rule::value, + is_rule::value, "Rule requirements not met"); static_assert( - is_rule::value, + is_rule::value, "Rule requirements not met"); // If you get a compile error here it @@ -702,14 +542,13 @@ range_rule( // check the documentation. static_assert( std::is_same< - typename Rule1::value_type, - typename Rule2::value_type>::value, + typename R1::value_type, + typename R2::value_type>::value, "Rule requirements not met"); - return implementation_defined::range_rule_t{ + return implementation_defined::range_rule_t{ first, next, N, M}; } -#endif } // grammar } // urls diff --git a/include/boost/url/grammar/recycled.hpp b/include/boost/url/grammar/recycled.hpp index 277654e22..2a14ce9ee 100644 --- a/include/boost/url/grammar/recycled.hpp +++ b/include/boost/url/grammar/recycled.hpp @@ -25,21 +25,6 @@ namespace boost { namespace urls { namespace grammar { -/** Provides an aligned storage buffer aligned for T -*/ -#ifdef BOOST_URL_DOCS -template -struct aligned_storage -{ - /** Return a pointer to the aligned storage area - */ - void* addr() noexcept; - - /** Return a pointer to the aligned storage area - */ - void const* addr() const noexcept; -}; -#else /** Provides an aligned storage buffer aligned for T @code @@ -57,11 +42,10 @@ struct aligned_storage */ template using aligned_storage = - see_below::aligned_storage_impl< - see_below::nearest_pow2(sizeof(T), 64), + implementation_defined::aligned_storage_impl< + implementation_defined::nearest_pow2(sizeof(T), 64), (alignof(::max_align_t) > alignof(T)) ? alignof(::max_align_t) : alignof(T)>; -#endif //------------------------------------------------ diff --git a/include/boost/url/grammar/string_token.hpp b/include/boost/url/grammar/string_token.hpp index a7830cb47..1211583f9 100644 --- a/include/boost/url/grammar/string_token.hpp +++ b/include/boost/url/grammar/string_token.hpp @@ -25,11 +25,13 @@ namespace string_token { This abstract interface provides a means for an algorithm to generically obtain a modifiable, contiguous character buffer - of prescribed size. As the author of an - algorithm simply declare an rvalue - reference as a parameter type. + of prescribed size. -
+ A @ref StringToken should be derived + from this class. As the author of an + algorithm using a @ref StringToken, + simply declare an rvalue reference + as a parameter type. Instances of this type are intended only to be used once and then destroyed. @@ -88,20 +90,10 @@ struct arg //------------------------------------------------ -/** Metafunction returning true if T is a StringToken -*/ -#ifdef BOOST_URL_DOCS -template -using is_token = __see_below__; -#else -namespace see_below { -/** Metafunction returning true if T is a StringToken - */ +namespace implementation_defined { template struct is_token : std::false_type {}; -/** Metafunction returning true if T is a StringToken - */ template struct is_token().prepare( @@ -120,21 +112,132 @@ struct is_token { }; -} // see_below +} // implementation_defined -/** Metafunction returning true if T is a StringToken +/** Trait to determine if a type is a string token + + This trait returns `true` if `T` is a valid + @ref StringToken type, and `false` otherwise. + + @par Example + @code + static_assert( string_token::is_token::value ); + @endcode */ template -using is_token = see_below::is_token; +using is_token = implementation_defined::is_token; + +#ifdef BOOST_URL_HAS_CONCEPTS +/** Concept for a string token + + This concept is satisfied if `T` is a + valid string token type. + + A string token is an rvalue passed to a function template + which customizes the return type of the function and also + controls how a modifiable character buffer is obtained and presented. + + The string token's lifetime extends only for the duration of the + function call in which it appears as a parameter. + + A string token cannot be copied, moved, or assigned, and must be + destroyed when the function returns or throws. + + @par Semantics + + `T::result_type` determines the return type of functions + that accept a string token. + + The `prepare()` function overrides the virtual function + in the base class @ref arg. It must return a pointer to + a character buffer of at least size `n`, otherwise + throw an exception. This function is called only + once or not at all. + + The `result()` function is invoked by the algorithm + to receive the result from the string token. + It is only invoked if `prepare()` returned + successfully and the string token was not destroyed. + It is only called after `prepare()` returns + successfully, and the string token is destroyed + when the algorithm completes or if an exception + is thrown. + + String tokens cannot be reused. + + @par Exemplars + String token prototype: + + @code + struct StringToken : string_token::arg + { + using result_type = std::string; + + char* prepare( std::size_t n ) override; + + result_type result(); + }; + @endcode + + Algorithm prototype: + + @code + namespace detail { + + // Algorithm implementation may be placed + // out of line, and written as an ordinary + // function (no template required). + void algorithm_impl( string_token::arg& token ) + { + std::size_t n = 0; + + // calculate space needed in n + // ... + + // acquire a destination buffer + char* dest = token.prepare( n ); + + // write the characters to the buffer + } + } // detail + + // public interface is a function template, + // defaulting to return std::string. + template< class StringToken = string_token::return_string > + auto + algorithm( StringToken&& token = {} ) -> + typename StringToken::result_type + { + // invoke the algorithm with the token + algorithm_impl( token ); + + // return the result from the token + return token.result(); + } + @endcode + + @par Models + The following classes and functions implement and + generate string tokens. + + @li @ref return_string + @li @ref assign_to + @li @ref preserve_size + + */ +template +concept StringToken = + std::derived_from && + requires (T t, std::size_t n) +{ + T::result_type; + { t.prepare(n) } -> std::same_as; + { t.result() } -> std::convertible_to; +}; #endif //------------------------------------------------ -/** A token for returning a plain string -*/ -#ifdef BOOST_URL_DOCS -using return_string = __implementation_defined__; -#else namespace implementation_defined { struct return_string : arg @@ -159,26 +262,19 @@ struct return_string }; } // implementation_defined -/** A token for returning a plain string +/** A string token for returning a plain string + + This @ref StringToken is used to customize + a function to return a plain string. + + This is default token type used by + the methods of @ref url_view_base + that return decoded strings. */ using return_string = implementation_defined::return_string; -#endif //------------------------------------------------ -/** A token for appending to a plain string -*/ -#ifdef BOOST_URL_DOCS -template< - class Allocator = - std::allocator> -__implementation_defined__ -append_to( - std::basic_string< - char, - std::char_traits, - Allocator>& s); -#else namespace implementation_defined { template struct append_to_t @@ -218,7 +314,14 @@ struct append_to_t }; } // implementation_defined -/** Create a token for appending to a plain string +/** Create a string token for appending to a plain string + + This function creates a @ref StringToken + which appends to an existing plain string. + + Functions using this token will append + the result to the existing string and + return a reference to it. */ template< class Alloc = @@ -232,23 +335,9 @@ append_to( { return implementation_defined::append_to_t(s); } -#endif //------------------------------------------------ -/** A token for assigning to a plain string -*/ -#ifdef BOOST_URL_DOCS -template< - class Allocator = - std::allocator> -__implementation_defined__ -assign_to( - std::basic_string< - char, - std::char_traits, - Allocator>& s); -#else namespace implementation_defined { template struct assign_to_t @@ -285,7 +374,14 @@ struct assign_to_t }; } // implementation_defined -/** A token for assigning to a plain string +/** Create a string token for assigning to a plain string + + This function creates a @ref StringToken + which assigns to an existing plain string. + + Functions using this token will assign + the result to the existing string and + return a reference to it. */ template< class Alloc = @@ -299,23 +395,9 @@ assign_to( { return implementation_defined::assign_to_t(s); } -#endif //------------------------------------------------ -/** A token for producing a durable core::string_view from a temporary string -*/ -#ifdef BOOST_URL_DOCS -template< - class Allocator = - std::allocator> -__implementation_defined__ -preserve_size( - std::basic_string< - char, - std::char_traits, - Allocator>& s); -#else namespace implementation_defined { template struct preserve_size_t @@ -358,7 +440,14 @@ struct preserve_size_t }; } // implementation_defined -/** A token for producing a durable core::string_view from a temporary string +/** Create a string token for a durable core::string_view + + This function creates a @ref StringToken + which assigns to an existing plain string. + + Functions using this token will assign + the result to the existing string and + return a `core::string_view` to it. */ template< class Alloc = @@ -372,8 +461,6 @@ preserve_size( { return implementation_defined::preserve_size_t(s); } -#endif - } // string_token namespace grammar { diff --git a/include/boost/url/grammar/token_rule.hpp b/include/boost/url/grammar/token_rule.hpp index 44e655aa3..c4b02bd17 100644 --- a/include/boost/url/grammar/token_rule.hpp +++ b/include/boost/url/grammar/token_rule.hpp @@ -19,40 +19,6 @@ namespace boost { namespace urls { namespace grammar { -/** Match a non-empty string of characters from a set - - If there is no more input, the error code - @ref error::need_more is returned. - - @par Value Type - @code - using value_type = core::string_view; - @endcode - - @par Example - Rules are used with the function @ref parse. - @code - system::result< core::string_view > rv = parse( "abcdef", token_rule( alpha_chars ) ); - @endcode - - @par BNF - @code - token = 1*( ch ) - @endcode - - @param cs The character set to use - - @see - @ref alpha_chars, - @ref parse. -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -token_rule( - CharSet cs) noexcept; -#else namespace implementation_defined { template struct token_rule_t @@ -109,16 +75,15 @@ struct token_rule_t @ref alpha_chars, @ref parse. */ -template +template constexpr auto token_rule( - CharSet const& cs) noexcept -> - implementation_defined::token_rule_t + CS const& cs) noexcept -> + implementation_defined::token_rule_t { return {cs}; } -#endif } // grammar } // urls diff --git a/include/boost/url/grammar/tuple_rule.hpp b/include/boost/url/grammar/tuple_rule.hpp index 47c2dc88d..0c872e290 100644 --- a/include/boost/url/grammar/tuple_rule.hpp +++ b/include/boost/url/grammar/tuple_rule.hpp @@ -22,67 +22,6 @@ namespace boost { namespace urls { namespace grammar { -/** Match a series of rules in order - - This matches a series of rules in the - order specified. Upon success the input - is adjusted to point to the first - unconsumed character. There is no - implicit specification of linear white - space between each rule. - - @par Value Type - @code - using value_type = __see_below__; - @endcode - - The sequence rule usually returns a - `std::tuple` containing the the `value_type` - of each corresponding rule in the sequence, - except that `void` values are removed. - However, if there is exactly one non-void - value type `T`, then the sequence rule - returns `system::result` instead of - `system::result>`. - - @par Example - Rules are used with the function @ref parse. - @code - system::result< std::tuple< unsigned char, unsigned char, unsigned char, unsigned char > > rv = - parse( "192.168.0.1", - tuple_rule( - dec_octet_rule, - squelch( delim_rule('.') ), - dec_octet_rule, - squelch( delim_rule('.') ), - dec_octet_rule, - squelch( delim_rule('.') ), - dec_octet_rule ) ); - @endcode - - @par BNF - @code - sequence = rule1 rule2 rule3... - @endcode - - @par Specification - @li 3.1. Concatenation (rfc5234) - - @param rn A list of one or more rules to match - - @see - @ref dec_octet_rule, - @ref delim_rule, - @ref parse, - @ref squelch. -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -tuple_rule( Rules... rn ) noexcept; -#else namespace implementation_defined { template< class R0, @@ -179,8 +118,8 @@ class tuple_rule_t @ref squelch. */ template< - class R0, - class... Rn> + BOOST_URL_CONSTRAINT(Rule) R0, + BOOST_URL_CONSTRAINT(Rule)... Rn> constexpr auto tuple_rule( @@ -191,9 +130,7 @@ tuple_rule( { return { r0, rn... }; } -#endif -#ifndef BOOST_URL_DOCS namespace implementation_defined { template @@ -223,7 +160,6 @@ struct squelch_rule_t }; } // implementation_defined -#endif /** Squelch the value of a rule @@ -273,10 +209,10 @@ struct squelch_rule_t @ref pct_encoded_rule, @ref unreserved_chars. */ -template +template constexpr -BOOST_URL_IMPLEMENTATION_DEFINED(implementation_defined::squelch_rule_t) -squelch( Rule const& r ) noexcept +BOOST_URL_IMPLEMENTATION_DEFINED(implementation_defined::squelch_rule_t) +squelch( R const& r ) noexcept { return { r }; } diff --git a/include/boost/url/grammar/type_traits.hpp b/include/boost/url/grammar/type_traits.hpp index 6df51b796..ff2e7b5c3 100644 --- a/include/boost/url/grammar/type_traits.hpp +++ b/include/boost/url/grammar/type_traits.hpp @@ -18,7 +18,7 @@ namespace boost { namespace urls { namespace grammar { -namespace see_below +namespace implementation_defined { template struct is_rule : std::false_type {}; @@ -34,7 +34,7 @@ struct is_rule -using is_rule = BOOST_URL_SEE_BELOW(see_below::is_rule); +using is_rule = implementation_defined::is_rule; + +#ifdef BOOST_URL_HAS_CONCEPTS +/** Concept for a grammar Rule + + This concept is satisfied if `T` is a + valid grammar Rule + + A `Rule` defines an algorithm used to match an input + buffer of ASCII characters against a set of syntactical + specifications. + + Each rule represents either a terminal symbol or a + composition in the represented grammar. + + The library comes with a set of rules for productions + typically found in RFC documents. + Rules are not invoked directly; instead, rule variables are + used with overloads of @ref parse which provide a convenient, + uniform front end. + + @par Exemplar + + For best results, it is suggested that all constructors for + rules be marked `constexpr`. + + @code + struct Rule + { + struct value_type; + + constexpr Rule( Rule const& ) noexcept = default; + + auto parse( char const*& it, char const* end ) const -> result< value_type >; + }; + + // Declare a variable of type Rule for notational convenience + constexpr Rule rule{}; + @endcode + + @par Model + + @li @ref dec_octet_rule + @li @ref delim_rule + @li @ref not_empty_rule + @li @ref optional_rule + @li @ref range_rule + @li @ref token_rule + @li @ref tuple_rule + @li @ref unsigned_rule + @li @ref variant_rule + + @see + @ref parse, + @ref is_rule. + */ +template +concept Rule = + requires (T t, char const*& it, char const* end) + { + typename T::value_type; + { t.parse(it, end) } -> std::same_as>; + }; +#endif + } // grammar } // urls diff --git a/include/boost/url/grammar/variant_rule.hpp b/include/boost/url/grammar/variant_rule.hpp index 4a47d5b5c..afc9189df 100644 --- a/include/boost/url/grammar/variant_rule.hpp +++ b/include/boost/url/grammar/variant_rule.hpp @@ -19,60 +19,6 @@ namespace boost { namespace urls { namespace grammar { -/** Match one of a set of rules - - Each specified rule is tried in sequence. - When the first match occurs, the result - is stored and returned in the variant. If - no match occurs, an error is returned. - - @par Value Type - @code - using value_type = variant< typename Rules::value_type... >; - @endcode - - @par Example - Rules are used with the function @ref parse. - @code - // request-target = origin-form - // / absolute-form - // / authority-form - // / asterisk-form - - system::result< variant< url_view, url_view, authority_view, core::string_view > > rv = grammar::parse( - "/index.html?width=full", - variant_rule( - origin_form_rule, - absolute_uri_rule, - authority_rule, - delim_rule('*') ) ); - @endcode - - @par BNF - @code - variant = rule1 / rule2 / rule3... - @endcode - - @par Specification - @li 3.2. Alternatives (rfc5234) - @li 5.3. Request Target (rfc7230) - - @see - @ref absolute_uri_rule, - @ref authority_rule, - @ref delim_rule, - @ref parse, - @ref origin_form_rule, - @ref url_view. -*/ -#ifdef BOOST_URL_DOCS -template -constexpr -__implementation_defined__ -variant_rule( Rules... rn ) noexcept; -#else namespace implementation_defined { template< class R0, class... Rn> @@ -152,15 +98,14 @@ class variant_rule_t @ref url_view. */ template< - class R0, - class... Rn> + BOOST_URL_CONSTRAINT(Rule) R0, + BOOST_URL_CONSTRAINT(Rule)... Rn> constexpr auto variant_rule( R0 const& r0, Rn const&... rn) noexcept -> implementation_defined::variant_rule_t; -#endif } // grammar } // urls diff --git a/include/boost/url/ignore_case.hpp b/include/boost/url/ignore_case.hpp index ff5472bb1..bb5ccb0a9 100644 --- a/include/boost/url/ignore_case.hpp +++ b/include/boost/url/ignore_case.hpp @@ -15,11 +15,9 @@ namespace boost { namespace urls { -#ifndef BOOST_URL_DOCS -struct ignore_case_t -{ -}; -#endif +namespace implementation_defined { +struct ignore_case_t {}; +} /** Ignore case when comparing @@ -28,8 +26,8 @@ struct ignore_case_t @ref ignore_case_param to indicate that comparisons should be case-insensitive. */ -constexpr -BOOST_URL_IMPLEMENTATION_DEFINED(ignore_case_t) +BOOST_INLINE_CONSTEXPR +implementation_defined::ignore_case_t ignore_case{}; /** An optional parameter to determine case-sensitivity @@ -38,6 +36,9 @@ ignore_case{}; to allow the user to optionally indicate that comparisons should be case-insensitive when the value @ref ignore_case is passed. + + @see + @ref params_ref */ class ignore_case_param { @@ -73,22 +74,21 @@ class ignore_case_param indicates that comparisons should be case-insensitive. + The first parameter to this function + should be the variable + @ref ignore_case. + @par Example When @ref ignore_case is passed as an argument, this function ignores case when performing comparisons: @code - void f( ignore_case_param = {} ); + void f( ignore_case_param(ignore_case) ); @endcode */ constexpr ignore_case_param( - #ifdef BOOST_URL_DOCS - __implementation_defined__ - #else - ignore_case_t - #endif - ) noexcept + implementation_defined::ignore_case_t) noexcept : value_(true) { } diff --git a/include/boost/url/ipv4_address.hpp b/include/boost/url/ipv4_address.hpp index 06052fe11..b6703f3eb 100644 --- a/include/boost/url/ipv4_address.hpp +++ b/include/boost/url/ipv4_address.hpp @@ -130,8 +130,7 @@ class ipv4_address @par Exception Safety Exceptions thrown on invalid input. - @throw system_error - The input failed to parse correctly. + @throw system_error The input failed to parse correctly. @param s The string to parse. @@ -194,8 +193,7 @@ class ipv4_address */ template BOOST_URL_STRTOK_RETURN - to_string( - BOOST_URL_STRTOK_ARG(token)) const + to_string(StringToken&& token = {}) const { to_string_impl(token); return token.result(); diff --git a/include/boost/url/param.hpp b/include/boost/url/param.hpp index 6d1a28b1e..b9134cf5a 100644 --- a/include/boost/url/param.hpp +++ b/include/boost/url/param.hpp @@ -25,7 +25,7 @@ struct param_pct_view; struct param_view; #endif -/** The type of no_value +/** The type of @ref no_value */ struct no_value_t { @@ -324,15 +324,20 @@ struct param param& operator=(param_pct_view const& other); -#ifndef BOOST_URL_DOCS - // arrow support + /** Arrow support + + This operator returns the address of the + object so that it can be used in pointer + contexts. + + */ param const* operator->() const noexcept { return this; } - // aggregate construction + /// Aggregate construction param( core::string_view key, core::string_view value, @@ -344,7 +349,6 @@ struct param , has_value(has_value) { } -#endif private: param( @@ -357,7 +361,7 @@ struct param //------------------------------------------------ -/** A query parameter +/** A view of a query parameter Objects of this type represent a single key and value pair in a query string where a key @@ -558,15 +562,20 @@ struct param_view return { key, value, has_value }; } -#ifndef BOOST_URL_DOCS - // arrow support + /** Arrow support + + This operator returns the address of the + object so that it can be used in pointer + contexts. + + */ param_view const* operator->() const noexcept { return this; } - // aggregate construction + /// Aggregate construction param_view( core::string_view key_, core::string_view value_, @@ -578,7 +587,6 @@ struct param_view , has_value(has_value_) { } -#endif private: param_view( @@ -591,7 +599,7 @@ struct param_view //------------------------------------------------ -/** A query parameter +/** A view of a percent-encoded query parameter Objects of this type represent a single key and value pair in a query string where a key @@ -863,15 +871,20 @@ struct param_pct_view key, value, has_value); } -#ifndef BOOST_URL_DOCS - /// Arrow support + /** Arrow support + + This operator returns the address of the + object so that it can be used in pointer + contexts. + + */ param_pct_view const* operator->() const noexcept { return this; } - /// aggregate construction + /// Aggregate construction param_pct_view( pct_string_view key, pct_string_view value, @@ -883,7 +896,6 @@ struct param_pct_view , has_value(has_value) { } -#endif private: param_pct_view( diff --git a/include/boost/url/params_base.hpp b/include/boost/url/params_base.hpp index 5d9a166b9..326cba28b 100644 --- a/include/boost/url/params_base.hpp +++ b/include/boost/url/params_base.hpp @@ -85,42 +85,7 @@ class BOOST_URL_DECL params_base iterators with static storage duration or as long-lived objects. */ -#ifdef BOOST_URL_DOCS - using iterator = __see_below__; -#else - - /** A Bidirectional iterator to a query parameter - - Objects of this type allow iteration - through the parameters in the query. - Any percent-escapes in returned strings - are decoded first. - The values returned are read-only; - changes to parameters must be made - through the container instead, if the - container supports modification. - -
- - The strings produced when iterators are - dereferenced belong to the iterator and - become invalidated when that particular - iterator is incremented, decremented, - or destroyed. - - @note - - The implementation may use temporary, - recycled storage to store decoded - strings. These iterators are meant - to be used ephemerally. That is, for - short durations such as within a - function scope. Do not store - iterators with static storage - duration or as long-lived objects. - */ class iterator; -#endif /// @copydoc iterator using const_iterator = iterator; diff --git a/include/boost/url/params_encoded_view.hpp b/include/boost/url/params_encoded_view.hpp index c750c3070..69f57a6dc 100644 --- a/include/boost/url/params_encoded_view.hpp +++ b/include/boost/url/params_encoded_view.hpp @@ -229,30 +229,6 @@ class BOOST_URL_DECL params_encoded_view //-------------------------------------------- - /** Parse a string and return an encoded params view - - This function parses the string and returns the - corresponding params object if the string is valid, - otherwise returns an error. - - @par BNF - @code - query = *( pchar / "/" / "?" ) - @endcode - - @par Exception Safety - No-throw guarantee. - - @return A valid view on success, otherwise an - error code. - - @param s The string to parse - - @par Specification - - @see - @ref params_encoded_view. - */ friend BOOST_URL_DECL system::result diff --git a/include/boost/url/pct_string_view.hpp b/include/boost/url/pct_string_view.hpp index 524fcede0..bc8e688be 100644 --- a/include/boost/url/pct_string_view.hpp +++ b/include/boost/url/pct_string_view.hpp @@ -55,20 +55,6 @@ ref(pct_string_view& s) noexcept; Attempting construction from a string containing invalid or malformed percent escapes results in an exception. - - @par Operators - The following operators are supported between - @ref pct_string_view and any object that is - convertible to `core::string_view` - - @code - bool operator==( pct_string_view, pct_string_view ) noexcept; - bool operator!=( pct_string_view, pct_string_view ) noexcept; - bool operator<=( pct_string_view, pct_string_view ) noexcept; - bool operator< ( pct_string_view, pct_string_view ) noexcept; - bool operator> ( pct_string_view, pct_string_view ) noexcept; - bool operator>=( pct_string_view, pct_string_view ) noexcept; - @endcode */ class pct_string_view final : public grammar::string_view_base @@ -164,7 +150,7 @@ class pct_string_view final @param s The string to construct from. */ template< - class String + BOOST_URL_CONSTRAINT(std::convertible_to) String #ifndef BOOST_URL_DOCS , class = typename std::enable_if< std::is_convertible< @@ -205,7 +191,8 @@ class pct_string_view final @throw system_error The string contains an invalid percent encoding. - @param s, len The string to construct from. + @param s The string to construct from. + @param len The length of the string. */ pct_string_view( char const* s, @@ -263,25 +250,6 @@ class pct_string_view final pct_string_view& operator=( pct_string_view const& other) = default; - /** Return a valid percent-encoded string - - If `s` is a valid percent-encoded string, - the function returns the buffer as a valid - view which may be used to perform decoding - or measurements. - Otherwise the result contains an error code. - Upon success, the returned view references - the original character buffer; - Ownership is not transferred. - - @par Complexity - Linear in `s.size()`. - - @par Exception Safety - Throws nothing. - - @param s The string to validate. - */ friend BOOST_URL_DECL system::result diff --git a/include/boost/url/rfc/absolute_uri_rule.hpp b/include/boost/url/rfc/absolute_uri_rule.hpp index c325df537..1bc449877 100644 --- a/include/boost/url/rfc/absolute_uri_rule.hpp +++ b/include/boost/url/rfc/absolute_uri_rule.hpp @@ -17,41 +17,6 @@ namespace boost { namespace urls { -/** Rule for absolute-URI - - @par Value Type - @code - using value_type = url_view; - @endcode - - @par Example - Rules are used with the function @ref grammar::parse. - @code - system::result< url_view > rv = grammar::parse( "http://example.com/index.htm?id=1", absolute_uri_rule ); - @endcode - - @par BNF - @code - absolute-URI = scheme ":" hier-part [ "?" query ] - - hier-part = "//" authority path-abempty - / path-absolute - / path-rootless - / path-empty - @endcode - - @par Specification - @li 4.3. Absolute URI (rfc3986) - - @see - @ref grammar::parse, - @ref parse_absolute_uri, - @ref url_view. -*/ -#ifdef BOOST_URL_DOCS -constexpr __implementation_defined__ absolute_uri_rule; -#else namespace implementation_defined { struct absolute_uri_rule_t { @@ -99,8 +64,7 @@ struct absolute_uri_rule_t @ref parse_absolute_uri, @ref url_view. */ -constexpr implementation_defined::absolute_uri_rule_t absolute_uri_rule{}; -#endif +BOOST_INLINE_CONSTEXPR implementation_defined::absolute_uri_rule_t absolute_uri_rule{}; } // urls } // boost diff --git a/include/boost/url/rfc/origin_form_rule.hpp b/include/boost/url/rfc/origin_form_rule.hpp index 19be6ba90..ffedcd206 100644 --- a/include/boost/url/rfc/origin_form_rule.hpp +++ b/include/boost/url/rfc/origin_form_rule.hpp @@ -16,40 +16,7 @@ namespace boost { namespace urls { -/** Rule for origin-form - - This appears in the HTTP/1 request-line grammar. - - @par Value Type - @code - using value_type = url_view; - @endcode - - @par Example - Rules are used with the function @ref grammar::parse. - @code - system::result< url_view > rv = grammar::parse( "/index.htm?layout=mobile", origin_form_rule ); - @endcode - - @par BNF - @code - origin-form = absolute-path [ "?" query ] - - absolute-path = 1*( "/" segment ) - @endcode - - @par Specification - @li 5.3.1. origin-form (rfc7230) - - @see - @ref grammar::parse, - @ref parse_origin_form, - @ref url_view. -*/ -#ifdef BOOST_URL_DOCS -constexpr __implementation_defined__ origin_form_rule; -#else +namespace implementation_defined { struct origin_form_rule_t { using value_type = @@ -62,6 +29,7 @@ struct origin_form_rule_t char const* end ) const noexcept; }; +} /** Rule for origin-form @@ -94,8 +62,7 @@ struct origin_form_rule_t @ref parse_origin_form, @ref url_view. */ -constexpr origin_form_rule_t origin_form_rule{}; -#endif +BOOST_INLINE_CONSTEXPR implementation_defined::origin_form_rule_t origin_form_rule{}; } // urls } // boost diff --git a/include/boost/url/rfc/pct_encoded_rule.hpp b/include/boost/url/rfc/pct_encoded_rule.hpp index 85c0bde1b..f25794ec2 100644 --- a/include/boost/url/rfc/pct_encoded_rule.hpp +++ b/include/boost/url/rfc/pct_encoded_rule.hpp @@ -127,22 +127,21 @@ struct pct_encoded_rule_t @ref pchars, @ref pct_string_view. */ -template +template constexpr auto -pct_encoded_rule( - CharSet const& cs) noexcept -> - implementation_defined::pct_encoded_rule_t +pct_encoded_rule(CS const& cs) noexcept -> + implementation_defined::pct_encoded_rule_t { // If an error occurs here it means that // the value of your type does not meet // the requirements. Please check the // documentation! static_assert( - grammar::is_charset::value, + grammar::is_charset::value, "CharSet requirements not met"); - return implementation_defined::pct_encoded_rule_t(cs); + return implementation_defined::pct_encoded_rule_t(cs); } #endif diff --git a/include/boost/url/segments_encoded_ref.hpp b/include/boost/url/segments_encoded_ref.hpp index 83930c3f2..7f85e2a88 100644 --- a/include/boost/url/segments_encoded_ref.hpp +++ b/include/boost/url/segments_encoded_ref.hpp @@ -155,15 +155,14 @@ class segments_encoded_ref @param other The segments to assign. */ - /** @{ */ BOOST_URL_DECL segments_encoded_ref& operator=(segments_encoded_ref const& other); + /// @copydoc operator=(segments_encoded_ref const&) BOOST_URL_DECL segments_encoded_ref& operator=(segments_encoded_view const& other); - /** @} */ /** Assignment @@ -355,8 +354,8 @@ class segments_encoded_ref @throw system_error The range contains an invalid percent-encoding. - @param first, last The range of segments - to assign. + @param first The first element in the range. + @param last One past the last element in the range. */ template void @@ -498,8 +497,8 @@ class segments_encoded_ref the range is inserted. This may be equal to `end()`. - @param first, last The range of segments - to insert. + @param first The first element in the range to insert. + @param last One past the last element in the range to insert. */ template iterator @@ -618,7 +617,8 @@ class segments_encoded_ref @return An iterator to the new segment. - @param from, to The range of segments to replace. + @param from The first element in the range of segments to replace. + @param to One past the last element in the range of segments to replace. @param s The string to assign. */ @@ -663,7 +663,8 @@ class segments_encoded_ref segment inserted, or one past `to` if `init.size() == 0`. - @param from, to The range of segments to replace. + @param from The first element in the range of segments to replace. + @param to One past the last element in the range of segments to replace. @param init The list of segments to assign. */ @@ -708,9 +709,10 @@ class segments_encoded_ref segment inserted, or one past `to` if `init.size() == 0`. - @param from, to The range of segments to replace. - - @param first, last The range of segments to assign. + @param from The first element in the range of segments to replace. + @param to One past the last element in the range of segments to replace. + @param first The first element in the new range of segments. + @param last One past the last element in the new range of segments. */ template iterator @@ -763,7 +765,7 @@ class segments_encoded_ref @par Preconditions @code - not this->empty() + !this->empty() @endcode @par Exception Safety diff --git a/include/boost/url/segments_encoded_view.hpp b/include/boost/url/segments_encoded_view.hpp index de917c3a7..766ffc06b 100644 --- a/include/boost/url/segments_encoded_view.hpp +++ b/include/boost/url/segments_encoded_view.hpp @@ -228,32 +228,6 @@ class segments_encoded_view //-------------------------------------------- - /** Parse a string and return an encoded segment view - - This function parses the string and returns the - corresponding path object if the string is valid, - otherwise returns an error. - - @par BNF - @code - path = [ "/" ] segment *( "/" segment ) - @endcode - - @par Exception Safety - No-throw guarantee. - - @return A valid view on success, otherwise an - error code. - - @param s The string to parse - - @par Specification - @li 3.3. Path (rfc3986) - - @see - @ref segments_encoded_view. - */ BOOST_URL_DECL friend system::result diff --git a/include/boost/url/segments_ref.hpp b/include/boost/url/segments_ref.hpp index 52d395a4f..21ca96868 100644 --- a/include/boost/url/segments_ref.hpp +++ b/include/boost/url/segments_ref.hpp @@ -152,15 +152,14 @@ class segments_ref @param other The segments to assign. */ - /** @{ */ BOOST_URL_DECL segments_ref& operator=(segments_ref const& other); + /// @copydoc segments_ref::operator=(segments_ref const&) BOOST_URL_DECL segments_ref& operator=(segments_view const& other); - /** @} */ /** Assignment @@ -337,8 +336,8 @@ class segments_ref Strong guarantee. Calls to allocate may throw. - @param first, last The range of segments - to assign. + @param first The beginning of the range of segments to assign. + @param last The end of the range of segments to assign. */ template void @@ -464,8 +463,8 @@ class segments_ref the range is inserted. This may be equal to `end()`. - @param first, last The range of segments - to insert. + @param first The beginning of the range of segments to insert. + @param last The end of the range of segments to insert. */ template iterator @@ -516,8 +515,8 @@ class segments_ref @return An iterator to one past the removed range. - @param first, last The range of - segments to erase. + @param first The beginning of the range to remove. + @param last The end of the range to remove. */ BOOST_URL_DECL iterator @@ -577,7 +576,8 @@ class segments_ref @return An iterator to the new segment. - @param from, to The range of segments to replace. + @param from The beginning of the range of segments to replace. + @param to The end of the range of segments to replace. @param s The string to assign. */ @@ -617,7 +617,8 @@ class segments_ref segment inserted, or one past `to` if `init.size() == 0`. - @param from, to The range of segments to replace. + @param from The beginning of the range of segments to replace. + @param to The end of the range of segments to replace. @param init The list of segments to assign. */ @@ -657,9 +658,10 @@ class segments_ref segment inserted, or one past `to` if `init.size() == 0`. - @param from, to The range of segments to replace. - - @param first, last The range of segments to assign. + @param from The beginning of the range of segments to replace. + @param to The end of the range of segments to replace. + @param first The beginning of the range of segments to assign. + @param last The end of the range of segments to assign. */ template iterator diff --git a/include/boost/url/url.hpp b/include/boost/url/url.hpp index a8671140d..fbf08d6d7 100644 --- a/include/boost/url/url.hpp +++ b/include/boost/url/url.hpp @@ -388,7 +388,8 @@ class BOOST_URL_DECL url @par Exception Safety Throws nothing - @param v0, v1 The objects to swap + @param v0 The first object to swap + @param v1 The second object to swap @see @ref url::swap diff --git a/include/boost/url/url_base.hpp b/include/boost/url/url_base.hpp index 7c3f3c078..c5914863c 100644 --- a/include/boost/url/url_base.hpp +++ b/include/boost/url/url_base.hpp @@ -2785,97 +2785,6 @@ class BOOST_URL_DECL resolve( url_view_base const& ref); - /** Resolve a URL reference against a base URL - - This function attempts to resolve a URL - reference `ref` against the base URL `base` - in a manner similar to that of a web browser - resolving an anchor tag. - - The base URL must satisfy the URI - grammar. In other words, it must contain - a scheme. - - Relative references are only usable when - in the context of a base absolute URI. - This process of resolving a relative - reference within the context of - a base URI is defined in detail - in rfc3986 (see below). - - The resolution process works as if the - relative reference is appended to the base - URI and the result is normalized. - - Given the input base URL, this function - resolves the relative reference - as if performing the following steps: - - @li Ensure the base URI has at least a scheme - @li Normalizing the reference path - @li Merge base and reference paths - @li Normalize the merged path - - This function places the result of the - resolution into `dest`, which can be - any of the url containers that inherit - from @ref url_base. - - If an error occurs, the contents of - `dest` is unspecified and `ec` is set. - - @note Abnormal hrefs where the number of ".." - segments exceeds the number of segments in - the base path are handled by including the - unmatched ".." segments in the result, as described - in Errata 4547. - - @par Example - @code - url dest; - system::error_code ec; - - resolve("/one/two/three", "four", dest, ec); - assert( dest.str() == "/one/two/four" ); - - resolve("http://example.com/", "/one", dest, ec); - assert( dest.str() == "http://example.com/one" ); - - resolve("http://example.com/one", "/two", dest, ec); - assert( dest.str() == "http://example.com/two" ); - - resolve("http://a/b/c/d;p?q", "g#s", dest, ec); - assert( dest.str() == "http://a/b/c/g#s" ); - @endcode - - @par BNF - @code - absolute-URI = scheme ":" hier-part [ "?" query ] - @endcode - - @par Exception Safety - Basic guarantee. - Calls to allocate may throw. - - @return An empty @ref result upon success, - otherwise an error code if `!base.has_scheme()`. - - @param base The base URL to resolve against. - - @param ref The URL reference to resolve. - - @param dest The container where the result - is written, upon success. - - @par Specification - 5. Reference Resolution (rfc3986) - - @see - @ref url, - @ref url_view. - */ friend system::result resolve( diff --git a/include/boost/url/url_view_base.hpp b/include/boost/url/url_view_base.hpp index 917a1f9fb..9290097ca 100644 --- a/include/boost/url/url_view_base.hpp +++ b/include/boost/url/url_view_base.hpp @@ -210,8 +210,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 4.2. Relative Reference (rfc3986) + @li 4.2. Relative Reference (rfc3986) */ bool empty() const noexcept @@ -344,8 +343,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.1. Scheme (rfc3986) + @li 3.1. Scheme (rfc3986) @see @ref scheme, @@ -380,8 +378,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.1. Scheme (rfc3986) + @li 3.1. Scheme (rfc3986) @see @ref has_scheme, @@ -429,8 +426,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.1. Scheme (rfc3986) + @li 3.1. Scheme (rfc3986) @see @ref has_scheme, @@ -485,8 +481,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2. Authority (rfc3986) + @li 3.2. Authority (rfc3986) @see @ref authority, @@ -520,8 +515,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2. Authority (rfc3986) + @li 3.2. Authority (rfc3986) @see @ref encoded_authority, @@ -556,8 +550,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2. Authority (rfc3986) + @li 3.2. Authority (rfc3986) @see @ref authority, @@ -596,8 +589,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_password, @@ -638,8 +630,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_userinfo, @@ -695,8 +686,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_password, @@ -710,7 +700,7 @@ class BOOST_URL_DECL template BOOST_URL_STRTOK_RETURN userinfo( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -746,8 +736,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_password, @@ -792,8 +781,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_password, @@ -807,7 +795,7 @@ class BOOST_URL_DECL template BOOST_URL_STRTOK_RETURN user( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -844,8 +832,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_password, @@ -888,8 +875,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_password, @@ -903,7 +889,7 @@ class BOOST_URL_DECL template BOOST_URL_STRTOK_RETURN password( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -936,8 +922,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.1. User Information (rfc3986) + @li 3.2.1. User Information (rfc3986) @see @ref has_password, @@ -984,8 +969,7 @@ class BOOST_URL_DECL Throws nothing. @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ urls::host_type host_type() const noexcept @@ -1022,13 +1006,12 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ template BOOST_URL_STRTOK_RETURN host( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -1065,8 +1048,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ pct_string_view encoded_host() const noexcept; @@ -1117,13 +1099,12 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ template BOOST_URL_STRTOK_RETURN host_address( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -1179,8 +1160,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ pct_string_view encoded_host_address() const noexcept; @@ -1218,8 +1198,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ ipv4_address host_ipv4_address() const noexcept; @@ -1265,8 +1244,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ ipv6_address host_ipv6_address() const noexcept; @@ -1297,8 +1275,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ core::string_view host_ipvfuture() const noexcept; @@ -1332,13 +1309,12 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ template BOOST_URL_STRTOK_RETURN host_name( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -1377,8 +1353,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) + @li 3.2.2. Host (rfc3986) */ pct_string_view encoded_host_name() const noexcept; @@ -1414,13 +1389,12 @@ class BOOST_URL_DECL @endcode @par Specification - @li Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers + @li Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers */ template BOOST_URL_STRTOK_RETURN zone_id( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -1459,8 +1433,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers + @li Representing IPv6 Zone Identifiers in Address Literals and Uniform Resource Identifiers */ pct_string_view encoded_zone_id() const noexcept; @@ -1495,8 +1468,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.3. Port (rfc3986) + @li 3.2.3. Port (rfc3986) @see @ref encoded_host_and_port, @@ -1530,8 +1502,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.3. Port (rfc3986) + @li 3.2.3. Port (rfc3986) @see @ref encoded_host_and_port, @@ -1565,8 +1536,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.3. Port (rfc3986) + @li 3.2.3. Port (rfc3986) @see @ref encoded_host_and_port, @@ -1614,8 +1584,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.3. Path (rfc3986) + @li 3.3. Path (rfc3986) @see @ref encoded_path, @@ -1665,8 +1634,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.3. Path (rfc3986) + @li 3.3. Path (rfc3986) @see @ref is_path_absolute, @@ -1677,7 +1645,7 @@ class BOOST_URL_DECL template BOOST_URL_STRTOK_RETURN path( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -1719,8 +1687,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.3. Path (rfc3986) + @li 3.3. Path (rfc3986) @see @ref is_path_absolute, @@ -1758,8 +1725,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.3. Path (rfc3986) + @li 3.3. Path (rfc3986) @see @ref is_path_absolute, @@ -1808,8 +1774,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.3. Path (rfc3986) + @li 3.3. Path (rfc3986) @see @ref is_path_absolute, @@ -1853,10 +1818,8 @@ class BOOST_URL_DECL @endcode @par Specification - @li Query string (Wikipedia) + @li 3.4. Query (rfc3986) + @li Query string (Wikipedia) @see @ref encoded_params, @@ -1901,10 +1864,8 @@ class BOOST_URL_DECL @endcode @par Specification - @li Query string (Wikipedia) + @li 3.4. Query (rfc3986) + @li Query string (Wikipedia) @see @ref encoded_params, @@ -1915,7 +1876,7 @@ class BOOST_URL_DECL template BOOST_URL_STRTOK_RETURN query( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { // When interacting with the query as // an intact string, we do not treat @@ -1954,10 +1915,8 @@ class BOOST_URL_DECL @endcode @par Specification - @li Query string (Wikipedia) + @li 3.4. Query (rfc3986) + @li Query string (Wikipedia) @see @ref encoded_params, @@ -1998,10 +1957,8 @@ class BOOST_URL_DECL @endcode @par Specification - @li Query string (Wikipedia) + @li 3.4. Query (rfc3986) + @li Query string (Wikipedia) @see @ref encoded_params, @@ -2036,23 +1993,16 @@ class BOOST_URL_DECL @par Exception Safety Throws nothing. - @par Specification - @li 3.4. Query (rfc3986) - @par BNF @code query = *( pchar / "/" / "?" ) - query-param = key [ "=" value ] query-params = [ query-param ] *( "&" query-param ) @endcode @par Specification - @li Query string (Wikipedia) + @li 3.4. Query (rfc3986) + @li Query string (Wikipedia) @see @ref encoded_query, @@ -2095,8 +2045,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.5. Fragment (rfc3986) + @li 3.5. Fragment (rfc3986) @see @ref encoded_fragment, @@ -2153,8 +2102,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.5. Fragment (rfc3986) + @li 3.5. Fragment (rfc3986) @see @ref encoded_fragment, @@ -2163,7 +2111,7 @@ class BOOST_URL_DECL template BOOST_URL_STRTOK_RETURN fragment( - BOOST_URL_STRTOK_ARG(token)) const + StringToken&& token = {}) const { encoding_opts opt; opt.space_as_plus = false; @@ -2199,8 +2147,7 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.5. Fragment (rfc3986) + @li 3.5. Fragment (rfc3986) @see @ref fragment, @@ -2241,10 +2188,8 @@ class BOOST_URL_DECL @endcode @par Specification - @li 3.2.2. Host (rfc3986) - @li 3.2.3. Port (rfc3986) + @li 3.2.2. Host (rfc3986) + @li 3.2.3. Port (rfc3986) @see @ref has_port, @@ -2302,10 +2247,8 @@ class BOOST_URL_DECL Throws nothing. @par Specification - @li 3.3. Path (rfc3986) - @li 3.4. Query (rfc3986) + @li 3.3. Path (rfc3986) + @li 3.4. Query (rfc3986) @see @ref encoded_origin, @@ -2334,10 +2277,8 @@ class BOOST_URL_DECL Throws nothing. @par Specification - @li 3.3. Path (rfc3986) - @li 3.4. Query (rfc3986) + @li 3.3. Path (rfc3986) + @li 3.4. Query (rfc3986) @see @ref encoded_origin, @@ -2365,11 +2306,9 @@ class BOOST_URL_DECL Throws nothing. @par Specification - @li 6.2.2 Syntax-Based Normalization (rfc3986) + @li 6.2.2 Syntax-Based Normalization (rfc3986) - @return -1 if `*this < other`, 0 if - `this == other`, and 1 if `this > other`. + @return -1 if `*this < other`, 0 if `this == other`, and 1 if `this > other`. */ int compare(url_view_base const& other) const noexcept; @@ -2405,8 +2344,7 @@ class BOOST_URL_DECL @return `true` if `u0 == u1` @par Specification - @li 6.2.2 Syntax-Based Normalization (rfc3986) + @li 6.2.2 Syntax-Based Normalization (rfc3986) */ friend bool @@ -2448,8 +2386,7 @@ class BOOST_URL_DECL @return `true` if `u0 != u1` @par Specification - @li 6.2.2 Syntax-Based Normalization (rfc3986) + @li 6.2.2 Syntax-Based Normalization (rfc3986) */ friend bool @@ -2491,8 +2428,7 @@ class BOOST_URL_DECL @return `true` if `u0 < u1` @par Specification - @li 6.2.2 Syntax-Based Normalization (rfc3986) + @li 6.2.2 Syntax-Based Normalization (rfc3986) */ friend bool @@ -2534,8 +2470,7 @@ class BOOST_URL_DECL @return `true` if `u0 <= u1` @par Specification - @li 6.2.2 Syntax-Based Normalization (rfc3986) + @li 6.2.2 Syntax-Based Normalization (rfc3986) */ friend bool @@ -2577,8 +2512,7 @@ class BOOST_URL_DECL @return `true` if `u0 > u1` @par Specification - @li 6.2.2 Syntax-Based Normalization (rfc3986) + @li 6.2.2 Syntax-Based Normalization (rfc3986) */ friend bool @@ -2620,8 +2554,7 @@ class BOOST_URL_DECL @return `true` if `u0 >= u1` @par Specification - @li 6.2.2 Syntax-Based Normalization (rfc3986) + @li 6.2.2 Syntax-Based Normalization (rfc3986) */ friend bool diff --git a/src/grammar/detail/recycled.cpp b/src/grammar/detail/recycled.cpp index d499df027..4d522072c 100644 --- a/src/grammar/detail/recycled.cpp +++ b/src/grammar/detail/recycled.cpp @@ -56,7 +56,7 @@ struct all_reports static all_reports all_reports_; } // detail -namespace see_below { +namespace implementation_defined { void recycled_add_impl( std::size_t n) noexcept @@ -100,7 +100,7 @@ recycled_remove_impl( detail::all_reports_.count--; detail::all_reports_.bytes-=n; } -} // see_below +} // implementation_defined } // grammar } // urls } // boost diff --git a/src/rfc/origin_form_rule.cpp b/src/rfc/origin_form_rule.cpp index aff58f56b..125738a59 100644 --- a/src/rfc/origin_form_rule.cpp +++ b/src/rfc/origin_form_rule.cpp @@ -21,7 +21,7 @@ namespace boost { namespace urls { auto -origin_form_rule_t:: +implementation_defined::origin_form_rule_t:: parse( char const*& it, char const* end diff --git a/test/unit/grammar/recycled.cpp b/test/unit/grammar/recycled.cpp index 936c63ab6..e3a142afe 100644 --- a/test/unit/grammar/recycled.cpp +++ b/test/unit/grammar/recycled.cpp @@ -50,8 +50,8 @@ struct recycled_test // coverage { - see_below::recycled_add_impl(1); - see_below::recycled_remove_impl(1); + implementation_defined::recycled_add_impl(1); + implementation_defined::recycled_remove_impl(1); } } };