diff --git a/annotated.html b/annotated.html index 15abd9e01..961e216f5 100644 --- a/annotated.html +++ b/annotated.html @@ -105,20 +105,20 @@ $(function() {  Cbasic_mixed_numeralTest for mixed numeral  Cbasic_monetary_numeralTest for monetary numeral  Cbasic_noop"No-op" match - Cbasic_permutationTest for permutation - Cbasic_phone_numberTest for phone number - Cbasic_punct_cuTest for any punctuation code unit - Cbasic_roman_numeralTest for Roman numeral - Cbasic_scientific_numeralTest for scientific numeral - Cbasic_scoreTest for match score - Cbasic_sequenceTest for sequence - Cbasic_set - Cbasic_signed_numeralTest for signed numeral - Cbasic_space_cuTest for any space code unit - Cbasic_space_or_punct_cuTest for any space or punctuation code unit - Cbasic_stringTest for given string - Cbasic_string_branchTest for any string - Cbasic_testerBase template for all testers + Cbasic_parserBase template for all parsers + Cbasic_permutationTest for permutation + Cbasic_phone_numberTest for phone number + Cbasic_punct_cuTest for any punctuation code unit + Cbasic_roman_numeralTest for Roman numeral + Cbasic_scientific_numeralTest for scientific numeral + Cbasic_scoreTest for match score + Cbasic_sequenceTest for sequence + Cbasic_set + Cbasic_signed_numeralTest for signed numeral + Cbasic_space_cuTest for any space code unit + Cbasic_space_or_punct_cuTest for any space or punctuation code unit + Cbasic_stringTest for given string + Cbasic_string_branchTest for any string  Cbasic_timeTest for time  Cbasic_urlTest for URL  Cbasic_url_password_charTest for valid URL password character @@ -132,40 +132,40 @@ $(function() {  Chttp_cookie_parameterTest for HTTP cookie parameter (RFC2109)  Chttp_factor_more  Chttp_headerTest for HTTP header - Chttp_header_collectionCollection of HTTP headers - Chttp_languageTest for HTTP language (RFC1766) - Chttp_line_breakTest for HTTP line break (RFC2616: CRLF | LF) - Chttp_media_rangeTest for HTTP media range (RFC2616: media-range) - Chttp_media_typeTest for HTTP media type (RFC2616: media-type) - Chttp_parameterTest for HTTP parameter (RFC2616: parameter) - Chttp_protocolTest for HTTP protocol - Chttp_quoted_stringTest for HTTP quoted string (RFC2616: quoted-string) - Chttp_requestTest for HTTP request - Chttp_spaceTest for HTTP space (RFC2616: LWS) - Chttp_text_charTest for HTTP text character (RFC2616: TEXT) - Chttp_tokenTest for HTTP token (RFC2616: token - tolerates non-ASCII) - Chttp_urlTest for HTTP URL - Chttp_url_parameterTest for HTTP URL parameter - Chttp_url_pathTest for HTTP URL path segment - Chttp_url_path_segmentTest for HTTP URL path segment - Chttp_url_portTest for HTTP URL port - Chttp_url_serverTest for HTTP URL server - Chttp_valueTest for HTTP value (RFC2616: value) + Chttp_languageTest for HTTP language (RFC1766) + Chttp_line_breakTest for HTTP line break (RFC2616: CRLF | LF) + Chttp_media_rangeTest for HTTP media range (RFC2616: media-range) + Chttp_media_typeTest for HTTP media type (RFC2616: media-type) + Chttp_parameterTest for HTTP parameter (RFC2616: parameter) + Chttp_protocolTest for HTTP protocol + Chttp_quoted_stringTest for HTTP quoted string (RFC2616: quoted-string) + Chttp_requestTest for HTTP request + Chttp_spaceTest for HTTP space (RFC2616: LWS) + Chttp_text_charTest for HTTP text character (RFC2616: TEXT) + Chttp_tokenTest for HTTP token (RFC2616: token - tolerates non-ASCII) + Chttp_urlTest for HTTP URL + Chttp_url_parameterTest for HTTP URL parameter + Chttp_url_pathTest for HTTP URL path segment + Chttp_url_path_segmentTest for HTTP URL path segment + Chttp_url_portTest for HTTP URL port + Chttp_url_serverTest for HTTP URL server + Chttp_valueTest for HTTP value (RFC2616: value) + Chttp_value_collectionCollection of HTTP values  Chttp_weightTest for HTTP weight factor  Chttp_weighted_valueTest for HTTP weighted value - Csgml_any_cpTest for any SGML code point - Csgml_cpTest for specific SGML code point - Csgml_cp_setTest for any SGML code point from a given string of SGML code points - Csgml_dns_domain_charTest for valid DNS domain SGML character - Csgml_ipv6_scope_id_charTest for valid IPv6 address scope ID SGML character - Csgml_punct_cpTest for any SGML punctuation code point - Csgml_space_cpTest for any SGML space code point - Csgml_space_or_punct_cpTest for any SGML space or punctuation code point - Csgml_stringTest for SGML given string - Csgml_url_password_charTest for valid URL password SGML character - Csgml_url_path_charTest for valid URL path SGML character - Csgml_url_username_charTest for valid URL username SGML character - Ctester_collectionBase template for collection-holding testers + Cparser_collectionBase template for collection-holding parsers + Csgml_any_cpTest for any SGML code point + Csgml_cpTest for specific SGML code point + Csgml_cp_setTest for any SGML code point from a given string of SGML code points + Csgml_dns_domain_charTest for valid DNS domain SGML character + Csgml_ipv6_scope_id_charTest for valid IPv6 address scope ID SGML character + Csgml_punct_cpTest for any SGML punctuation code point + Csgml_space_cpTest for any SGML space code point + Csgml_space_or_punct_cpTest for any SGML space or punctuation code point + Csgml_stringTest for SGML given string + Csgml_url_password_charTest for valid URL password SGML character + Csgml_url_path_charTest for valid URL path SGML character + Csgml_url_username_charTest for valid URL username SGML character  Cbase64_decBase64 decoding session  Cbase64_encBase64 encoding session  Cerrno_errorStandard C runtime library error @@ -185,7 +185,7 @@ $(function() { diff --git a/base64_8hpp_source.html b/base64_8hpp_source.html index 6021e6fa1..09a9fb461 100644 --- a/base64_8hpp_source.html +++ b/base64_8hpp_source.html @@ -318,7 +318,7 @@ $(function() { diff --git a/classes.html b/classes.html index 56453f32c..ba572d3c4 100644 --- a/classes.html +++ b/classes.html @@ -73,11 +73,11 @@ $(function() {
Class Index
-
B | E | G | H | I | L | M | N | P | R | S | T | U | V
+
B | E | G | H | I | L | M | N | P | R | S | U | V
B
-
base64_dec (stdex)
base64_enc (stdex)
basic_angle (stdex::parser)
basic_any_cu (stdex::parser)
basic_bol (stdex::parser)
basic_branch (stdex::parser)
basic_chemical_formula (stdex::parser)
basic_cu (stdex::parser)
basic_cu_set (stdex::parser)
basic_date (stdex::parser)
basic_dns_domain_char (stdex::parser)
basic_dns_name (stdex::parser)
basic_email_address (stdex::parser)
basic_emoticon (stdex::parser)
basic_eol (stdex::parser)
basic_fraction (stdex::parser)
basic_integer (stdex::parser)
basic_integer10 (stdex::parser)
basic_integer10ts (stdex::parser)
basic_integer16 (stdex::parser)
basic_ipv4_address (stdex::parser)
basic_ipv6_address (stdex::parser)
basic_ipv6_scope_id_char (stdex::parser)
basic_iterations (stdex::parser)
basic_json_string (stdex::parser)
basic_mixed_numeral (stdex::parser)
basic_monetary_numeral (stdex::parser)
basic_noop (stdex::parser)
basic_permutation (stdex::parser)
basic_phone_number (stdex::parser)
basic_punct_cu (stdex::parser)
basic_roman_numeral (stdex::parser)
basic_scientific_numeral (stdex::parser)
basic_score (stdex::parser)
basic_sequence (stdex::parser)
basic_set (stdex::parser)
basic_signed_numeral (stdex::parser)
basic_space_cu (stdex::parser)
basic_space_or_punct_cu (stdex::parser)
basic_string (stdex::parser)
basic_string_branch (stdex::parser)
basic_tester (stdex::parser)
basic_time (stdex::parser)
basic_url (stdex::parser)
basic_url_password_char (stdex::parser)
basic_url_path (stdex::parser)
basic_url_path_char (stdex::parser)
basic_url_username_char (stdex::parser)
+
base64_dec (stdex)
base64_enc (stdex)
basic_angle (stdex::parser)
basic_any_cu (stdex::parser)
basic_bol (stdex::parser)
basic_branch (stdex::parser)
basic_chemical_formula (stdex::parser)
basic_cu (stdex::parser)
basic_cu_set (stdex::parser)
basic_date (stdex::parser)
basic_dns_domain_char (stdex::parser)
basic_dns_name (stdex::parser)
basic_email_address (stdex::parser)
basic_emoticon (stdex::parser)
basic_eol (stdex::parser)
basic_fraction (stdex::parser)
basic_integer (stdex::parser)
basic_integer10 (stdex::parser)
basic_integer10ts (stdex::parser)
basic_integer16 (stdex::parser)
basic_ipv4_address (stdex::parser)
basic_ipv6_address (stdex::parser)
basic_ipv6_scope_id_char (stdex::parser)
basic_iterations (stdex::parser)
basic_json_string (stdex::parser)
basic_mixed_numeral (stdex::parser)
basic_monetary_numeral (stdex::parser)
basic_noop (stdex::parser)
basic_parser (stdex::parser)
basic_permutation (stdex::parser)
basic_phone_number (stdex::parser)
basic_punct_cu (stdex::parser)
basic_roman_numeral (stdex::parser)
basic_scientific_numeral (stdex::parser)
basic_score (stdex::parser)
basic_sequence (stdex::parser)
basic_set (stdex::parser)
basic_signed_numeral (stdex::parser)
basic_space_cu (stdex::parser)
basic_space_or_punct_cu (stdex::parser)
basic_string (stdex::parser)
basic_string_branch (stdex::parser)
basic_time (stdex::parser)
basic_url (stdex::parser)
basic_url_password_char (stdex::parser)
basic_url_path (stdex::parser)
basic_url_path_char (stdex::parser)
basic_url_username_char (stdex::parser)
E
errno_error (stdex)
@@ -86,7 +86,7 @@ $(function() {
global_progress (stdex)
H
-
hex_dec (stdex)
hex_enc (stdex)
http_agent (stdex::parser)
http_any_type (stdex::parser)
http_asterisk (stdex::parser)
http_cookie (stdex::parser)
http_cookie_parameter (stdex::parser)
http_factor_more (stdex::parser)
http_header (stdex::parser)
http_header_collection (stdex::parser)
http_language (stdex::parser)
http_line_break (stdex::parser)
http_media_range (stdex::parser)
http_media_type (stdex::parser)
http_parameter (stdex::parser)
http_protocol (stdex::parser)
http_quoted_string (stdex::parser)
http_request (stdex::parser)
http_space (stdex::parser)
http_text_char (stdex::parser)
http_token (stdex::parser)
http_url (stdex::parser)
http_url_parameter (stdex::parser)
http_url_path (stdex::parser)
http_url_path_segment (stdex::parser)
http_url_port (stdex::parser)
http_url_server (stdex::parser)
http_value (stdex::parser)
http_weight (stdex::parser)
http_weighted_value (stdex::parser)
+
hex_dec (stdex)
hex_enc (stdex)
http_agent (stdex::parser)
http_any_type (stdex::parser)
http_asterisk (stdex::parser)
http_cookie (stdex::parser)
http_cookie_parameter (stdex::parser)
http_factor_more (stdex::parser)
http_header (stdex::parser)
http_language (stdex::parser)
http_line_break (stdex::parser)
http_media_range (stdex::parser)
http_media_type (stdex::parser)
http_parameter (stdex::parser)
http_protocol (stdex::parser)
http_quoted_string (stdex::parser)
http_request (stdex::parser)
http_space (stdex::parser)
http_text_char (stdex::parser)
http_token (stdex::parser)
http_url (stdex::parser)
http_url_parameter (stdex::parser)
http_url_path (stdex::parser)
http_url_path_segment (stdex::parser)
http_url_port (stdex::parser)
http_url_server (stdex::parser)
http_value (stdex::parser)
http_value_collection (stdex::parser)
http_weight (stdex::parser)
http_weighted_value (stdex::parser)
I
interval (stdex)
@@ -101,7 +101,7 @@ $(function() {
no_delete (stdex)
no_delete< T[]> (stdex)
P
-
progress (stdex)
+
parser_collection (stdex::parser)
progress (stdex)
R
record (stdex::idrec)
@@ -109,19 +109,16 @@ $(function() {
S
sgml_any_cp (stdex::parser)
sgml_cp (stdex::parser)
sgml_cp_set (stdex::parser)
sgml_dns_domain_char (stdex::parser)
sgml_ipv6_scope_id_char (stdex::parser)
sgml_punct_cp (stdex::parser)
sgml_space_cp (stdex::parser)
sgml_space_or_punct_cp (stdex::parser)
sgml_string (stdex::parser)
sgml_url_password_char (stdex::parser)
sgml_url_path_char (stdex::parser)
sgml_url_username_char (stdex::parser)
-
T
-
tester_collection (stdex::parser)
-
U
user_cancelled (stdex)
-
+
V
vector_queue (stdex)
diff --git a/classstdex_1_1base64__dec-members.html b/classstdex_1_1base64__dec-members.html index 5f418a527..95e68b532 100644 --- a/classstdex_1_1base64__dec-members.html +++ b/classstdex_1_1base64__dec-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1base64__dec.html b/classstdex_1_1base64__dec.html index 9632d40bb..83787e4e8 100644 --- a/classstdex_1_1base64__dec.html +++ b/classstdex_1_1base64__dec.html @@ -230,7 +230,7 @@ template<class _Ty , class _Ax , class _Tchr > diff --git a/classstdex_1_1base64__enc-members.html b/classstdex_1_1base64__enc-members.html index 30cc38c65..f6cefa0e9 100644 --- a/classstdex_1_1base64__enc-members.html +++ b/classstdex_1_1base64__enc-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1base64__enc.html b/classstdex_1_1base64__enc.html index 0cd80c1ac..dea04b096 100644 --- a/classstdex_1_1base64__enc.html +++ b/classstdex_1_1base64__enc.html @@ -235,7 +235,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classstdex_1_1errno__error-members.html b/classstdex_1_1errno__error-members.html index 5efbc20af..009418e44 100644 --- a/classstdex_1_1errno__error-members.html +++ b/classstdex_1_1errno__error-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/classstdex_1_1errno__error.html b/classstdex_1_1errno__error.html index 847027342..1db8af0fd 100644 --- a/classstdex_1_1errno__error.html +++ b/classstdex_1_1errno__error.html @@ -286,7 +286,7 @@ errno_t m_num diff --git a/classstdex_1_1global__progress-members.html b/classstdex_1_1global__progress-members.html index ea5f95b50..12c9b2181 100644 --- a/classstdex_1_1global__progress-members.html +++ b/classstdex_1_1global__progress-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classstdex_1_1global__progress.html b/classstdex_1_1global__progress.html index c600a1abe..64e614e06 100644 --- a/classstdex_1_1global__progress.html +++ b/classstdex_1_1global__progress.html @@ -561,7 +561,7 @@ template<class T > diff --git a/classstdex_1_1hex__dec-members.html b/classstdex_1_1hex__dec-members.html index c3a1e5b0f..d6b3fd01a 100644 --- a/classstdex_1_1hex__dec-members.html +++ b/classstdex_1_1hex__dec-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/classstdex_1_1hex__dec.html b/classstdex_1_1hex__dec.html index bf9a8395f..ae98ec6a8 100644 --- a/classstdex_1_1hex__dec.html +++ b/classstdex_1_1hex__dec.html @@ -221,7 +221,7 @@ template<class _Ty , class _Ax , class _Tchr > diff --git a/classstdex_1_1hex__enc-members.html b/classstdex_1_1hex__enc-members.html index 3a6a82e16..c7ee6b978 100644 --- a/classstdex_1_1hex__enc-members.html +++ b/classstdex_1_1hex__enc-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classstdex_1_1hex__enc.html b/classstdex_1_1hex__enc.html index f74341162..266ccd9d9 100644 --- a/classstdex_1_1hex__enc.html +++ b/classstdex_1_1hex__enc.html @@ -198,7 +198,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classstdex_1_1idrec_1_1record-members.html b/classstdex_1_1idrec_1_1record-members.html index 7f082204f..d687fb6c7 100644 --- a/classstdex_1_1idrec_1_1record-members.html +++ b/classstdex_1_1idrec_1_1record-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1idrec_1_1record.html b/classstdex_1_1idrec_1_1record.html index 8c2ed9cec..49bb72f20 100644 --- a/classstdex_1_1idrec_1_1record.html +++ b/classstdex_1_1idrec_1_1record.html @@ -380,7 +380,7 @@ template<class T , class T_ID , const T_ID ID, class T_SIZE , unsigned int AL diff --git a/classstdex_1_1lazy__progress-members.html b/classstdex_1_1lazy__progress-members.html index 587ba3211..1f1602a8e 100644 --- a/classstdex_1_1lazy__progress-members.html +++ b/classstdex_1_1lazy__progress-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1lazy__progress.html b/classstdex_1_1lazy__progress.html index 632ddd303..07da1d894 100644 --- a/classstdex_1_1lazy__progress.html +++ b/classstdex_1_1lazy__progress.html @@ -285,7 +285,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__angle-members.html b/classstdex_1_1parser_1_1basic__angle-members.html index fd456ff29..ff9d4eeff 100644 --- a/classstdex_1_1parser_1_1basic__angle-members.html +++ b/classstdex_1_1parser_1_1basic__angle-members.html @@ -80,26 +80,26 @@ $(function() {

This is the complete list of members for stdex::parser::basic_angle< T >, including all inherited members.

- - + + - + - + - + - + - +
basic_angle(const std::shared_ptr< basic_integer10< T > > &_degree, const std::shared_ptr< basic_tester< T > > &_degree_separator, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_tester< T > > &_minute_separator, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_tester< T > > &_second_separator, const std::shared_ptr< basic_tester< T > > &_decimal, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_angle(const std::shared_ptr< basic_integer10< T > > &_degree, const std::shared_ptr< basic_parser< T > > &_degree_separator, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_parser< T > > &_minute_separator, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_parser< T > > &_second_separator, const std::shared_ptr< basic_parser< T > > &_decimal, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
decimal (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >
degree (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >
degree_separator (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
minute (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >
minute_separator (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
second (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >
second_separator (defined in stdex::parser::basic_angle< T >)stdex::parser::basic_angle< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__angle.html b/classstdex_1_1parser_1_1basic__angle.html index 8fff9546b..cc0198030 100644 --- a/classstdex_1_1parser_1_1basic__angle.html +++ b/classstdex_1_1parser_1_1basic__angle.html @@ -92,72 +92,72 @@ Inheritance diagram for stdex::parser::basic_angle< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_angle (const std::shared_ptr< basic_integer10< T > > &_degree, const std::shared_ptr< basic_tester< T > > &_degree_separator, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_tester< T > > &_minute_separator, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_tester< T > > &_second_separator, const std::shared_ptr< basic_tester< T > > &_decimal, const std::locale &locale=std::locale())
 
basic_angle (const std::shared_ptr< basic_integer10< T > > &_degree, const std::shared_ptr< basic_parser< T > > &_degree_separator, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_parser< T > > &_minute_separator, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_parser< T > > &_second_separator, const std::shared_ptr< basic_parser< T > > &_decimal, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + + - - + + - - - - - - + + + + + - - + +

Public Attributes

std::shared_ptr< basic_integer10< T > > degree
 
-std::shared_ptr< basic_tester< T > > degree_separator
 
+std::shared_ptr< basic_parser< T > > degree_separator
 
std::shared_ptr< basic_integer10< T > > minute
 
-std::shared_ptr< basic_tester< T > > minute_separator
 
+std::shared_ptr< basic_parser< T > > minute_separator
 
std::shared_ptr< basic_integer10< T > > second
 
-std::shared_ptr< basic_tester< T > > second_separator
 
-std::shared_ptr< basic_tester< T > > decimal
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > second_separator
 
+std::shared_ptr< basic_parser< T > > decimal
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -188,7 +188,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -240,7 +240,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -250,7 +250,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__angle.png b/classstdex_1_1parser_1_1basic__angle.png index e512dc1f7..5ab2acb5c 100644 Binary files a/classstdex_1_1parser_1_1basic__angle.png and b/classstdex_1_1parser_1_1basic__angle.png differ diff --git a/classstdex_1_1parser_1_1basic__any__cu-members.html b/classstdex_1_1parser_1_1basic__any__cu-members.html index 9f91c232a..ff99b9b4f 100644 --- a/classstdex_1_1parser_1_1basic__any__cu-members.html +++ b/classstdex_1_1parser_1_1basic__any__cu-members.html @@ -80,18 +80,19 @@ $(function() {

This is the complete list of members for stdex::parser::basic_any_cu< T >, including all inherited members.

- - - - - - - - + + + + + + + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_any_cu< T >)stdex::parser::basic_any_cu< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_any_cu(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_any_cu< T >)stdex::parser::basic_any_cu< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_any_cu< T >)stdex::parser::basic_any_cu< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__any__cu.html b/classstdex_1_1parser_1_1basic__any__cu.html index 25d37ff11..ecc8e24d8 100644 --- a/classstdex_1_1parser_1_1basic__any__cu.html +++ b/classstdex_1_1parser_1_1basic__any__cu.html @@ -91,43 +91,46 @@ Inheritance diagram for stdex::parser::basic_any_cu< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
+ + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_any_cu (const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -181,7 +184,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -191,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__any__cu.png b/classstdex_1_1parser_1_1basic__any__cu.png index 7110be7a7..0f9bd0574 100644 Binary files a/classstdex_1_1parser_1_1basic__any__cu.png and b/classstdex_1_1parser_1_1basic__any__cu.png differ diff --git a/classstdex_1_1parser_1_1basic__bol-members.html b/classstdex_1_1parser_1_1basic__bol-members.html index 13e7bf3b9..618746856 100644 --- a/classstdex_1_1parser_1_1basic__bol-members.html +++ b/classstdex_1_1parser_1_1basic__bol-members.html @@ -81,19 +81,19 @@ $(function() {

This is the complete list of members for stdex::parser::basic_bol< T >, including all inherited members.

- - - + + + - + - - - + + +
basic_bol(bool invert=false) (defined in stdex::parser::basic_bol< T >)stdex::parser::basic_bol< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_invert (defined in stdex::parser::basic_bol< T >)stdex::parser::basic_bol< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_bol< T >)stdex::parser::basic_bol< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__bol.html b/classstdex_1_1parser_1_1basic__bol.html index 03b93b195..3847d06e7 100644 --- a/classstdex_1_1parser_1_1basic__bol.html +++ b/classstdex_1_1parser_1_1basic__bol.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_bol< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -103,41 +103,41 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -191,7 +191,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__bol.png b/classstdex_1_1parser_1_1basic__bol.png index e85a5e065..0d4608ce8 100644 Binary files a/classstdex_1_1parser_1_1basic__bol.png and b/classstdex_1_1parser_1_1basic__bol.png differ diff --git a/classstdex_1_1parser_1_1basic__branch-members.html b/classstdex_1_1parser_1_1basic__branch-members.html index 494f5f261..7f58a3b0e 100644 --- a/classstdex_1_1parser_1_1basic__branch-members.html +++ b/classstdex_1_1parser_1_1basic__branch-members.html @@ -81,25 +81,25 @@ $(function() {

This is the complete list of members for stdex::parser::basic_branch< T >, including all inherited members.

- - - + + + - + - - + + - - - - - - + + + + + +
basic_branch(const std::locale &locale) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inlineprotected
basic_branch(const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_branch(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_branch(const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_branch(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
hit_offset (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inlinevirtual
m_collection (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_collection (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
tester_collection(const std::locale &locale) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlineprotected
tester_collection(const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
tester_collection(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
parser_collection(const std::locale &locale) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlineprotected
parser_collection(const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
parser_collection(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__branch.html b/classstdex_1_1parser_1_1basic__branch.html index 64ca9678d..3f0e36e7a 100644 --- a/classstdex_1_1parser_1_1basic__branch.html +++ b/classstdex_1_1parser_1_1basic__branch.html @@ -93,82 +93,82 @@ Inheritance diagram for stdex::parser::basic_branch< T >:
-stdex::parser::tester_collection< T > -stdex::parser::basic_tester< T > -stdex::parser::basic_string_branch< T, T_tester > +stdex::parser::parser_collection< T > +stdex::parser::basic_parser< T > +stdex::parser::basic_string_branch< T, T_parser >
- - - - + + + + - - - - - - - - - - - + + + + + + + + + + - - + - - + - - - + + - +

Public Member Functions

basic_branch (const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_branch (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
basic_branch (const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_branch (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale())
 
tester_collection (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale())
 
parser_collection (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - + +

Public Attributes

size_t hit_offset
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Member Functions

 basic_branch (const std::locale &locale)
 
- Protected Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::locale &locale)
 
- Protected Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::locale &locale)
 
- - - - - - + + + + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::tester_collection< T >
-std::vector< std::shared_ptr< basic_tester< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::parser_collection< T >
+std::vector< std::shared_ptr< basic_parser< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -199,7 +199,7 @@ template<class T >
-

Reimplemented from stdex::parser::tester_collection< T >.

+

Reimplemented from stdex::parser::parser_collection< T >.

@@ -251,7 +251,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -261,7 +261,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__branch.png b/classstdex_1_1parser_1_1basic__branch.png index 181cf47d2..c4c1c1919 100644 Binary files a/classstdex_1_1parser_1_1basic__branch.png and b/classstdex_1_1parser_1_1basic__branch.png differ diff --git a/classstdex_1_1parser_1_1basic__chemical__formula-members.html b/classstdex_1_1parser_1_1basic__chemical__formula-members.html index e636ce971..8a0176f20 100644 --- a/classstdex_1_1parser_1_1basic__chemical__formula-members.html +++ b/classstdex_1_1parser_1_1basic__chemical__formula-members.html @@ -80,24 +80,24 @@ $(function() {

This is the complete list of members for stdex::parser::basic_chemical_formula< T >, including all inherited members.

- - + + - + - + - - - + + +
basic_chemical_formula(const std::shared_ptr< basic_tester< T > > &element, const std::shared_ptr< basic_tester< T > > &digit, const std::shared_ptr< basic_tester< T > > &sign, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_chemical_formula(const std::shared_ptr< basic_parser< T > > &element, const std::shared_ptr< basic_parser< T > > &digit, const std::shared_ptr< basic_parser< T > > &sign, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
has_charge (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >
has_digits (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >inlinevirtual
m_digit (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >protected
m_element (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_sign (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_chemical_formula< T >)stdex::parser::basic_chemical_formula< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__chemical__formula.html b/classstdex_1_1parser_1_1basic__chemical__formula.html index 51678bd13..bae1397f2 100644 --- a/classstdex_1_1parser_1_1basic__chemical__formula.html +++ b/classstdex_1_1parser_1_1basic__chemical__formula.html @@ -93,36 +93,36 @@ Inheritance diagram for stdex::parser::basic_chemical_formula< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_chemical_formula (const std::shared_ptr< basic_tester< T > > &element, const std::shared_ptr< basic_tester< T > > &digit, const std::shared_ptr< basic_tester< T > > &sign, const std::locale &locale=std::locale())
 
basic_chemical_formula (const std::shared_ptr< basic_parser< T > > &element, const std::shared_ptr< basic_parser< T > > &digit, const std::shared_ptr< basic_parser< T > > &sign, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -132,27 +132,27 @@ bool  - - + - - + +

Public Attributes

has_digits bool has_charge
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - - - - - + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_element
 
-std::shared_ptr< basic_tester< T > > m_digit
 
-std::shared_ptr< basic_tester< T > > m_sign
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_element
 
+std::shared_ptr< basic_parser< T > > m_digit
 
+std::shared_ptr< basic_parser< T > > m_sign
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -183,7 +183,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -235,7 +235,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -245,7 +245,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__chemical__formula.png b/classstdex_1_1parser_1_1basic__chemical__formula.png index 124122c7f..c6b6357ee 100644 Binary files a/classstdex_1_1parser_1_1basic__chemical__formula.png and b/classstdex_1_1parser_1_1basic__chemical__formula.png differ diff --git a/classstdex_1_1parser_1_1basic__cu-members.html b/classstdex_1_1parser_1_1basic__cu-members.html index d07525b5c..549fdedfa 100644 --- a/classstdex_1_1parser_1_1basic__cu-members.html +++ b/classstdex_1_1parser_1_1basic__cu-members.html @@ -81,20 +81,20 @@ $(function() {

This is the complete list of members for stdex::parser::basic_cu< T >, including all inherited members.

- - - + + + - + - - - + + +
basic_cu(T chr, bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_cu< T >)stdex::parser::basic_cu< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_chr (defined in stdex::parser::basic_cu< T >)stdex::parser::basic_cu< T >protected
m_invert (defined in stdex::parser::basic_cu< T >)stdex::parser::basic_cu< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_cu< T >)stdex::parser::basic_cu< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__cu.html b/classstdex_1_1parser_1_1basic__cu.html index bd00d5720..e7acd890e 100644 --- a/classstdex_1_1parser_1_1basic__cu.html +++ b/classstdex_1_1parser_1_1basic__cu.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_cu< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -103,23 +103,23 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -129,18 +129,18 @@ T  - - - + + +

Protected Attributes

m_chr
bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -194,7 +194,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -204,7 +204,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__cu.png b/classstdex_1_1parser_1_1basic__cu.png index 6dc86f687..9b0e44bbf 100644 Binary files a/classstdex_1_1parser_1_1basic__cu.png and b/classstdex_1_1parser_1_1basic__cu.png differ diff --git a/classstdex_1_1parser_1_1basic__cu__set-members.html b/classstdex_1_1parser_1_1basic__cu__set-members.html index b0d96c8e7..26bc2a2b9 100644 --- a/classstdex_1_1parser_1_1basic__cu__set-members.html +++ b/classstdex_1_1parser_1_1basic__cu__set-members.html @@ -81,22 +81,22 @@ $(function() {

This is the complete list of members for stdex::parser::basic_cu_set< T >, including all inherited members.

- - + + - + - + - - - + + +
basic_cu_set(_In_reads_or_z_(count) const T *set, size_t count=(size_t) -1, bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_cu_set< T >)stdex::parser::basic_cu_set< T >inline
basic_set(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_set(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >inline
hit_offset (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >inlinevirtual
m_invert (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_set (defined in stdex::parser::basic_cu_set< T >)stdex::parser::basic_cu_set< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_cu_set< T >)stdex::parser::basic_cu_set< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__cu__set.html b/classstdex_1_1parser_1_1basic__cu__set.html index 4ced4df0e..a61105590 100644 --- a/classstdex_1_1parser_1_1basic__cu__set.html +++ b/classstdex_1_1parser_1_1basic__cu__set.html @@ -93,7 +93,7 @@ Inheritance diagram for stdex::parser::basic_cu_set< T >: stdex::parser::basic_set< T > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -112,23 +112,23 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -139,10 +139,10 @@ std::basic_string< T >  - - - + + +

Protected Attributes

bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
@@ -150,11 +150,11 @@ Additional Inherited Members - - + - - + +

Additional Inherited Members

size_t hit_offset
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -218,7 +218,7 @@ template<class T >
diff --git a/classstdex_1_1parser_1_1basic__cu__set.png b/classstdex_1_1parser_1_1basic__cu__set.png index 8d1105176..a61bbfd9c 100644 Binary files a/classstdex_1_1parser_1_1basic__cu__set.png and b/classstdex_1_1parser_1_1basic__cu__set.png differ diff --git a/classstdex_1_1parser_1_1basic__date-members.html b/classstdex_1_1parser_1_1basic__date-members.html index de9a4e58c..0d3bdb1af 100644 --- a/classstdex_1_1parser_1_1basic__date-members.html +++ b/classstdex_1_1parser_1_1basic__date-members.html @@ -80,28 +80,28 @@ $(function() {

This is the complete list of members for stdex::parser::basic_date< T >, including all inherited members.

- - + + - + - + - + - + - +
basic_date(int format_mask, const std::shared_ptr< basic_integer< T > > &_day, const std::shared_ptr< basic_integer< T > > &_month, const std::shared_ptr< basic_integer< T > > &_year, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_tester< T > > &space, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_date(int format_mask, const std::shared_ptr< basic_integer< T > > &_day, const std::shared_ptr< basic_integer< T > > &_month, const std::shared_ptr< basic_integer< T > > &_year, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_parser< T > > &space, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
day (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >
format enum name (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >
format (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >inlinevirtual
is_valid(size_t day, size_t month) (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >inlineprotectedstatic
m_format_mask (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_separator (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >protected
m_space (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
month (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
year (defined in stdex::parser::basic_date< T >)stdex::parser::basic_date< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__date.html b/classstdex_1_1parser_1_1basic__date.html index 9632f15f6..8c311ed3e 100644 --- a/classstdex_1_1parser_1_1basic__date.html +++ b/classstdex_1_1parser_1_1basic__date.html @@ -95,7 +95,7 @@ Inheritance diagram for stdex::parser::basic_date< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -116,30 +116,30 @@ Public Types
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_date (int format_mask, const std::shared_ptr< basic_integer< T > > &_day, const std::shared_ptr< basic_integer< T > > &_month, const std::shared_ptr< basic_integer< T > > &_year, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_tester< T > > &space, const std::locale &locale=std::locale())
 
basic_date (int format_mask, const std::shared_ptr< basic_integer< T > > &_day, const std::shared_ptr< basic_integer< T > > &_month, const std::shared_ptr< basic_integer< T > > &_year, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_parser< T > > &space, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -155,11 +155,11 @@ std::shared_ptr< - - + - - + +

Public Attributes

std::shared_ptr< basic_integer< T > > year
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
@@ -175,13 +175,13 @@ int  - - - - - + + + + +

Static Protected Member Functions

m_format_mask
std::shared_ptr< basic_set< T > > m_separator
 
-std::shared_ptr< basic_tester< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -212,7 +212,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -264,7 +264,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -274,7 +274,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__date.png b/classstdex_1_1parser_1_1basic__date.png index 164b0d0f8..1ef374ae0 100644 Binary files a/classstdex_1_1parser_1_1basic__date.png and b/classstdex_1_1parser_1_1basic__date.png differ diff --git a/classstdex_1_1parser_1_1basic__dns__domain__char-members.html b/classstdex_1_1parser_1_1basic__dns__domain__char-members.html index 679f439f3..3b2914017 100644 --- a/classstdex_1_1parser_1_1basic__dns__domain__char-members.html +++ b/classstdex_1_1parser_1_1basic__dns__domain__char-members.html @@ -82,19 +82,19 @@ $(function() { - - - + + + - + - - - + + +
allow_on_edgestdex::parser::basic_dns_domain_char< T >
basic_dns_domain_char(bool allow_idn, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_dns_domain_char< T >)stdex::parser::basic_dns_domain_char< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_allow_idn (defined in stdex::parser::basic_dns_domain_char< T >)stdex::parser::basic_dns_domain_char< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_dns_domain_char< T >)stdex::parser::basic_dns_domain_char< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__dns__domain__char.html b/classstdex_1_1parser_1_1basic__dns__domain__char.html index 95a7e5288..f7a57d2e3 100644 --- a/classstdex_1_1parser_1_1basic__dns__domain__char.html +++ b/classstdex_1_1parser_1_1basic__dns__domain__char.html @@ -93,7 +93,7 @@ Inheritance diagram for stdex::parser::basic_dns_domain_char< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -104,23 +104,23 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -128,21 +128,21 @@ Public Attributes bool  - - + - - + +

Public Attributes

allow_on_edge
 Is character allowed at the beginning or an end of a DNS domain?
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

bool m_allow_idn
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -196,7 +196,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -206,7 +206,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__dns__domain__char.png b/classstdex_1_1parser_1_1basic__dns__domain__char.png index fb6faaf69..2762da102 100644 Binary files a/classstdex_1_1parser_1_1basic__dns__domain__char.png and b/classstdex_1_1parser_1_1basic__dns__domain__char.png differ diff --git a/classstdex_1_1parser_1_1basic__dns__name-members.html b/classstdex_1_1parser_1_1basic__dns__name-members.html index ae1fe3de1..653769714 100644 --- a/classstdex_1_1parser_1_1basic__dns__name-members.html +++ b/classstdex_1_1parser_1_1basic__dns__name-members.html @@ -80,22 +80,22 @@ $(function() {

This is the complete list of members for stdex::parser::basic_dns_name< T >, including all inherited members.

- - - - + + + + - + - - - + + +
basic_dns_name(bool allow_absolute, const std::shared_ptr< basic_dns_domain_char< T > > &domain_char, const std::shared_ptr< basic_tester< T > > &separator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_dns_name< T >)stdex::parser::basic_dns_name< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_dns_name(bool allow_absolute, const std::shared_ptr< basic_dns_domain_char< T > > &domain_char, const std::shared_ptr< basic_parser< T > > &separator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_dns_name< T >)stdex::parser::basic_dns_name< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_allow_absolutestdex::parser::basic_dns_name< T >protected
m_domain_char (defined in stdex::parser::basic_dns_name< T >)stdex::parser::basic_dns_name< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_separator (defined in stdex::parser::basic_dns_name< T >)stdex::parser::basic_dns_name< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_dns_name< T >)stdex::parser::basic_dns_name< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__dns__name.html b/classstdex_1_1parser_1_1basic__dns__name.html index 38ba06469..7f27cbc80 100644 --- a/classstdex_1_1parser_1_1basic__dns__name.html +++ b/classstdex_1_1parser_1_1basic__dns__name.html @@ -92,34 +92,34 @@ Inheritance diagram for stdex::parser::basic_dns_name< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_dns_name (bool allow_absolute, const std::shared_ptr< basic_dns_domain_char< T > > &domain_char, const std::shared_ptr< basic_tester< T > > &separator, const std::locale &locale=std::locale())
 
basic_dns_name (bool allow_absolute, const std::shared_ptr< basic_dns_domain_char< T > > &domain_char, const std::shared_ptr< basic_parser< T > > &separator, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -130,21 +130,21 @@ bool  - - - - - + + + + +

Protected Attributes

m_allow_absolute<
std::shared_ptr< basic_dns_domain_char< T > > m_domain_char
 
-std::shared_ptr< basic_tester< T > > m_separator
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_separator
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -198,7 +198,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -208,7 +208,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__dns__name.png b/classstdex_1_1parser_1_1basic__dns__name.png index 9f0f93e96..a81a1d501 100644 Binary files a/classstdex_1_1parser_1_1basic__dns__name.png and b/classstdex_1_1parser_1_1basic__dns__name.png differ diff --git a/classstdex_1_1parser_1_1basic__email__address-members.html b/classstdex_1_1parser_1_1basic__email__address-members.html index ff8f723ad..f873748f1 100644 --- a/classstdex_1_1parser_1_1basic__email__address-members.html +++ b/classstdex_1_1parser_1_1basic__email__address-members.html @@ -80,26 +80,26 @@ $(function() {

This is the complete list of members for stdex::parser::basic_email_address< T >, including all inherited members.

- - + + - + - + - - + + - +
basic_email_address(const std::shared_ptr< basic_tester< T > > &_username, const std::shared_ptr< basic_tester< T > > &at, const std::shared_ptr< basic_tester< T > > &ip_lbracket, const std::shared_ptr< basic_tester< T > > &ip_rbracket, const std::shared_ptr< basic_tester< T > > &_ipv4_host, const std::shared_ptr< basic_tester< T > > &_ipv6_host, const std::shared_ptr< basic_tester< T > > &_dns_host, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_email_address(const std::shared_ptr< basic_parser< T > > &_username, const std::shared_ptr< basic_parser< T > > &at, const std::shared_ptr< basic_parser< T > > &ip_lbracket, const std::shared_ptr< basic_parser< T > > &ip_rbracket, const std::shared_ptr< basic_parser< T > > &_ipv4_host, const std::shared_ptr< basic_parser< T > > &_ipv6_host, const std::shared_ptr< basic_parser< T > > &_dns_host, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
dns_host (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >inlinevirtual
ipv4_host (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >
ipv6_host (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >
m_at (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >protected
m_ip_lbracket (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >protected
m_ip_rbracket (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
username (defined in stdex::parser::basic_email_address< T >)stdex::parser::basic_email_address< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__email__address.html b/classstdex_1_1parser_1_1basic__email__address.html index b7a36b71a..58aaf1d69 100644 --- a/classstdex_1_1parser_1_1basic__email__address.html +++ b/classstdex_1_1parser_1_1basic__email__address.html @@ -93,72 +93,72 @@ Inheritance diagram for stdex::parser::basic_email_address< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_email_address (const std::shared_ptr< basic_tester< T > > &_username, const std::shared_ptr< basic_tester< T > > &at, const std::shared_ptr< basic_tester< T > > &ip_lbracket, const std::shared_ptr< basic_tester< T > > &ip_rbracket, const std::shared_ptr< basic_tester< T > > &_ipv4_host, const std::shared_ptr< basic_tester< T > > &_ipv6_host, const std::shared_ptr< basic_tester< T > > &_dns_host, const std::locale &locale=std::locale())
 
basic_email_address (const std::shared_ptr< basic_parser< T > > &_username, const std::shared_ptr< basic_parser< T > > &at, const std::shared_ptr< basic_parser< T > > &ip_lbracket, const std::shared_ptr< basic_parser< T > > &ip_rbracket, const std::shared_ptr< basic_parser< T > > &_ipv4_host, const std::shared_ptr< basic_parser< T > > &_ipv6_host, const std::shared_ptr< basic_parser< T > > &_dns_host, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - + + + + + + + + + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > username
 
-std::shared_ptr< basic_tester< T > > ipv4_host
 
-std::shared_ptr< basic_tester< T > > ipv6_host
 
-std::shared_ptr< basic_tester< T > > dns_host
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > username
 
+std::shared_ptr< basic_parser< T > > ipv4_host
 
+std::shared_ptr< basic_parser< T > > ipv6_host
 
+std::shared_ptr< basic_parser< T > > dns_host
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - - - - - + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_at
 
-std::shared_ptr< basic_tester< T > > m_ip_lbracket
 
-std::shared_ptr< basic_tester< T > > m_ip_rbracket
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_at
 
+std::shared_ptr< basic_parser< T > > m_ip_lbracket
 
+std::shared_ptr< basic_parser< T > > m_ip_rbracket
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -189,7 +189,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -241,7 +241,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -251,7 +251,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__email__address.png b/classstdex_1_1parser_1_1basic__email__address.png index a6dc8378d..e543eee7a 100644 Binary files a/classstdex_1_1parser_1_1basic__email__address.png and b/classstdex_1_1parser_1_1basic__email__address.png differ diff --git a/classstdex_1_1parser_1_1basic__emoticon-members.html b/classstdex_1_1parser_1_1basic__emoticon-members.html index 406b8aa18..6a751d0a7 100644 --- a/classstdex_1_1parser_1_1basic__emoticon-members.html +++ b/classstdex_1_1parser_1_1basic__emoticon-members.html @@ -80,24 +80,24 @@ $(function() {

This is the complete list of members for stdex::parser::basic_emoticon< T >, including all inherited members.

- - - - - - + + + + + + - + - + - - - + + +
apexstdex::parser::basic_emoticon< T >
basic_emoticon(const std::shared_ptr< basic_tester< T > > &_emoticon, const std::shared_ptr< basic_tester< T > > &_apex, const std::shared_ptr< basic_tester< T > > &_eyes, const std::shared_ptr< basic_tester< T > > &_nose, const std::shared_ptr< basic_set< T > > &_mouth, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_emoticon< T >)stdex::parser::basic_emoticon< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
emoticonstdex::parser::basic_emoticon< T >
eyesstdex::parser::basic_emoticon< T >
intervalstdex::parser::basic_tester< T >
apexstdex::parser::basic_emoticon< T >
basic_emoticon(const std::shared_ptr< basic_parser< T > > &_emoticon, const std::shared_ptr< basic_parser< T > > &_apex, const std::shared_ptr< basic_parser< T > > &_eyes, const std::shared_ptr< basic_parser< T > > &_nose, const std::shared_ptr< basic_set< T > > &_mouth, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_emoticon< T >)stdex::parser::basic_emoticon< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
emoticonstdex::parser::basic_emoticon< T >
eyesstdex::parser::basic_emoticon< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_emoticon< T >)stdex::parser::basic_emoticon< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_emoticon< T >)stdex::parser::basic_emoticon< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
mouthstdex::parser::basic_emoticon< T >
nosestdex::parser::basic_emoticon< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
nosestdex::parser::basic_emoticon< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__emoticon.html b/classstdex_1_1parser_1_1basic__emoticon.html index 82ebb3ae3..c79fad5c4 100644 --- a/classstdex_1_1parser_1_1basic__emoticon.html +++ b/classstdex_1_1parser_1_1basic__emoticon.html @@ -92,71 +92,71 @@ Inheritance diagram for stdex::parser::basic_emoticon< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_emoticon (const std::shared_ptr< basic_tester< T > > &_emoticon, const std::shared_ptr< basic_tester< T > > &_apex, const std::shared_ptr< basic_tester< T > > &_eyes, const std::shared_ptr< basic_tester< T > > &_nose, const std::shared_ptr< basic_set< T > > &_mouth, const std::locale &locale=std::locale())
 
basic_emoticon (const std::shared_ptr< basic_parser< T > > &_emoticon, const std::shared_ptr< basic_parser< T > > &_apex, const std::shared_ptr< basic_parser< T > > &_eyes, const std::shared_ptr< basic_parser< T > > &_nose, const std::shared_ptr< basic_set< T > > &_mouth, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - + + + + + + + + + + + + - - + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > emoticon
 emoticon as a whole (e.g. 😀, 🤔, 😶)
 
-std::shared_ptr< basic_tester< T > > apex
 apex/eyebrows/halo (e.g. O, 0)
 
-std::shared_ptr< basic_tester< T > > eyes
 eyes (e.g. :, ;, >, |, B)
 
-std::shared_ptr< basic_tester< T > > nose
 nose (e.g. -, o)
 
+std::shared_ptr< basic_parser< T > > emoticon
 emoticon as a whole (e.g. 😀, 🤔, 😶)
 
+std::shared_ptr< basic_parser< T > > apex
 apex/eyebrows/halo (e.g. O, 0)
 
+std::shared_ptr< basic_parser< T > > eyes
 eyes (e.g. :, ;, >, |, B)
 
+std::shared_ptr< basic_parser< T > > nose
 nose (e.g. -, o)
 
std::shared_ptr< basic_set< T > > mouth
 mouth (e.g. ), ), (, (, |, P, D, p, d)
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -187,7 +187,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -239,7 +239,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -249,7 +249,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__emoticon.png b/classstdex_1_1parser_1_1basic__emoticon.png index 420ef04ae..41d50ff8b 100644 Binary files a/classstdex_1_1parser_1_1basic__emoticon.png and b/classstdex_1_1parser_1_1basic__emoticon.png differ diff --git a/classstdex_1_1parser_1_1basic__eol-members.html b/classstdex_1_1parser_1_1basic__eol-members.html index fab2d1615..7e06512a2 100644 --- a/classstdex_1_1parser_1_1basic__eol-members.html +++ b/classstdex_1_1parser_1_1basic__eol-members.html @@ -81,19 +81,19 @@ $(function() {

This is the complete list of members for stdex::parser::basic_eol< T >, including all inherited members.

- - - + + + - + - - - + + +
basic_eol(bool invert=false) (defined in stdex::parser::basic_eol< T >)stdex::parser::basic_eol< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_invert (defined in stdex::parser::basic_eol< T >)stdex::parser::basic_eol< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_eol< T >)stdex::parser::basic_eol< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__eol.html b/classstdex_1_1parser_1_1basic__eol.html index f3ae34831..7ae7f8a0b 100644 --- a/classstdex_1_1parser_1_1basic__eol.html +++ b/classstdex_1_1parser_1_1basic__eol.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_eol< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -103,41 +103,41 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -191,7 +191,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__eol.png b/classstdex_1_1parser_1_1basic__eol.png index e3a7295e6..0f593179d 100644 Binary files a/classstdex_1_1parser_1_1basic__eol.png and b/classstdex_1_1parser_1_1basic__eol.png differ diff --git a/classstdex_1_1parser_1_1basic__fraction-members.html b/classstdex_1_1parser_1_1basic__fraction-members.html index 56922265a..d810ec0f5 100644 --- a/classstdex_1_1parser_1_1basic__fraction-members.html +++ b/classstdex_1_1parser_1_1basic__fraction-members.html @@ -80,22 +80,22 @@ $(function() {

This is the complete list of members for stdex::parser::basic_fraction< T >, including all inherited members.

- - + + - + - + - + - - + +
basic_fraction(const std::shared_ptr< basic_tester< T > > &_numerator, const std::shared_ptr< basic_tester< T > > &_fraction_line, const std::shared_ptr< basic_tester< T > > &_denominator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_fraction< T >)stdex::parser::basic_fraction< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_fraction(const std::shared_ptr< basic_parser< T > > &_numerator, const std::shared_ptr< basic_parser< T > > &_fraction_line, const std::shared_ptr< basic_parser< T > > &_denominator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_fraction< T >)stdex::parser::basic_fraction< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
denominator (defined in stdex::parser::basic_fraction< T >)stdex::parser::basic_fraction< T >
fraction_line (defined in stdex::parser::basic_fraction< T >)stdex::parser::basic_fraction< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_fraction< T >)stdex::parser::basic_fraction< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_fraction< T >)stdex::parser::basic_fraction< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
numerator (defined in stdex::parser::basic_fraction< T >)stdex::parser::basic_fraction< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__fraction.html b/classstdex_1_1parser_1_1basic__fraction.html index a25662a1e..f091340e0 100644 --- a/classstdex_1_1parser_1_1basic__fraction.html +++ b/classstdex_1_1parser_1_1basic__fraction.html @@ -92,60 +92,60 @@ Inheritance diagram for stdex::parser::basic_fraction< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_fraction (const std::shared_ptr< basic_tester< T > > &_numerator, const std::shared_ptr< basic_tester< T > > &_fraction_line, const std::shared_ptr< basic_tester< T > > &_denominator, const std::locale &locale=std::locale())
 
basic_fraction (const std::shared_ptr< basic_parser< T > > &_numerator, const std::shared_ptr< basic_parser< T > > &_fraction_line, const std::shared_ptr< basic_parser< T > > &_denominator, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - + + + + + + + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > numerator
 
-std::shared_ptr< basic_tester< T > > fraction_line
 
-std::shared_ptr< basic_tester< T > > denominator
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > numerator
 
+std::shared_ptr< basic_parser< T > > fraction_line
 
+std::shared_ptr< basic_parser< T > > denominator
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -176,7 +176,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -228,7 +228,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -238,7 +238,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__fraction.png b/classstdex_1_1parser_1_1basic__fraction.png index cbe4e7475..c3afbd291 100644 Binary files a/classstdex_1_1parser_1_1basic__fraction.png and b/classstdex_1_1parser_1_1basic__fraction.png differ diff --git a/classstdex_1_1parser_1_1basic__integer-members.html b/classstdex_1_1parser_1_1basic__integer-members.html index 3175149c8..8ca9d7c0b 100644 --- a/classstdex_1_1parser_1_1basic__integer-members.html +++ b/classstdex_1_1parser_1_1basic__integer-members.html @@ -81,19 +81,19 @@ $(function() {

This is the complete list of members for stdex::parser::basic_integer< T >, including all inherited members.

- - + + - - - - + + + + - +
basic_integer(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_integer< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__integer.html b/classstdex_1_1parser_1_1basic__integer.html index 22f0458c1..317ddae78 100644 --- a/classstdex_1_1parser_1_1basic__integer.html +++ b/classstdex_1_1parser_1_1basic__integer.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_integer< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > stdex::parser::basic_integer10< T > stdex::parser::basic_integer10ts< T > stdex::parser::basic_integer16< T > @@ -107,23 +107,23 @@ Public Member Functions   virtual void invalidate ()   -- Public Member Functions inherited from stdex::parser::basic_tester< T > -basic_tester (const std::locale &locale=std::locale()) -  - +- Public Member Functions inherited from stdex::parser::basic_parser< T > +basic_parser (const std::locale &locale=std::locale()) +  + bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) -  - +  + virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 -  - +  + template<class _Traits , class _Ax > -bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) -  - +bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) +  + virtual void invalidate () -  +  @@ -131,18 +131,18 @@ Public Attributes size_t  - - + - - + +

Public Attributes

value
 Calculated value of the numeral.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -173,7 +173,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -183,7 +183,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer.png b/classstdex_1_1parser_1_1basic__integer.png index 1d1126cb0..4450c4eea 100644 Binary files a/classstdex_1_1parser_1_1basic__integer.png and b/classstdex_1_1parser_1_1basic__integer.png differ diff --git a/classstdex_1_1parser_1_1basic__integer10-members.html b/classstdex_1_1parser_1_1basic__integer10-members.html index f36c9871a..667100413 100644 --- a/classstdex_1_1parser_1_1basic__integer10-members.html +++ b/classstdex_1_1parser_1_1basic__integer10-members.html @@ -81,9 +81,9 @@ $(function() {

This is the complete list of members for stdex::parser::basic_integer10< T >, including all inherited members.

- - - + + + @@ -95,16 +95,16 @@ $(function() { - + - - + + - +
basic_integer(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inline
basic_integer10(const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
basic_integer10(const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inlinevirtual
m_digit_0 (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >protected
m_digit_1 (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >protected
m_digit_7 (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >protected
m_digit_8 (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >protected
m_digit_9 (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_integer10< T >)stdex::parser::basic_integer10< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_integer< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__integer10.html b/classstdex_1_1parser_1_1basic__integer10.html index c75162165..b4397a08f 100644 --- a/classstdex_1_1parser_1_1basic__integer10.html +++ b/classstdex_1_1parser_1_1basic__integer10.html @@ -93,15 +93,15 @@ Inheritance diagram for stdex::parser::basic_integer10< T >: stdex::parser::basic_integer< T > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > - - + + @@ -110,60 +110,60 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_integer10 (const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::locale &locale=std::locale())
 
basic_integer10 (const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_integer< T >
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_digit_0
 
-std::shared_ptr< basic_tester< T > > m_digit_1
 
-std::shared_ptr< basic_tester< T > > m_digit_2
 
-std::shared_ptr< basic_tester< T > > m_digit_3
 
-std::shared_ptr< basic_tester< T > > m_digit_4
 
-std::shared_ptr< basic_tester< T > > m_digit_5
 
-std::shared_ptr< basic_tester< T > > m_digit_6
 
-std::shared_ptr< basic_tester< T > > m_digit_7
 
-std::shared_ptr< basic_tester< T > > m_digit_8
 
-std::shared_ptr< basic_tester< T > > m_digit_9
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_digit_0
 
+std::shared_ptr< basic_parser< T > > m_digit_1
 
+std::shared_ptr< basic_parser< T > > m_digit_2
 
+std::shared_ptr< basic_parser< T > > m_digit_3
 
+std::shared_ptr< basic_parser< T > > m_digit_4
 
+std::shared_ptr< basic_parser< T > > m_digit_5
 
+std::shared_ptr< basic_parser< T > > m_digit_6
 
+std::shared_ptr< basic_parser< T > > m_digit_7
 
+std::shared_ptr< basic_parser< T > > m_digit_8
 
+std::shared_ptr< basic_parser< T > > m_digit_9
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
@@ -172,11 +172,11 @@ Additional Inherited Members size_t  - - + - - + +

Additional Inherited Members

value
 Calculated value of the numeral.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -230,7 +230,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -240,7 +240,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer10.png b/classstdex_1_1parser_1_1basic__integer10.png index a892a32e7..1ecbee94d 100644 Binary files a/classstdex_1_1parser_1_1basic__integer10.png and b/classstdex_1_1parser_1_1basic__integer10.png differ diff --git a/classstdex_1_1parser_1_1basic__integer10ts-members.html b/classstdex_1_1parser_1_1basic__integer10ts-members.html index d5748e7fe..109847a70 100644 --- a/classstdex_1_1parser_1_1basic__integer10ts-members.html +++ b/classstdex_1_1parser_1_1basic__integer10ts-members.html @@ -82,23 +82,23 @@ $(function() { - + - + - + - - + + - +
basic_integer(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inline
basic_integer10ts(const std::shared_ptr< basic_integer10< T > > &digits, const std::shared_ptr< basic_set< T > > &separator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer10ts< T >)stdex::parser::basic_integer10ts< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
digit_countstdex::parser::basic_integer10ts< T >
has_separatorsstdex::parser::basic_integer10ts< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_integer10ts< T >)stdex::parser::basic_integer10ts< T >inlinevirtual
m_digits (defined in stdex::parser::basic_integer10ts< T >)stdex::parser::basic_integer10ts< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_separator (defined in stdex::parser::basic_integer10ts< T >)stdex::parser::basic_integer10ts< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_integer10ts< T >)stdex::parser::basic_integer10ts< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_integer< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__integer10ts.html b/classstdex_1_1parser_1_1basic__integer10ts.html index bd76d88d0..b4b482f9d 100644 --- a/classstdex_1_1parser_1_1basic__integer10ts.html +++ b/classstdex_1_1parser_1_1basic__integer10ts.html @@ -94,7 +94,7 @@ Inheritance diagram for stdex::parser::basic_integer10ts< T >: stdex::parser::basic_integer< T > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -113,23 +113,23 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -146,11 +146,11 @@ bool  - - + - - + +

Public Attributes

has_separatorsvalue
 Calculated value of the numeral.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
@@ -160,10 +160,10 @@ std::shared_ptr< - - - + + +

Protected Attributes

std::shared_ptr< basic_set< T > > m_separator
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -246,7 +246,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -256,7 +256,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer10ts.png b/classstdex_1_1parser_1_1basic__integer10ts.png index cf7ed1de2..e3d3f98a0 100644 Binary files a/classstdex_1_1parser_1_1basic__integer10ts.png and b/classstdex_1_1parser_1_1basic__integer10ts.png differ diff --git a/classstdex_1_1parser_1_1basic__integer16-members.html b/classstdex_1_1parser_1_1basic__integer16-members.html index 0b77e251d..b9e6fffa7 100644 --- a/classstdex_1_1parser_1_1basic__integer16-members.html +++ b/classstdex_1_1parser_1_1basic__integer16-members.html @@ -81,9 +81,9 @@ $(function() {

This is the complete list of members for stdex::parser::basic_integer16< T >, including all inherited members.

- - - + + + @@ -101,16 +101,16 @@ $(function() { - + - - + + - +
basic_integer(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inline
basic_integer16(const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::shared_ptr< basic_tester< T > > &digit_10, const std::shared_ptr< basic_tester< T > > &digit_11, const std::shared_ptr< basic_tester< T > > &digit_12, const std::shared_ptr< basic_tester< T > > &digit_13, const std::shared_ptr< basic_tester< T > > &digit_14, const std::shared_ptr< basic_tester< T > > &digit_15, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
basic_integer16(const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::shared_ptr< basic_parser< T > > &digit_10, const std::shared_ptr< basic_parser< T > > &digit_11, const std::shared_ptr< basic_parser< T > > &digit_12, const std::shared_ptr< basic_parser< T > > &digit_13, const std::shared_ptr< basic_parser< T > > &digit_14, const std::shared_ptr< basic_parser< T > > &digit_15, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inlinevirtual
m_digit_0 (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >protected
m_digit_1 (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >protected
m_digit_7 (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >protected
m_digit_8 (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >protected
m_digit_9 (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_integer16< T >)stdex::parser::basic_integer16< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_integer< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__integer16.html b/classstdex_1_1parser_1_1basic__integer16.html index 02d584ca7..b62d10a3a 100644 --- a/classstdex_1_1parser_1_1basic__integer16.html +++ b/classstdex_1_1parser_1_1basic__integer16.html @@ -93,15 +93,15 @@ Inheritance diagram for stdex::parser::basic_integer16< T >: stdex::parser::basic_integer< T > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > - - + + @@ -110,78 +110,78 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_integer16 (const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::shared_ptr< basic_tester< T > > &digit_10, const std::shared_ptr< basic_tester< T > > &digit_11, const std::shared_ptr< basic_tester< T > > &digit_12, const std::shared_ptr< basic_tester< T > > &digit_13, const std::shared_ptr< basic_tester< T > > &digit_14, const std::shared_ptr< basic_tester< T > > &digit_15, const std::locale &locale=std::locale())
 
basic_integer16 (const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::shared_ptr< basic_parser< T > > &digit_10, const std::shared_ptr< basic_parser< T > > &digit_11, const std::shared_ptr< basic_parser< T > > &digit_12, const std::shared_ptr< basic_parser< T > > &digit_13, const std::shared_ptr< basic_parser< T > > &digit_14, const std::shared_ptr< basic_parser< T > > &digit_15, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_integer< T >
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_digit_0
 
-std::shared_ptr< basic_tester< T > > m_digit_1
 
-std::shared_ptr< basic_tester< T > > m_digit_2
 
-std::shared_ptr< basic_tester< T > > m_digit_3
 
-std::shared_ptr< basic_tester< T > > m_digit_4
 
-std::shared_ptr< basic_tester< T > > m_digit_5
 
-std::shared_ptr< basic_tester< T > > m_digit_6
 
-std::shared_ptr< basic_tester< T > > m_digit_7
 
-std::shared_ptr< basic_tester< T > > m_digit_8
 
-std::shared_ptr< basic_tester< T > > m_digit_9
 
-std::shared_ptr< basic_tester< T > > m_digit_10
 
-std::shared_ptr< basic_tester< T > > m_digit_11
 
-std::shared_ptr< basic_tester< T > > m_digit_12
 
-std::shared_ptr< basic_tester< T > > m_digit_13
 
-std::shared_ptr< basic_tester< T > > m_digit_14
 
-std::shared_ptr< basic_tester< T > > m_digit_15
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_digit_0
 
+std::shared_ptr< basic_parser< T > > m_digit_1
 
+std::shared_ptr< basic_parser< T > > m_digit_2
 
+std::shared_ptr< basic_parser< T > > m_digit_3
 
+std::shared_ptr< basic_parser< T > > m_digit_4
 
+std::shared_ptr< basic_parser< T > > m_digit_5
 
+std::shared_ptr< basic_parser< T > > m_digit_6
 
+std::shared_ptr< basic_parser< T > > m_digit_7
 
+std::shared_ptr< basic_parser< T > > m_digit_8
 
+std::shared_ptr< basic_parser< T > > m_digit_9
 
+std::shared_ptr< basic_parser< T > > m_digit_10
 
+std::shared_ptr< basic_parser< T > > m_digit_11
 
+std::shared_ptr< basic_parser< T > > m_digit_12
 
+std::shared_ptr< basic_parser< T > > m_digit_13
 
+std::shared_ptr< basic_parser< T > > m_digit_14
 
+std::shared_ptr< basic_parser< T > > m_digit_15
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
@@ -190,11 +190,11 @@ Additional Inherited Members size_t  - - + - - + +

Additional Inherited Members

value
 Calculated value of the numeral.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -248,7 +248,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -258,7 +258,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer16.png b/classstdex_1_1parser_1_1basic__integer16.png index e957f082f..ad82a6ad5 100644 Binary files a/classstdex_1_1parser_1_1basic__integer16.png and b/classstdex_1_1parser_1_1basic__integer16.png differ diff --git a/classstdex_1_1parser_1_1basic__ipv4__address-members.html b/classstdex_1_1parser_1_1basic__ipv4__address-members.html index 4423462eb..23acd66ea 100644 --- a/classstdex_1_1parser_1_1basic__ipv4__address-members.html +++ b/classstdex_1_1parser_1_1basic__ipv4__address-members.html @@ -80,10 +80,10 @@ $(function() {

This is the complete list of members for stdex::parser::basic_ipv4_address< T >, including all inherited members.

- - + + - + @@ -95,17 +95,17 @@ $(function() { - + - - + + - +
basic_ipv4_address(const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::shared_ptr< basic_tester< T > > &separator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_ipv4_address(const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::shared_ptr< basic_parser< T > > &separator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
componentsstdex::parser::basic_ipv4_address< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >inlinevirtual
m_digit_0 (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >protected
m_digit_1 (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >protected
m_digit_7 (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >protected
m_digit_8 (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >protected
m_digit_9 (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_separator (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_ipv4_address< T >)stdex::parser::basic_ipv4_address< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_ipv4_address< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__ipv4__address.html b/classstdex_1_1parser_1_1basic__ipv4__address.html index 1e2c47653..140399c75 100644 --- a/classstdex_1_1parser_1_1basic__ipv4__address.html +++ b/classstdex_1_1parser_1_1basic__ipv4__address.html @@ -93,36 +93,36 @@ Inheritance diagram for stdex::parser::basic_ipv4_address< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_ipv4_address (const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::shared_ptr< basic_tester< T > > &separator, const std::locale &locale=std::locale())
 
basic_ipv4_address (const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::shared_ptr< basic_parser< T > > &separator, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -134,51 +134,51 @@ Public Attributes struct in_addr  - - + - - + +

Public Attributes

value
 IPv4 address value.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_digit_0
 
-std::shared_ptr< basic_tester< T > > m_digit_1
 
-std::shared_ptr< basic_tester< T > > m_digit_2
 
-std::shared_ptr< basic_tester< T > > m_digit_3
 
-std::shared_ptr< basic_tester< T > > m_digit_4
 
-std::shared_ptr< basic_tester< T > > m_digit_5
 
-std::shared_ptr< basic_tester< T > > m_digit_6
 
-std::shared_ptr< basic_tester< T > > m_digit_7
 
-std::shared_ptr< basic_tester< T > > m_digit_8
 
-std::shared_ptr< basic_tester< T > > m_digit_9
 
-std::shared_ptr< basic_tester< T > > m_separator
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_digit_0
 
+std::shared_ptr< basic_parser< T > > m_digit_1
 
+std::shared_ptr< basic_parser< T > > m_digit_2
 
+std::shared_ptr< basic_parser< T > > m_digit_3
 
+std::shared_ptr< basic_parser< T > > m_digit_4
 
+std::shared_ptr< basic_parser< T > > m_digit_5
 
+std::shared_ptr< basic_parser< T > > m_digit_6
 
+std::shared_ptr< basic_parser< T > > m_digit_7
 
+std::shared_ptr< basic_parser< T > > m_digit_8
 
+std::shared_ptr< basic_parser< T > > m_digit_9
 
+std::shared_ptr< basic_parser< T > > m_separator
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -209,7 +209,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -261,7 +261,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -271,7 +271,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__ipv4__address.png b/classstdex_1_1parser_1_1basic__ipv4__address.png index f586f05e6..e3139aac6 100644 Binary files a/classstdex_1_1parser_1_1basic__ipv4__address.png and b/classstdex_1_1parser_1_1basic__ipv4__address.png differ diff --git a/classstdex_1_1parser_1_1basic__ipv6__address-members.html b/classstdex_1_1parser_1_1basic__ipv6__address-members.html index 764f68eec..39ff8a03f 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__address-members.html +++ b/classstdex_1_1parser_1_1basic__ipv6__address-members.html @@ -80,10 +80,10 @@ $(function() {

This is the complete list of members for stdex::parser::basic_ipv6_address< T >, including all inherited members.

- - + + - + @@ -101,19 +101,19 @@ $(function() { - + - - - + + + - +
basic_ipv6_address(const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::shared_ptr< basic_tester< T > > &digit_10, const std::shared_ptr< basic_tester< T > > &digit_11, const std::shared_ptr< basic_tester< T > > &digit_12, const std::shared_ptr< basic_tester< T > > &digit_13, const std::shared_ptr< basic_tester< T > > &digit_14, const std::shared_ptr< basic_tester< T > > &digit_15, const std::shared_ptr< basic_tester< T > > &separator, const std::shared_ptr< basic_tester< T > > &scope_id_separator=nullptr, const std::shared_ptr< basic_tester< T > > &_scope_id=nullptr, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_ipv6_address(const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::shared_ptr< basic_parser< T > > &digit_10, const std::shared_ptr< basic_parser< T > > &digit_11, const std::shared_ptr< basic_parser< T > > &digit_12, const std::shared_ptr< basic_parser< T > > &digit_13, const std::shared_ptr< basic_parser< T > > &digit_14, const std::shared_ptr< basic_parser< T > > &digit_15, const std::shared_ptr< basic_parser< T > > &separator, const std::shared_ptr< basic_parser< T > > &scope_id_separator=nullptr, const std::shared_ptr< basic_parser< T > > &_scope_id=nullptr, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
componentsstdex::parser::basic_ipv6_address< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >inlinevirtual
m_digit_0 (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >protected
m_digit_1 (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >protected
m_digit_7 (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >protected
m_digit_8 (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >protected
m_digit_9 (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_scope_id_separator (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >protected
m_separator (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_ipv6_address< T >)stdex::parser::basic_ipv6_address< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
scope_idstdex::parser::basic_ipv6_address< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
scope_idstdex::parser::basic_ipv6_address< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_ipv6_address< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__ipv6__address.html b/classstdex_1_1parser_1_1basic__ipv6__address.html index 1ad691557..97e7c689d 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__address.html +++ b/classstdex_1_1parser_1_1basic__ipv6__address.html @@ -93,36 +93,36 @@ Inheritance diagram for stdex::parser::basic_ipv6_address< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_ipv6_address (const std::shared_ptr< basic_tester< T > > &digit_0, const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_2, const std::shared_ptr< basic_tester< T > > &digit_3, const std::shared_ptr< basic_tester< T > > &digit_4, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_6, const std::shared_ptr< basic_tester< T > > &digit_7, const std::shared_ptr< basic_tester< T > > &digit_8, const std::shared_ptr< basic_tester< T > > &digit_9, const std::shared_ptr< basic_tester< T > > &digit_10, const std::shared_ptr< basic_tester< T > > &digit_11, const std::shared_ptr< basic_tester< T > > &digit_12, const std::shared_ptr< basic_tester< T > > &digit_13, const std::shared_ptr< basic_tester< T > > &digit_14, const std::shared_ptr< basic_tester< T > > &digit_15, const std::shared_ptr< basic_tester< T > > &separator, const std::shared_ptr< basic_tester< T > > &scope_id_separator=nullptr, const std::shared_ptr< basic_tester< T > > &_scope_id=nullptr, const std::locale &locale=std::locale())
 
basic_ipv6_address (const std::shared_ptr< basic_parser< T > > &digit_0, const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_2, const std::shared_ptr< basic_parser< T > > &digit_3, const std::shared_ptr< basic_parser< T > > &digit_4, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_6, const std::shared_ptr< basic_parser< T > > &digit_7, const std::shared_ptr< basic_parser< T > > &digit_8, const std::shared_ptr< basic_parser< T > > &digit_9, const std::shared_ptr< basic_parser< T > > &digit_10, const std::shared_ptr< basic_parser< T > > &digit_11, const std::shared_ptr< basic_parser< T > > &digit_12, const std::shared_ptr< basic_parser< T > > &digit_13, const std::shared_ptr< basic_parser< T > > &digit_14, const std::shared_ptr< basic_parser< T > > &digit_15, const std::shared_ptr< basic_parser< T > > &separator, const std::shared_ptr< basic_parser< T > > &scope_id_separator=nullptr, const std::shared_ptr< basic_parser< T > > &_scope_id=nullptr, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -134,76 +134,76 @@ Public Attributes struct in6_addr  - - - - - + + + + - - + +

Public Attributes

value
 IPv6 address value.
 
-std::shared_ptr< basic_tester< T > > scope_id
 Scope ID (e.g. NIC index with link-local addresses)
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > scope_id
 Scope ID (e.g. NIC index with link-local addresses)
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_digit_0
 
-std::shared_ptr< basic_tester< T > > m_digit_1
 
-std::shared_ptr< basic_tester< T > > m_digit_2
 
-std::shared_ptr< basic_tester< T > > m_digit_3
 
-std::shared_ptr< basic_tester< T > > m_digit_4
 
-std::shared_ptr< basic_tester< T > > m_digit_5
 
-std::shared_ptr< basic_tester< T > > m_digit_6
 
-std::shared_ptr< basic_tester< T > > m_digit_7
 
-std::shared_ptr< basic_tester< T > > m_digit_8
 
-std::shared_ptr< basic_tester< T > > m_digit_9
 
-std::shared_ptr< basic_tester< T > > m_digit_10
 
-std::shared_ptr< basic_tester< T > > m_digit_11
 
-std::shared_ptr< basic_tester< T > > m_digit_12
 
-std::shared_ptr< basic_tester< T > > m_digit_13
 
-std::shared_ptr< basic_tester< T > > m_digit_14
 
-std::shared_ptr< basic_tester< T > > m_digit_15
 
-std::shared_ptr< basic_tester< T > > m_separator
 
-std::shared_ptr< basic_tester< T > > m_scope_id_separator
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_digit_0
 
+std::shared_ptr< basic_parser< T > > m_digit_1
 
+std::shared_ptr< basic_parser< T > > m_digit_2
 
+std::shared_ptr< basic_parser< T > > m_digit_3
 
+std::shared_ptr< basic_parser< T > > m_digit_4
 
+std::shared_ptr< basic_parser< T > > m_digit_5
 
+std::shared_ptr< basic_parser< T > > m_digit_6
 
+std::shared_ptr< basic_parser< T > > m_digit_7
 
+std::shared_ptr< basic_parser< T > > m_digit_8
 
+std::shared_ptr< basic_parser< T > > m_digit_9
 
+std::shared_ptr< basic_parser< T > > m_digit_10
 
+std::shared_ptr< basic_parser< T > > m_digit_11
 
+std::shared_ptr< basic_parser< T > > m_digit_12
 
+std::shared_ptr< basic_parser< T > > m_digit_13
 
+std::shared_ptr< basic_parser< T > > m_digit_14
 
+std::shared_ptr< basic_parser< T > > m_digit_15
 
+std::shared_ptr< basic_parser< T > > m_separator
 
+std::shared_ptr< basic_parser< T > > m_scope_id_separator
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -234,7 +234,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -286,7 +286,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -296,7 +296,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__ipv6__address.png b/classstdex_1_1parser_1_1basic__ipv6__address.png index 8a40ddfa3..3c890456a 100644 Binary files a/classstdex_1_1parser_1_1basic__ipv6__address.png and b/classstdex_1_1parser_1_1basic__ipv6__address.png differ diff --git a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char-members.html b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char-members.html index bcf59efec..c65f60581 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char-members.html +++ b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char-members.html @@ -81,18 +81,18 @@ $(function() {

This is the complete list of members for stdex::parser::basic_ipv6_scope_id_char< T >, including all inherited members.

- - - - + + + + - - - + + +
basic_ipv6_scope_id_char(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_ipv6_scope_id_char< T >)stdex::parser::basic_ipv6_scope_id_char< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_ipv6_scope_id_char< T >)stdex::parser::basic_ipv6_scope_id_char< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html index 353c61583..f76745706 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::basic_ipv6_scope_id_char< T >: -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -102,35 +102,35 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -184,7 +184,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.png b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.png index f5ba1c202..8de011408 100644 Binary files a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.png and b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.png differ diff --git a/classstdex_1_1parser_1_1basic__iterations-members.html b/classstdex_1_1parser_1_1basic__iterations-members.html index a6ab42032..11eab06ef 100644 --- a/classstdex_1_1parser_1_1basic__iterations-members.html +++ b/classstdex_1_1parser_1_1basic__iterations-members.html @@ -80,23 +80,23 @@ $(function() {

This is the complete list of members for stdex::parser::basic_iterations< T >, including all inherited members.

- - - - - + + + + + - + - - - + + +
basic_iterations(const std::shared_ptr< basic_tester< T > > &el, size_t min_iterations=0, size_t max_iterations=(size_t) -1, bool greedy=true) (defined in stdex::parser::basic_iterations< T >)stdex::parser::basic_iterations< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_elstdex::parser::basic_iterations< T >protected
basic_iterations(const std::shared_ptr< basic_parser< T > > &el, size_t min_iterations=0, size_t max_iterations=(size_t) -1, bool greedy=true) (defined in stdex::parser::basic_iterations< T >)stdex::parser::basic_iterations< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_elstdex::parser::basic_iterations< T >protected
m_greedystdex::parser::basic_iterations< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_max_iterationsstdex::parser::basic_iterations< T >protected
m_min_iterationsstdex::parser::basic_iterations< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_iterations< T >)stdex::parser::basic_iterations< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__iterations.html b/classstdex_1_1parser_1_1basic__iterations.html index 28d1fb92e..3b10c42f9 100644 --- a/classstdex_1_1parser_1_1basic__iterations.html +++ b/classstdex_1_1parser_1_1basic__iterations.html @@ -92,41 +92,41 @@ Inheritance diagram for stdex::parser::basic_iterations< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_iterations (const std::shared_ptr< basic_tester< T > > &el, size_t min_iterations=0, size_t max_iterations=(size_t) -1, bool greedy=true)
 
basic_iterations (const std::shared_ptr< basic_parser< T > > &el, size_t min_iterations=0, size_t max_iterations=(size_t) -1, bool greedy=true)
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + + @@ -139,18 +139,18 @@ size_t  - - - + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_el
 repeating element
 
+std::shared_ptr< basic_parser< T > > m_el
 repeating element
 
size_t m_min_iterations
 minimum number of iterations
m_max_iterationsm_greedy
 try to match as long sequence as possible
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -204,7 +204,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -214,7 +214,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__iterations.png b/classstdex_1_1parser_1_1basic__iterations.png index 44f974fba..bd6d3abab 100644 Binary files a/classstdex_1_1parser_1_1basic__iterations.png and b/classstdex_1_1parser_1_1basic__iterations.png differ diff --git a/classstdex_1_1parser_1_1basic__json__string-members.html b/classstdex_1_1parser_1_1basic__json__string-members.html index 65bdc68de..e348b38df 100644 --- a/classstdex_1_1parser_1_1basic__json__string-members.html +++ b/classstdex_1_1parser_1_1basic__json__string-members.html @@ -80,9 +80,9 @@ $(function() {

This is the complete list of members for stdex::parser::basic_json_string< T >, including all inherited members.

- - - + + + @@ -92,19 +92,19 @@ $(function() { - + - - + + - +
basic_json_string(const std::shared_ptr< basic_tester< T > > &quote, const std::shared_ptr< basic_tester< T > > &chr, const std::shared_ptr< basic_tester< T > > &escape, const std::shared_ptr< basic_tester< T > > &sol, const std::shared_ptr< basic_tester< T > > &bs, const std::shared_ptr< basic_tester< T > > &ff, const std::shared_ptr< basic_tester< T > > &lf, const std::shared_ptr< basic_tester< T > > &cr, const std::shared_ptr< basic_tester< T > > &htab, const std::shared_ptr< basic_tester< T > > &uni, const std::shared_ptr< basic_integer16< T > > &hex, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
basic_json_string(const std::shared_ptr< basic_parser< T > > &quote, const std::shared_ptr< basic_parser< T > > &chr, const std::shared_ptr< basic_parser< T > > &escape, const std::shared_ptr< basic_parser< T > > &sol, const std::shared_ptr< basic_parser< T > > &bs, const std::shared_ptr< basic_parser< T > > &ff, const std::shared_ptr< basic_parser< T > > &lf, const std::shared_ptr< basic_parser< T > > &cr, const std::shared_ptr< basic_parser< T > > &htab, const std::shared_ptr< basic_parser< T > > &uni, const std::shared_ptr< basic_integer16< T > > &hex, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >inlinevirtual
m_bs (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
m_chr (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
m_hex (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
m_htab (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
m_lf (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_quote (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
m_sol (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
m_uni (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
value (defined in stdex::parser::basic_json_string< T >)stdex::parser::basic_json_string< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__json__string.html b/classstdex_1_1parser_1_1basic__json__string.html index dfabf5fe0..c7ce7bdaf 100644 --- a/classstdex_1_1parser_1_1basic__json__string.html +++ b/classstdex_1_1parser_1_1basic__json__string.html @@ -93,87 +93,87 @@ Inheritance diagram for stdex::parser::basic_json_string< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_json_string (const std::shared_ptr< basic_tester< T > > &quote, const std::shared_ptr< basic_tester< T > > &chr, const std::shared_ptr< basic_tester< T > > &escape, const std::shared_ptr< basic_tester< T > > &sol, const std::shared_ptr< basic_tester< T > > &bs, const std::shared_ptr< basic_tester< T > > &ff, const std::shared_ptr< basic_tester< T > > &lf, const std::shared_ptr< basic_tester< T > > &cr, const std::shared_ptr< basic_tester< T > > &htab, const std::shared_ptr< basic_tester< T > > &uni, const std::shared_ptr< basic_integer16< T > > &hex, const std::locale &locale=std::locale())
 
basic_json_string (const std::shared_ptr< basic_parser< T > > &quote, const std::shared_ptr< basic_parser< T > > &chr, const std::shared_ptr< basic_parser< T > > &escape, const std::shared_ptr< basic_parser< T > > &sol, const std::shared_ptr< basic_parser< T > > &bs, const std::shared_ptr< basic_parser< T > > &ff, const std::shared_ptr< basic_parser< T > > &lf, const std::shared_ptr< basic_parser< T > > &cr, const std::shared_ptr< basic_parser< T > > &htab, const std::shared_ptr< basic_parser< T > > &uni, const std::shared_ptr< basic_integer16< T > > &hex, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - + +

Public Attributes

std::basic_string< T > value
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_quote
 
-std::shared_ptr< basic_tester< T > > m_chr
 
-std::shared_ptr< basic_tester< T > > m_escape
 
-std::shared_ptr< basic_tester< T > > m_sol
 
-std::shared_ptr< basic_tester< T > > m_bs
 
-std::shared_ptr< basic_tester< T > > m_ff
 
-std::shared_ptr< basic_tester< T > > m_lf
 
-std::shared_ptr< basic_tester< T > > m_cr
 
-std::shared_ptr< basic_tester< T > > m_htab
 
-std::shared_ptr< basic_tester< T > > m_uni
 
+std::shared_ptr< basic_parser< T > > m_quote
 
+std::shared_ptr< basic_parser< T > > m_chr
 
+std::shared_ptr< basic_parser< T > > m_escape
 
+std::shared_ptr< basic_parser< T > > m_sol
 
+std::shared_ptr< basic_parser< T > > m_bs
 
+std::shared_ptr< basic_parser< T > > m_ff
 
+std::shared_ptr< basic_parser< T > > m_lf
 
+std::shared_ptr< basic_parser< T > > m_cr
 
+std::shared_ptr< basic_parser< T > > m_htab
 
+std::shared_ptr< basic_parser< T > > m_uni
 
std::shared_ptr< basic_integer16< T > > m_hex
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -204,7 +204,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -256,7 +256,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -266,7 +266,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__json__string.png b/classstdex_1_1parser_1_1basic__json__string.png index 15bd53b1b..46fbe9b2c 100644 Binary files a/classstdex_1_1parser_1_1basic__json__string.png and b/classstdex_1_1parser_1_1basic__json__string.png differ diff --git a/classstdex_1_1parser_1_1basic__mixed__numeral-members.html b/classstdex_1_1parser_1_1basic__mixed__numeral-members.html index b6525decd..e245cb17b 100644 --- a/classstdex_1_1parser_1_1basic__mixed__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__mixed__numeral-members.html @@ -80,25 +80,25 @@ $(function() {

This is the complete list of members for stdex::parser::basic_mixed_numeral< T >, including all inherited members.

- - - - - + + + + + - + - - - - - - + + + + + +
basic_mixed_numeral(const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_tester< T > > &_integer, const std::shared_ptr< basic_tester< T > > &space, const std::shared_ptr< basic_tester< T > > &_fraction, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_mixed_numeral< T >)stdex::parser::basic_mixed_numeral< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
fractionstdex::parser::basic_mixed_numeral< T >
integerstdex::parser::basic_mixed_numeral< T >
intervalstdex::parser::basic_tester< T >
basic_mixed_numeral(const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_parser< T > > &_integer, const std::shared_ptr< basic_parser< T > > &space, const std::shared_ptr< basic_parser< T > > &_fraction, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_mixed_numeral< T >)stdex::parser::basic_mixed_numeral< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
fractionstdex::parser::basic_mixed_numeral< T >
integerstdex::parser::basic_mixed_numeral< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_mixed_numeral< T >)stdex::parser::basic_mixed_numeral< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_space (defined in stdex::parser::basic_mixed_numeral< T >)stdex::parser::basic_mixed_numeral< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_mixed_numeral< T >)stdex::parser::basic_mixed_numeral< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
negative_signstdex::parser::basic_mixed_numeral< T >
positive_signstdex::parser::basic_mixed_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
special_signstdex::parser::basic_mixed_numeral< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
negative_signstdex::parser::basic_mixed_numeral< T >
positive_signstdex::parser::basic_mixed_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
special_signstdex::parser::basic_mixed_numeral< T >
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__mixed__numeral.html b/classstdex_1_1parser_1_1basic__mixed__numeral.html index 6bc897584..00c57068f 100644 --- a/classstdex_1_1parser_1_1basic__mixed__numeral.html +++ b/classstdex_1_1parser_1_1basic__mixed__numeral.html @@ -93,74 +93,74 @@ Inheritance diagram for stdex::parser::basic_mixed_numeral< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_mixed_numeral (const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_tester< T > > &_integer, const std::shared_ptr< basic_tester< T > > &space, const std::shared_ptr< basic_tester< T > > &_fraction, const std::locale &locale=std::locale())
 
basic_mixed_numeral (const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_parser< T > > &_integer, const std::shared_ptr< basic_parser< T > > &space, const std::shared_ptr< basic_parser< T > > &_fraction, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > positive_sign
 Positive sign.
 
-std::shared_ptr< basic_tester< T > > negative_sign
 Negative sign.
 
-std::shared_ptr< basic_tester< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
-std::shared_ptr< basic_tester< T > > integer
 Integer part.
 
-std::shared_ptr< basic_tester< T > > fraction
 fraction
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > positive_sign
 Positive sign.
 
+std::shared_ptr< basic_parser< T > > negative_sign
 Negative sign.
 
+std::shared_ptr< basic_parser< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
+std::shared_ptr< basic_parser< T > > integer
 Integer part.
 
+std::shared_ptr< basic_parser< T > > fraction
 fraction
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -191,7 +191,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -243,7 +243,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -253,7 +253,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__mixed__numeral.png b/classstdex_1_1parser_1_1basic__mixed__numeral.png index f0f689fe2..90c61cf4d 100644 Binary files a/classstdex_1_1parser_1_1basic__mixed__numeral.png and b/classstdex_1_1parser_1_1basic__mixed__numeral.png differ diff --git a/classstdex_1_1parser_1_1basic__monetary__numeral-members.html b/classstdex_1_1parser_1_1basic__monetary__numeral-members.html index 2b3a51887..71dc3ccd5 100644 --- a/classstdex_1_1parser_1_1basic__monetary__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__monetary__numeral-members.html @@ -80,26 +80,26 @@ $(function() {

This is the complete list of members for stdex::parser::basic_monetary_numeral< T >, including all inherited members.

- - - - - - - + + + + + + + - + - - - - - - + + + + + +
basic_monetary_numeral(const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_tester< T > > &_currency, const std::shared_ptr< basic_tester< T > > &_integer, const std::shared_ptr< basic_tester< T > > &_decimal_separator, const std::shared_ptr< basic_tester< T > > &_decimal, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_monetary_numeral< T >)stdex::parser::basic_monetary_numeral< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
currencystdex::parser::basic_monetary_numeral< T >
decimalstdex::parser::basic_monetary_numeral< T >
decimal_separatorstdex::parser::basic_monetary_numeral< T >
integerstdex::parser::basic_monetary_numeral< T >
intervalstdex::parser::basic_tester< T >
basic_monetary_numeral(const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_parser< T > > &_currency, const std::shared_ptr< basic_parser< T > > &_integer, const std::shared_ptr< basic_parser< T > > &_decimal_separator, const std::shared_ptr< basic_parser< T > > &_decimal, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_monetary_numeral< T >)stdex::parser::basic_monetary_numeral< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
currencystdex::parser::basic_monetary_numeral< T >
decimalstdex::parser::basic_monetary_numeral< T >
decimal_separatorstdex::parser::basic_monetary_numeral< T >
integerstdex::parser::basic_monetary_numeral< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_monetary_numeral< T >)stdex::parser::basic_monetary_numeral< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_monetary_numeral< T >)stdex::parser::basic_monetary_numeral< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
negative_signstdex::parser::basic_monetary_numeral< T >
positive_signstdex::parser::basic_monetary_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
special_signstdex::parser::basic_monetary_numeral< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
negative_signstdex::parser::basic_monetary_numeral< T >
positive_signstdex::parser::basic_monetary_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
special_signstdex::parser::basic_monetary_numeral< T >
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__monetary__numeral.html b/classstdex_1_1parser_1_1basic__monetary__numeral.html index a4e4d53d2..c61cd2408 100644 --- a/classstdex_1_1parser_1_1basic__monetary__numeral.html +++ b/classstdex_1_1parser_1_1basic__monetary__numeral.html @@ -92,79 +92,79 @@ Inheritance diagram for stdex::parser::basic_monetary_numeral< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_monetary_numeral (const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_tester< T > > &_currency, const std::shared_ptr< basic_tester< T > > &_integer, const std::shared_ptr< basic_tester< T > > &_decimal_separator, const std::shared_ptr< basic_tester< T > > &_decimal, const std::locale &locale=std::locale())
 
basic_monetary_numeral (const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_parser< T > > &_currency, const std::shared_ptr< basic_parser< T > > &_integer, const std::shared_ptr< basic_parser< T > > &_decimal_separator, const std::shared_ptr< basic_parser< T > > &_decimal, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > positive_sign
 Positive sign.
 
-std::shared_ptr< basic_tester< T > > negative_sign
 Negative sign.
 
-std::shared_ptr< basic_tester< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
-std::shared_ptr< basic_tester< T > > currency
 Currency part.
 
-std::shared_ptr< basic_tester< T > > integer
 Integer part.
 
-std::shared_ptr< basic_tester< T > > decimal_separator
 Decimal separator.
 
-std::shared_ptr< basic_tester< T > > decimal
 Decimal part.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > positive_sign
 Positive sign.
 
+std::shared_ptr< basic_parser< T > > negative_sign
 Negative sign.
 
+std::shared_ptr< basic_parser< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
+std::shared_ptr< basic_parser< T > > currency
 Currency part.
 
+std::shared_ptr< basic_parser< T > > integer
 Integer part.
 
+std::shared_ptr< basic_parser< T > > decimal_separator
 Decimal separator.
 
+std::shared_ptr< basic_parser< T > > decimal
 Decimal part.
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -195,7 +195,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -247,7 +247,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -257,7 +257,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__monetary__numeral.png b/classstdex_1_1parser_1_1basic__monetary__numeral.png index d046e3a02..cde2a79ce 100644 Binary files a/classstdex_1_1parser_1_1basic__monetary__numeral.png and b/classstdex_1_1parser_1_1basic__monetary__numeral.png differ diff --git a/classstdex_1_1parser_1_1basic__noop-members.html b/classstdex_1_1parser_1_1basic__noop-members.html index 156d46cef..1d1503642 100644 --- a/classstdex_1_1parser_1_1basic__noop-members.html +++ b/classstdex_1_1parser_1_1basic__noop-members.html @@ -80,18 +80,18 @@ $(function() {

This is the complete list of members for stdex::parser::basic_noop< T >, including all inherited members.

- - - - + + + + - - - + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_noop< T >)stdex::parser::basic_noop< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__noop.html b/classstdex_1_1parser_1_1basic__noop.html index d5c9f1c29..c00243e10 100644 --- a/classstdex_1_1parser_1_1basic__noop.html +++ b/classstdex_1_1parser_1_1basic__noop.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::basic_noop< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -99,35 +99,35 @@ Inheritance diagram for stdex::parser::basic_noop< T >: Public Member Functions - - - - + + + - - + - - + - - - + + - +
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -181,7 +181,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -191,7 +191,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__noop.png b/classstdex_1_1parser_1_1basic__noop.png index 387530945..1c78d3922 100644 Binary files a/classstdex_1_1parser_1_1basic__noop.png and b/classstdex_1_1parser_1_1basic__noop.png differ diff --git a/classstdex_1_1parser_1_1basic__tester-members.html b/classstdex_1_1parser_1_1basic__parser-members.html similarity index 71% rename from classstdex_1_1parser_1_1basic__tester-members.html rename to classstdex_1_1parser_1_1basic__parser-members.html index 1a450770a..cbb7043c9 100644 --- a/classstdex_1_1parser_1_1basic__tester-members.html +++ b/classstdex_1_1parser_1_1basic__parser-members.html @@ -70,28 +70,28 @@ $(function() {
-
stdex::parser::basic_tester< T > Member List
+
stdex::parser::basic_parser< T > Member List
-

This is the complete list of members for stdex::parser::basic_tester< T >, including all inherited members.

+

This is the complete list of members for stdex::parser::basic_parser< T >, including all inherited members.

- - - - - - - - + + + + + + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__tester.html b/classstdex_1_1parser_1_1basic__parser.html similarity index 81% rename from classstdex_1_1parser_1_1basic__tester.html rename to classstdex_1_1parser_1_1basic__parser.html index 9d454d03b..e7a2b84c6 100644 --- a/classstdex_1_1parser_1_1basic__tester.html +++ b/classstdex_1_1parser_1_1basic__parser.html @@ -5,7 +5,7 @@ -stdex: stdex::parser::basic_tester< T > Class Template Reference +stdex: stdex::parser::basic_parser< T > Class Template Reference @@ -70,7 +70,7 @@ $(function() {
@@ -78,21 +78,21 @@ $(function() { Public Member Functions | Public Attributes | Protected Attributes | -List of all members
-
stdex::parser::basic_tester< T > Class Template Referenceabstract
+List of all members +
stdex::parser::basic_parser< T > Class Template Referenceabstract
-

Base template for all testers. - More...

+

Base template for all parsers. + More...

#include <stdex/parser.hpp>

-Inheritance diagram for stdex::parser::basic_tester< T >:
+Inheritance diagram for stdex::parser::basic_parser< T >:
- - + + stdex::parser::basic_any_cu< char > stdex::parser::basic_dns_domain_char< char > stdex::parser::basic_punct_cu< char > @@ -138,52 +138,52 @@ Inheritance diagram for stdex::parser::basic_tester< T >:
stdex::parser::basic_url_path< T > stdex::parser::basic_url_path_char< T > stdex::parser::basic_url_username_char< T > -stdex::parser::tester_collection< T > +stdex::parser::parser_collection< T >
- - - + + - - + - - + - - - + + - +

Public Member Functions

basic_tester (const std::locale &locale=std::locale())
 
+
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + +

Public Attributes

+
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - + +

Protected Attributes

-const std::locale & m_locale
 
+std::locale m_locale
 

Detailed Description

template<class T>
-class stdex::parser::basic_tester< T >

Base template for all testers.

+class stdex::parser::basic_parser< T >

Base template for all parsers.


The documentation for this class was generated from the following file: diff --git a/classstdex_1_1parser_1_1basic__parser.png b/classstdex_1_1parser_1_1basic__parser.png new file mode 100644 index 000000000..f759f0581 Binary files /dev/null and b/classstdex_1_1parser_1_1basic__parser.png differ diff --git a/classstdex_1_1parser_1_1basic__permutation-members.html b/classstdex_1_1parser_1_1basic__permutation-members.html index 23341e754..1fe1adc43 100644 --- a/classstdex_1_1parser_1_1basic__permutation-members.html +++ b/classstdex_1_1parser_1_1basic__permutation-members.html @@ -80,25 +80,25 @@ $(function() {

This is the complete list of members for stdex::parser::basic_permutation< T >, including all inherited members.

- - - - - - - + + + + + + + - + - - - - - + + + + +
basic_permutation(const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_permutation< T >)stdex::parser::basic_permutation< T >inline
basic_permutation(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_permutation< T >)stdex::parser::basic_permutation< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlinevirtual
m_collection (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_permutation(const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_permutation< T >)stdex::parser::basic_permutation< T >inline
basic_permutation(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_permutation< T >)stdex::parser::basic_permutation< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlinevirtual
m_collection (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_permutation< T >)stdex::parser::basic_permutation< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
match_recursively(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_permutation< T >)stdex::parser::basic_permutation< T >inlineprotected
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
tester_collection(const std::locale &locale) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlineprotected
tester_collection(const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
tester_collection(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
parser_collection(const std::locale &locale) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlineprotected
parser_collection(const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
parser_collection(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__permutation.html b/classstdex_1_1parser_1_1basic__permutation.html index c2e0030d9..cefdd4301 100644 --- a/classstdex_1_1parser_1_1basic__permutation.html +++ b/classstdex_1_1parser_1_1basic__permutation.html @@ -92,73 +92,73 @@ Inheritance diagram for stdex::parser::basic_permutation< T >:
-stdex::parser::tester_collection< T > -stdex::parser::basic_tester< T > +stdex::parser::parser_collection< T > +stdex::parser::basic_parser< T >
- - - - + + + + - - - - - - - - - - - + + + + + + + + + + - - + - - + - - - + + - +

Public Member Functions

basic_permutation (const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_permutation (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
basic_permutation (const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_permutation (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale())
 
tester_collection (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale())
 
parser_collection (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + +

Protected Member Functions

bool match_recursively (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Protected Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::locale &locale)
 
- Protected Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::locale &locale)
 
- - + - - - - - - - - + + + + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::tester_collection< T >
-std::vector< std::shared_ptr< basic_tester< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::parser_collection< T >
+std::vector< std::shared_ptr< basic_parser< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -212,7 +212,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -222,7 +222,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__permutation.png b/classstdex_1_1parser_1_1basic__permutation.png index 47548b4fa..a752d60b8 100644 Binary files a/classstdex_1_1parser_1_1basic__permutation.png and b/classstdex_1_1parser_1_1basic__permutation.png differ diff --git a/classstdex_1_1parser_1_1basic__phone__number-members.html b/classstdex_1_1parser_1_1basic__phone__number-members.html index 6f0a101df..223f4ff58 100644 --- a/classstdex_1_1parser_1_1basic__phone__number-members.html +++ b/classstdex_1_1parser_1_1basic__phone__number-members.html @@ -80,26 +80,26 @@ $(function() {

This is the complete list of members for stdex::parser::basic_phone_number< T >, including all inherited members.

- - - + + + - + - - + + - +
basic_phone_number(const std::shared_ptr< basic_tester< T > > &digit, const std::shared_ptr< basic_tester< T > > &plus_sign, const std::shared_ptr< basic_set< T > > &lparenthesis, const std::shared_ptr< basic_set< T > > &rparenthesis, const std::shared_ptr< basic_tester< T > > &separator, const std::shared_ptr< basic_tester< T > > &space, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_phone_number(const std::shared_ptr< basic_parser< T > > &digit, const std::shared_ptr< basic_parser< T > > &plus_sign, const std::shared_ptr< basic_set< T > > &lparenthesis, const std::shared_ptr< basic_set< T > > &rparenthesis, const std::shared_ptr< basic_parser< T > > &separator, const std::shared_ptr< basic_parser< T > > &space, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >inlinevirtual
m_digit (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_lparenthesis (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >protected
m_plus_sign (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >protected
m_rparenthesis (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >protected
m_separator (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >protected
m_space (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_phone_number< T >)stdex::parser::basic_phone_number< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_phone_number< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__phone__number.html b/classstdex_1_1parser_1_1basic__phone__number.html index 6d2223fb4..707a34caa 100644 --- a/classstdex_1_1parser_1_1basic__phone__number.html +++ b/classstdex_1_1parser_1_1basic__phone__number.html @@ -93,36 +93,36 @@ Inheritance diagram for stdex::parser::basic_phone_number< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_phone_number (const std::shared_ptr< basic_tester< T > > &digit, const std::shared_ptr< basic_tester< T > > &plus_sign, const std::shared_ptr< basic_set< T > > &lparenthesis, const std::shared_ptr< basic_set< T > > &rparenthesis, const std::shared_ptr< basic_tester< T > > &separator, const std::shared_ptr< basic_tester< T > > &space, const std::locale &locale=std::locale())
 
basic_phone_number (const std::shared_ptr< basic_parser< T > > &digit, const std::shared_ptr< basic_parser< T > > &plus_sign, const std::shared_ptr< basic_set< T > > &lparenthesis, const std::shared_ptr< basic_set< T > > &rparenthesis, const std::shared_ptr< basic_parser< T > > &separator, const std::shared_ptr< basic_parser< T > > &space, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -130,36 +130,36 @@ Public Attributes std::basic_string< T >  - - + - - + +

Public Attributes

value
 Normalized phone number.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - + + + + - - - - - - - + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_digit
 
-std::shared_ptr< basic_tester< T > > m_plus_sign
 
+std::shared_ptr< basic_parser< T > > m_digit
 
+std::shared_ptr< basic_parser< T > > m_plus_sign
 
std::shared_ptr< basic_set< T > > m_lparenthesis
 
std::shared_ptr< basic_set< T > > m_rparenthesis
 
-std::shared_ptr< basic_tester< T > > m_separator
 
-std::shared_ptr< basic_tester< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_separator
 
+std::shared_ptr< basic_parser< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -190,7 +190,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -242,7 +242,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -252,7 +252,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__phone__number.png b/classstdex_1_1parser_1_1basic__phone__number.png index 27855ba86..0c8bb188f 100644 Binary files a/classstdex_1_1parser_1_1basic__phone__number.png and b/classstdex_1_1parser_1_1basic__phone__number.png differ diff --git a/classstdex_1_1parser_1_1basic__punct__cu-members.html b/classstdex_1_1parser_1_1basic__punct__cu-members.html index 032ae00f4..91ca1e8c3 100644 --- a/classstdex_1_1parser_1_1basic__punct__cu-members.html +++ b/classstdex_1_1parser_1_1basic__punct__cu-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::basic_punct_cu< T >, including all inherited members.

- - - - + + + + - + - - - + + +
basic_punct_cu(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_punct_cu< T >)stdex::parser::basic_punct_cu< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_punct_cu(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_punct_cu< T >)stdex::parser::basic_punct_cu< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_invert (defined in stdex::parser::basic_punct_cu< T >)stdex::parser::basic_punct_cu< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_punct_cu< T >)stdex::parser::basic_punct_cu< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__punct__cu.html b/classstdex_1_1parser_1_1basic__punct__cu.html index 128ab05b9..18f8c09e7 100644 --- a/classstdex_1_1parser_1_1basic__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__punct__cu.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_punct_cu< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -103,41 +103,41 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -191,7 +191,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__punct__cu.png b/classstdex_1_1parser_1_1basic__punct__cu.png index 2a47ea012..7bc897b38 100644 Binary files a/classstdex_1_1parser_1_1basic__punct__cu.png and b/classstdex_1_1parser_1_1basic__punct__cu.png differ diff --git a/classstdex_1_1parser_1_1basic__roman__numeral-members.html b/classstdex_1_1parser_1_1basic__roman__numeral-members.html index 96eada843..231ac4a6b 100644 --- a/classstdex_1_1parser_1_1basic__roman__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__roman__numeral-members.html @@ -81,9 +81,9 @@ $(function() {

This is the complete list of members for stdex::parser::basic_roman_numeral< T >, including all inherited members.

- - - + + + @@ -94,16 +94,16 @@ $(function() { - + - - + + - +
basic_integer(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inline
basic_roman_numeral(const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_10, const std::shared_ptr< basic_tester< T > > &digit_50, const std::shared_ptr< basic_tester< T > > &digit_100, const std::shared_ptr< basic_tester< T > > &digit_500, const std::shared_ptr< basic_tester< T > > &digit_1000, const std::shared_ptr< basic_tester< T > > &digit_5000, const std::shared_ptr< basic_tester< T > > &digit_10000, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_roman_numeral(const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_10, const std::shared_ptr< basic_parser< T > > &digit_50, const std::shared_ptr< basic_parser< T > > &digit_100, const std::shared_ptr< basic_parser< T > > &digit_500, const std::shared_ptr< basic_parser< T > > &digit_1000, const std::shared_ptr< basic_parser< T > > &digit_5000, const std::shared_ptr< basic_parser< T > > &digit_10000, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_integer< T >)stdex::parser::basic_integer< T >inlinevirtual
m_digit_1 (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >protected
m_digit_10 (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >protected
m_digit_50 (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >protected
m_digit_500 (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >protected
m_digit_5000 (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_roman_numeral< T >)stdex::parser::basic_roman_numeral< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
valuestdex::parser::basic_integer< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__roman__numeral.html b/classstdex_1_1parser_1_1basic__roman__numeral.html index 3b9b80185..266d6f756 100644 --- a/classstdex_1_1parser_1_1basic__roman__numeral.html +++ b/classstdex_1_1parser_1_1basic__roman__numeral.html @@ -93,15 +93,15 @@ Inheritance diagram for stdex::parser::basic_roman_numeral< T >: stdex::parser::basic_integer< T > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > - - + + @@ -110,57 +110,57 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_roman_numeral (const std::shared_ptr< basic_tester< T > > &digit_1, const std::shared_ptr< basic_tester< T > > &digit_5, const std::shared_ptr< basic_tester< T > > &digit_10, const std::shared_ptr< basic_tester< T > > &digit_50, const std::shared_ptr< basic_tester< T > > &digit_100, const std::shared_ptr< basic_tester< T > > &digit_500, const std::shared_ptr< basic_tester< T > > &digit_1000, const std::shared_ptr< basic_tester< T > > &digit_5000, const std::shared_ptr< basic_tester< T > > &digit_10000, const std::locale &locale=std::locale())
 
basic_roman_numeral (const std::shared_ptr< basic_parser< T > > &digit_1, const std::shared_ptr< basic_parser< T > > &digit_5, const std::shared_ptr< basic_parser< T > > &digit_10, const std::shared_ptr< basic_parser< T > > &digit_50, const std::shared_ptr< basic_parser< T > > &digit_100, const std::shared_ptr< basic_parser< T > > &digit_500, const std::shared_ptr< basic_parser< T > > &digit_1000, const std::shared_ptr< basic_parser< T > > &digit_5000, const std::shared_ptr< basic_parser< T > > &digit_10000, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_integer< T >
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_digit_1
 
-std::shared_ptr< basic_tester< T > > m_digit_5
 
-std::shared_ptr< basic_tester< T > > m_digit_10
 
-std::shared_ptr< basic_tester< T > > m_digit_50
 
-std::shared_ptr< basic_tester< T > > m_digit_100
 
-std::shared_ptr< basic_tester< T > > m_digit_500
 
-std::shared_ptr< basic_tester< T > > m_digit_1000
 
-std::shared_ptr< basic_tester< T > > m_digit_5000
 
-std::shared_ptr< basic_tester< T > > m_digit_10000
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_digit_1
 
+std::shared_ptr< basic_parser< T > > m_digit_5
 
+std::shared_ptr< basic_parser< T > > m_digit_10
 
+std::shared_ptr< basic_parser< T > > m_digit_50
 
+std::shared_ptr< basic_parser< T > > m_digit_100
 
+std::shared_ptr< basic_parser< T > > m_digit_500
 
+std::shared_ptr< basic_parser< T > > m_digit_1000
 
+std::shared_ptr< basic_parser< T > > m_digit_5000
 
+std::shared_ptr< basic_parser< T > > m_digit_10000
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
@@ -169,11 +169,11 @@ Additional Inherited Members size_t  - - + - - + +

Additional Inherited Members

value
 Calculated value of the numeral.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -227,7 +227,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -237,7 +237,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__roman__numeral.png b/classstdex_1_1parser_1_1basic__roman__numeral.png index 495f6128a..4973ec768 100644 Binary files a/classstdex_1_1parser_1_1basic__roman__numeral.png and b/classstdex_1_1parser_1_1basic__roman__numeral.png differ diff --git a/classstdex_1_1parser_1_1basic__scientific__numeral-members.html b/classstdex_1_1parser_1_1basic__scientific__numeral-members.html index e6b1410ba..61e46de07 100644 --- a/classstdex_1_1parser_1_1basic__scientific__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__scientific__numeral-members.html @@ -80,30 +80,30 @@ $(function() {

This is the complete list of members for stdex::parser::basic_scientific_numeral< T >, including all inherited members.

- - + + - + - + - + - + - - - - - - - + + + + + + + - +
basic_scientific_numeral(const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_integer< T > > &_integer, const std::shared_ptr< basic_tester< T > > &_decimal_separator, const std::shared_ptr< basic_integer< T > > &_decimal, const std::shared_ptr< basic_tester< T > > &_exponent_symbol, const std::shared_ptr< basic_tester< T > > &_positive_exp_sign, const std::shared_ptr< basic_tester< T > > &_negative_exp_sign, const std::shared_ptr< basic_integer< T > > &_exponent, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_scientific_numeral< T >)stdex::parser::basic_scientific_numeral< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_scientific_numeral(const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_integer< T > > &_integer, const std::shared_ptr< basic_parser< T > > &_decimal_separator, const std::shared_ptr< basic_integer< T > > &_decimal, const std::shared_ptr< basic_parser< T > > &_exponent_symbol, const std::shared_ptr< basic_parser< T > > &_positive_exp_sign, const std::shared_ptr< basic_parser< T > > &_negative_exp_sign, const std::shared_ptr< basic_integer< T > > &_exponent, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_scientific_numeral< T >)stdex::parser::basic_scientific_numeral< T >inline
decimalstdex::parser::basic_scientific_numeral< T >
decimal_separatorstdex::parser::basic_scientific_numeral< T >
decimal_separatorstdex::parser::basic_scientific_numeral< T >
exponentstdex::parser::basic_scientific_numeral< T >
exponent_symbolstdex::parser::basic_scientific_numeral< T >
exponent_symbolstdex::parser::basic_scientific_numeral< T >
integerstdex::parser::basic_scientific_numeral< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_scientific_numeral< T >)stdex::parser::basic_scientific_numeral< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_scientific_numeral< T >)stdex::parser::basic_scientific_numeral< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
negative_exp_signstdex::parser::basic_scientific_numeral< T >
negative_signstdex::parser::basic_scientific_numeral< T >
positive_exp_signstdex::parser::basic_scientific_numeral< T >
positive_signstdex::parser::basic_scientific_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
special_signstdex::parser::basic_scientific_numeral< T >
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
negative_exp_signstdex::parser::basic_scientific_numeral< T >
negative_signstdex::parser::basic_scientific_numeral< T >
positive_exp_signstdex::parser::basic_scientific_numeral< T >
positive_signstdex::parser::basic_scientific_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
special_signstdex::parser::basic_scientific_numeral< T >
valuestdex::parser::basic_scientific_numeral< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__scientific__numeral.html b/classstdex_1_1parser_1_1basic__scientific__numeral.html index 2be4d5d8e..cd6b0a0d1 100644 --- a/classstdex_1_1parser_1_1basic__scientific__numeral.html +++ b/classstdex_1_1parser_1_1basic__scientific__numeral.html @@ -92,75 +92,75 @@ Inheritance diagram for stdex::parser::basic_scientific_numeral< T >: -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > - - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_scientific_numeral (const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_integer< T > > &_integer, const std::shared_ptr< basic_tester< T > > &_decimal_separator, const std::shared_ptr< basic_integer< T > > &_decimal, const std::shared_ptr< basic_tester< T > > &_exponent_symbol, const std::shared_ptr< basic_tester< T > > &_positive_exp_sign, const std::shared_ptr< basic_tester< T > > &_negative_exp_sign, const std::shared_ptr< basic_integer< T > > &_exponent, const std::locale &locale=std::locale())
 
basic_scientific_numeral (const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_integer< T > > &_integer, const std::shared_ptr< basic_parser< T > > &_decimal_separator, const std::shared_ptr< basic_integer< T > > &_decimal, const std::shared_ptr< basic_parser< T > > &_exponent_symbol, const std::shared_ptr< basic_parser< T > > &_positive_exp_sign, const std::shared_ptr< basic_parser< T > > &_negative_exp_sign, const std::shared_ptr< basic_integer< T > > &_exponent, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - + + + + + + + + + - - - + + + - - - - - - - - - + + + + + + + + + @@ -169,18 +169,18 @@ std::shared_ptr< value - - + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > positive_sign
 Positive sign.
 
-std::shared_ptr< basic_tester< T > > negative_sign
 Negative sign.
 
-std::shared_ptr< basic_tester< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
+std::shared_ptr< basic_parser< T > > positive_sign
 Positive sign.
 
+std::shared_ptr< basic_parser< T > > negative_sign
 Negative sign.
 
+std::shared_ptr< basic_parser< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
std::shared_ptr< basic_integer< T > > integer
 Integer part.
 
-std::shared_ptr< basic_tester< T > > decimal_separator
 Decimal separator.
 
+std::shared_ptr< basic_parser< T > > decimal_separator
 Decimal separator.
 
std::shared_ptr< basic_integer< T > > decimal
 Decimal part.
 
-std::shared_ptr< basic_tester< T > > exponent_symbol
 Exponent symbol (e.g. 'e')
 
-std::shared_ptr< basic_tester< T > > positive_exp_sign
 Positive exponent sign (e.g. '+')
 
-std::shared_ptr< basic_tester< T > > negative_exp_sign
 Negative exponent sign (e.g. '-')
 
+std::shared_ptr< basic_parser< T > > exponent_symbol
 Exponent symbol (e.g. 'e')
 
+std::shared_ptr< basic_parser< T > > positive_exp_sign
 Positive exponent sign (e.g. '+')
 
+std::shared_ptr< basic_parser< T > > negative_exp_sign
 Negative exponent sign (e.g. '-')
 
std::shared_ptr< basic_integer< T > > exponent
 Exponent part.
 Calculated value of the numeral.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -211,7 +211,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -263,7 +263,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -273,7 +273,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__scientific__numeral.png b/classstdex_1_1parser_1_1basic__scientific__numeral.png index dfbf4c318..40fbf11a1 100644 Binary files a/classstdex_1_1parser_1_1basic__scientific__numeral.png and b/classstdex_1_1parser_1_1basic__scientific__numeral.png differ diff --git a/classstdex_1_1parser_1_1basic__score-members.html b/classstdex_1_1parser_1_1basic__score-members.html index 5db6f2c56..3e367d0b9 100644 --- a/classstdex_1_1parser_1_1basic__score-members.html +++ b/classstdex_1_1parser_1_1basic__score-members.html @@ -80,23 +80,23 @@ $(function() {

This is the complete list of members for stdex::parser::basic_score< T >, including all inherited members.

- - + + - + - + - - + + - +
basic_score(const std::shared_ptr< basic_tester< T > > &_home, const std::shared_ptr< basic_tester< T > > &_separator, const std::shared_ptr< basic_tester< T > > &_guest, const std::shared_ptr< basic_tester< T > > &space, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_score(const std::shared_ptr< basic_parser< T > > &_home, const std::shared_ptr< basic_parser< T > > &_separator, const std::shared_ptr< basic_parser< T > > &_guest, const std::shared_ptr< basic_parser< T > > &space, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >inline
guest (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >
home (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_space (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
separator (defined in stdex::parser::basic_score< T >)stdex::parser::basic_score< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__score.html b/classstdex_1_1parser_1_1basic__score.html index 99354b7d0..46b2c9f0f 100644 --- a/classstdex_1_1parser_1_1basic__score.html +++ b/classstdex_1_1parser_1_1basic__score.html @@ -93,63 +93,63 @@ Inheritance diagram for stdex::parser::basic_score< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_score (const std::shared_ptr< basic_tester< T > > &_home, const std::shared_ptr< basic_tester< T > > &_separator, const std::shared_ptr< basic_tester< T > > &_guest, const std::shared_ptr< basic_tester< T > > &space, const std::locale &locale=std::locale())
 
basic_score (const std::shared_ptr< basic_parser< T > > &_home, const std::shared_ptr< basic_parser< T > > &_separator, const std::shared_ptr< basic_parser< T > > &_guest, const std::shared_ptr< basic_parser< T > > &space, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - + + + + + + + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > home
 
-std::shared_ptr< basic_tester< T > > separator
 
-std::shared_ptr< basic_tester< T > > guest
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > home
 
+std::shared_ptr< basic_parser< T > > separator
 
+std::shared_ptr< basic_parser< T > > guest
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_space
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -180,7 +180,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -232,7 +232,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -242,7 +242,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__score.png b/classstdex_1_1parser_1_1basic__score.png index 389448e6e..01be22f6d 100644 Binary files a/classstdex_1_1parser_1_1basic__score.png and b/classstdex_1_1parser_1_1basic__score.png differ diff --git a/classstdex_1_1parser_1_1basic__sequence-members.html b/classstdex_1_1parser_1_1basic__sequence-members.html index 77305f32a..e3a18dd09 100644 --- a/classstdex_1_1parser_1_1basic__sequence-members.html +++ b/classstdex_1_1parser_1_1basic__sequence-members.html @@ -80,24 +80,24 @@ $(function() {

This is the complete list of members for stdex::parser::basic_sequence< T >, including all inherited members.

- - - - - - - + + + + + + + - - - - - - + + + + + +
basic_sequence(const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_sequence< T >)stdex::parser::basic_sequence< T >inline
basic_sequence(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_sequence< T >)stdex::parser::basic_sequence< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlinevirtual
m_collection (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_sequence(const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_sequence< T >)stdex::parser::basic_sequence< T >inline
basic_sequence(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_sequence< T >)stdex::parser::basic_sequence< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlinevirtual
m_collection (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_sequence< T >)stdex::parser::basic_sequence< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
tester_collection(const std::locale &locale) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlineprotected
tester_collection(const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
tester_collection(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
parser_collection(const std::locale &locale) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlineprotected
parser_collection(const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
parser_collection(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__sequence.html b/classstdex_1_1parser_1_1basic__sequence.html index eba1fe885..2e1aca34f 100644 --- a/classstdex_1_1parser_1_1basic__sequence.html +++ b/classstdex_1_1parser_1_1basic__sequence.html @@ -91,67 +91,67 @@ Inheritance diagram for stdex::parser::basic_sequence< T >:
-stdex::parser::tester_collection< T > -stdex::parser::basic_tester< T > +stdex::parser::parser_collection< T > +stdex::parser::basic_parser< T >
- - - - + + + + - - - - - - - - - - - + + + + + + + + + + - - + - - + - - - + + - +

Public Member Functions

basic_sequence (const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_sequence (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
basic_sequence (const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_sequence (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale())
 
tester_collection (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale())
 
parser_collection (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - - - - - - - + + + + + + + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::locale &locale)
 
- Protected Attributes inherited from stdex::parser::tester_collection< T >
-std::vector< std::shared_ptr< basic_tester< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::locale &locale)
 
- Protected Attributes inherited from stdex::parser::parser_collection< T >
+std::vector< std::shared_ptr< basic_parser< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -205,7 +205,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -215,7 +215,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__sequence.png b/classstdex_1_1parser_1_1basic__sequence.png index 4cbbb2b70..f1ee0179d 100644 Binary files a/classstdex_1_1parser_1_1basic__sequence.png and b/classstdex_1_1parser_1_1basic__sequence.png differ diff --git a/classstdex_1_1parser_1_1basic__set-members.html b/classstdex_1_1parser_1_1basic__set-members.html index 67165926b..436a1af2a 100644 --- a/classstdex_1_1parser_1_1basic__set-members.html +++ b/classstdex_1_1parser_1_1basic__set-members.html @@ -80,21 +80,21 @@ $(function() {

This is the complete list of members for stdex::parser::basic_set< T >, including all inherited members.

- - + + - + - + - - - + + +
basic_set(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_set(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >inline
hit_offset (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >inlinevirtual
m_invert (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_set< T >)stdex::parser::basic_set< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__set.html b/classstdex_1_1parser_1_1basic__set.html index 1d42ec797..026dd37ef 100644 --- a/classstdex_1_1parser_1_1basic__set.html +++ b/classstdex_1_1parser_1_1basic__set.html @@ -88,7 +88,7 @@ Inheritance diagram for stdex::parser::basic_set< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > stdex::parser::basic_cu_set< T >
@@ -102,44 +102,44 @@ Public Member Functions   virtual void invalidate ()   -- Public Member Functions inherited from stdex::parser::basic_tester< T > -basic_tester (const std::locale &locale=std::locale()) -  - +- Public Member Functions inherited from stdex::parser::basic_parser< T > +basic_parser (const std::locale &locale=std::locale()) +  + bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) -  - +  + virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 -  - +  + template<class _Traits , class _Ax > -bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) -  - +bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) +  + virtual void invalidate () -  +  - - + - - + +

Public Attributes

size_t hit_offset
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Member Function Documentation

@@ -167,7 +167,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -219,7 +219,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -229,7 +229,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__set.png b/classstdex_1_1parser_1_1basic__set.png index ddc42eab1..d86121dce 100644 Binary files a/classstdex_1_1parser_1_1basic__set.png and b/classstdex_1_1parser_1_1basic__set.png differ diff --git a/classstdex_1_1parser_1_1basic__signed__numeral-members.html b/classstdex_1_1parser_1_1basic__signed__numeral-members.html index d444b7f66..b9191facf 100644 --- a/classstdex_1_1parser_1_1basic__signed__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__signed__numeral-members.html @@ -80,23 +80,23 @@ $(function() {

This is the complete list of members for stdex::parser::basic_signed_numeral< T >, including all inherited members.

- - - + + + - + - - - - - - - + + + + + + +
basic_signed_numeral(const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_tester< T > > &_number, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_signed_numeral< T >)stdex::parser::basic_signed_numeral< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_signed_numeral(const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_parser< T > > &_number, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_signed_numeral< T >)stdex::parser::basic_signed_numeral< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_signed_numeral< T >)stdex::parser::basic_signed_numeral< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_signed_numeral< T >)stdex::parser::basic_signed_numeral< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
negative_signstdex::parser::basic_signed_numeral< T >
numberstdex::parser::basic_signed_numeral< T >
positive_signstdex::parser::basic_signed_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
special_signstdex::parser::basic_signed_numeral< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
negative_signstdex::parser::basic_signed_numeral< T >
numberstdex::parser::basic_signed_numeral< T >
positive_signstdex::parser::basic_signed_numeral< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
special_signstdex::parser::basic_signed_numeral< T >
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__signed__numeral.html b/classstdex_1_1parser_1_1basic__signed__numeral.html index f4cf20d3e..7ef78fa74 100644 --- a/classstdex_1_1parser_1_1basic__signed__numeral.html +++ b/classstdex_1_1parser_1_1basic__signed__numeral.html @@ -92,67 +92,67 @@ Inheritance diagram for stdex::parser::basic_signed_numeral< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_signed_numeral (const std::shared_ptr< basic_tester< T > > &_positive_sign, const std::shared_ptr< basic_tester< T > > &_negative_sign, const std::shared_ptr< basic_tester< T > > &_special_sign, const std::shared_ptr< basic_tester< T > > &_number, const std::locale &locale=std::locale())
 
basic_signed_numeral (const std::shared_ptr< basic_parser< T > > &_positive_sign, const std::shared_ptr< basic_parser< T > > &_negative_sign, const std::shared_ptr< basic_parser< T > > &_special_sign, const std::shared_ptr< basic_parser< T > > &_number, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - - - + + + + + + + + + + + + + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > positive_sign
 Positive sign.
 
-std::shared_ptr< basic_tester< T > > negative_sign
 Negative sign.
 
-std::shared_ptr< basic_tester< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
-std::shared_ptr< basic_tester< T > > number
 Number.
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > positive_sign
 Positive sign.
 
+std::shared_ptr< basic_parser< T > > negative_sign
 Negative sign.
 
+std::shared_ptr< basic_parser< T > > special_sign
 Special sign (e.g. plus-minus '±')
 
+std::shared_ptr< basic_parser< T > > number
 Number.
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -183,7 +183,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -235,7 +235,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -245,7 +245,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__signed__numeral.png b/classstdex_1_1parser_1_1basic__signed__numeral.png index 34aa69bc9..d0257a6cd 100644 Binary files a/classstdex_1_1parser_1_1basic__signed__numeral.png and b/classstdex_1_1parser_1_1basic__signed__numeral.png differ diff --git a/classstdex_1_1parser_1_1basic__space__cu-members.html b/classstdex_1_1parser_1_1basic__space__cu-members.html index b2faf2728..73d573262 100644 --- a/classstdex_1_1parser_1_1basic__space__cu-members.html +++ b/classstdex_1_1parser_1_1basic__space__cu-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::basic_space_cu< T >, including all inherited members.

- - - - + + + + - + - - - + + +
basic_space_cu(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_space_cu< T >)stdex::parser::basic_space_cu< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_space_cu(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_space_cu< T >)stdex::parser::basic_space_cu< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_invert (defined in stdex::parser::basic_space_cu< T >)stdex::parser::basic_space_cu< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_space_cu< T >)stdex::parser::basic_space_cu< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__space__cu.html b/classstdex_1_1parser_1_1basic__space__cu.html index 88e3c2af5..3201de6c7 100644 --- a/classstdex_1_1parser_1_1basic__space__cu.html +++ b/classstdex_1_1parser_1_1basic__space__cu.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_space_cu< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -103,41 +103,41 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -191,7 +191,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__space__cu.png b/classstdex_1_1parser_1_1basic__space__cu.png index b429a485e..bd5999c59 100644 Binary files a/classstdex_1_1parser_1_1basic__space__cu.png and b/classstdex_1_1parser_1_1basic__space__cu.png differ diff --git a/classstdex_1_1parser_1_1basic__space__or__punct__cu-members.html b/classstdex_1_1parser_1_1basic__space__or__punct__cu-members.html index 79ec27d8e..357e4ac3b 100644 --- a/classstdex_1_1parser_1_1basic__space__or__punct__cu-members.html +++ b/classstdex_1_1parser_1_1basic__space__or__punct__cu-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::basic_space_or_punct_cu< T >, including all inherited members.

- - - - + + + + - + - - - + + +
basic_space_or_punct_cu(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_space_or_punct_cu< T >)stdex::parser::basic_space_or_punct_cu< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_space_or_punct_cu(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_space_or_punct_cu< T >)stdex::parser::basic_space_or_punct_cu< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_invert (defined in stdex::parser::basic_space_or_punct_cu< T >)stdex::parser::basic_space_or_punct_cu< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_space_or_punct_cu< T >)stdex::parser::basic_space_or_punct_cu< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__space__or__punct__cu.html b/classstdex_1_1parser_1_1basic__space__or__punct__cu.html index bbf80ef5f..4472db0ee 100644 --- a/classstdex_1_1parser_1_1basic__space__or__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__space__or__punct__cu.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_space_or_punct_cu< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -103,41 +103,41 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -191,7 +191,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__space__or__punct__cu.png b/classstdex_1_1parser_1_1basic__space__or__punct__cu.png index 0d9647b59..00b474c33 100644 Binary files a/classstdex_1_1parser_1_1basic__space__or__punct__cu.png and b/classstdex_1_1parser_1_1basic__space__or__punct__cu.png differ diff --git a/classstdex_1_1parser_1_1basic__string-members.html b/classstdex_1_1parser_1_1basic__string-members.html index 49bbecceb..bf073b349 100644 --- a/classstdex_1_1parser_1_1basic__string-members.html +++ b/classstdex_1_1parser_1_1basic__string-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::basic_string< T >, including all inherited members.

- - - - - + + + + + - - - + + +
basic_string(_In_reads_or_z_(count) const T *str, size_t count=(size_t) -1, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_string< T >)stdex::parser::basic_string< T >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_string(_In_reads_or_z_(count) const T *str, size_t count=(size_t) -1, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_string< T >)stdex::parser::basic_string< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_str (defined in stdex::parser::basic_string< T >)stdex::parser::basic_string< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_string< T >)stdex::parser::basic_string< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__string.html b/classstdex_1_1parser_1_1basic__string.html index a1264984b..3cadaa02b 100644 --- a/classstdex_1_1parser_1_1basic__string.html +++ b/classstdex_1_1parser_1_1basic__string.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::basic_string< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -103,41 +103,41 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

std::basic_string< T > m_str
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
@@ -191,7 +191,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__string.png b/classstdex_1_1parser_1_1basic__string.png index 421a49836..8e47e378c 100644 Binary files a/classstdex_1_1parser_1_1basic__string.png and b/classstdex_1_1parser_1_1basic__string.png differ diff --git a/classstdex_1_1parser_1_1basic__string__branch-members.html b/classstdex_1_1parser_1_1basic__string__branch-members.html index efef6092c..a6dd15ecf 100644 --- a/classstdex_1_1parser_1_1basic__string__branch-members.html +++ b/classstdex_1_1parser_1_1basic__string__branch-members.html @@ -74,37 +74,37 @@ $(function() {
-
stdex::parser::basic_string_branch< T, T_tester > Member List
+
stdex::parser::basic_string_branch< T, T_parser > Member List
-

This is the complete list of members for stdex::parser::basic_string_branch< T, T_tester >, including all inherited members.

+

This is the complete list of members for stdex::parser::basic_string_branch< T, T_parser >, including all inherited members.

- - - - - - - - + + + + + + + + - + - - + + - - - - - - + + + + + +
basic_branch(const std::locale &locale) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inlineprotected
basic_branch(const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_branch(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_string_branch(const T *str_z=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_string_branch< T, T_tester >)stdex::parser::basic_string_branch< T, T_tester >inline
basic_string_branch(const T *str,...) (defined in stdex::parser::basic_string_branch< T, T_tester >)stdex::parser::basic_string_branch< T, T_tester >inline
basic_string_branch(const std::locale &locale, const T *str,...) (defined in stdex::parser::basic_string_branch< T, T_tester >)stdex::parser::basic_string_branch< T, T_tester >inline
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
build(const T *str_z, size_t count) (defined in stdex::parser::basic_string_branch< T, T_tester >)stdex::parser::basic_string_branch< T, T_tester >inlineprotected
build(const T *str, va_list params) (defined in stdex::parser::basic_string_branch< T, T_tester >)stdex::parser::basic_string_branch< T, T_tester >inlineprotected
basic_branch(const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_branch(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_string_branch(const T *str_z=nullptr, size_t count=0, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_string_branch< T, T_parser >)stdex::parser::basic_string_branch< T, T_parser >inline
basic_string_branch(const T *str,...) (defined in stdex::parser::basic_string_branch< T, T_parser >)stdex::parser::basic_string_branch< T, T_parser >inline
basic_string_branch(const std::locale &locale, const T *str,...) (defined in stdex::parser::basic_string_branch< T, T_parser >)stdex::parser::basic_string_branch< T, T_parser >inline
build(const T *str_z, size_t count) (defined in stdex::parser::basic_string_branch< T, T_parser >)stdex::parser::basic_string_branch< T, T_parser >inlineprotected
build(const T *str, va_list params) (defined in stdex::parser::basic_string_branch< T, T_parser >)stdex::parser::basic_string_branch< T, T_parser >inlineprotected
hit_offset (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inlinevirtual
m_collection (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_collection (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_branch< T >)stdex::parser::basic_branch< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
tester_collection(const std::locale &locale) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlineprotected
tester_collection(const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
tester_collection(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
parser_collection(const std::locale &locale) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlineprotected
parser_collection(const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
parser_collection(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__string__branch.html b/classstdex_1_1parser_1_1basic__string__branch.html index adc2efac5..5b758bf89 100644 --- a/classstdex_1_1parser_1_1basic__string__branch.html +++ b/classstdex_1_1parser_1_1basic__string__branch.html @@ -5,7 +5,7 @@ -stdex: stdex::parser::basic_string_branch< T, T_tester > Class Template Reference +stdex: stdex::parser::basic_string_branch< T, T_parser > Class Template Reference @@ -78,7 +78,7 @@ $(function() { Public Member Functions | Protected Member Functions | List of all members -
stdex::parser::basic_string_branch< T, T_tester > Class Template Reference
+
stdex::parser::basic_string_branch< T, T_parser > Class Template Reference
@@ -87,82 +87,82 @@ $(function() {

#include <stdex/parser.hpp>

-Inheritance diagram for stdex::parser::basic_string_branch< T, T_tester >:
+Inheritance diagram for stdex::parser::basic_string_branch< T, T_parser >:
- - -stdex::parser::basic_branch< T > -stdex::parser::tester_collection< T > -stdex::parser::basic_tester< T > + + +stdex::parser::basic_branch< T > +stdex::parser::parser_collection< T > +stdex::parser::basic_parser< T >
- - - + - - + - + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + - - + - - + - - - + + - +

Public Member Functions

+
 basic_string_branch (const T *str_z=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
+
 
 basic_string_branch (const T *str,...)
 
+
 
 basic_string_branch (const std::locale &locale, const T *str,...)
 
 
- Public Member Functions inherited from stdex::parser::basic_branch< T >
basic_branch (const std::shared_ptr< basic_tester< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_branch (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
basic_branch (const std::shared_ptr< basic_parser< T > > *el=nullptr, size_t count=0, const std::locale &locale=std::locale())
 
basic_branch (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale())
 
tester_collection (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale())
 
parser_collection (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - + - + - - - + + +

Protected Member Functions

+
void build (const T *str_z, size_t count)
 
+
 
void build (const T *str, va_list params)
 
 
- Protected Member Functions inherited from stdex::parser::basic_branch< T >
 basic_branch (const std::locale &locale)
 
- Protected Member Functions inherited from stdex::parser::tester_collection< T >
tester_collection (const std::locale &locale)
 
- Protected Member Functions inherited from stdex::parser::parser_collection< T >
parser_collection (const std::locale &locale)
 
@@ -170,30 +170,30 @@ Additional Inherited Members - - + - - - - - - - - + + + + + + + +

Additional Inherited Members

size_t hit_offset
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::tester_collection< T >
-std::vector< std::shared_ptr< basic_tester< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::parser_collection< T >
+std::vector< std::shared_ptr< basic_parser< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

-
template<class T, class T_tester = basic_string<T>>
-class stdex::parser::basic_string_branch< T, T_tester >

Test for any string.

+
template<class T, class T_parser = basic_string<T>>
+class stdex::parser::basic_string_branch< T, T_parser >

Test for any string.


The documentation for this class was generated from the following file:
diff --git a/classstdex_1_1parser_1_1basic__string__branch.png b/classstdex_1_1parser_1_1basic__string__branch.png index 31fa6a8e1..87340acfe 100644 Binary files a/classstdex_1_1parser_1_1basic__string__branch.png and b/classstdex_1_1parser_1_1basic__string__branch.png differ diff --git a/classstdex_1_1parser_1_1basic__tester.png b/classstdex_1_1parser_1_1basic__tester.png deleted file mode 100644 index 292a3495d..000000000 Binary files a/classstdex_1_1parser_1_1basic__tester.png and /dev/null differ diff --git a/classstdex_1_1parser_1_1basic__time-members.html b/classstdex_1_1parser_1_1basic__time-members.html index 89a356cbc..84a61c950 100644 --- a/classstdex_1_1parser_1_1basic__time-members.html +++ b/classstdex_1_1parser_1_1basic__time-members.html @@ -80,25 +80,25 @@ $(function() {

This is the complete list of members for stdex::parser::basic_time< T >, including all inherited members.

- - + + - + - + - + - + - +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_time(const std::shared_ptr< basic_integer10< T > > &_hour, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_integer10< T > > &_millisecond, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_tester< T > > &millisecond_separator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_time(const std::shared_ptr< basic_integer10< T > > &_hour, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_integer10< T > > &_millisecond, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_parser< T > > &millisecond_separator, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >inline
hour (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_millisecond_separator (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >protected
m_separator (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
millisecond (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >
minute (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
second (defined in stdex::parser::basic_time< T >)stdex::parser::basic_time< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__time.html b/classstdex_1_1parser_1_1basic__time.html index bc9e520e2..212bb1959 100644 --- a/classstdex_1_1parser_1_1basic__time.html +++ b/classstdex_1_1parser_1_1basic__time.html @@ -93,36 +93,36 @@ Inheritance diagram for stdex::parser::basic_time< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_time (const std::shared_ptr< basic_integer10< T > > &_hour, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_integer10< T > > &_millisecond, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_tester< T > > &millisecond_separator, const std::locale &locale=std::locale())
 
basic_time (const std::shared_ptr< basic_integer10< T > > &_hour, const std::shared_ptr< basic_integer10< T > > &_minute, const std::shared_ptr< basic_integer10< T > > &_second, const std::shared_ptr< basic_integer10< T > > &_millisecond, const std::shared_ptr< basic_set< T > > &separator, const std::shared_ptr< basic_parser< T > > &millisecond_separator, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -138,24 +138,24 @@ std::shared_ptr< - - + - - + +

Public Attributes

std::shared_ptr< basic_integer10< T > > millisecond
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - + + + + +

Protected Attributes

std::shared_ptr< basic_set< T > > m_separator
 
-std::shared_ptr< basic_tester< T > > m_millisecond_separator
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_millisecond_separator
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -186,7 +186,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -238,7 +238,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -248,7 +248,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__time.png b/classstdex_1_1parser_1_1basic__time.png index d0ff90add..41eac60b1 100644 Binary files a/classstdex_1_1parser_1_1basic__time.png and b/classstdex_1_1parser_1_1basic__time.png differ diff --git a/classstdex_1_1parser_1_1basic__url-members.html b/classstdex_1_1parser_1_1basic__url-members.html index e47bfb86d..0bad03dbe 100644 --- a/classstdex_1_1parser_1_1basic__url-members.html +++ b/classstdex_1_1parser_1_1basic__url-members.html @@ -80,13 +80,13 @@ $(function() {

This is the complete list of members for stdex::parser::basic_url< T >, including all inherited members.

- - + + - + @@ -94,21 +94,21 @@ $(function() { - + - + - + - +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_url(const std::shared_ptr< basic_tester< T > > &_http_scheme, const std::shared_ptr< basic_tester< T > > &_ftp_scheme, const std::shared_ptr< basic_tester< T > > &_mailto_scheme, const std::shared_ptr< basic_tester< T > > &_file_scheme, const std::shared_ptr< basic_tester< T > > &colon, const std::shared_ptr< basic_tester< T > > &slash, const std::shared_ptr< basic_tester< T > > &_username, const std::shared_ptr< basic_tester< T > > &_password, const std::shared_ptr< basic_tester< T > > &at, const std::shared_ptr< basic_tester< T > > &ip_lbracket, const std::shared_ptr< basic_tester< T > > &ip_rbracket, const std::shared_ptr< basic_tester< T > > &_ipv4_host, const std::shared_ptr< basic_tester< T > > &_ipv6_host, const std::shared_ptr< basic_tester< T > > &_dns_host, const std::shared_ptr< basic_tester< T > > &_port, const std::shared_ptr< basic_tester< T > > &_path, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_url(const std::shared_ptr< basic_parser< T > > &_http_scheme, const std::shared_ptr< basic_parser< T > > &_ftp_scheme, const std::shared_ptr< basic_parser< T > > &_mailto_scheme, const std::shared_ptr< basic_parser< T > > &_file_scheme, const std::shared_ptr< basic_parser< T > > &colon, const std::shared_ptr< basic_parser< T > > &slash, const std::shared_ptr< basic_parser< T > > &_username, const std::shared_ptr< basic_parser< T > > &_password, const std::shared_ptr< basic_parser< T > > &at, const std::shared_ptr< basic_parser< T > > &ip_lbracket, const std::shared_ptr< basic_parser< T > > &ip_rbracket, const std::shared_ptr< basic_parser< T > > &_ipv4_host, const std::shared_ptr< basic_parser< T > > &_ipv6_host, const std::shared_ptr< basic_parser< T > > &_dns_host, const std::shared_ptr< basic_parser< T > > &_port, const std::shared_ptr< basic_parser< T > > &_path, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >inline
dns_host (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
file_scheme (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
ftp_scheme (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
http_scheme (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >inlinevirtual
ipv4_host (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
ipv6_host (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
m_colon (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >protected
m_ip_lbracket (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >protected
m_ip_rbracket (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_slash (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >protected
mailto_scheme (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
password (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
path (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
port (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
username (defined in stdex::parser::basic_url< T >)stdex::parser::basic_url< T >
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__url.html b/classstdex_1_1parser_1_1basic__url.html index d84cfead5..94dc1e7b7 100644 --- a/classstdex_1_1parser_1_1basic__url.html +++ b/classstdex_1_1parser_1_1basic__url.html @@ -93,99 +93,99 @@ Inheritance diagram for stdex::parser::basic_url< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_url (const std::shared_ptr< basic_tester< T > > &_http_scheme, const std::shared_ptr< basic_tester< T > > &_ftp_scheme, const std::shared_ptr< basic_tester< T > > &_mailto_scheme, const std::shared_ptr< basic_tester< T > > &_file_scheme, const std::shared_ptr< basic_tester< T > > &colon, const std::shared_ptr< basic_tester< T > > &slash, const std::shared_ptr< basic_tester< T > > &_username, const std::shared_ptr< basic_tester< T > > &_password, const std::shared_ptr< basic_tester< T > > &at, const std::shared_ptr< basic_tester< T > > &ip_lbracket, const std::shared_ptr< basic_tester< T > > &ip_rbracket, const std::shared_ptr< basic_tester< T > > &_ipv4_host, const std::shared_ptr< basic_tester< T > > &_ipv6_host, const std::shared_ptr< basic_tester< T > > &_dns_host, const std::shared_ptr< basic_tester< T > > &_port, const std::shared_ptr< basic_tester< T > > &_path, const std::locale &locale=std::locale())
 
basic_url (const std::shared_ptr< basic_parser< T > > &_http_scheme, const std::shared_ptr< basic_parser< T > > &_ftp_scheme, const std::shared_ptr< basic_parser< T > > &_mailto_scheme, const std::shared_ptr< basic_parser< T > > &_file_scheme, const std::shared_ptr< basic_parser< T > > &colon, const std::shared_ptr< basic_parser< T > > &slash, const std::shared_ptr< basic_parser< T > > &_username, const std::shared_ptr< basic_parser< T > > &_password, const std::shared_ptr< basic_parser< T > > &at, const std::shared_ptr< basic_parser< T > > &ip_lbracket, const std::shared_ptr< basic_parser< T > > &ip_rbracket, const std::shared_ptr< basic_parser< T > > &_ipv4_host, const std::shared_ptr< basic_parser< T > > &_ipv6_host, const std::shared_ptr< basic_parser< T > > &_dns_host, const std::shared_ptr< basic_parser< T > > &_port, const std::shared_ptr< basic_parser< T > > &_path, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - + +

Public Attributes

-std::shared_ptr< basic_tester< T > > http_scheme
 
-std::shared_ptr< basic_tester< T > > ftp_scheme
 
-std::shared_ptr< basic_tester< T > > mailto_scheme
 
-std::shared_ptr< basic_tester< T > > file_scheme
 
-std::shared_ptr< basic_tester< T > > username
 
-std::shared_ptr< basic_tester< T > > password
 
-std::shared_ptr< basic_tester< T > > ipv4_host
 
-std::shared_ptr< basic_tester< T > > ipv6_host
 
-std::shared_ptr< basic_tester< T > > dns_host
 
-std::shared_ptr< basic_tester< T > > port
 
-std::shared_ptr< basic_tester< T > > path
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
+std::shared_ptr< basic_parser< T > > http_scheme
 
+std::shared_ptr< basic_parser< T > > ftp_scheme
 
+std::shared_ptr< basic_parser< T > > mailto_scheme
 
+std::shared_ptr< basic_parser< T > > file_scheme
 
+std::shared_ptr< basic_parser< T > > username
 
+std::shared_ptr< basic_parser< T > > password
 
+std::shared_ptr< basic_parser< T > > ipv4_host
 
+std::shared_ptr< basic_parser< T > > ipv6_host
 
+std::shared_ptr< basic_parser< T > > dns_host
 
+std::shared_ptr< basic_parser< T > > port
 
+std::shared_ptr< basic_parser< T > > path
 
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - - - - - - - - - + + + + + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_colon
 
-std::shared_ptr< basic_tester< T > > m_slash
 
-std::shared_ptr< basic_tester< T > > m_at
 
-std::shared_ptr< basic_tester< T > > m_ip_lbracket
 
-std::shared_ptr< basic_tester< T > > m_ip_rbracket
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_colon
 
+std::shared_ptr< basic_parser< T > > m_slash
 
+std::shared_ptr< basic_parser< T > > m_at
 
+std::shared_ptr< basic_parser< T > > m_ip_lbracket
 
+std::shared_ptr< basic_parser< T > > m_ip_rbracket
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -216,7 +216,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -268,7 +268,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -278,7 +278,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__url.png b/classstdex_1_1parser_1_1basic__url.png index e02fdfa07..837957881 100644 Binary files a/classstdex_1_1parser_1_1basic__url.png and b/classstdex_1_1parser_1_1basic__url.png differ diff --git a/classstdex_1_1parser_1_1basic__url__password__char-members.html b/classstdex_1_1parser_1_1basic__url__password__char-members.html index 705a2cdbe..33cf98a6a 100644 --- a/classstdex_1_1parser_1_1basic__url__password__char-members.html +++ b/classstdex_1_1parser_1_1basic__url__password__char-members.html @@ -80,19 +80,19 @@ $(function() {

This is the complete list of members for stdex::parser::basic_url_password_char< T >, including all inherited members.

- + - - - + + + - - - + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_url_password_char(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_url_password_char< T >)stdex::parser::basic_url_password_char< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_url_password_char< T >)stdex::parser::basic_url_password_char< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__url__password__char.html b/classstdex_1_1parser_1_1basic__url__password__char.html index 455e68375..ba7e25220 100644 --- a/classstdex_1_1parser_1_1basic__url__password__char.html +++ b/classstdex_1_1parser_1_1basic__url__password__char.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::basic_url_password_char< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -102,35 +102,35 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -184,7 +184,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__url__password__char.png b/classstdex_1_1parser_1_1basic__url__password__char.png index 5ed55350f..2c9e060d5 100644 Binary files a/classstdex_1_1parser_1_1basic__url__password__char.png and b/classstdex_1_1parser_1_1basic__url__password__char.png differ diff --git a/classstdex_1_1parser_1_1basic__url__path-members.html b/classstdex_1_1parser_1_1basic__url__path-members.html index c93e13110..086313d3d 100644 --- a/classstdex_1_1parser_1_1basic__url__path-members.html +++ b/classstdex_1_1parser_1_1basic__url__path-members.html @@ -80,25 +80,25 @@ $(function() {

This is the complete list of members for stdex::parser::basic_url_path< T >, including all inherited members.

- - + + - + - + - + - - + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_url_path(const std::shared_ptr< basic_tester< T > > &path_char, const std::shared_ptr< basic_tester< T > > &query_start, const std::shared_ptr< basic_tester< T > > &bookmark_start, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_url_path(const std::shared_ptr< basic_parser< T > > &path_char, const std::shared_ptr< basic_parser< T > > &query_start, const std::shared_ptr< basic_parser< T > > &bookmark_start, const std::locale &locale=std::locale()) (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >inline
bookmark (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >
intervalstdex::parser::basic_tester< T >
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >inlinevirtual
m_bookmark_start (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_path_char (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >protected
m_query_start (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
path (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >
query (defined in stdex::parser::basic_url_path< T >)stdex::parser::basic_url_path< T >
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__url__path.html b/classstdex_1_1parser_1_1basic__url__path.html index 20e7b9055..35c4e8e9a 100644 --- a/classstdex_1_1parser_1_1basic__url__path.html +++ b/classstdex_1_1parser_1_1basic__url__path.html @@ -93,36 +93,36 @@ Inheritance diagram for stdex::parser::basic_url_path< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
- - + + - - - - + + + - - + - - + - - - + + - +

Public Member Functions

basic_url_path (const std::shared_ptr< basic_tester< T > > &path_char, const std::shared_ptr< basic_tester< T > > &query_start, const std::shared_ptr< basic_tester< T > > &bookmark_start, const std::locale &locale=std::locale())
 
basic_url_path (const std::shared_ptr< basic_parser< T > > &path_char, const std::shared_ptr< basic_parser< T > > &query_start, const std::shared_ptr< basic_parser< T > > &bookmark_start, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -135,27 +135,27 @@ Public Attributes - - + - - + +

Public Attributes

stdex::interval< size_t > bookmark
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - - - - - - - + + + + + + + + +

Protected Attributes

-std::shared_ptr< basic_tester< T > > m_path_char
 
-std::shared_ptr< basic_tester< T > > m_query_start
 
-std::shared_ptr< basic_tester< T > > m_bookmark_start
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::shared_ptr< basic_parser< T > > m_path_char
 
+std::shared_ptr< basic_parser< T > > m_query_start
 
+std::shared_ptr< basic_parser< T > > m_bookmark_start
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -186,7 +186,7 @@ template<class T >
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -238,7 +238,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -248,7 +248,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__url__path.png b/classstdex_1_1parser_1_1basic__url__path.png index a47856f69..0c1b2ffe4 100644 Binary files a/classstdex_1_1parser_1_1basic__url__path.png and b/classstdex_1_1parser_1_1basic__url__path.png differ diff --git a/classstdex_1_1parser_1_1basic__url__path__char-members.html b/classstdex_1_1parser_1_1basic__url__path__char-members.html index 3fccc04ed..12422a72c 100644 --- a/classstdex_1_1parser_1_1basic__url__path__char-members.html +++ b/classstdex_1_1parser_1_1basic__url__path__char-members.html @@ -80,19 +80,19 @@ $(function() {

This is the complete list of members for stdex::parser::basic_url_path_char< T >, including all inherited members.

- + - - - + + + - - - + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_url_path_char(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_url_path_char< T >)stdex::parser::basic_url_path_char< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_url_path_char< T >)stdex::parser::basic_url_path_char< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__url__path__char.html b/classstdex_1_1parser_1_1basic__url__path__char.html index 8fc5fe3bc..6c0dbb4b9 100644 --- a/classstdex_1_1parser_1_1basic__url__path__char.html +++ b/classstdex_1_1parser_1_1basic__url__path__char.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::basic_url_path_char< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -102,35 +102,35 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -184,7 +184,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__url__path__char.png b/classstdex_1_1parser_1_1basic__url__path__char.png index 631633e71..ff905bfe8 100644 Binary files a/classstdex_1_1parser_1_1basic__url__path__char.png and b/classstdex_1_1parser_1_1basic__url__path__char.png differ diff --git a/classstdex_1_1parser_1_1basic__url__username__char-members.html b/classstdex_1_1parser_1_1basic__url__username__char-members.html index 971326cf9..a6a4237e6 100644 --- a/classstdex_1_1parser_1_1basic__url__username__char-members.html +++ b/classstdex_1_1parser_1_1basic__url__username__char-members.html @@ -80,19 +80,19 @@ $(function() {

This is the complete list of members for stdex::parser::basic_url_username_char< T >, including all inherited members.

- + - - - + + + - - - + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
basic_url_username_char(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_url_username_char< T >)stdex::parser::basic_url_username_char< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_url_username_char< T >)stdex::parser::basic_url_username_char< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1basic__url__username__char.html b/classstdex_1_1parser_1_1basic__url__username__char.html index 46566c336..26d5b11e6 100644 --- a/classstdex_1_1parser_1_1basic__url__username__char.html +++ b/classstdex_1_1parser_1_1basic__url__username__char.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::basic_url_username_char< T >:
-stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T >
@@ -102,35 +102,35 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

template<class T>
@@ -184,7 +184,7 @@ template<class T >
-

Implements stdex::parser::basic_tester< T >.

+

Implements stdex::parser::basic_parser< T >.

@@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__url__username__char.png b/classstdex_1_1parser_1_1basic__url__username__char.png index 4a9ec7ed9..f307ac5e6 100644 Binary files a/classstdex_1_1parser_1_1basic__url__username__char.png and b/classstdex_1_1parser_1_1basic__url__username__char.png differ diff --git a/classstdex_1_1parser_1_1http__agent-members.html b/classstdex_1_1parser_1_1http__agent-members.html index 39ab39f16..c0caa369e 100644 --- a/classstdex_1_1parser_1_1http__agent-members.html +++ b/classstdex_1_1parser_1_1http__agent-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_agent, including all inherited members.

- + @@ -88,7 +88,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_agent)stdex::parser::http_agentinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_agent)stdex::parser::http_agentinlinevirtual
type (defined in stdex::parser::http_agent)stdex::parser::http_agent
diff --git a/classstdex_1_1parser_1_1http__agent.html b/classstdex_1_1parser_1_1http__agent.html index c6d124338..3a28e23c8 100644 --- a/classstdex_1_1parser_1_1http__agent.html +++ b/classstdex_1_1parser_1_1http__agent.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_agent:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -102,22 +102,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -127,18 +127,18 @@ Public Attributes - - + - - + +

Public Attributes

stdex::interval< size_t > version
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP agent.

@@ -166,7 +166,7 @@ const std::locale & m_
-

Reimplemented from stdex::parser::basic_tester< char >.

+

Reimplemented from stdex::parser::basic_parser< char >.

@@ -216,7 +216,7 @@ const std::locale & m_ @@ -226,7 +226,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__agent.png b/classstdex_1_1parser_1_1http__agent.png index c025b1f8a..03742b690 100644 Binary files a/classstdex_1_1parser_1_1http__agent.png and b/classstdex_1_1parser_1_1http__agent.png differ diff --git a/classstdex_1_1parser_1_1http__any__type-members.html b/classstdex_1_1parser_1_1http__any__type-members.html index c7bf1a13f..d9abfabf5 100644 --- a/classstdex_1_1parser_1_1http__any__type-members.html +++ b/classstdex_1_1parser_1_1http__any__type-members.html @@ -80,12 +80,12 @@ $(function() {

This is the complete list of members for stdex::parser::http_any_type, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_any_type)stdex::parser::http_any_typeinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__any__type.html b/classstdex_1_1parser_1_1http__any__type.html index b3654a3fe..556110222 100644 --- a/classstdex_1_1parser_1_1http__any__type.html +++ b/classstdex_1_1parser_1_1http__any__type.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::http_any_type:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -99,34 +99,34 @@ Inheritance diagram for stdex::parser::http_any_type: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP any type.

@@ -177,7 +177,7 @@ const std::locale & m_
@@ -187,7 +187,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__any__type.png b/classstdex_1_1parser_1_1http__any__type.png index 60dd77744..4adb0246b 100644 Binary files a/classstdex_1_1parser_1_1http__any__type.png and b/classstdex_1_1parser_1_1http__any__type.png differ diff --git a/classstdex_1_1parser_1_1http__asterisk-members.html b/classstdex_1_1parser_1_1http__asterisk-members.html index 77a9c9921..0c9efa616 100644 --- a/classstdex_1_1parser_1_1http__asterisk-members.html +++ b/classstdex_1_1parser_1_1http__asterisk-members.html @@ -80,12 +80,12 @@ $(function() {

This is the complete list of members for stdex::parser::http_asterisk, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_asterisk)stdex::parser::http_asteriskinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__asterisk.html b/classstdex_1_1parser_1_1http__asterisk.html index 9f1690af0..cd8e78863 100644 --- a/classstdex_1_1parser_1_1http__asterisk.html +++ b/classstdex_1_1parser_1_1http__asterisk.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::http_asterisk:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -99,34 +99,34 @@ Inheritance diagram for stdex::parser::http_asterisk: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP asterisk.

@@ -177,7 +177,7 @@ const std::locale & m_
@@ -187,7 +187,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__asterisk.png b/classstdex_1_1parser_1_1http__asterisk.png index 75c3ff495..484fa4308 100644 Binary files a/classstdex_1_1parser_1_1http__asterisk.png and b/classstdex_1_1parser_1_1http__asterisk.png differ diff --git a/classstdex_1_1parser_1_1http__cookie-members.html b/classstdex_1_1parser_1_1http__cookie-members.html index 07bf262db..f75613e46 100644 --- a/classstdex_1_1parser_1_1http__cookie-members.html +++ b/classstdex_1_1parser_1_1http__cookie-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_cookie, including all inherited members.

- + @@ -90,7 +90,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_cookie)stdex::parser::http_cookieinlinevirtual
m_space (defined in stdex::parser::http_cookie)stdex::parser::http_cookieprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_cookie)stdex::parser::http_cookieinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__cookie.html b/classstdex_1_1parser_1_1http__cookie.html index 60abd6c97..12082b353 100644 --- a/classstdex_1_1parser_1_1http__cookie.html +++ b/classstdex_1_1parser_1_1http__cookie.html @@ -93,7 +93,7 @@ Inheritance diagram for stdex::parser::http_cookie:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -103,22 +103,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -134,21 +134,21 @@ Public Attributes std::list< http_cookie_parameter >  - - + - - + +

Public Attributes

params
 List of cookie parameters.
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

http_space m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP cookie (RFC2109)

@@ -176,7 +176,7 @@ const std::locale & m_
@@ -226,7 +226,7 @@ const std::locale & m_ @@ -236,7 +236,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__cookie.png b/classstdex_1_1parser_1_1http__cookie.png index fe910cfd0..16a999435 100644 Binary files a/classstdex_1_1parser_1_1http__cookie.png and b/classstdex_1_1parser_1_1http__cookie.png differ diff --git a/classstdex_1_1parser_1_1http__cookie__parameter-members.html b/classstdex_1_1parser_1_1http__cookie__parameter-members.html index 11e13b5dd..e47d17ae9 100644 --- a/classstdex_1_1parser_1_1http__cookie__parameter-members.html +++ b/classstdex_1_1parser_1_1http__cookie__parameter-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_cookie_parameter, including all inherited members.

- + @@ -89,7 +89,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_cookie_parameter)stdex::parser::http_cookie_parameterinlinevirtual
m_space (defined in stdex::parser::http_cookie_parameter)stdex::parser::http_cookie_parameterprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_cookie_parameter)stdex::parser::http_cookie_parameterinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__cookie__parameter.html b/classstdex_1_1parser_1_1http__cookie__parameter.html index 4ff75a358..9aa9ba9f4 100644 --- a/classstdex_1_1parser_1_1http__cookie__parameter.html +++ b/classstdex_1_1parser_1_1http__cookie__parameter.html @@ -93,7 +93,7 @@ Inheritance diagram for stdex::parser::http_cookie_parameter:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -103,22 +103,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -128,21 +128,21 @@ Public Attributes - - + - - + +

Public Attributes

http_value value
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

http_space m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP cookie parameter (RFC2109)

@@ -170,7 +170,7 @@ const std::locale & m_
@@ -220,7 +220,7 @@ const std::locale & m_ @@ -230,7 +230,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__cookie__parameter.png b/classstdex_1_1parser_1_1http__cookie__parameter.png index 84c1f091b..9e7aeccbe 100644 Binary files a/classstdex_1_1parser_1_1http__cookie__parameter.png and b/classstdex_1_1parser_1_1http__cookie__parameter.png differ diff --git a/classstdex_1_1parser_1_1http__header-members.html b/classstdex_1_1parser_1_1http__header-members.html index b9d2f7575..c0418648b 100644 --- a/classstdex_1_1parser_1_1http__header-members.html +++ b/classstdex_1_1parser_1_1http__header-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_header, including all inherited members.

- + @@ -89,7 +89,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_header)stdex::parser::http_headerinlinevirtual
m_line_break (defined in stdex::parser::http_header)stdex::parser::http_headerprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_header)stdex::parser::http_headerinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__header.html b/classstdex_1_1parser_1_1http__header.html index 479af56bc..0f0b795d9 100644 --- a/classstdex_1_1parser_1_1http__header.html +++ b/classstdex_1_1parser_1_1http__header.html @@ -93,7 +93,7 @@ Inheritance diagram for stdex::parser::http_header:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -103,22 +103,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -128,21 +128,21 @@ Public Attributes - - + - - + +

Public Attributes

stdex::interval< size_t > value
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

http_line_break m_line_break
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP header.

@@ -170,7 +170,7 @@ const std::locale & m_
@@ -220,7 +220,7 @@ const std::locale & m_ @@ -230,7 +230,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__header.png b/classstdex_1_1parser_1_1http__header.png index beb24399e..fb1794610 100644 Binary files a/classstdex_1_1parser_1_1http__header.png and b/classstdex_1_1parser_1_1http__header.png differ diff --git a/classstdex_1_1parser_1_1http__header__collection.png b/classstdex_1_1parser_1_1http__header__collection.png deleted file mode 100644 index 0b89c27b6..000000000 Binary files a/classstdex_1_1parser_1_1http__header__collection.png and /dev/null differ diff --git a/classstdex_1_1parser_1_1http__language-members.html b/classstdex_1_1parser_1_1http__language-members.html index a5d092f15..18f376981 100644 --- a/classstdex_1_1parser_1_1http__language-members.html +++ b/classstdex_1_1parser_1_1http__language-members.html @@ -81,13 +81,13 @@ $(function() {

This is the complete list of members for stdex::parser::http_language, including all inherited members.

- +
components (defined in stdex::parser::http_language)stdex::parser::http_language
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_language)stdex::parser::http_languageinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_language)stdex::parser::http_languageinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__language.html b/classstdex_1_1parser_1_1http__language.html index 37467dcb7..0fc8b49cb 100644 --- a/classstdex_1_1parser_1_1http__language.html +++ b/classstdex_1_1parser_1_1http__language.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_language:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -102,40 +102,40 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - + +

Public Attributes

std::vector< stdex::interval< size_t > > components
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP language (RFC1766)

@@ -163,7 +163,7 @@ const std::locale & m_
@@ -213,7 +213,7 @@ const std::locale & m_ @@ -223,7 +223,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__language.png b/classstdex_1_1parser_1_1http__language.png index b3cc04998..f43a86f96 100644 Binary files a/classstdex_1_1parser_1_1http__language.png and b/classstdex_1_1parser_1_1http__language.png differ diff --git a/classstdex_1_1parser_1_1http__line__break-members.html b/classstdex_1_1parser_1_1http__line__break-members.html index 76c36e540..8c54a2be9 100644 --- a/classstdex_1_1parser_1_1http__line__break-members.html +++ b/classstdex_1_1parser_1_1http__line__break-members.html @@ -80,12 +80,12 @@ $(function() {

This is the complete list of members for stdex::parser::http_line_break, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_line_break)stdex::parser::http_line_breakinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__line__break.html b/classstdex_1_1parser_1_1http__line__break.html index 3fa616262..a9b647da9 100644 --- a/classstdex_1_1parser_1_1http__line__break.html +++ b/classstdex_1_1parser_1_1http__line__break.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::http_line_break:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -99,34 +99,34 @@ Inheritance diagram for stdex::parser::http_line_break: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP line break (RFC2616: CRLF | LF)

@@ -177,7 +177,7 @@ const std::locale & m_
@@ -187,7 +187,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__line__break.png b/classstdex_1_1parser_1_1http__line__break.png index 8559b7708..fc51c7500 100644 Binary files a/classstdex_1_1parser_1_1http__line__break.png and b/classstdex_1_1parser_1_1http__line__break.png differ diff --git a/classstdex_1_1parser_1_1http__media__range-members.html b/classstdex_1_1parser_1_1http__media__range-members.html index 5be7761f3..e5724e890 100644 --- a/classstdex_1_1parser_1_1http__media__range-members.html +++ b/classstdex_1_1parser_1_1http__media__range-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_media_range, including all inherited members.

- + @@ -89,7 +89,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_media_range)stdex::parser::http_media_rangeinlinevirtual
m_space (defined in stdex::parser::http_media_range)stdex::parser::http_media_rangeprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_media_range)stdex::parser::http_media_rangeinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__media__range.html b/classstdex_1_1parser_1_1http__media__range.html index c4b2c8f26..26d764b44 100644 --- a/classstdex_1_1parser_1_1http__media__range.html +++ b/classstdex_1_1parser_1_1http__media__range.html @@ -93,8 +93,8 @@ Inheritance diagram for stdex::parser::http_media_range:
-stdex::parser::basic_tester< char > -stdex::parser::http_media_type +stdex::parser::basic_parser< char > +stdex::parser::http_media_type
@@ -104,22 +104,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -129,21 +129,21 @@ Public Attributes - - + - - + +

Public Attributes

http_token subtype
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

http_space m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP media range (RFC2616: media-range)

@@ -171,7 +171,7 @@ const std::locale & m_
@@ -221,7 +221,7 @@ const std::locale & m_ @@ -231,7 +231,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__media__range.png b/classstdex_1_1parser_1_1http__media__range.png index 6d2e1b6a9..1b8937c5c 100644 Binary files a/classstdex_1_1parser_1_1http__media__range.png and b/classstdex_1_1parser_1_1http__media__range.png differ diff --git a/classstdex_1_1parser_1_1http__media__type-members.html b/classstdex_1_1parser_1_1http__media__type-members.html index 4741ecf6a..67378029c 100644 --- a/classstdex_1_1parser_1_1http__media__type-members.html +++ b/classstdex_1_1parser_1_1http__media__type-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_media_type, including all inherited members.

- + @@ -90,7 +90,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_media_type)stdex::parser::http_media_typeinlinevirtual
m_space (defined in stdex::parser::http_media_range)stdex::parser::http_media_rangeprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_media_type)stdex::parser::http_media_typeinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__media__type.html b/classstdex_1_1parser_1_1http__media__type.html index 8ea93ea78..2dc2d7084 100644 --- a/classstdex_1_1parser_1_1http__media__type.html +++ b/classstdex_1_1parser_1_1http__media__type.html @@ -92,8 +92,8 @@ Inheritance diagram for stdex::parser::http_media_type:
-stdex::parser::http_media_range -stdex::parser::basic_tester< char > +stdex::parser::http_media_range +stdex::parser::basic_parser< char >
@@ -107,22 +107,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -136,11 +136,11 @@ std::list< - - + - - + +

Public Attributes

http_token subtype
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
@@ -148,10 +148,10 @@ Additional Inherited Members - - - + + +

Additional Inherited Members

http_space m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP media type (RFC2616: media-type)

@@ -239,7 +239,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1http__media__type.png b/classstdex_1_1parser_1_1http__media__type.png index c8471667b..acee2e98e 100644 Binary files a/classstdex_1_1parser_1_1http__media__type.png and b/classstdex_1_1parser_1_1http__media__type.png differ diff --git a/classstdex_1_1parser_1_1http__parameter-members.html b/classstdex_1_1parser_1_1http__parameter-members.html index d6db93ba5..bb80f10d9 100644 --- a/classstdex_1_1parser_1_1http__parameter-members.html +++ b/classstdex_1_1parser_1_1http__parameter-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_parameter, including all inherited members.

- + @@ -89,7 +89,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_parameter)stdex::parser::http_parameterinlinevirtual
m_space (defined in stdex::parser::http_parameter)stdex::parser::http_parameterprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_parameter)stdex::parser::http_parameterinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__parameter.html b/classstdex_1_1parser_1_1http__parameter.html index 7ebbf6f16..47432a1c6 100644 --- a/classstdex_1_1parser_1_1http__parameter.html +++ b/classstdex_1_1parser_1_1http__parameter.html @@ -93,7 +93,7 @@ Inheritance diagram for stdex::parser::http_parameter:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -103,22 +103,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -130,21 +130,21 @@ Public Attributeshttp_value  - - + - - + +

Public Attributes

value
 Parameter value.
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

http_space m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP parameter (RFC2616: parameter)

@@ -172,7 +172,7 @@ const std::locale & m_
@@ -222,7 +222,7 @@ const std::locale & m_ @@ -232,7 +232,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__parameter.png b/classstdex_1_1parser_1_1http__parameter.png index f1fb8e650..11da69801 100644 Binary files a/classstdex_1_1parser_1_1http__parameter.png and b/classstdex_1_1parser_1_1http__parameter.png differ diff --git a/classstdex_1_1parser_1_1http__protocol-members.html b/classstdex_1_1parser_1_1http__protocol-members.html index 0b8eb684b..9379ad2af 100644 --- a/classstdex_1_1parser_1_1http__protocol-members.html +++ b/classstdex_1_1parser_1_1http__protocol-members.html @@ -81,7 +81,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_protocol, including all inherited members.

- + @@ -91,7 +91,7 @@ $(function() {
http_protocol(const std::locale &locale=std::locale()) (defined in stdex::parser::http_protocol)stdex::parser::http_protocolinline
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_protocol)stdex::parser::http_protocolinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_protocol)stdex::parser::http_protocolinlinevirtual
type (defined in stdex::parser::http_protocol)stdex::parser::http_protocol
diff --git a/classstdex_1_1parser_1_1http__protocol.html b/classstdex_1_1parser_1_1http__protocol.html index 02ac48b0e..81ee10cc1 100644 --- a/classstdex_1_1parser_1_1http__protocol.html +++ b/classstdex_1_1parser_1_1http__protocol.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_protocol:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -105,22 +105,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -137,18 +137,18 @@ Public Attributes uint16_t  - - + - - + +

Public Attributes

version
 HTTP protocol version: 0x100 = 1.0, 0x101 = 1.1...
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP protocol.

@@ -176,7 +176,7 @@ const std::locale & m_
@@ -226,7 +226,7 @@ const std::locale & m_ @@ -236,7 +236,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__protocol.png b/classstdex_1_1parser_1_1http__protocol.png index e7ea37c62..938fbb1aa 100644 Binary files a/classstdex_1_1parser_1_1http__protocol.png and b/classstdex_1_1parser_1_1http__protocol.png differ diff --git a/classstdex_1_1parser_1_1http__quoted__string-members.html b/classstdex_1_1parser_1_1http__quoted__string-members.html index 26f9e4ce2..ff0280b1f 100644 --- a/classstdex_1_1parser_1_1http__quoted__string-members.html +++ b/classstdex_1_1parser_1_1http__quoted__string-members.html @@ -81,14 +81,14 @@ $(function() {

This is the complete list of members for stdex::parser::http_quoted_string, including all inherited members.

- +
contentstdex::parser::http_quoted_string
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_quoted_string)stdex::parser::http_quoted_stringinlinevirtual
m_chr (defined in stdex::parser::http_quoted_string)stdex::parser::http_quoted_stringprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_quoted_string)stdex::parser::http_quoted_stringinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__quoted__string.html b/classstdex_1_1parser_1_1http__quoted__string.html index 43cbe6e0a..77bb9163d 100644 --- a/classstdex_1_1parser_1_1http__quoted__string.html +++ b/classstdex_1_1parser_1_1http__quoted__string.html @@ -93,7 +93,7 @@ Inheritance diagram for stdex::parser::http_quoted_string:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -103,22 +103,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -126,21 +126,21 @@ Public Attributesstdex::interval< size_t >  - - + - - + +

Public Attributes

content
 String content (without quotes)
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

http_text_char m_chr
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP quoted string (RFC2616: quoted-string)

@@ -168,7 +168,7 @@ const std::locale & m_
@@ -218,7 +218,7 @@ const std::locale & m_ @@ -228,7 +228,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__quoted__string.png b/classstdex_1_1parser_1_1http__quoted__string.png index 6c9c7db86..a3b55abed 100644 Binary files a/classstdex_1_1parser_1_1http__quoted__string.png and b/classstdex_1_1parser_1_1http__quoted__string.png differ diff --git a/classstdex_1_1parser_1_1http__request-members.html b/classstdex_1_1parser_1_1http__request-members.html index 538d598d3..8a274785c 100644 --- a/classstdex_1_1parser_1_1http__request-members.html +++ b/classstdex_1_1parser_1_1http__request-members.html @@ -80,17 +80,18 @@ $(function() {

This is the complete list of members for stdex::parser::http_request, including all inherited members.

- - - - - - - + + + + + + + +
intervalstdex::parser::basic_tester< char >
invalidate() (defined in stdex::parser::http_request)stdex::parser::http_requestinlinevirtual
m_line_break (defined in stdex::parser::http_request)stdex::parser::http_requestprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_request)stdex::parser::http_requestinlinevirtual
protocol (defined in stdex::parser::http_request)stdex::parser::http_request
url (defined in stdex::parser::http_request)stdex::parser::http_request
verb (defined in stdex::parser::http_request)stdex::parser::http_request
http_request(const std::locale &locale=std::locale()) (defined in stdex::parser::http_request)stdex::parser::http_requestinline
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_request)stdex::parser::http_requestinlinevirtual
m_line_break (defined in stdex::parser::http_request)stdex::parser::http_requestprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_request)stdex::parser::http_requestinlinevirtual
protocol (defined in stdex::parser::http_request)stdex::parser::http_request
url (defined in stdex::parser::http_request)stdex::parser::http_request
verb (defined in stdex::parser::http_request)stdex::parser::http_request
diff --git a/classstdex_1_1parser_1_1http__request.html b/classstdex_1_1parser_1_1http__request.html index ccf6eb697..ca82e2354 100644 --- a/classstdex_1_1parser_1_1http__request.html +++ b/classstdex_1_1parser_1_1http__request.html @@ -93,32 +93,35 @@ Inheritance diagram for stdex::parser::http_request:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
+ + - - - - + + + - - + - - + - - + - +

Public Member Functions

http_request (const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -131,21 +134,21 @@ Public Attributes - - + - - + +

Public Attributes

http_protocol protocol
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Protected Attributes

http_line_break m_line_break
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP request.

@@ -173,7 +176,7 @@ const std::locale & m_
@@ -223,7 +226,7 @@ const std::locale & m_ @@ -233,7 +236,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__request.png b/classstdex_1_1parser_1_1http__request.png index 7f3157c65..5c0325ea1 100644 Binary files a/classstdex_1_1parser_1_1http__request.png and b/classstdex_1_1parser_1_1http__request.png differ diff --git a/classstdex_1_1parser_1_1http__space-members.html b/classstdex_1_1parser_1_1http__space-members.html index c44a5e0bf..d06f6178b 100644 --- a/classstdex_1_1parser_1_1http__space-members.html +++ b/classstdex_1_1parser_1_1http__space-members.html @@ -80,13 +80,13 @@ $(function() {

This is the complete list of members for stdex::parser::http_space, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
m_line_break (defined in stdex::parser::http_space)stdex::parser::http_spaceprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_space)stdex::parser::http_spaceinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__space.html b/classstdex_1_1parser_1_1http__space.html index 00da2db0d..14c3fb2b4 100644 --- a/classstdex_1_1parser_1_1http__space.html +++ b/classstdex_1_1parser_1_1http__space.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_space:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -100,40 +100,40 @@ Inheritance diagram for stdex::parser::http_space: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

http_line_break m_line_break
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

Test for HTTP space (RFC2616: LWS)

@@ -184,7 +184,7 @@ Additional Inherited Members
@@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1http__space.png b/classstdex_1_1parser_1_1http__space.png index 372678e11..0f911eb33 100644 Binary files a/classstdex_1_1parser_1_1http__space.png and b/classstdex_1_1parser_1_1http__space.png differ diff --git a/classstdex_1_1parser_1_1http__text__char-members.html b/classstdex_1_1parser_1_1http__text__char-members.html index 3c38abfcd..a54cbbcff 100644 --- a/classstdex_1_1parser_1_1http__text__char-members.html +++ b/classstdex_1_1parser_1_1http__text__char-members.html @@ -80,13 +80,13 @@ $(function() {

This is the complete list of members for stdex::parser::http_text_char, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
m_space (defined in stdex::parser::http_text_char)stdex::parser::http_text_charprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_text_char)stdex::parser::http_text_charinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__text__char.html b/classstdex_1_1parser_1_1http__text__char.html index bca352579..456b75fdd 100644 --- a/classstdex_1_1parser_1_1http__text__char.html +++ b/classstdex_1_1parser_1_1http__text__char.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_text_char:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -100,40 +100,40 @@ Inheritance diagram for stdex::parser::http_text_char: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

http_space m_space
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

Test for HTTP text character (RFC2616: TEXT)

@@ -184,7 +184,7 @@ Additional Inherited Members
@@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1http__text__char.png b/classstdex_1_1parser_1_1http__text__char.png index d52a6f782..d8a606376 100644 Binary files a/classstdex_1_1parser_1_1http__text__char.png and b/classstdex_1_1parser_1_1http__text__char.png differ diff --git a/classstdex_1_1parser_1_1http__token-members.html b/classstdex_1_1parser_1_1http__token-members.html index 269166cd2..7e499f73c 100644 --- a/classstdex_1_1parser_1_1http__token-members.html +++ b/classstdex_1_1parser_1_1http__token-members.html @@ -80,12 +80,12 @@ $(function() {

This is the complete list of members for stdex::parser::http_token, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_token)stdex::parser::http_tokeninlinevirtual
diff --git a/classstdex_1_1parser_1_1http__token.html b/classstdex_1_1parser_1_1http__token.html index c23a41413..03db0f08a 100644 --- a/classstdex_1_1parser_1_1http__token.html +++ b/classstdex_1_1parser_1_1http__token.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::http_token:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -99,34 +99,34 @@ Inheritance diagram for stdex::parser::http_token: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP token (RFC2616: token - tolerates non-ASCII)

@@ -177,7 +177,7 @@ const std::locale & m_
@@ -187,7 +187,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__token.png b/classstdex_1_1parser_1_1http__token.png index deeadb55c..d84cf52f3 100644 Binary files a/classstdex_1_1parser_1_1http__token.png and b/classstdex_1_1parser_1_1http__token.png differ diff --git a/classstdex_1_1parser_1_1http__url-members.html b/classstdex_1_1parser_1_1http__url-members.html index a75e6d574..ed8332225 100644 --- a/classstdex_1_1parser_1_1http__url-members.html +++ b/classstdex_1_1parser_1_1http__url-members.html @@ -80,17 +80,18 @@ $(function() {

This is the complete list of members for stdex::parser::http_url, including all inherited members.

- - - - - - - + + + + + + + +
intervalstdex::parser::basic_tester< char >
invalidate() (defined in stdex::parser::http_url)stdex::parser::http_urlinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_url)stdex::parser::http_urlinlinevirtual
params (defined in stdex::parser::http_url)stdex::parser::http_url
path (defined in stdex::parser::http_url)stdex::parser::http_url
port (defined in stdex::parser::http_url)stdex::parser::http_url
server (defined in stdex::parser::http_url)stdex::parser::http_url
http_url(const std::locale &locale=std::locale()) (defined in stdex::parser::http_url)stdex::parser::http_urlinline
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_url)stdex::parser::http_urlinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_url)stdex::parser::http_urlinlinevirtual
params (defined in stdex::parser::http_url)stdex::parser::http_url
path (defined in stdex::parser::http_url)stdex::parser::http_url
port (defined in stdex::parser::http_url)stdex::parser::http_url
server (defined in stdex::parser::http_url)stdex::parser::http_url
diff --git a/classstdex_1_1parser_1_1http__url.html b/classstdex_1_1parser_1_1http__url.html index 8826669e4..949cb564c 100644 --- a/classstdex_1_1parser_1_1http__url.html +++ b/classstdex_1_1parser_1_1http__url.html @@ -92,32 +92,35 @@ Inheritance diagram for stdex::parser::http_url:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
+ + - - - - + + + - - + - - + - - + - +

Public Member Functions

http_url (const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -133,18 +136,18 @@ Public Attributes - - + - - + +

Public Attributes

std::list< http_url_parameterparams
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP URL.

@@ -172,7 +175,7 @@ const std::locale & m_
@@ -222,7 +225,7 @@ const std::locale & m_ @@ -232,7 +235,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__url.png b/classstdex_1_1parser_1_1http__url.png index 5bc507711..8186f4e44 100644 Binary files a/classstdex_1_1parser_1_1http__url.png and b/classstdex_1_1parser_1_1http__url.png differ diff --git a/classstdex_1_1parser_1_1http__url__parameter-members.html b/classstdex_1_1parser_1_1http__url__parameter-members.html index 946ce3368..7190f9b43 100644 --- a/classstdex_1_1parser_1_1http__url__parameter-members.html +++ b/classstdex_1_1parser_1_1http__url__parameter-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_url_parameter, including all inherited members.

- + @@ -88,7 +88,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_url_parameter)stdex::parser::http_url_parameterinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_url_parameter)stdex::parser::http_url_parameterinlinevirtual
name (defined in stdex::parser::http_url_parameter)stdex::parser::http_url_parameter
diff --git a/classstdex_1_1parser_1_1http__url__parameter.html b/classstdex_1_1parser_1_1http__url__parameter.html index 6704601be..ab6050b99 100644 --- a/classstdex_1_1parser_1_1http__url__parameter.html +++ b/classstdex_1_1parser_1_1http__url__parameter.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_url_parameter:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -102,22 +102,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -127,18 +127,18 @@ Public Attributes - - + - - + +

Public Attributes

stdex::interval< size_t > value
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP URL parameter.

@@ -166,7 +166,7 @@ const std::locale & m_
@@ -216,7 +216,7 @@ const std::locale & m_ @@ -226,7 +226,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__url__parameter.png b/classstdex_1_1parser_1_1http__url__parameter.png index 9f91fec20..11e7915eb 100644 Binary files a/classstdex_1_1parser_1_1http__url__parameter.png and b/classstdex_1_1parser_1_1http__url__parameter.png differ diff --git a/classstdex_1_1parser_1_1http__url__path-members.html b/classstdex_1_1parser_1_1http__url__path-members.html index 9e426e762..1b9b0b8e2 100644 --- a/classstdex_1_1parser_1_1http__url__path-members.html +++ b/classstdex_1_1parser_1_1http__url__path-members.html @@ -80,14 +80,14 @@ $(function() {

This is the complete list of members for stdex::parser::http_url_path, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_url_path)stdex::parser::http_url_pathinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_url_path)stdex::parser::http_url_pathinlinevirtual
segmentsstdex::parser::http_url_path
diff --git a/classstdex_1_1parser_1_1http__url__path.html b/classstdex_1_1parser_1_1http__url__path.html index 3dffcbb0d..e3679c4f4 100644 --- a/classstdex_1_1parser_1_1http__url__path.html +++ b/classstdex_1_1parser_1_1http__url__path.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_url_path:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -102,22 +102,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -125,18 +125,18 @@ Public Attributes std::vector< http_url_path_segment >  - - + - - + +

Public Attributes

segments
 Path segments.
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP URL path segment.

@@ -164,7 +164,7 @@ const std::locale & m_
@@ -214,7 +214,7 @@ const std::locale & m_ @@ -224,7 +224,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__url__path.png b/classstdex_1_1parser_1_1http__url__path.png index 4a0a7618c..96eecea41 100644 Binary files a/classstdex_1_1parser_1_1http__url__path.png and b/classstdex_1_1parser_1_1http__url__path.png differ diff --git a/classstdex_1_1parser_1_1http__url__path__segment-members.html b/classstdex_1_1parser_1_1http__url__path__segment-members.html index d5d250a4c..11fa6edc1 100644 --- a/classstdex_1_1parser_1_1http__url__path__segment-members.html +++ b/classstdex_1_1parser_1_1http__url__path__segment-members.html @@ -80,12 +80,12 @@ $(function() {

This is the complete list of members for stdex::parser::http_url_path_segment, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_url_path_segment)stdex::parser::http_url_path_segmentinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__url__path__segment.html b/classstdex_1_1parser_1_1http__url__path__segment.html index f98046db0..ff8d84d5f 100644 --- a/classstdex_1_1parser_1_1http__url__path__segment.html +++ b/classstdex_1_1parser_1_1http__url__path__segment.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::http_url_path_segment:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -99,34 +99,34 @@ Inheritance diagram for stdex::parser::http_url_path_segment: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP URL path segment.

@@ -177,7 +177,7 @@ const std::locale & m_
@@ -187,7 +187,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__url__path__segment.png b/classstdex_1_1parser_1_1http__url__path__segment.png index b5b41d7d8..e81424237 100644 Binary files a/classstdex_1_1parser_1_1http__url__path__segment.png and b/classstdex_1_1parser_1_1http__url__path__segment.png differ diff --git a/classstdex_1_1parser_1_1http__url__port-members.html b/classstdex_1_1parser_1_1http__url__port-members.html index 9c6d419e3..828b1c396 100644 --- a/classstdex_1_1parser_1_1http__url__port-members.html +++ b/classstdex_1_1parser_1_1http__url__port-members.html @@ -81,14 +81,14 @@ $(function() {

This is the complete list of members for stdex::parser::http_url_port, including all inherited members.

- +
http_url_port(const std::locale &locale=std::locale()) (defined in stdex::parser::http_url_port)stdex::parser::http_url_portinline
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_url_port)stdex::parser::http_url_portinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_url_port)stdex::parser::http_url_portinlinevirtual
value (defined in stdex::parser::http_url_port)stdex::parser::http_url_port
diff --git a/classstdex_1_1parser_1_1http__url__port.html b/classstdex_1_1parser_1_1http__url__port.html index 4c777c628..f6682d4ea 100644 --- a/classstdex_1_1parser_1_1http__url__port.html +++ b/classstdex_1_1parser_1_1http__url__port.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_url_port:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -105,40 +105,40 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - + +

Public Attributes

uint16_t value
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP URL port.

@@ -166,7 +166,7 @@ const std::locale & m_
@@ -216,7 +216,7 @@ const std::locale & m_ @@ -226,7 +226,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__url__port.png b/classstdex_1_1parser_1_1http__url__port.png index 5486bb5c4..8d61a2885 100644 Binary files a/classstdex_1_1parser_1_1http__url__port.png and b/classstdex_1_1parser_1_1http__url__port.png differ diff --git a/classstdex_1_1parser_1_1http__url__server-members.html b/classstdex_1_1parser_1_1http__url__server-members.html index 7b34739f3..d7958308d 100644 --- a/classstdex_1_1parser_1_1http__url__server-members.html +++ b/classstdex_1_1parser_1_1http__url__server-members.html @@ -80,12 +80,12 @@ $(function() {

This is the complete list of members for stdex::parser::http_url_server, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_url_server)stdex::parser::http_url_serverinlinevirtual
diff --git a/classstdex_1_1parser_1_1http__url__server.html b/classstdex_1_1parser_1_1http__url__server.html index f047e23d3..c388761d7 100644 --- a/classstdex_1_1parser_1_1http__url__server.html +++ b/classstdex_1_1parser_1_1http__url__server.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::http_url_server:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -99,34 +99,34 @@ Inheritance diagram for stdex::parser::http_url_server: Public Member Functions - - - - + + + - - + - - + - - + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP URL server.

@@ -177,7 +177,7 @@ const std::locale & m_
@@ -187,7 +187,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__url__server.png b/classstdex_1_1parser_1_1http__url__server.png index 491a8314c..bb33fa0d2 100644 Binary files a/classstdex_1_1parser_1_1http__url__server.png and b/classstdex_1_1parser_1_1http__url__server.png differ diff --git a/classstdex_1_1parser_1_1http__value-members.html b/classstdex_1_1parser_1_1http__value-members.html index 8ac128b04..06be42da5 100644 --- a/classstdex_1_1parser_1_1http__value-members.html +++ b/classstdex_1_1parser_1_1http__value-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::http_value, including all inherited members.

- + @@ -88,7 +88,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_value)stdex::parser::http_valueinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_value)stdex::parser::http_valueinlinevirtual
stringstdex::parser::http_value
diff --git a/classstdex_1_1parser_1_1http__value.html b/classstdex_1_1parser_1_1http__value.html index aa7000007..a8f4dc419 100644 --- a/classstdex_1_1parser_1_1http__value.html +++ b/classstdex_1_1parser_1_1http__value.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_value:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -102,22 +102,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -129,18 +129,18 @@ Public Attributeshttp_token  - - + - - + +

Public Attributes

token
 Value when matched as token.
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP value (RFC2616: value)

@@ -168,7 +168,7 @@ const std::locale & m_
@@ -218,7 +218,7 @@ const std::locale & m_ @@ -228,7 +228,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__value.png b/classstdex_1_1parser_1_1http__value.png index 9adea93b5..1346f0495 100644 Binary files a/classstdex_1_1parser_1_1http__value.png and b/classstdex_1_1parser_1_1http__value.png differ diff --git a/classstdex_1_1parser_1_1http__header__collection-members.html b/classstdex_1_1parser_1_1http__value__collection-members.html similarity index 80% rename from classstdex_1_1parser_1_1http__header__collection-members.html rename to classstdex_1_1parser_1_1http__value__collection-members.html index 6037d23a1..94ecb2419 100644 --- a/classstdex_1_1parser_1_1http__header__collection-members.html +++ b/classstdex_1_1parser_1_1http__value__collection-members.html @@ -70,21 +70,21 @@ $(function() {
-
stdex::parser::http_header_collection< T > Member List
+
stdex::parser::http_value_collection< T > Member List
-

This is the complete list of members for stdex::parser::http_header_collection< T >, including all inherited members.

+

This is the complete list of members for stdex::parser::http_value_collection< T >, including all inherited members.

- +
insert(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_header_collection< T >)stdex::parser::http_header_collection< T >inline
insert(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_value_collection< T >)stdex::parser::http_value_collection< T >inline
diff --git a/classstdex_1_1parser_1_1http__header__collection.html b/classstdex_1_1parser_1_1http__value__collection.html similarity index 77% rename from classstdex_1_1parser_1_1http__header__collection.html rename to classstdex_1_1parser_1_1http__value__collection.html index 60c4ed295..a3d0767d1 100644 --- a/classstdex_1_1parser_1_1http__header__collection.html +++ b/classstdex_1_1parser_1_1http__value__collection.html @@ -5,7 +5,7 @@ -stdex: stdex::parser::http_header_collection< T > Class Template Reference +stdex: stdex::parser::http_value_collection< T > Class Template Reference @@ -70,44 +70,44 @@ $(function() {
-
stdex::parser::http_header_collection< T > Class Template Reference
+List of all members
+
stdex::parser::http_value_collection< T > Class Template Reference
-

Collection of HTTP headers. - More...

+

Collection of HTTP values. + More...

#include <stdex/parser.hpp>

-Inheritance diagram for stdex::parser::http_header_collection< T >:
+Inheritance diagram for stdex::parser::http_value_collection< T >:
- +
- - + +

Public Member Functions

-void insert (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+void insert (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 

Detailed Description

template<class T>
-class stdex::parser::http_header_collection< T >

Collection of HTTP headers.

+class stdex::parser::http_value_collection< T >

Collection of HTTP values.


The documentation for this class was generated from the following file: diff --git a/classstdex_1_1parser_1_1http__value__collection.png b/classstdex_1_1parser_1_1http__value__collection.png new file mode 100644 index 000000000..e76f9bedc Binary files /dev/null and b/classstdex_1_1parser_1_1http__value__collection.png differ diff --git a/classstdex_1_1parser_1_1http__weight-members.html b/classstdex_1_1parser_1_1http__weight-members.html index e7d7b32e2..c576af98b 100644 --- a/classstdex_1_1parser_1_1http__weight-members.html +++ b/classstdex_1_1parser_1_1http__weight-members.html @@ -81,14 +81,14 @@ $(function() {

This is the complete list of members for stdex::parser::http_weight, including all inherited members.

- +
http_weight(const std::locale &locale=std::locale()) (defined in stdex::parser::http_weight)stdex::parser::http_weightinline
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_weight)stdex::parser::http_weightinlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_weight)stdex::parser::http_weightinlinevirtual
valuestdex::parser::http_weight
diff --git a/classstdex_1_1parser_1_1http__weight.html b/classstdex_1_1parser_1_1http__weight.html index e155fa288..ef846dfae 100644 --- a/classstdex_1_1parser_1_1http__weight.html +++ b/classstdex_1_1parser_1_1http__weight.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::http_weight:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -105,22 +105,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -128,18 +128,18 @@ Public Attributes float  - - + - - + +

Public Attributes

value
 Calculated value of the weight factor.
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for HTTP weight factor.

@@ -167,7 +167,7 @@ const std::locale & m_
@@ -217,7 +217,7 @@ const std::locale & m_ @@ -227,7 +227,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1http__weight.png b/classstdex_1_1parser_1_1http__weight.png index b3a0517ab..ccd49335c 100644 Binary files a/classstdex_1_1parser_1_1http__weight.png and b/classstdex_1_1parser_1_1http__weight.png differ diff --git a/classstdex_1_1parser_1_1http__weighted__value-members.html b/classstdex_1_1parser_1_1http__weighted__value-members.html index 658e92cbc..e6ce97133 100644 --- a/classstdex_1_1parser_1_1http__weighted__value-members.html +++ b/classstdex_1_1parser_1_1http__weighted__value-members.html @@ -82,14 +82,15 @@ $(function() { - - - - + + + + +
asterisk (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >
factor (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >
intervalstdex::parser::basic_tester< char >
invalidate() (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >inlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >inlinevirtual
value (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >
http_weighted_value(const std::locale &locale=std::locale()) (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >inline
intervalstdex::parser::basic_parser< char >
invalidate() (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >inlinevirtual
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >inlinevirtual
value (defined in stdex::parser::http_weighted_value< T, T_asterisk >)stdex::parser::http_weighted_value< T, T_asterisk >
diff --git a/classstdex_1_1parser_1_1http__weighted__value.html b/classstdex_1_1parser_1_1http__weighted__value.html index 09b0517a3..d2200cc0f 100644 --- a/classstdex_1_1parser_1_1http__weighted__value.html +++ b/classstdex_1_1parser_1_1http__weighted__value.html @@ -92,32 +92,35 @@ Inheritance diagram for stdex::parser::http_weighted_value< T, T_asterisk >
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
+ + - - - - + + + - - + - - + - - + - +

Public Member Functions

http_weighted_value (const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -130,18 +133,18 @@ T  - - + - - + +

Public Attributes

value
http_weight factor
 
- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- - - + + +

Additional Inherited Members

- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

template<class T, class T_asterisk = http_asterisk>
@@ -172,7 +175,7 @@ template<class T , class T_asterisk = http_asterisk>
@@ -224,7 +227,7 @@ template<class T , class T_asterisk = http_asterisk> @@ -234,7 +237,7 @@ template<class T , class T_asterisk = http_asterisk> diff --git a/classstdex_1_1parser_1_1http__weighted__value.png b/classstdex_1_1parser_1_1http__weighted__value.png index f0430023e..cd9b5ab87 100644 Binary files a/classstdex_1_1parser_1_1http__weighted__value.png and b/classstdex_1_1parser_1_1http__weighted__value.png differ diff --git a/classstdex_1_1parser_1_1tester__collection-members.html b/classstdex_1_1parser_1_1parser__collection-members.html similarity index 56% rename from classstdex_1_1parser_1_1tester__collection-members.html rename to classstdex_1_1parser_1_1parser__collection-members.html index 027fc54d8..a8426ad01 100644 --- a/classstdex_1_1parser_1_1tester__collection-members.html +++ b/classstdex_1_1parser_1_1parser__collection-members.html @@ -70,32 +70,32 @@ $(function() {
-
stdex::parser::tester_collection< T > Member List
+
stdex::parser::parser_collection< T > Member List
-

This is the complete list of members for stdex::parser::tester_collection< T >, including all inherited members.

+

This is the complete list of members for stdex::parser::parser_collection< T >, including all inherited members.

- - - - - - - - - - - - + + + + + + + + + + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlinevirtual
m_collection (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >protected
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
tester_collection(const std::locale &locale) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inlineprotected
tester_collection(const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
tester_collection(std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::tester_collection< T >)stdex::parser::tester_collection< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlinevirtual
m_collection (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >protected
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
parser_collection(const std::locale &locale) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inlineprotected
parser_collection(const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
parser_collection(std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale()) (defined in stdex::parser::parser_collection< T >)stdex::parser::parser_collection< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1tester__collection.html b/classstdex_1_1parser_1_1parser__collection.html similarity index 53% rename from classstdex_1_1parser_1_1tester__collection.html rename to classstdex_1_1parser_1_1parser__collection.html index 799e2d5b3..acdf0b804 100644 --- a/classstdex_1_1parser_1_1tester__collection.html +++ b/classstdex_1_1parser_1_1parser__collection.html @@ -5,7 +5,7 @@ -stdex: stdex::parser::tester_collection< T > Class Template Reference +stdex: stdex::parser::parser_collection< T > Class Template Reference @@ -70,7 +70,7 @@ $(function() { -
stdex::parser::tester_collection< T > Class Template Reference
+List of all members +
stdex::parser::parser_collection< T > Class Template Reference
-

Base template for collection-holding testers. - More...

+

Base template for collection-holding parsers. + More...

#include <stdex/parser.hpp>

-Inheritance diagram for stdex::parser::tester_collection< T >:
+Inheritance diagram for stdex::parser::parser_collection< T >:
- - -stdex::parser::basic_tester< T > -stdex::parser::basic_branch< T > -stdex::parser::basic_permutation< T > -stdex::parser::basic_sequence< T > -stdex::parser::basic_string_branch< T, T_tester > + + +stdex::parser::basic_parser< T > +stdex::parser::basic_branch< T > +stdex::parser::basic_permutation< T > +stdex::parser::basic_sequence< T > +stdex::parser::basic_string_branch< T, T_parser >
- - - - - - - - - - + + + + + + + + + - - + - - + - - - + + - +

Public Member Functions

tester_collection (const std::shared_ptr< basic_tester< T > > *el, size_t count, const std::locale &locale=std::locale())
 
tester_collection (std::vector< std::shared_ptr< basic_tester< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
parser_collection (const std::shared_ptr< basic_parser< T > > *el, size_t count, const std::locale &locale=std::locale())
 
parser_collection (std::vector< std::shared_ptr< basic_parser< T > > > &&collection, const std::locale &locale=std::locale())
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + +

Protected Member Functions

tester_collection (const std::locale &locale)
 
parser_collection (const std::locale &locale)
 
- - - - - + + + + +

Protected Attributes

-std::vector< std::shared_ptr< basic_tester< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
+std::vector< std::shared_ptr< basic_parser< T > > > m_collection
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

template<class T>
-class stdex::parser::tester_collection< T >

Base template for collection-holding testers.

+class stdex::parser::parser_collection< T >

Base template for collection-holding parsers.

Member Function Documentation

- -

◆ invalidate()

+ +

◆ invalidate()

@@ -169,7 +169,7 @@ template<class T >
- + @@ -182,7 +182,7 @@ template<class T >
virtual void stdex::parser::tester_collection< T >::invalidate virtual void stdex::parser::parser_collection< T >::invalidate ( )
-

Reimplemented from stdex::parser::basic_tester< T >.

+

Reimplemented from stdex::parser::basic_parser< T >.

@@ -192,7 +192,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1parser__collection.png b/classstdex_1_1parser_1_1parser__collection.png new file mode 100644 index 000000000..f771e407d Binary files /dev/null and b/classstdex_1_1parser_1_1parser__collection.png differ diff --git a/classstdex_1_1parser_1_1sgml__any__cp-members.html b/classstdex_1_1parser_1_1sgml__any__cp-members.html index 5b43a6bba..6685cbb6d 100644 --- a/classstdex_1_1parser_1_1sgml__any__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__any__cp-members.html @@ -80,19 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_any_cp, including all inherited members.

- - - - + + + + - - - - + + + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_any_cp)stdex::parser::sgml_any_cpinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_any_cp(const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_any_cp)stdex::parser::sgml_any_cpinline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__any__cp.html b/classstdex_1_1parser_1_1sgml__any__cp.html index 37af1a9b6..3e77a6002 100644 --- a/classstdex_1_1parser_1_1sgml__any__cp.html +++ b/classstdex_1_1parser_1_1sgml__any__cp.html @@ -92,46 +92,53 @@ Inheritance diagram for stdex::parser::sgml_any_cp: stdex::parser::basic_any_cu< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > + + - + + + - - - - - + + + + - - + - - + - - - + + - +

Public Member Functions

sgml_any_cp (const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
- Public Member Functions inherited from stdex::parser::basic_any_cu< char >
basic_any_cu (const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
 
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for any SGML code point.

@@ -192,7 +199,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__any__cp.png b/classstdex_1_1parser_1_1sgml__any__cp.png index 79a94fa5d..7d42b1a4d 100644 Binary files a/classstdex_1_1parser_1_1sgml__any__cp.png and b/classstdex_1_1parser_1_1sgml__any__cp.png differ diff --git a/classstdex_1_1parser_1_1sgml__cp-members.html b/classstdex_1_1parser_1_1sgml__cp-members.html index 4c50b462f..f1d06fb9c 100644 --- a/classstdex_1_1parser_1_1sgml__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__cp-members.html @@ -80,7 +80,7 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_cp, including all inherited members.

- + @@ -88,7 +88,7 @@ $(function() {
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
m_chr (defined in stdex::parser::sgml_cp)stdex::parser::sgml_cpprotected
m_invert (defined in stdex::parser::sgml_cp)stdex::parser::sgml_cpprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_cp)stdex::parser::sgml_cpinlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__cp.html b/classstdex_1_1parser_1_1sgml__cp.html index 7e0bdc131..dfc8c2b44 100644 --- a/classstdex_1_1parser_1_1sgml__cp.html +++ b/classstdex_1_1parser_1_1sgml__cp.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::sgml_cp:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -103,22 +103,22 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
@@ -128,18 +128,18 @@ std::wstring  - - - + + +

Protected Attributes

m_chr bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

Test for specific SGML code point.

@@ -190,7 +190,7 @@ Additional Inherited Members
@@ -200,7 +200,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1sgml__cp.png b/classstdex_1_1parser_1_1sgml__cp.png index c41865829..acb2f4c2c 100644 Binary files a/classstdex_1_1parser_1_1sgml__cp.png and b/classstdex_1_1parser_1_1sgml__cp.png differ diff --git a/classstdex_1_1parser_1_1sgml__cp__set-members.html b/classstdex_1_1parser_1_1sgml__cp__set-members.html index 634ba0160..208a1adbc 100644 --- a/classstdex_1_1parser_1_1sgml__cp__set-members.html +++ b/classstdex_1_1parser_1_1sgml__cp__set-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_cp_set, including all inherited members.

- - - + + + - - - + + + - +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
m_set (defined in stdex::parser::sgml_cp_set)stdex::parser::sgml_cp_setprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_cp_set)stdex::parser::sgml_cp_setinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_cp_set(const char *set, size_t count=(size_t) -1, bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_cp_set)stdex::parser::sgml_cp_setinline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__cp__set.html b/classstdex_1_1parser_1_1sgml__cp__set.html index 781197557..fbbce63cd 100644 --- a/classstdex_1_1parser_1_1sgml__cp__set.html +++ b/classstdex_1_1parser_1_1sgml__cp__set.html @@ -92,8 +92,8 @@ Inheritance diagram for stdex::parser::sgml_cp_set:
-stdex::parser::basic_set< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_set< char > +stdex::parser::basic_parser< T >
@@ -113,23 +113,23 @@ virtual bool  - - - - + + + - - + - - + - - - + + - +
match (_I
 
virtual void invalidate ()
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -140,10 +140,10 @@ std::wstring  - - - + + +

Protected Attributes

m_set bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 
@@ -151,11 +151,11 @@ Additional Inherited Members - - + - - + +

Additional Inherited Members

size_t hit_offset
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

Test for any SGML code point from a given string of SGML code points.

@@ -216,7 +216,7 @@ size_t hit_offset
diff --git a/classstdex_1_1parser_1_1sgml__cp__set.png b/classstdex_1_1parser_1_1sgml__cp__set.png index 91a521665..6ec3378ff 100644 Binary files a/classstdex_1_1parser_1_1sgml__cp__set.png and b/classstdex_1_1parser_1_1sgml__cp__set.png differ diff --git a/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html b/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html index 9e47c9f85..50dbfa689 100644 --- a/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html +++ b/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html @@ -81,20 +81,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_dns_domain_char, including all inherited members.

- - - - + + + + - - - + + + - +
allow_on_edgestdex::parser::basic_dns_domain_char< char >
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_dns_domain_char)stdex::parser::sgml_dns_domain_charinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_dns_domain_char(bool allow_idn, const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_dns_domain_char)stdex::parser::sgml_dns_domain_charinline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__dns__domain__char.html b/classstdex_1_1parser_1_1sgml__dns__domain__char.html index 4d232bfd1..cc405db4e 100644 --- a/classstdex_1_1parser_1_1sgml__dns__domain__char.html +++ b/classstdex_1_1parser_1_1sgml__dns__domain__char.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::sgml_dns_domain_char: stdex::parser::basic_dns_domain_char< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -110,23 +110,23 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
@@ -135,19 +135,19 @@ Additional Inherited Members bool  - - + - - + + - - - + + +

Additional Inherited Members

allow_on_edge
 Is character allowed at the beginning or an end of a DNS domain?
 
- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_dns_domain_char< char >
bool m_allow_idn
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for valid DNS domain SGML character.

@@ -208,7 +208,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__dns__domain__char.png b/classstdex_1_1parser_1_1sgml__dns__domain__char.png index 87568d821..f6b2b9050 100644 Binary files a/classstdex_1_1parser_1_1sgml__dns__domain__char.png and b/classstdex_1_1parser_1_1sgml__dns__domain__char.png differ diff --git a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char-members.html b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char-members.html index 16d51e687..07c6b7184 100644 --- a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char-members.html +++ b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char-members.html @@ -80,13 +80,13 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_ipv6_scope_id_char, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_ipv6_scope_id_char)stdex::parser::sgml_ipv6_scope_id_charinlinevirtual
sgml_ipv6_scope_id_char(const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_ipv6_scope_id_char)stdex::parser::sgml_ipv6_scope_id_charinline
diff --git a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html index 35dc97b11..32474d313 100644 --- a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html @@ -91,7 +91,7 @@ Inheritance diagram for stdex::parser::sgml_ipv6_scope_id_char:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -102,34 +102,34 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 

Detailed Description

Test for valid IPv6 address scope ID SGML character.

@@ -180,7 +180,7 @@ const std::locale & m_
@@ -190,7 +190,7 @@ const std::locale & m_ diff --git a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.png b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.png index aa31f67b3..3e4bd2b7b 100644 Binary files a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.png and b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.png differ diff --git a/classstdex_1_1parser_1_1sgml__punct__cp-members.html b/classstdex_1_1parser_1_1sgml__punct__cp-members.html index f90d47b7a..bb953f485 100644 --- a/classstdex_1_1parser_1_1sgml__punct__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__punct__cp-members.html @@ -80,19 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_punct_cp, including all inherited members.

- - - - + + + + - - - - + + + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_punct_cp)stdex::parser::sgml_punct_cpinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_punct_cp(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_punct_cp)stdex::parser::sgml_punct_cpinline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__punct__cp.html b/classstdex_1_1parser_1_1sgml__punct__cp.html index d7c76a042..5edc95749 100644 --- a/classstdex_1_1parser_1_1sgml__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__punct__cp.html @@ -92,12 +92,15 @@ Inheritance diagram for stdex::parser::sgml_punct_cp: stdex::parser::basic_punct_cu< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > + + @@ -107,39 +110,39 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +

Public Member Functions

sgml_punct_cp (bool invert=false, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_punct_cu< char >
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - + + - - - + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_punct_cu< char >
bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for any SGML punctuation code point.

@@ -200,7 +203,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__punct__cp.png b/classstdex_1_1parser_1_1sgml__punct__cp.png index 2e741b477..ec8ad3c3f 100644 Binary files a/classstdex_1_1parser_1_1sgml__punct__cp.png and b/classstdex_1_1parser_1_1sgml__punct__cp.png differ diff --git a/classstdex_1_1parser_1_1sgml__space__cp-members.html b/classstdex_1_1parser_1_1sgml__space__cp-members.html index 2c60c7f1f..74ccd9f74 100644 --- a/classstdex_1_1parser_1_1sgml__space__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__space__cp-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_space_cp, including all inherited members.

- - - - + + + + - - - + + + - +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_space_cp)stdex::parser::sgml_space_cpinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_space_cp(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_space_cp)stdex::parser::sgml_space_cpinline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__space__cp.html b/classstdex_1_1parser_1_1sgml__space__cp.html index e1ea69abb..0a1f6d1c0 100644 --- a/classstdex_1_1parser_1_1sgml__space__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__cp.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::sgml_space_cp: stdex::parser::basic_space_cu< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -110,39 +110,39 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - + + - - - + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_space_cu< char >
bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for any SGML space code point.

@@ -203,7 +203,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__space__cp.png b/classstdex_1_1parser_1_1sgml__space__cp.png index 1bf6e6557..f6157b36d 100644 Binary files a/classstdex_1_1parser_1_1sgml__space__cp.png and b/classstdex_1_1parser_1_1sgml__space__cp.png differ diff --git a/classstdex_1_1parser_1_1sgml__space__or__punct__cp-members.html b/classstdex_1_1parser_1_1sgml__space__or__punct__cp-members.html index f64937cd4..172716ebd 100644 --- a/classstdex_1_1parser_1_1sgml__space__or__punct__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__space__or__punct__cp-members.html @@ -80,19 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_space_or_punct_cp, including all inherited members.

- - - - + + + + - - - - + + + + +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_space_or_punct_cp)stdex::parser::sgml_space_or_punct_cpinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_space_or_punct_cp(bool invert=false, const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_space_or_punct_cp)stdex::parser::sgml_space_or_punct_cpinline
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html b/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html index ae9e418af..857478913 100644 --- a/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html @@ -92,12 +92,15 @@ Inheritance diagram for stdex::parser::sgml_space_or_punct_cp: stdex::parser::basic_space_or_punct_cu< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > + + @@ -107,39 +110,39 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +

Public Member Functions

sgml_space_or_punct_cp (bool invert=false, const std::locale &locale=std::locale())
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_space_or_punct_cu< char >
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - + + - - - + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_space_or_punct_cu< char >
bool m_invert
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for any SGML space or punctuation code point.

@@ -200,7 +203,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__space__or__punct__cp.png b/classstdex_1_1parser_1_1sgml__space__or__punct__cp.png index c31ad3f98..139945e70 100644 Binary files a/classstdex_1_1parser_1_1sgml__space__or__punct__cp.png and b/classstdex_1_1parser_1_1sgml__space__or__punct__cp.png differ diff --git a/classstdex_1_1parser_1_1sgml__string-members.html b/classstdex_1_1parser_1_1sgml__string-members.html index d57235d18..592d130ec 100644 --- a/classstdex_1_1parser_1_1sgml__string-members.html +++ b/classstdex_1_1parser_1_1sgml__string-members.html @@ -80,14 +80,14 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_string, including all inherited members.

- +
intervalstdex::parser::basic_tester< char >
intervalstdex::parser::basic_parser< char >
m_str (defined in stdex::parser::sgml_string)stdex::parser::sgml_stringprotected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_string)stdex::parser::sgml_stringinlinevirtual
sgml_string(const char *str, size_t count=(size_t) -1, const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_string)stdex::parser::sgml_stringinline
diff --git a/classstdex_1_1parser_1_1sgml__string.html b/classstdex_1_1parser_1_1sgml__string.html index 3144b21cc..20facfe31 100644 --- a/classstdex_1_1parser_1_1sgml__string.html +++ b/classstdex_1_1parser_1_1sgml__string.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::sgml_string:
-stdex::parser::basic_tester< char > +stdex::parser::basic_parser< char >
@@ -103,40 +103,40 @@ Public Member Functions - - - - + + + - - + - - + - - + - +
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< char >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< char >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
bool match (const std::basic_string< char, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual void invalidate ()
 
 
- - - + + +

Protected Attributes

std::wstring m_str
 
- Protected Attributes inherited from stdex::parser::basic_tester< char >
-const std::locale & m_locale
 
- Protected Attributes inherited from stdex::parser::basic_parser< char >
+std::locale m_locale
 
- - + - - + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< char >
+
- Public Attributes inherited from stdex::parser::basic_parser< char >
interval< size_t > interval
 Test for interval.
 
 Region of the last match.
 

Detailed Description

Test for SGML given string.

@@ -187,7 +187,7 @@ Additional Inherited Members
@@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1sgml__string.png b/classstdex_1_1parser_1_1sgml__string.png index 27e2abd76..07d9b697a 100644 Binary files a/classstdex_1_1parser_1_1sgml__string.png and b/classstdex_1_1parser_1_1sgml__string.png differ diff --git a/classstdex_1_1parser_1_1sgml__url__password__char-members.html b/classstdex_1_1parser_1_1sgml__url__password__char-members.html index cf93c1f73..c30b57400 100644 --- a/classstdex_1_1parser_1_1sgml__url__password__char-members.html +++ b/classstdex_1_1parser_1_1sgml__url__password__char-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_url_password_char, including all inherited members.

- - - - + + + + - - - + + + - +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_url_password_char)stdex::parser::sgml_url_password_charinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_url_password_char(const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_url_password_char)stdex::parser::sgml_url_password_charinline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__url__password__char.html b/classstdex_1_1parser_1_1sgml__url__password__char.html index 82da5432b..981d45b28 100644 --- a/classstdex_1_1parser_1_1sgml__url__password__char.html +++ b/classstdex_1_1parser_1_1sgml__url__password__char.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::sgml_url_password_char: stdex::parser::basic_url_password_char< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -110,35 +110,35 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for valid URL password SGML character.

@@ -199,7 +199,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__url__password__char.png b/classstdex_1_1parser_1_1sgml__url__password__char.png index 815169a07..786b6a27b 100644 Binary files a/classstdex_1_1parser_1_1sgml__url__password__char.png and b/classstdex_1_1parser_1_1sgml__url__password__char.png differ diff --git a/classstdex_1_1parser_1_1sgml__url__path__char-members.html b/classstdex_1_1parser_1_1sgml__url__path__char-members.html index b4701f529..d16eaed7d 100644 --- a/classstdex_1_1parser_1_1sgml__url__path__char-members.html +++ b/classstdex_1_1parser_1_1sgml__url__path__char-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_url_path_char, including all inherited members.

- - - - + + + + - - - + + + - +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_url_path_char)stdex::parser::sgml_url_path_charinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_url_path_char(const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_url_path_char)stdex::parser::sgml_url_path_charinline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__url__path__char.html b/classstdex_1_1parser_1_1sgml__url__path__char.html index 66ac3cbda..68cd74e93 100644 --- a/classstdex_1_1parser_1_1sgml__url__path__char.html +++ b/classstdex_1_1parser_1_1sgml__url__path__char.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::sgml_url_path_char: stdex::parser::basic_url_path_char< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -110,35 +110,35 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for valid URL path SGML character.

@@ -199,7 +199,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__url__path__char.png b/classstdex_1_1parser_1_1sgml__url__path__char.png index f63e31d5e..54a5924a2 100644 Binary files a/classstdex_1_1parser_1_1sgml__url__path__char.png and b/classstdex_1_1parser_1_1sgml__url__path__char.png differ diff --git a/classstdex_1_1parser_1_1sgml__url__username__char-members.html b/classstdex_1_1parser_1_1sgml__url__username__char-members.html index cda1b02f0..050fff5aa 100644 --- a/classstdex_1_1parser_1_1sgml__url__username__char-members.html +++ b/classstdex_1_1parser_1_1sgml__url__username__char-members.html @@ -80,20 +80,20 @@ $(function() {

This is the complete list of members for stdex::parser::sgml_url_username_char, including all inherited members.

- - - - + + + + - - - + + + - +
basic_tester(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
intervalstdex::parser::basic_tester< T >
invalidate() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
m_locale (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >protected
basic_parser(const std::locale &locale=std::locale()) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
intervalstdex::parser::basic_parser< T >
invalidate() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
m_locale (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >protected
match(_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::sgml_url_username_char)stdex::parser::sgml_url_username_charinlinevirtual
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inline
match(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0 (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >pure virtual
match(const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
search(_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default) (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inline
sgml_url_username_char(const std::locale &locale=std::locale()) (defined in stdex::parser::sgml_url_username_char)stdex::parser::sgml_url_username_charinline
~basic_tester() (defined in stdex::parser::basic_tester< T >)stdex::parser::basic_tester< T >inlinevirtual
~basic_parser() (defined in stdex::parser::basic_parser< T >)stdex::parser::basic_parser< T >inlinevirtual
diff --git a/classstdex_1_1parser_1_1sgml__url__username__char.html b/classstdex_1_1parser_1_1sgml__url__username__char.html index 1e42641bb..1729e7f38 100644 --- a/classstdex_1_1parser_1_1sgml__url__username__char.html +++ b/classstdex_1_1parser_1_1sgml__url__username__char.html @@ -92,7 +92,7 @@ Inheritance diagram for stdex::parser::sgml_url_username_char: stdex::parser::basic_url_username_char< char > -stdex::parser::basic_tester< T > +stdex::parser::basic_parser< T > @@ -110,35 +110,35 @@ Public Member Functions - - - - + + + - - + - - + - - - + + - +
virtual bool match (_In_reads_or_z_(end) const char *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
- Public Member Functions inherited from stdex::parser::basic_tester< T >
basic_tester (const std::locale &locale=std::locale())
 
+
- Public Member Functions inherited from stdex::parser::basic_parser< T >
basic_parser (const std::locale &locale=std::locale())
 
bool search (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
 
virtual bool match (_In_reads_or_z_(end) const T *text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)=0
 
+
 
template<class _Traits , class _Ax >
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
+
bool match (const std::basic_string< T, _Traits, _Ax > &text, size_t start=0, size_t end=(size_t) -1, int flags=match_default)
 
virtual void invalidate ()
 
 
- - + - - - - - + + + + +

Additional Inherited Members

- Public Attributes inherited from stdex::parser::basic_tester< T >
+
- Public Attributes inherited from stdex::parser::basic_parser< T >
interval< size_t > interval
 Test for interval.
 
- Protected Attributes inherited from stdex::parser::basic_tester< T >
-const std::locale & m_locale
 
 Region of the last match.
 
- Protected Attributes inherited from stdex::parser::basic_parser< T >
+std::locale m_locale
 

Detailed Description

Test for valid URL username SGML character.

@@ -199,7 +199,7 @@ const std::locale & m_
diff --git a/classstdex_1_1parser_1_1sgml__url__username__char.png b/classstdex_1_1parser_1_1sgml__url__username__char.png index a41fa73ec..872a0317f 100644 Binary files a/classstdex_1_1parser_1_1sgml__url__username__char.png and b/classstdex_1_1parser_1_1sgml__url__username__char.png differ diff --git a/classstdex_1_1parser_1_1tester__collection.png b/classstdex_1_1parser_1_1tester__collection.png deleted file mode 100644 index 52a8b2f5d..000000000 Binary files a/classstdex_1_1parser_1_1tester__collection.png and /dev/null differ diff --git a/classstdex_1_1progress-members.html b/classstdex_1_1progress-members.html index d7701c8bb..ec0b65479 100644 --- a/classstdex_1_1progress-members.html +++ b/classstdex_1_1progress-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1progress.html b/classstdex_1_1progress.html index 466d69e88..736c58a01 100644 --- a/classstdex_1_1progress.html +++ b/classstdex_1_1progress.html @@ -318,7 +318,7 @@ template<class T > diff --git a/classstdex_1_1user__cancelled-members.html b/classstdex_1_1user__cancelled-members.html index 863de705d..3ff41d531 100644 --- a/classstdex_1_1user__cancelled-members.html +++ b/classstdex_1_1user__cancelled-members.html @@ -84,7 +84,7 @@ $(function() { diff --git a/classstdex_1_1user__cancelled.html b/classstdex_1_1user__cancelled.html index 53011a0a8..7f5a63f3b 100644 --- a/classstdex_1_1user__cancelled.html +++ b/classstdex_1_1user__cancelled.html @@ -141,7 +141,7 @@ Public Member Functions diff --git a/classstdex_1_1vector__queue-members.html b/classstdex_1_1vector__queue-members.html index 4310c4611..769b6fffa 100644 --- a/classstdex_1_1vector__queue-members.html +++ b/classstdex_1_1vector__queue-members.html @@ -122,7 +122,7 @@ $(function() { diff --git a/classstdex_1_1vector__queue.html b/classstdex_1_1vector__queue.html index af29ee88f..3309c429d 100644 --- a/classstdex_1_1vector__queue.html +++ b/classstdex_1_1vector__queue.html @@ -795,7 +795,7 @@ template<class T > diff --git a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html index 25867ab96..7d0260a97 100644 --- a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html +++ b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html @@ -86,7 +86,7 @@ Files diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index dee22e78d..d1e4b03c4 100644 --- a/dir_d44c64559bbebec7f509842c48db8b23.html +++ b/dir_d44c64559bbebec7f509842c48db8b23.html @@ -86,7 +86,7 @@ Directories diff --git a/dir_fca3c47b2ea228727bd6729832f89576.html b/dir_fca3c47b2ea228727bd6729832f89576.html index c1c32381d..c696a7e6e 100644 --- a/dir_fca3c47b2ea228727bd6729832f89576.html +++ b/dir_fca3c47b2ea228727bd6729832f89576.html @@ -114,7 +114,7 @@ Files diff --git a/errno_8hpp_source.html b/errno_8hpp_source.html index 2c4550829..1df62857e 100644 --- a/errno_8hpp_source.html +++ b/errno_8hpp_source.html @@ -136,7 +136,7 @@ $(function() { diff --git a/exception_8hpp_source.html b/exception_8hpp_source.html index 5d54a25df..e87ac200a 100644 --- a/exception_8hpp_source.html +++ b/exception_8hpp_source.html @@ -102,7 +102,7 @@ $(function() { diff --git a/files.html b/files.html index c954a2da3..44d6e6ca4 100644 --- a/files.html +++ b/files.html @@ -99,7 +99,7 @@ $(function() { diff --git a/functions.html b/functions.html index 18fb0aee9..98eff1f11 100644 --- a/functions.html +++ b/functions.html @@ -75,7 +75,7 @@ $(function() {

- a -

- d -

@@ -212,7 +212,7 @@ $(function() {

- s -

@@ -253,7 +253,7 @@ $(function() { diff --git a/functions_func.html b/functions_func.html index f24f18c94..83f4daf8a 100644 --- a/functions_func.html +++ b/functions_func.html @@ -198,7 +198,7 @@ $(function() { diff --git a/functions_type.html b/functions_type.html index 2c4d841de..f3d7c3d6b 100644 --- a/functions_type.html +++ b/functions_type.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_vars.html b/functions_vars.html index c2889ed48..d3837352e 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -74,7 +74,7 @@ $(function() {

- a -

@@ -86,29 +86,29 @@ $(function() {

- c -

- d -

- e -

- f -

@@ -118,8 +118,8 @@ $(function() {

- i -

@@ -127,7 +127,7 @@ $(function() {
  • m_allow_absolute : stdex::parser::basic_dns_name< T >
  • m_count : stdex::vector_queue< T >
  • m_data : stdex::vector_queue< T >
  • -
  • m_el : stdex::parser::basic_iterations< T >
  • +
  • m_el : stdex::parser::basic_iterations< T >
  • m_greedy : stdex::parser::basic_iterations< T >
  • m_head : stdex::vector_queue< T >
  • m_max_iterations : stdex::parser::basic_iterations< T >
  • @@ -140,25 +140,25 @@ $(function() {

    - n -

    - p -

    - s -

    @@ -176,7 +176,7 @@ $(function() { diff --git a/hex_8hpp_source.html b/hex_8hpp_source.html index 5655f2b0e..b5a93b45a 100644 --- a/hex_8hpp_source.html +++ b/hex_8hpp_source.html @@ -209,7 +209,7 @@ $(function() { diff --git a/hierarchy.html b/hierarchy.html index a7775cc3f..5fedcc731 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -77,7 +77,7 @@ $(function() {
    [detail level 1234]
    - + @@ -137,12 +137,12 @@ $(function() { - + - + - + @@ -189,14 +189,14 @@ $(function() { - +
     Cstdex::base64_decBase64 decoding session
     Cstdex::base64_encBase64 encoding session
     Cstdex::parser::basic_tester< T >Base template for all testers
     Cstdex::parser::basic_parser< T >Base template for all parsers
     Cstdex::parser::basic_any_cu< char >
     Cstdex::parser::basic_dns_domain_char< char >
     Cstdex::parser::basic_url_path< T >Test for URL path
     Cstdex::parser::basic_url_path_char< T >Test for valid URL path character
     Cstdex::parser::basic_url_username_char< T >Test for valid URL username character
     Cstdex::parser::tester_collection< T >Base template for collection-holding testers
     Cstdex::parser::parser_collection< T >Base template for collection-holding parsers
     Cstdex::parser::basic_tester< char >
     Cstdex::parser::basic_parser< char >
     Cstdex::parser::http_agentTest for HTTP agent
     Cstdex::parser::http_any_typeTest for HTTP any type
     Cstdex::parser::http_asteriskTest for HTTP asterisk
     Cstd::runtime_error
     Cstdex::errno_errorStandard C runtime library error
     CT
     Cstdex::parser::http_header_collection< T >Collection of HTTP headers
     Cstdex::parser::http_value_collection< T >Collection of HTTP values
     Cstdex::vector_queue< T >Helper class to allow limited size FIFO queues implemented as vector of elements
    diff --git a/idrec_8hpp_source.html b/idrec_8hpp_source.html index 68d1576f0..b407ec4bd 100644 --- a/idrec_8hpp_source.html +++ b/idrec_8hpp_source.html @@ -275,7 +275,7 @@ $(function() { diff --git a/index.html b/index.html index 84ba7ade2..397834426 100644 --- a/index.html +++ b/index.html @@ -76,7 +76,7 @@ $(function() { diff --git a/interval_8hpp_source.html b/interval_8hpp_source.html index dbb544c38..7c13445ce 100644 --- a/interval_8hpp_source.html +++ b/interval_8hpp_source.html @@ -118,7 +118,7 @@ $(function() { diff --git a/mapping_8hpp_source.html b/mapping_8hpp_source.html index 6429604d5..01e8a9e1c 100644 --- a/mapping_8hpp_source.html +++ b/mapping_8hpp_source.html @@ -109,7 +109,7 @@ $(function() { diff --git a/memory_8hpp_source.html b/memory_8hpp_source.html index da9968ce2..3a8fd6d04 100644 --- a/memory_8hpp_source.html +++ b/memory_8hpp_source.html @@ -119,7 +119,7 @@ $(function() { diff --git a/parser_8hpp_source.html b/parser_8hpp_source.html index fac2a2c1f..65a4cafb7 100644 --- a/parser_8hpp_source.html +++ b/parser_8hpp_source.html @@ -118,11 +118,11 @@ $(function() {
    42 constexpr int match_multiline = 0x2;
    43
    47 template <class T>
    - +
    49 {
    50 public:
    -
    51 basic_tester(_In_ const std::locale& locale = std::locale()) : m_locale(locale) {}
    -
    52 virtual ~basic_tester() {}
    +
    51 basic_parser(_In_ const std::locale& locale = std::locale()) : m_locale(locale) {}
    +
    52 virtual ~basic_parser() {}
    53
    54 bool search(
    55 _In_reads_or_z_(end) const T* text,
    @@ -216,23 +216,23 @@ $(function() {
    144 }
    146
    147 public:
    - +
    149
    150 protected:
    -
    151 const std::locale& m_locale;
    +
    151 std::locale m_locale;
    152 };
    153
    - - + +
    156#ifdef _UNICODE
    -
    157 using ttester = wtester;
    +
    157 using tparser = wparser;
    158#else
    -
    159 using ttester = tester;
    +
    159 using tparser = parser;
    160#endif
    - +
    162
    166 template <class T>
    -
    167 class basic_noop : public basic_tester<T>
    +
    167 class basic_noop : public basic_parser<T>
    168 {
    169 public:
    170 virtual bool match(
    @@ -261,6240 +261,6266 @@ $(function() {
    194
    198 template <class T>
    -
    199 class basic_any_cu : public basic_tester<T>
    +
    199 class basic_any_cu : public basic_parser<T>
    200 {
    201 public:
    -
    202 virtual bool match(
    -
    203 _In_reads_or_z_(end) const T* text,
    -
    204 _In_ size_t start = 0,
    -
    205 _In_ size_t end = (size_t)-1,
    -
    206 _In_ int flags = match_default)
    -
    207 {
    -
    208 assert(text || start >= end);
    -
    209 if (start < end && text[start]) {
    -
    210 interval.end = (interval.start = start) + 1;
    -
    211 return true;
    -
    212 }
    -
    213 interval.start = (interval.end = start) + 1;
    -
    214 return false;
    -
    215 }
    -
    216 };
    -
    217
    - - -
    220#ifdef _UNICODE
    -
    221 using tany_cu = wany_cu;
    -
    222#else
    -
    223 using tany_cu = any_cu;
    -
    224#endif
    -
    225
    -
    229 class sgml_any_cp : public basic_any_cu<char>
    -
    230 {
    -
    231 public:
    -
    232 virtual bool match(
    -
    233 _In_reads_or_z_(end) const char* text,
    -
    234 _In_ size_t start = 0,
    -
    235 _In_ size_t end = (size_t)-1,
    -
    236 _In_ int flags = match_default)
    -
    237 {
    -
    238 assert(text || start >= end);
    -
    239 if (start < end && text[start]) {
    -
    240 if (text[start] == '&') {
    -
    241 // SGML entity
    -
    242 const auto& ctype = std::use_facet<std::ctype<char>>(m_locale);
    -
    243 for (interval.end = start + 1; interval.end < end && text[interval.end]; interval.end++)
    -
    244 if (text[interval.end] == ';') {
    -
    245 interval.end++;
    -
    246 interval.start = start;
    -
    247 return true;
    -
    248 }
    -
    249 else if (text[interval.end] == '&' || ctype.is(ctype.space, text[interval.end]))
    -
    250 break;
    -
    251 // Unterminated entity
    -
    252 }
    -
    253 interval.end = (interval.start = start) + 1;
    -
    254 return true;
    -
    255 }
    -
    256 interval.start = (interval.end = start) + 1;
    -
    257 return false;
    -
    258 }
    -
    259 };
    -
    260
    -
    264 template <class T>
    -
    265 class basic_cu : public basic_tester<T>
    -
    266 {
    -
    267 public:
    -
    268 basic_cu(T chr, bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    269 basic_tester<T>(locale),
    -
    270 m_chr(chr),
    -
    271 m_invert(invert)
    -
    272 {}
    -
    273
    -
    274 virtual bool match(
    -
    275 _In_reads_or_z_(end) const T* text,
    -
    276 _In_ size_t start = 0,
    -
    277 _In_ size_t end = (size_t)-1,
    -
    278 _In_ int flags = match_default)
    -
    279 {
    -
    280 assert(text || start >= end);
    -
    281 if (start < end && text[start]) {
    -
    282 bool r;
    -
    283 if (flags & match_case_insensitive) {
    -
    284 const auto& ctype = std::use_facet<std::ctype<T>>(m_locale);
    -
    285 r = ctype.tolower(text[start]) == ctype.tolower(m_chr);
    -
    286 }
    -
    287 else
    -
    288 r = text[start] == m_chr;
    -
    289 if (r && !m_invert || !r && m_invert) {
    -
    290 interval.end = (interval.start = start) + 1;
    -
    291 return true;
    -
    292 }
    -
    293 }
    -
    294 interval.start = (interval.end = start) + 1;
    -
    295 return false;
    -
    296 }
    -
    297
    -
    298 protected:
    -
    299 T m_chr;
    -
    300 bool m_invert;
    -
    301 };
    -
    302
    -
    303 using cu = basic_cu<char>;
    -
    304 using wcu = basic_cu<wchar_t>;
    -
    305#ifdef _UNICODE
    -
    306 using tcu = wcu;
    -
    307#else
    -
    308 using tcu = cu;
    -
    309#endif
    -
    310
    -
    314 class sgml_cp : public sgml_tester
    -
    315 {
    -
    316 public:
    -
    317 sgml_cp(const char* chr, size_t count = (size_t)-1, bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    318 sgml_tester(locale),
    -
    319 m_invert(invert)
    -
    320 {
    -
    321 assert(chr || !count);
    -
    322 wchar_t buf[3];
    -
    323 size_t chr_end;
    -
    324 m_chr.assign(count ? next_sgml_cp(chr, 0, count, chr_end, buf) : L"");
    -
    325 }
    -
    326
    -
    327 virtual bool match(
    -
    328 _In_reads_or_z_(end) const char* text,
    -
    329 _In_ size_t start = 0,
    -
    330 _In_ size_t end = (size_t)-1,
    -
    331 _In_ int flags = match_default)
    -
    332 {
    -
    333 assert(text || start >= end);
    -
    334 if (start < end && text[start]) {
    -
    335 wchar_t buf[3];
    -
    336 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    337 bool r = ((flags & match_case_insensitive) ?
    -
    338 stdex::strnicmp(chr, (size_t)-1, m_chr.c_str(), m_chr.size(), m_locale) :
    -
    339 stdex::strncmp(chr, (size_t)-1, m_chr.c_str(), m_chr.size())) == 0;
    -
    340 if (r && !m_invert || !r && m_invert) {
    -
    341 interval.start = start;
    -
    342 return true;
    -
    343 }
    -
    344 }
    -
    345 interval.start = (interval.end = start) + 1;
    -
    346 return false;
    -
    347 }
    -
    348
    -
    349 protected:
    -
    350 std::wstring m_chr;
    -
    351 bool m_invert;
    -
    352 };
    -
    353
    -
    357 template <class T>
    -
    358 class basic_space_cu : public basic_tester<T>
    -
    359 {
    -
    360 public:
    -
    361 basic_space_cu(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    362 basic_tester<T>(locale),
    -
    363 m_invert(invert)
    -
    364 {}
    -
    365
    -
    366 virtual bool match(
    -
    367 _In_reads_or_z_(end) const T* text,
    -
    368 _In_ size_t start = 0,
    -
    369 _In_ size_t end = (size_t)-1,
    -
    370 _In_ int flags = match_default)
    -
    371 {
    -
    372 assert(text || start >= end);
    -
    373 if (start < end && text[start]) {
    -
    374 bool r =
    -
    375 ((flags & match_multiline) || !islbreak(text[start])) &&
    -
    376 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::space, text[start]);
    -
    377 if (r && !m_invert || !r && m_invert) {
    -
    378 interval.end = (interval.start = start) + 1;
    -
    379 return true;
    -
    380 }
    -
    381 }
    -
    382 interval.start = (interval.end = start) + 1;
    -
    383 return false;
    -
    384 }
    -
    385
    -
    386 protected:
    -
    387 bool m_invert;
    -
    388 };
    +
    202 basic_any_cu(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
    +
    203
    +
    204 virtual bool match(
    +
    205 _In_reads_or_z_(end) const T* text,
    +
    206 _In_ size_t start = 0,
    +
    207 _In_ size_t end = (size_t)-1,
    +
    208 _In_ int flags = match_default)
    +
    209 {
    +
    210 assert(text || start >= end);
    +
    211 if (start < end && text[start]) {
    +
    212 interval.end = (interval.start = start) + 1;
    +
    213 return true;
    +
    214 }
    +
    215 interval.start = (interval.end = start) + 1;
    +
    216 return false;
    +
    217 }
    +
    218 };
    +
    219
    + + +
    222#ifdef _UNICODE
    +
    223 using tany_cu = wany_cu;
    +
    224#else
    +
    225 using tany_cu = any_cu;
    +
    226#endif
    +
    227
    +
    231 class sgml_any_cp : public basic_any_cu<char>
    +
    232 {
    +
    233 public:
    +
    234 sgml_any_cp(_In_ const std::locale& locale = std::locale()) : basic_any_cu<char>(locale) {}
    +
    235
    +
    236 virtual bool match(
    +
    237 _In_reads_or_z_(end) const char* text,
    +
    238 _In_ size_t start = 0,
    +
    239 _In_ size_t end = (size_t)-1,
    +
    240 _In_ int flags = match_default)
    +
    241 {
    +
    242 assert(text || start >= end);
    +
    243 if (start < end && text[start]) {
    +
    244 if (text[start] == '&') {
    +
    245 // SGML entity
    +
    246 const auto& ctype = std::use_facet<std::ctype<char>>(m_locale);
    +
    247 for (interval.end = start + 1; interval.end < end && text[interval.end]; interval.end++)
    +
    248 if (text[interval.end] == ';') {
    +
    249 interval.end++;
    +
    250 interval.start = start;
    +
    251 return true;
    +
    252 }
    +
    253 else if (text[interval.end] == '&' || ctype.is(ctype.space, text[interval.end]))
    +
    254 break;
    +
    255 // Unterminated entity
    +
    256 }
    +
    257 interval.end = (interval.start = start) + 1;
    +
    258 return true;
    +
    259 }
    +
    260 interval.start = (interval.end = start) + 1;
    +
    261 return false;
    +
    262 }
    +
    263 };
    +
    264
    +
    268 template <class T>
    +
    269 class basic_cu : public basic_parser<T>
    +
    270 {
    +
    271 public:
    +
    272 basic_cu(T chr, bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    273 basic_parser<T>(locale),
    +
    274 m_chr(chr),
    +
    275 m_invert(invert)
    +
    276 {}
    +
    277
    +
    278 virtual bool match(
    +
    279 _In_reads_or_z_(end) const T* text,
    +
    280 _In_ size_t start = 0,
    +
    281 _In_ size_t end = (size_t)-1,
    +
    282 _In_ int flags = match_default)
    +
    283 {
    +
    284 assert(text || start >= end);
    +
    285 if (start < end && text[start]) {
    +
    286 bool r;
    +
    287 if (flags & match_case_insensitive) {
    +
    288 const auto& ctype = std::use_facet<std::ctype<T>>(m_locale);
    +
    289 r = ctype.tolower(text[start]) == ctype.tolower(m_chr);
    +
    290 }
    +
    291 else
    +
    292 r = text[start] == m_chr;
    +
    293 if (r && !m_invert || !r && m_invert) {
    +
    294 interval.end = (interval.start = start) + 1;
    +
    295 return true;
    +
    296 }
    +
    297 }
    +
    298 interval.start = (interval.end = start) + 1;
    +
    299 return false;
    +
    300 }
    +
    301
    +
    302 protected:
    +
    303 T m_chr;
    +
    304 bool m_invert;
    +
    305 };
    +
    306
    +
    307 using cu = basic_cu<char>;
    +
    308 using wcu = basic_cu<wchar_t>;
    +
    309#ifdef _UNICODE
    +
    310 using tcu = wcu;
    +
    311#else
    +
    312 using tcu = cu;
    +
    313#endif
    +
    314
    +
    318 class sgml_cp : public sgml_parser
    +
    319 {
    +
    320 public:
    +
    321 sgml_cp(const char* chr, size_t count = (size_t)-1, bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    322 sgml_parser(locale),
    +
    323 m_invert(invert)
    +
    324 {
    +
    325 assert(chr || !count);
    +
    326 wchar_t buf[3];
    +
    327 size_t chr_end;
    +
    328 m_chr.assign(count ? next_sgml_cp(chr, 0, count, chr_end, buf) : L"");
    +
    329 }
    +
    330
    +
    331 virtual bool match(
    +
    332 _In_reads_or_z_(end) const char* text,
    +
    333 _In_ size_t start = 0,
    +
    334 _In_ size_t end = (size_t)-1,
    +
    335 _In_ int flags = match_default)
    +
    336 {
    +
    337 assert(text || start >= end);
    +
    338 if (start < end && text[start]) {
    +
    339 wchar_t buf[3];
    +
    340 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    341 bool r = ((flags & match_case_insensitive) ?
    +
    342 stdex::strnicmp(chr, (size_t)-1, m_chr.c_str(), m_chr.size(), m_locale) :
    +
    343 stdex::strncmp(chr, (size_t)-1, m_chr.c_str(), m_chr.size())) == 0;
    +
    344 if (r && !m_invert || !r && m_invert) {
    +
    345 interval.start = start;
    +
    346 return true;
    +
    347 }
    +
    348 }
    +
    349 interval.start = (interval.end = start) + 1;
    +
    350 return false;
    +
    351 }
    +
    352
    +
    353 protected:
    +
    354 std::wstring m_chr;
    +
    355 bool m_invert;
    +
    356 };
    +
    357
    +
    361 template <class T>
    +
    362 class basic_space_cu : public basic_parser<T>
    +
    363 {
    +
    364 public:
    +
    365 basic_space_cu(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    366 basic_parser<T>(locale),
    +
    367 m_invert(invert)
    +
    368 {}
    +
    369
    +
    370 virtual bool match(
    +
    371 _In_reads_or_z_(end) const T* text,
    +
    372 _In_ size_t start = 0,
    +
    373 _In_ size_t end = (size_t)-1,
    +
    374 _In_ int flags = match_default)
    +
    375 {
    +
    376 assert(text || start >= end);
    +
    377 if (start < end && text[start]) {
    +
    378 bool r =
    +
    379 ((flags & match_multiline) || !islbreak(text[start])) &&
    +
    380 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::space, text[start]);
    +
    381 if (r && !m_invert || !r && m_invert) {
    +
    382 interval.end = (interval.start = start) + 1;
    +
    383 return true;
    +
    384 }
    +
    385 }
    +
    386 interval.start = (interval.end = start) + 1;
    +
    387 return false;
    +
    388 }
    389
    - - -
    392#ifdef _UNICODE
    -
    393 using tspace_cu = wspace_cu;
    -
    394#else
    -
    395 using tspace_cu = space_cu;
    -
    396#endif
    -
    397
    -
    401 class sgml_space_cp : public basic_space_cu<char>
    -
    402 {
    -
    403 public:
    -
    404 sgml_space_cp(_In_ bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    405 basic_space_cu<char>(invert, locale)
    -
    406 {}
    -
    407
    -
    408 virtual bool match(
    -
    409 _In_reads_or_z_(end) const char* text,
    -
    410 _In_ size_t start = 0,
    -
    411 _In_ size_t end = (size_t)-1,
    -
    412 _In_ int flags = match_default)
    -
    413 {
    -
    414 assert(text || start >= end);
    -
    415 if (start < end && text[start]) {
    -
    416 wchar_t buf[3];
    -
    417 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    418 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    419 bool r =
    -
    420 ((flags & match_multiline) || !islbreak(chr, (size_t)-1)) &&
    -
    421 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::space, chr, chr_end) == chr_end;
    -
    422 if (r && !m_invert || !r && m_invert) {
    -
    423 interval.start = start;
    -
    424 return true;
    -
    425 }
    -
    426 }
    -
    427
    -
    428 interval.start = (interval.end = start) + 1;
    -
    429 return false;
    -
    430 }
    -
    431 };
    -
    432
    -
    436 template <class T>
    -
    437 class basic_punct_cu : public basic_tester<T>
    -
    438 {
    -
    439 public:
    -
    440 basic_punct_cu(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    441 basic_tester<T>(locale),
    -
    442 m_invert(invert)
    -
    443 {}
    -
    444
    -
    445 virtual bool match(
    -
    446 _In_reads_or_z_(end) const T* text,
    -
    447 _In_ size_t start = 0,
    -
    448 _In_ size_t end = (size_t)-1,
    -
    449 _In_ int flags = match_default)
    -
    450 {
    -
    451 assert(text || start >= end);
    -
    452 if (start < end && text[start]) {
    -
    453 bool r = std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::punct, text[start]);
    -
    454 if (r && !m_invert || !r && m_invert) {
    -
    455 interval.end = (interval.start = start) + 1;
    -
    456 return true;
    -
    457 }
    -
    458 }
    -
    459 interval.start = (interval.end = start) + 1;
    -
    460 return false;
    -
    461 }
    -
    462
    -
    463 protected:
    -
    464 bool m_invert;
    -
    465 };
    +
    390 protected:
    +
    391 bool m_invert;
    +
    392 };
    +
    393
    + + +
    396#ifdef _UNICODE
    +
    397 using tspace_cu = wspace_cu;
    +
    398#else
    +
    399 using tspace_cu = space_cu;
    +
    400#endif
    +
    401
    +
    405 class sgml_space_cp : public basic_space_cu<char>
    +
    406 {
    +
    407 public:
    +
    408 sgml_space_cp(_In_ bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    409 basic_space_cu<char>(invert, locale)
    +
    410 {}
    +
    411
    +
    412 virtual bool match(
    +
    413 _In_reads_or_z_(end) const char* text,
    +
    414 _In_ size_t start = 0,
    +
    415 _In_ size_t end = (size_t)-1,
    +
    416 _In_ int flags = match_default)
    +
    417 {
    +
    418 assert(text || start >= end);
    +
    419 if (start < end && text[start]) {
    +
    420 wchar_t buf[3];
    +
    421 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    422 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    423 bool r =
    +
    424 ((flags & match_multiline) || !islbreak(chr, (size_t)-1)) &&
    +
    425 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::space, chr, chr_end) == chr_end;
    +
    426 if (r && !m_invert || !r && m_invert) {
    +
    427 interval.start = start;
    +
    428 return true;
    +
    429 }
    +
    430 }
    +
    431
    +
    432 interval.start = (interval.end = start) + 1;
    +
    433 return false;
    +
    434 }
    +
    435 };
    +
    436
    +
    440 template <class T>
    +
    441 class basic_punct_cu : public basic_parser<T>
    +
    442 {
    +
    443 public:
    +
    444 basic_punct_cu(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    445 basic_parser<T>(locale),
    +
    446 m_invert(invert)
    +
    447 {}
    +
    448
    +
    449 virtual bool match(
    +
    450 _In_reads_or_z_(end) const T* text,
    +
    451 _In_ size_t start = 0,
    +
    452 _In_ size_t end = (size_t)-1,
    +
    453 _In_ int flags = match_default)
    +
    454 {
    +
    455 assert(text || start >= end);
    +
    456 if (start < end && text[start]) {
    +
    457 bool r = std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::punct, text[start]);
    +
    458 if (r && !m_invert || !r && m_invert) {
    +
    459 interval.end = (interval.start = start) + 1;
    +
    460 return true;
    +
    461 }
    +
    462 }
    +
    463 interval.start = (interval.end = start) + 1;
    +
    464 return false;
    +
    465 }
    466
    - - -
    469#ifdef _UNICODE
    -
    470 using tpunct_cu = wpunct_cu;
    -
    471#else
    -
    472 using tpunct_cu = punct_cu;
    -
    473#endif
    -
    474
    -
    478 class sgml_punct_cp : public basic_punct_cu<char>
    -
    479 {
    -
    480 public:
    -
    481 virtual bool match(
    -
    482 _In_reads_or_z_(end) const char* text,
    -
    483 _In_ size_t start = 0,
    -
    484 _In_ size_t end = (size_t)-1,
    -
    485 _In_ int flags = match_default)
    -
    486 {
    -
    487 assert(text || start >= end);
    -
    488 if (start < end && text[start]) {
    -
    489 wchar_t buf[3];
    -
    490 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    491 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    492 bool r = std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::punct, chr, chr_end) == chr_end;
    -
    493 if (r && !m_invert || !r && m_invert) {
    -
    494 interval.start = start;
    -
    495 return true;
    -
    496 }
    -
    497 }
    -
    498 interval.start = (interval.end = start) + 1;
    -
    499 return false;
    -
    500 }
    -
    501 };
    -
    502
    -
    506 template <class T>
    - -
    508 {
    -
    509 public:
    -
    510 basic_space_or_punct_cu(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    511 basic_tester<T>(locale),
    -
    512 m_invert(invert)
    -
    513 {}
    -
    514
    -
    515 virtual bool match(
    -
    516 _In_reads_or_z_(end) const T* text,
    -
    517 _In_ size_t start = 0,
    -
    518 _In_ size_t end = (size_t)-1,
    -
    519 _In_ int flags = match_default)
    -
    520 {
    -
    521 assert(text || start >= end);
    -
    522 if (start < end && text[start]) {
    -
    523 bool r =
    -
    524 ((flags & match_multiline) || !islbreak(text[start])) &&
    -
    525 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::space | std::ctype_base::punct, text[start]);
    -
    526 if (r && !m_invert || !r && m_invert) {
    -
    527 interval.end = (interval.start = start) + 1;
    -
    528 return true;
    -
    529 }
    -
    530 }
    -
    531 interval.start = (interval.end = start) + 1;
    -
    532 return false;
    -
    533 }
    -
    534
    -
    535 protected:
    -
    536 bool m_invert;
    -
    537 };
    -
    538
    - - -
    541#ifdef _UNICODE
    - -
    543#else
    - -
    545#endif
    +
    467 protected:
    +
    468 bool m_invert;
    +
    469 };
    +
    470
    + + +
    473#ifdef _UNICODE
    +
    474 using tpunct_cu = wpunct_cu;
    +
    475#else
    +
    476 using tpunct_cu = punct_cu;
    +
    477#endif
    +
    478
    +
    482 class sgml_punct_cp : public basic_punct_cu<char>
    +
    483 {
    +
    484 public:
    +
    485 sgml_punct_cp(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    486 basic_punct_cu<char>(invert, locale)
    +
    487 {}
    +
    488
    +
    489 virtual bool match(
    +
    490 _In_reads_or_z_(end) const char* text,
    +
    491 _In_ size_t start = 0,
    +
    492 _In_ size_t end = (size_t)-1,
    +
    493 _In_ int flags = match_default)
    +
    494 {
    +
    495 assert(text || start >= end);
    +
    496 if (start < end && text[start]) {
    +
    497 wchar_t buf[3];
    +
    498 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    499 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    500 bool r = std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::punct, chr, chr_end) == chr_end;
    +
    501 if (r && !m_invert || !r && m_invert) {
    +
    502 interval.start = start;
    +
    503 return true;
    +
    504 }
    +
    505 }
    +
    506 interval.start = (interval.end = start) + 1;
    +
    507 return false;
    +
    508 }
    +
    509 };
    +
    510
    +
    514 template <class T>
    + +
    516 {
    +
    517 public:
    +
    518 basic_space_or_punct_cu(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    519 basic_parser<T>(locale),
    +
    520 m_invert(invert)
    +
    521 {}
    +
    522
    +
    523 virtual bool match(
    +
    524 _In_reads_or_z_(end) const T* text,
    +
    525 _In_ size_t start = 0,
    +
    526 _In_ size_t end = (size_t)-1,
    +
    527 _In_ int flags = match_default)
    +
    528 {
    +
    529 assert(text || start >= end);
    +
    530 if (start < end && text[start]) {
    +
    531 bool r =
    +
    532 ((flags & match_multiline) || !islbreak(text[start])) &&
    +
    533 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::space | std::ctype_base::punct, text[start]);
    +
    534 if (r && !m_invert || !r && m_invert) {
    +
    535 interval.end = (interval.start = start) + 1;
    +
    536 return true;
    +
    537 }
    +
    538 }
    +
    539 interval.start = (interval.end = start) + 1;
    +
    540 return false;
    +
    541 }
    +
    542
    +
    543 protected:
    +
    544 bool m_invert;
    +
    545 };
    546
    - -
    551 {
    -
    552 public:
    -
    553 virtual bool match(
    -
    554 _In_reads_or_z_(end) const char* text,
    -
    555 _In_ size_t start = 0,
    -
    556 _In_ size_t end = (size_t)-1,
    -
    557 _In_ int flags = match_default)
    -
    558 {
    -
    559 assert(text || start >= end);
    -
    560 if (start < end && text[start]) {
    -
    561 wchar_t buf[3];
    -
    562 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    563 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    564 bool r =
    -
    565 ((flags & match_multiline) || !islbreak(chr, (size_t)-1)) &&
    -
    566 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::space | std::ctype_base::punct, chr, chr_end) == chr_end;
    -
    567 if (r && !m_invert || !r && m_invert) {
    -
    568 interval.start = start;
    -
    569 return true;
    -
    570 }
    -
    571 }
    -
    572 interval.start = (interval.end = start) + 1;
    -
    573 return false;
    -
    574 }
    -
    575 };
    -
    576
    -
    580 template <class T>
    -
    581 class basic_bol : public basic_tester<T>
    -
    582 {
    -
    583 public:
    -
    584 basic_bol(bool invert = false) : m_invert(invert) {}
    -
    585
    -
    586 virtual bool match(
    -
    587 _In_reads_or_z_(end) const T* text,
    -
    588 _In_ size_t start = 0,
    -
    589 _In_ size_t end = (size_t)-1,
    -
    590 _In_ int flags = match_default)
    -
    591 {
    -
    592 assert(text || start >= end);
    -
    593 bool r = start == 0 || start <= end && islbreak(text[start - 1]);
    -
    594 if (r && !m_invert || !r && m_invert) {
    -
    595 interval.end = interval.start = start;
    -
    596 return true;
    -
    597 }
    -
    598 interval.start = (interval.end = start) + 1;
    -
    599 return false;
    -
    600 }
    -
    601
    -
    602 protected:
    -
    603 bool m_invert;
    -
    604 };
    -
    605
    -
    606 using bol = basic_bol<char>;
    -
    607 using wbol = basic_bol<wchar_t>;
    -
    608#ifdef _UNICODE
    -
    609 using tbol = wbol;
    -
    610#else
    -
    611 using tbol = bol;
    -
    612#endif
    - -
    614
    -
    618 template <class T>
    -
    619 class basic_eol : public basic_tester<T>
    -
    620 {
    -
    621 public:
    -
    622 basic_eol(bool invert = false) : m_invert(invert) {}
    -
    623
    -
    624 virtual bool match(
    -
    625 _In_reads_or_z_(end) const T* text,
    -
    626 _In_ size_t start = 0,
    -
    627 _In_ size_t end = (size_t)-1,
    -
    628 _In_ int flags = match_default)
    -
    629 {
    -
    630 assert(text || start >= end);
    -
    631 bool r = islbreak(text[start]);
    -
    632 if (r && !m_invert || !r && m_invert) {
    -
    633 interval.end = interval.start = start;
    -
    634 return true;
    -
    635 }
    -
    636 interval.start = (interval.end = start) + 1;
    -
    637 return false;
    -
    638 }
    -
    639
    -
    640 protected:
    -
    641 bool m_invert;
    -
    642 };
    -
    643
    -
    644 using eol = basic_eol<char>;
    -
    645 using weol = basic_eol<wchar_t>;
    -
    646#ifdef _UNICODE
    -
    647 using teol = weol;
    -
    648#else
    -
    649 using teol = eol;
    -
    650#endif
    - -
    652
    -
    653 template <class T>
    -
    654 class basic_set : public basic_tester<T>
    -
    655 {
    -
    656 public:
    -
    657 basic_set(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    658 basic_tester<T>(locale),
    -
    659 hit_offset((size_t)-1),
    -
    660 m_invert(invert)
    -
    661 {}
    -
    662
    -
    663 virtual bool match(
    -
    664 _In_reads_or_z_(end) const T* text,
    -
    665 _In_ size_t start = 0,
    -
    666 _In_ size_t end = (size_t)-1,
    -
    667 _In_ int flags = match_default) = 0;
    -
    668
    -
    669 virtual void invalidate()
    -
    670 {
    -
    671 hit_offset = (size_t)-1;
    - -
    673 }
    + + +
    549#ifdef _UNICODE
    + +
    551#else
    + +
    553#endif
    +
    554
    + +
    559 {
    +
    560 public:
    +
    561 sgml_space_or_punct_cp(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    562 basic_space_or_punct_cu<char>(invert, locale)
    +
    563 {}
    +
    564
    +
    565 virtual bool match(
    +
    566 _In_reads_or_z_(end) const char* text,
    +
    567 _In_ size_t start = 0,
    +
    568 _In_ size_t end = (size_t)-1,
    +
    569 _In_ int flags = match_default)
    +
    570 {
    +
    571 assert(text || start >= end);
    +
    572 if (start < end && text[start]) {
    +
    573 wchar_t buf[3];
    +
    574 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    575 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    576 bool r =
    +
    577 ((flags & match_multiline) || !islbreak(chr, (size_t)-1)) &&
    +
    578 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::space | std::ctype_base::punct, chr, chr_end) == chr_end;
    +
    579 if (r && !m_invert || !r && m_invert) {
    +
    580 interval.start = start;
    +
    581 return true;
    +
    582 }
    +
    583 }
    +
    584 interval.start = (interval.end = start) + 1;
    +
    585 return false;
    +
    586 }
    +
    587 };
    +
    588
    +
    592 template <class T>
    +
    593 class basic_bol : public basic_parser<T>
    +
    594 {
    +
    595 public:
    +
    596 basic_bol(bool invert = false) : m_invert(invert) {}
    +
    597
    +
    598 virtual bool match(
    +
    599 _In_reads_or_z_(end) const T* text,
    +
    600 _In_ size_t start = 0,
    +
    601 _In_ size_t end = (size_t)-1,
    +
    602 _In_ int flags = match_default)
    +
    603 {
    +
    604 assert(text || start >= end);
    +
    605 bool r = start == 0 || start <= end && islbreak(text[start - 1]);
    +
    606 if (r && !m_invert || !r && m_invert) {
    +
    607 interval.end = interval.start = start;
    +
    608 return true;
    +
    609 }
    +
    610 interval.start = (interval.end = start) + 1;
    +
    611 return false;
    +
    612 }
    +
    613
    +
    614 protected:
    +
    615 bool m_invert;
    +
    616 };
    +
    617
    +
    618 using bol = basic_bol<char>;
    +
    619 using wbol = basic_bol<wchar_t>;
    +
    620#ifdef _UNICODE
    +
    621 using tbol = wbol;
    +
    622#else
    +
    623 using tbol = bol;
    +
    624#endif
    + +
    626
    +
    630 template <class T>
    +
    631 class basic_eol : public basic_parser<T>
    +
    632 {
    +
    633 public:
    +
    634 basic_eol(bool invert = false) : m_invert(invert) {}
    +
    635
    +
    636 virtual bool match(
    +
    637 _In_reads_or_z_(end) const T* text,
    +
    638 _In_ size_t start = 0,
    +
    639 _In_ size_t end = (size_t)-1,
    +
    640 _In_ int flags = match_default)
    +
    641 {
    +
    642 assert(text || start >= end);
    +
    643 bool r = islbreak(text[start]);
    +
    644 if (r && !m_invert || !r && m_invert) {
    +
    645 interval.end = interval.start = start;
    +
    646 return true;
    +
    647 }
    +
    648 interval.start = (interval.end = start) + 1;
    +
    649 return false;
    +
    650 }
    +
    651
    +
    652 protected:
    +
    653 bool m_invert;
    +
    654 };
    +
    655
    +
    656 using eol = basic_eol<char>;
    +
    657 using weol = basic_eol<wchar_t>;
    +
    658#ifdef _UNICODE
    +
    659 using teol = weol;
    +
    660#else
    +
    661 using teol = eol;
    +
    662#endif
    + +
    664
    +
    665 template <class T>
    +
    666 class basic_set : public basic_parser<T>
    +
    667 {
    +
    668 public:
    +
    669 basic_set(bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    670 basic_parser<T>(locale),
    +
    671 hit_offset((size_t)-1),
    +
    672 m_invert(invert)
    +
    673 {}
    674
    -
    675 public:
    -
    676 size_t hit_offset;
    -
    677
    -
    678 protected:
    -
    679 bool m_invert;
    -
    680 };
    -
    681
    -
    685 template <class T>
    -
    686 class basic_cu_set : public basic_set<T>
    -
    687 {
    -
    688 public:
    - -
    690 _In_reads_or_z_(count) const T* set,
    -
    691 _In_ size_t count = (size_t)-1,
    -
    692 _In_ bool invert = false,
    -
    693 _In_ const std::locale& locale = std::locale()) :
    -
    694 basic_set<T>(invert, locale)
    -
    695 {
    -
    696 if (set)
    -
    697 m_set.assign(set, set + stdex::strnlen(set, count));
    -
    698 }
    -
    699
    -
    700 virtual bool match(
    -
    701 _In_reads_or_z_(end) const T* text,
    -
    702 _In_ size_t start = 0,
    -
    703 _In_ size_t end = (size_t)-1,
    -
    704 _In_ int flags = match_default)
    -
    705 {
    -
    706 assert(text || start >= end);
    -
    707 if (start < end && text[start]) {
    -
    708 const T* set = m_set.c_str();
    -
    709 const T* r = (flags & match_case_insensitive) ?
    -
    710 stdex::strnichr(set, text[start], m_set.size(), m_locale) :
    -
    711 stdex::strnchr(set, text[start], m_set.size());
    -
    712 if (r && !m_invert || !r && m_invert) {
    -
    713 hit_offset = r ? r - set : (size_t)-1;
    -
    714 interval.end = (interval.start = start) + 1;
    -
    715 return true;
    -
    716 }
    -
    717 }
    -
    718 hit_offset = (size_t)-1;
    -
    719 interval.start = (interval.end = start) + 1;
    -
    720 return false;
    -
    721 }
    -
    722
    -
    723 protected:
    -
    724 std::basic_string<T> m_set;
    -
    725 };
    -
    726
    - - -
    729#ifdef _UNICODE
    -
    730 using tcu_set = wcu_set;
    -
    731#else
    -
    732 using tcu_set = cu_set;
    -
    733#endif
    +
    675 virtual bool match(
    +
    676 _In_reads_or_z_(end) const T* text,
    +
    677 _In_ size_t start = 0,
    +
    678 _In_ size_t end = (size_t)-1,
    +
    679 _In_ int flags = match_default) = 0;
    +
    680
    +
    681 virtual void invalidate()
    +
    682 {
    +
    683 hit_offset = (size_t)-1;
    + +
    685 }
    +
    686
    +
    687 public:
    +
    688 size_t hit_offset;
    +
    689
    +
    690 protected:
    +
    691 bool m_invert;
    +
    692 };
    +
    693
    +
    697 template <class T>
    +
    698 class basic_cu_set : public basic_set<T>
    +
    699 {
    +
    700 public:
    + +
    702 _In_reads_or_z_(count) const T* set,
    +
    703 _In_ size_t count = (size_t)-1,
    +
    704 _In_ bool invert = false,
    +
    705 _In_ const std::locale& locale = std::locale()) :
    +
    706 basic_set<T>(invert, locale)
    +
    707 {
    +
    708 if (set)
    +
    709 m_set.assign(set, set + stdex::strnlen(set, count));
    +
    710 }
    +
    711
    +
    712 virtual bool match(
    +
    713 _In_reads_or_z_(end) const T* text,
    +
    714 _In_ size_t start = 0,
    +
    715 _In_ size_t end = (size_t)-1,
    +
    716 _In_ int flags = match_default)
    +
    717 {
    +
    718 assert(text || start >= end);
    +
    719 if (start < end && text[start]) {
    +
    720 const T* set = m_set.c_str();
    +
    721 const T* r = (flags & match_case_insensitive) ?
    +
    722 stdex::strnichr(set, text[start], m_set.size(), m_locale) :
    +
    723 stdex::strnchr(set, text[start], m_set.size());
    +
    724 if (r && !m_invert || !r && m_invert) {
    +
    725 hit_offset = r ? r - set : (size_t)-1;
    +
    726 interval.end = (interval.start = start) + 1;
    +
    727 return true;
    +
    728 }
    +
    729 }
    +
    730 hit_offset = (size_t)-1;
    +
    731 interval.start = (interval.end = start) + 1;
    +
    732 return false;
    +
    733 }
    734
    -
    738 class sgml_cp_set : public basic_set<char>
    -
    739 {
    -
    740 public:
    -
    741 sgml_cp_set(const char* set, size_t count = (size_t)-1, bool invert = false, _In_ const std::locale& locale = std::locale()) :
    -
    742 basic_set<char>(invert, locale)
    -
    743 {
    -
    744 if (set)
    -
    745 m_set = sgml2str(set, count);
    -
    746 }
    -
    747
    -
    748 virtual bool match(
    -
    749 _In_reads_or_z_(end) const char* text,
    -
    750 _In_ size_t start = 0,
    -
    751 _In_ size_t end = (size_t)-1,
    -
    752 _In_ int flags = match_default)
    -
    753 {
    -
    754 assert(text || start >= end);
    -
    755 if (start < end && text[start]) {
    -
    756 wchar_t buf[3];
    -
    757 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    758 const wchar_t* set = m_set.c_str();
    -
    759 const wchar_t* r = (flags & match_case_insensitive) ?
    -
    760 stdex::strnistr(set, chr, m_set.size(), m_locale) :
    -
    761 stdex::strnstr(set, chr, m_set.size());
    -
    762 if (r && !m_invert || !r && m_invert) {
    -
    763 hit_offset = r ? r - set : (size_t)-1;
    -
    764 interval.start = start;
    -
    765 return true;
    -
    766 }
    -
    767 }
    -
    768 hit_offset = (size_t)-1;
    -
    769 interval.start = (interval.end = start) + 1;
    -
    770 return false;
    -
    771 }
    -
    772
    -
    773 protected:
    -
    774 std::wstring m_set;
    -
    775 };
    -
    776
    -
    780 template <class T>
    -
    781 class basic_string : public basic_tester<T>
    -
    782 {
    -
    783 public:
    - -
    785 _In_reads_or_z_(count) const T* str,
    -
    786 _In_ size_t count = (size_t)-1,
    -
    787 _In_ const std::locale& locale = std::locale()) :
    -
    788 basic_tester<T>(locale),
    -
    789 m_str(str, str + stdex::strnlen(str, count))
    -
    790 {}
    -
    791
    -
    792 virtual bool match(
    -
    793 _In_reads_or_z_(end) const T* text,
    -
    794 _In_ size_t start = 0,
    -
    795 _In_ size_t end = (size_t)-1,
    -
    796 _In_ int flags = match_default)
    -
    797 {
    -
    798 assert(text || start >= end);
    -
    799 size_t
    -
    800 m = m_str.size(),
    -
    801 n = std::min<size_t>(end - start, m);
    -
    802 bool r = ((flags & match_case_insensitive) ?
    -
    803 stdex::strnicmp(text + start, n, m_str.c_str(), m, m_locale) :
    -
    804 stdex::strncmp(text + start, n, m_str.c_str(), m)) == 0;
    -
    805 if (r) {
    -
    806 interval.end = (interval.start = start) + n;
    -
    807 return true;
    -
    808 }
    -
    809 interval.start = (interval.end = start) + 1;
    -
    810 return false;
    -
    811 }
    -
    812
    -
    813 protected:
    -
    814 std::basic_string<T> m_str;
    -
    815 };
    -
    816
    - - -
    819#ifdef _UNICODE
    -
    820 using tstring = wstring;
    -
    821#else
    -
    822 using tstring = string;
    -
    823#endif
    +
    735 protected:
    +
    736 std::basic_string<T> m_set;
    +
    737 };
    +
    738
    + + +
    741#ifdef _UNICODE
    +
    742 using tcu_set = wcu_set;
    +
    743#else
    +
    744 using tcu_set = cu_set;
    +
    745#endif
    +
    746
    +
    750 class sgml_cp_set : public basic_set<char>
    +
    751 {
    +
    752 public:
    +
    753 sgml_cp_set(const char* set, size_t count = (size_t)-1, bool invert = false, _In_ const std::locale& locale = std::locale()) :
    +
    754 basic_set<char>(invert, locale)
    +
    755 {
    +
    756 if (set)
    +
    757 m_set = sgml2str(set, count);
    +
    758 }
    +
    759
    +
    760 virtual bool match(
    +
    761 _In_reads_or_z_(end) const char* text,
    +
    762 _In_ size_t start = 0,
    +
    763 _In_ size_t end = (size_t)-1,
    +
    764 _In_ int flags = match_default)
    +
    765 {
    +
    766 assert(text || start >= end);
    +
    767 if (start < end && text[start]) {
    +
    768 wchar_t buf[3];
    +
    769 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    770 const wchar_t* set = m_set.c_str();
    +
    771 const wchar_t* r = (flags & match_case_insensitive) ?
    +
    772 stdex::strnistr(set, chr, m_set.size(), m_locale) :
    +
    773 stdex::strnstr(set, chr, m_set.size());
    +
    774 if (r && !m_invert || !r && m_invert) {
    +
    775 hit_offset = r ? r - set : (size_t)-1;
    +
    776 interval.start = start;
    +
    777 return true;
    +
    778 }
    +
    779 }
    +
    780 hit_offset = (size_t)-1;
    +
    781 interval.start = (interval.end = start) + 1;
    +
    782 return false;
    +
    783 }
    +
    784
    +
    785 protected:
    +
    786 std::wstring m_set;
    +
    787 };
    +
    788
    +
    792 template <class T>
    +
    793 class basic_string : public basic_parser<T>
    +
    794 {
    +
    795 public:
    + +
    797 _In_reads_or_z_(count) const T* str,
    +
    798 _In_ size_t count = (size_t)-1,
    +
    799 _In_ const std::locale& locale = std::locale()) :
    +
    800 basic_parser<T>(locale),
    +
    801 m_str(str, str + stdex::strnlen(str, count))
    +
    802 {}
    +
    803
    +
    804 virtual bool match(
    +
    805 _In_reads_or_z_(end) const T* text,
    +
    806 _In_ size_t start = 0,
    +
    807 _In_ size_t end = (size_t)-1,
    +
    808 _In_ int flags = match_default)
    +
    809 {
    +
    810 assert(text || start >= end);
    +
    811 size_t
    +
    812 m = m_str.size(),
    +
    813 n = std::min<size_t>(end - start, m);
    +
    814 bool r = ((flags & match_case_insensitive) ?
    +
    815 stdex::strnicmp(text + start, n, m_str.c_str(), m, m_locale) :
    +
    816 stdex::strncmp(text + start, n, m_str.c_str(), m)) == 0;
    +
    817 if (r) {
    +
    818 interval.end = (interval.start = start) + n;
    +
    819 return true;
    +
    820 }
    +
    821 interval.start = (interval.end = start) + 1;
    +
    822 return false;
    +
    823 }
    824
    - -
    829 {
    -
    830 public:
    -
    831 sgml_string(const char* str, size_t count = (size_t)-1, _In_ const std::locale& locale = std::locale()) :
    -
    832 sgml_tester(locale),
    -
    833 m_str(sgml2str(str, count))
    -
    834 {}
    -
    835
    -
    836 virtual bool match(
    -
    837 _In_reads_or_z_(end) const char* text,
    -
    838 _In_ size_t start = 0,
    -
    839 _In_ size_t end = (size_t)-1,
    -
    840 _In_ int flags = match_default)
    -
    841 {
    -
    842 assert(text || start >= end);
    -
    843 const wchar_t* str = m_str.c_str();
    -
    844 const bool case_insensitive = flags & match_case_insensitive ? true : false;
    -
    845 const auto& ctype = std::use_facet<std::ctype<wchar_t>>(m_locale);
    -
    846 for (interval.end = start;;) {
    -
    847 if (!*str) {
    -
    848 interval.start = start;
    -
    849 return true;
    -
    850 }
    -
    851 if (interval.end >= end || !text[interval.end]) {
    -
    852 interval.start = (interval.end = start) + 1;
    -
    853 return false;
    -
    854 }
    -
    855 wchar_t buf[3];
    -
    856 const wchar_t* chr = next_sgml_cp(text, interval.end, end, interval.end, buf);
    -
    857 for (; *chr; ++str, ++chr) {
    -
    858 if (!*str ||
    -
    859 (case_insensitive ? ctype.tolower(*str) != ctype.tolower(*chr) : *str != *chr))
    -
    860 {
    -
    861 interval.start = (interval.end = start) + 1;
    -
    862 return false;
    -
    863 }
    -
    864 }
    -
    865 }
    -
    866 }
    -
    867
    -
    868 protected:
    -
    869 std::wstring m_str;
    -
    870 };
    -
    871
    -
    875 template <class T>
    - -
    877 {
    -
    878 public:
    -
    879 basic_iterations(const std::shared_ptr<basic_tester<T>>& el, size_t min_iterations = 0, size_t max_iterations = (size_t)-1, bool greedy = true) :
    -
    880 m_el(el),
    -
    881 m_min_iterations(min_iterations),
    -
    882 m_max_iterations(max_iterations),
    -
    883 m_greedy(greedy)
    -
    884 {}
    -
    885
    -
    886 virtual bool match(
    -
    887 _In_reads_or_z_(end) const T* text,
    -
    888 _In_ size_t start = 0,
    -
    889 _In_ size_t end = (size_t)-1,
    -
    890 _In_ int flags = match_default)
    -
    891 {
    -
    892 assert(text || start >= end);
    -
    893 interval.start = interval.end = start;
    -
    894 for (size_t i = 0; ; i++) {
    -
    895 if (!m_greedy && i >= m_min_iterations || i >= m_max_iterations)
    -
    896 return true;
    -
    897 if (!m_el->match(text, interval.end, end, flags)) {
    -
    898 if (i >= m_min_iterations)
    -
    899 return true;
    -
    900 break;
    -
    901 }
    -
    902 if (m_el->interval.end == interval.end) {
    -
    903 // Element did match, but the matching interval was empty. Quit instead of spinning.
    -
    904 return true;
    -
    905 }
    -
    906 interval.end = m_el->interval.end;
    -
    907 }
    -
    908 interval.start = (interval.end = start) + 1;
    -
    909 return false;
    -
    910 }
    -
    911
    -
    912 protected:
    -
    913 std::shared_ptr<basic_tester<T>> m_el;
    - - -
    916 bool m_greedy;
    -
    917 };
    -
    918
    - - -
    921#ifdef _UNICODE
    -
    922 using titerations = witerations;
    -
    923#else
    -
    924 using titerations = iterations;
    -
    925#endif
    - -
    927
    -
    931 template <class T>
    - -
    933 {
    -
    934 protected:
    -
    935 tester_collection(_In_ const std::locale& locale) : basic_tester<T>(locale) {}
    -
    936
    -
    937 public:
    - -
    939 _In_count_(count) const std::shared_ptr<basic_tester<T>>* el,
    -
    940 _In_ size_t count,
    -
    941 _In_ const std::locale& locale = std::locale()) :
    -
    942 basic_tester<T>(locale)
    -
    943 {
    -
    944 assert(el || !count);
    -
    945 m_collection.reserve(count);
    -
    946 for (size_t i = 0; i < count; i++)
    -
    947 m_collection.push_back(el[i]);
    -
    948 }
    -
    949
    - -
    951 _Inout_ std::vector<std::shared_ptr<basic_tester<T>>>&& collection,
    -
    952 _In_ const std::locale& locale = std::locale()) :
    -
    953 basic_tester<T>(locale),
    -
    954 m_collection(std::move(collection))
    -
    955 {}
    -
    956
    -
    957 virtual void invalidate()
    -
    958 {
    -
    959 for (auto& el: m_collection)
    -
    960 el->invalidate();
    - -
    962 }
    -
    963
    -
    964 protected:
    -
    965 std::vector<std::shared_ptr<basic_tester<T>>> m_collection;
    -
    966 };
    -
    967
    -
    971 template <class T>
    - -
    973 {
    -
    974 public:
    - -
    976 _In_count_(count) const std::shared_ptr<basic_tester<T>>* el = nullptr,
    -
    977 _In_ size_t count = 0,
    -
    978 _In_ const std::locale& locale = std::locale()) :
    -
    979 tester_collection<T>(el, count, locale)
    -
    980 {}
    -
    981
    - -
    983 _Inout_ std::vector<std::shared_ptr<basic_tester<T>>>&& collection,
    -
    984 _In_ const std::locale& locale = std::locale()) :
    -
    985 tester_collection<T>(std::move(collection), locale)
    -
    986 {}
    -
    987
    -
    988 virtual bool match(
    -
    989 _In_reads_or_z_(end) const T* text,
    -
    990 _In_ size_t start = 0,
    -
    991 _In_ size_t end = (size_t)-1,
    -
    992 _In_ int flags = match_default)
    -
    993 {
    -
    994 assert(text || start >= end);
    -
    995 interval.end = start;
    -
    996 for (auto i = m_collection.begin(); i != m_collection.end(); ++i) {
    -
    997 if (!(*i)->match(text, interval.end, end, flags)) {
    -
    998 for (++i; i != m_collection.end(); ++i)
    -
    999 (*i)->invalidate();
    -
    1000 interval.start = (interval.end = start) + 1;
    -
    1001 return false;
    -
    1002 }
    -
    1003 interval.end = (*i)->interval.end;
    -
    1004 }
    -
    1005 interval.start = start;
    -
    1006 return true;
    -
    1007 }
    -
    1008 };
    -
    1009
    - - -
    1012#ifdef _UNICODE
    -
    1013 using tsequence = wsequence;
    -
    1014#else
    -
    1015 using tsequence = sequence;
    -
    1016#endif
    - -
    1018
    -
    1022 template <class T>
    - -
    1024 {
    -
    1025 protected:
    -
    1026 basic_branch(_In_ const std::locale& locale) :
    -
    1027 tester_collection<T>(locale),
    -
    1028 hit_offset((size_t)-1)
    -
    1029 {}
    +
    825 protected:
    +
    826 std::basic_string<T> m_str;
    +
    827 };
    +
    828
    + + +
    831#ifdef _UNICODE
    +
    832 using tstring = wstring;
    +
    833#else
    +
    834 using tstring = string;
    +
    835#endif
    +
    836
    + +
    841 {
    +
    842 public:
    +
    843 sgml_string(const char* str, size_t count = (size_t)-1, _In_ const std::locale& locale = std::locale()) :
    +
    844 sgml_parser(locale),
    +
    845 m_str(sgml2str(str, count))
    +
    846 {}
    +
    847
    +
    848 virtual bool match(
    +
    849 _In_reads_or_z_(end) const char* text,
    +
    850 _In_ size_t start = 0,
    +
    851 _In_ size_t end = (size_t)-1,
    +
    852 _In_ int flags = match_default)
    +
    853 {
    +
    854 assert(text || start >= end);
    +
    855 const wchar_t* str = m_str.c_str();
    +
    856 const bool case_insensitive = flags & match_case_insensitive ? true : false;
    +
    857 const auto& ctype = std::use_facet<std::ctype<wchar_t>>(m_locale);
    +
    858 for (interval.end = start;;) {
    +
    859 if (!*str) {
    +
    860 interval.start = start;
    +
    861 return true;
    +
    862 }
    +
    863 if (interval.end >= end || !text[interval.end]) {
    +
    864 interval.start = (interval.end = start) + 1;
    +
    865 return false;
    +
    866 }
    +
    867 wchar_t buf[3];
    +
    868 const wchar_t* chr = next_sgml_cp(text, interval.end, end, interval.end, buf);
    +
    869 for (; *chr; ++str, ++chr) {
    +
    870 if (!*str ||
    +
    871 (case_insensitive ? ctype.tolower(*str) != ctype.tolower(*chr) : *str != *chr))
    +
    872 {
    +
    873 interval.start = (interval.end = start) + 1;
    +
    874 return false;
    +
    875 }
    +
    876 }
    +
    877 }
    +
    878 }
    +
    879
    +
    880 protected:
    +
    881 std::wstring m_str;
    +
    882 };
    +
    883
    +
    887 template <class T>
    + +
    889 {
    +
    890 public:
    +
    891 basic_iterations(const std::shared_ptr<basic_parser<T>>& el, size_t min_iterations = 0, size_t max_iterations = (size_t)-1, bool greedy = true) :
    +
    892 m_el(el),
    +
    893 m_min_iterations(min_iterations),
    +
    894 m_max_iterations(max_iterations),
    +
    895 m_greedy(greedy)
    +
    896 {}
    +
    897
    +
    898 virtual bool match(
    +
    899 _In_reads_or_z_(end) const T* text,
    +
    900 _In_ size_t start = 0,
    +
    901 _In_ size_t end = (size_t)-1,
    +
    902 _In_ int flags = match_default)
    +
    903 {
    +
    904 assert(text || start >= end);
    +
    905 interval.start = interval.end = start;
    +
    906 for (size_t i = 0; ; i++) {
    +
    907 if (!m_greedy && i >= m_min_iterations || i >= m_max_iterations)
    +
    908 return true;
    +
    909 if (!m_el->match(text, interval.end, end, flags)) {
    +
    910 if (i >= m_min_iterations)
    +
    911 return true;
    +
    912 break;
    +
    913 }
    +
    914 if (m_el->interval.end == interval.end) {
    +
    915 // Element did match, but the matching interval was empty. Quit instead of spinning.
    +
    916 return true;
    +
    917 }
    +
    918 interval.end = m_el->interval.end;
    +
    919 }
    +
    920 interval.start = (interval.end = start) + 1;
    +
    921 return false;
    +
    922 }
    +
    923
    +
    924 protected:
    +
    925 std::shared_ptr<basic_parser<T>> m_el;
    + + +
    928 bool m_greedy;
    +
    929 };
    +
    930
    + + +
    933#ifdef _UNICODE
    +
    934 using titerations = witerations;
    +
    935#else
    +
    936 using titerations = iterations;
    +
    937#endif
    + +
    939
    +
    943 template <class T>
    + +
    945 {
    +
    946 protected:
    +
    947 parser_collection(_In_ const std::locale& locale) : basic_parser<T>(locale) {}
    +
    948
    +
    949 public:
    + +
    951 _In_count_(count) const std::shared_ptr<basic_parser<T>>* el,
    +
    952 _In_ size_t count,
    +
    953 _In_ const std::locale& locale = std::locale()) :
    +
    954 basic_parser<T>(locale)
    +
    955 {
    +
    956 assert(el || !count);
    +
    957 m_collection.reserve(count);
    +
    958 for (size_t i = 0; i < count; i++)
    +
    959 m_collection.push_back(el[i]);
    +
    960 }
    +
    961
    + +
    963 _Inout_ std::vector<std::shared_ptr<basic_parser<T>>>&& collection,
    +
    964 _In_ const std::locale& locale = std::locale()) :
    +
    965 basic_parser<T>(locale),
    +
    966 m_collection(std::move(collection))
    +
    967 {}
    +
    968
    +
    969 virtual void invalidate()
    +
    970 {
    +
    971 for (auto& el: m_collection)
    +
    972 el->invalidate();
    + +
    974 }
    +
    975
    +
    976 protected:
    +
    977 std::vector<std::shared_ptr<basic_parser<T>>> m_collection;
    +
    978 };
    +
    979
    +
    983 template <class T>
    + +
    985 {
    +
    986 public:
    + +
    988 _In_count_(count) const std::shared_ptr<basic_parser<T>>* el = nullptr,
    +
    989 _In_ size_t count = 0,
    +
    990 _In_ const std::locale& locale = std::locale()) :
    +
    991 parser_collection<T>(el, count, locale)
    +
    992 {}
    +
    993
    + +
    995 _Inout_ std::vector<std::shared_ptr<basic_parser<T>>>&& collection,
    +
    996 _In_ const std::locale& locale = std::locale()) :
    +
    997 parser_collection<T>(std::move(collection), locale)
    +
    998 {}
    +
    999
    +
    1000 virtual bool match(
    +
    1001 _In_reads_or_z_(end) const T* text,
    +
    1002 _In_ size_t start = 0,
    +
    1003 _In_ size_t end = (size_t)-1,
    +
    1004 _In_ int flags = match_default)
    +
    1005 {
    +
    1006 assert(text || start >= end);
    +
    1007 interval.end = start;
    +
    1008 for (auto i = m_collection.begin(); i != m_collection.end(); ++i) {
    +
    1009 if (!(*i)->match(text, interval.end, end, flags)) {
    +
    1010 for (++i; i != m_collection.end(); ++i)
    +
    1011 (*i)->invalidate();
    +
    1012 interval.start = (interval.end = start) + 1;
    +
    1013 return false;
    +
    1014 }
    +
    1015 interval.end = (*i)->interval.end;
    +
    1016 }
    +
    1017 interval.start = start;
    +
    1018 return true;
    +
    1019 }
    +
    1020 };
    +
    1021
    + + +
    1024#ifdef _UNICODE
    +
    1025 using tsequence = wsequence;
    +
    1026#else
    +
    1027 using tsequence = sequence;
    +
    1028#endif
    +
    1030
    -
    1031 public:
    - -
    1033 _In_count_(count) const std::shared_ptr<basic_tester<T>>* el = nullptr,
    -
    1034 _In_ size_t count = 0,
    -
    1035 _In_ const std::locale& locale = std::locale()) :
    -
    1036 tester_collection<T>(el, count, locale),
    -
    1037 hit_offset((size_t)-1)
    -
    1038 {}
    -
    1039
    - -
    1041 _Inout_ std::vector<std::shared_ptr<basic_tester<T>>>&& collection,
    -
    1042 _In_ const std::locale& locale = std::locale()) :
    -
    1043 tester_collection<T>(std::move(collection), locale),
    -
    1044 hit_offset((size_t)-1)
    -
    1045 {}
    -
    1046
    -
    1047 virtual bool match(
    -
    1048 _In_reads_or_z_(end) const T* text,
    -
    1049 _In_ size_t start = 0,
    -
    1050 _In_ size_t end = (size_t)-1,
    -
    1051 _In_ int flags = match_default)
    -
    1052 {
    -
    1053 assert(text || start >= end);
    -
    1054 hit_offset = 0;
    -
    1055 for (auto i = m_collection.begin(); i != m_collection.end(); ++i, ++hit_offset) {
    -
    1056 if ((*i)->match(text, start, end, flags)) {
    -
    1057 interval = (*i)->interval;
    -
    1058 for (++i; i != m_collection.end(); ++i)
    -
    1059 (*i)->invalidate();
    -
    1060 return true;
    -
    1061 }
    -
    1062 }
    -
    1063 hit_offset = (size_t)-1;
    -
    1064 interval.start = (interval.end = start) + 1;
    -
    1065 return false;
    -
    1066 }
    -
    1067
    -
    1068 virtual void invalidate()
    -
    1069 {
    -
    1070 hit_offset = (size_t)-1;
    - -
    1072 }
    -
    1073
    -
    1074 public:
    -
    1075 size_t hit_offset;
    -
    1076 };
    -
    1077
    -
    1078 using branch = basic_branch<char>;
    - -
    1080#ifdef _UNICODE
    -
    1081 using tbranch = wbranch;
    -
    1082#else
    -
    1083 using tbranch = branch;
    -
    1084#endif
    - -
    1086
    -
    1090 template <class T, class T_tester = basic_string<T>>
    - -
    1092 {
    -
    1093 public:
    -
    1094 inline basic_string_branch(
    -
    1095 _In_reads_(count) const T* str_z = nullptr,
    -
    1096 _In_ size_t count = 0,
    -
    1097 _In_ const std::locale& locale = std::locale()) :
    -
    1098 basic_branch<T>(locale)
    -
    1099 {
    -
    1100 build(str_z, count);
    -
    1101 }
    -
    1102
    -
    1103 inline basic_string_branch(_In_z_ const T* str, ...) :
    -
    1104 basic_branch<T>(std::locale())
    -
    1105 {
    -
    1106 va_list params;
    -
    1107 va_start(params, str);
    -
    1108 build(str, params);
    -
    1109 va_end(params);
    -
    1110 }
    -
    1111
    -
    1112 inline basic_string_branch(_In_ const std::locale& locale, _In_z_ const T* str, ...) :
    -
    1113 basic_branch<T>(locale)
    -
    1114 {
    -
    1115 va_list params;
    -
    1116 va_start(params, str);
    -
    1117 build(str, params);
    -
    1118 va_end(params);
    -
    1119 }
    -
    1120
    -
    1121 protected:
    -
    1122 void build(_In_reads_(count) const T* str_z, _In_ size_t count)
    -
    1123 {
    -
    1124 assert(str_z || !count);
    -
    1125 if (count) {
    -
    1126 size_t offset, n;
    -
    1127 for (
    -
    1128 offset = n = 0;
    -
    1129 offset < count && str_z[offset];
    -
    1130 offset += stdex::strnlen(str_z + offset, count - offset) + 1, ++n);
    -
    1131 m_collection.reserve(n);
    -
    1132 for (
    -
    1133 offset = 0;
    -
    1134 offset < count && str_z[offset];
    -
    1135 offset += stdex::strnlen(str_z + offset, count - offset) + 1)
    -
    1136 m_collection.push_back(std::move(std::make_shared<T_tester>(str_z + offset, count - offset, m_locale)));
    -
    1137 }
    -
    1138 }
    -
    1139
    -
    1140 void build(_In_z_ const T* str, _In_ va_list params)
    -
    1141 {
    -
    1142 const T* p;
    -
    1143 for (
    -
    1144 m_collection.push_back(std::move(std::make_shared<T_tester>(str, (size_t)-1, m_locale)));
    -
    1145 (p = va_arg(params, const T*)) != nullptr;
    -
    1146 m_collection.push_back(std::move(std::make_shared<T_tester>(p, (size_t)-1, m_locale))));
    -
    1147 }
    -
    1148 };
    -
    1149
    - - -
    1152#ifdef _UNICODE
    - -
    1154#else
    - -
    1156#endif
    - -
    1158
    -
    1162 template <class T>
    - -
    1164 {
    -
    1165 public:
    - -
    1167 _In_count_(count) const std::shared_ptr<basic_tester<T>>* el = nullptr,
    -
    1168 _In_ size_t count = 0,
    -
    1169 _In_ const std::locale& locale = std::locale()) :
    -
    1170 tester_collection<T>(el, count, locale)
    -
    1171 {}
    -
    1172
    - -
    1174 _Inout_ std::vector<std::shared_ptr<basic_tester<T>>>&& collection,
    -
    1175 _In_ const std::locale& locale = std::locale()) :
    -
    1176 tester_collection<T>(std::move(collection), locale)
    -
    1177 {}
    -
    1178
    -
    1179 virtual bool match(
    -
    1180 _In_reads_or_z_(end) const T* text,
    -
    1181 _In_ size_t start = 0,
    -
    1182 _In_ size_t end = (size_t)-1,
    -
    1183 _In_ int flags = match_default)
    -
    1184 {
    -
    1185 assert(text || start >= end);
    -
    1186 for (auto& el: m_collection)
    -
    1187 el->invalidate();
    -
    1188 if (match_recursively(text, start, end, flags)) {
    -
    1189 interval.start = start;
    -
    1190 return true;
    -
    1191 }
    -
    1192 interval.start = (interval.end = start) + 1;
    -
    1193 return false;
    -
    1194 }
    -
    1195
    -
    1196 protected:
    -
    1197 bool match_recursively(
    -
    1198 _In_reads_or_z_(end) const T* text,
    -
    1199 _In_ size_t start = 0,
    -
    1200 _In_ size_t end = (size_t)-1,
    -
    1201 _In_ int flags = match_default)
    -
    1202 {
    -
    1203 bool all_matched = true;
    -
    1204 for (auto& el: m_collection) {
    -
    1205 if (!el->interval) {
    -
    1206 // Element was not matched in permutatuion yet.
    -
    1207 all_matched = false;
    -
    1208 if (el->match(text, start, end, flags)) {
    -
    1209 // Element matched for the first time.
    -
    1210 if (match_recursively(text, el->interval.end, end, flags)) {
    -
    1211 // Rest of the elements matched too.
    -
    1212 return true;
    -
    1213 }
    -
    1214 el->invalidate();
    -
    1215 }
    -
    1216 }
    -
    1217 }
    -
    1218 if (all_matched) {
    -
    1219 interval.end = start;
    -
    1220 return true;
    -
    1221 }
    -
    1222 return false;
    -
    1223 }
    -
    1224 };
    -
    1225
    - - -
    1228#ifdef _UNICODE
    -
    1229 using tpermutation = wpermutation;
    -
    1230#else
    -
    1231 using tpermutation = permutation;
    -
    1232#endif
    - -
    1234
    -
    1238 template <class T>
    -
    1239 class basic_integer : public basic_tester<T>
    -
    1240 {
    -
    1241 public:
    -
    1242 basic_integer(_In_ const std::locale& locale = std::locale()) :
    -
    1243 basic_tester<T>(locale),
    -
    1244 value(0)
    -
    1245 {}
    +
    1034 template <class T>
    + +
    1036 {
    +
    1037 protected:
    +
    1038 basic_branch(_In_ const std::locale& locale) :
    +
    1039 parser_collection<T>(locale),
    +
    1040 hit_offset((size_t)-1)
    +
    1041 {}
    +
    1042
    +
    1043 public:
    + +
    1045 _In_count_(count) const std::shared_ptr<basic_parser<T>>* el = nullptr,
    +
    1046 _In_ size_t count = 0,
    +
    1047 _In_ const std::locale& locale = std::locale()) :
    +
    1048 parser_collection<T>(el, count, locale),
    +
    1049 hit_offset((size_t)-1)
    +
    1050 {}
    +
    1051
    + +
    1053 _Inout_ std::vector<std::shared_ptr<basic_parser<T>>>&& collection,
    +
    1054 _In_ const std::locale& locale = std::locale()) :
    +
    1055 parser_collection<T>(std::move(collection), locale),
    +
    1056 hit_offset((size_t)-1)
    +
    1057 {}
    +
    1058
    +
    1059 virtual bool match(
    +
    1060 _In_reads_or_z_(end) const T* text,
    +
    1061 _In_ size_t start = 0,
    +
    1062 _In_ size_t end = (size_t)-1,
    +
    1063 _In_ int flags = match_default)
    +
    1064 {
    +
    1065 assert(text || start >= end);
    +
    1066 hit_offset = 0;
    +
    1067 for (auto i = m_collection.begin(); i != m_collection.end(); ++i, ++hit_offset) {
    +
    1068 if ((*i)->match(text, start, end, flags)) {
    +
    1069 interval = (*i)->interval;
    +
    1070 for (++i; i != m_collection.end(); ++i)
    +
    1071 (*i)->invalidate();
    +
    1072 return true;
    +
    1073 }
    +
    1074 }
    +
    1075 hit_offset = (size_t)-1;
    +
    1076 interval.start = (interval.end = start) + 1;
    +
    1077 return false;
    +
    1078 }
    +
    1079
    +
    1080 virtual void invalidate()
    +
    1081 {
    +
    1082 hit_offset = (size_t)-1;
    + +
    1084 }
    +
    1085
    +
    1086 public:
    +
    1087 size_t hit_offset;
    +
    1088 };
    +
    1089
    +
    1090 using branch = basic_branch<char>;
    + +
    1092#ifdef _UNICODE
    +
    1093 using tbranch = wbranch;
    +
    1094#else
    +
    1095 using tbranch = branch;
    +
    1096#endif
    + +
    1098
    +
    1102 template <class T, class T_parser = basic_string<T>>
    + +
    1104 {
    +
    1105 public:
    +
    1106 inline basic_string_branch(
    +
    1107 _In_reads_(count) const T* str_z = nullptr,
    +
    1108 _In_ size_t count = 0,
    +
    1109 _In_ const std::locale& locale = std::locale()) :
    +
    1110 basic_branch<T>(locale)
    +
    1111 {
    +
    1112 build(str_z, count);
    +
    1113 }
    +
    1114
    +
    1115 inline basic_string_branch(_In_z_ const T* str, ...) :
    +
    1116 basic_branch<T>(std::locale())
    +
    1117 {
    +
    1118 va_list params;
    +
    1119 va_start(params, str);
    +
    1120 build(str, params);
    +
    1121 va_end(params);
    +
    1122 }
    +
    1123
    +
    1124 inline basic_string_branch(_In_ const std::locale& locale, _In_z_ const T* str, ...) :
    +
    1125 basic_branch<T>(locale)
    +
    1126 {
    +
    1127 va_list params;
    +
    1128 va_start(params, str);
    +
    1129 build(str, params);
    +
    1130 va_end(params);
    +
    1131 }
    +
    1132
    +
    1133 protected:
    +
    1134 void build(_In_reads_(count) const T* str_z, _In_ size_t count)
    +
    1135 {
    +
    1136 assert(str_z || !count);
    +
    1137 if (count) {
    +
    1138 size_t offset, n;
    +
    1139 for (
    +
    1140 offset = n = 0;
    +
    1141 offset < count && str_z[offset];
    +
    1142 offset += stdex::strnlen(str_z + offset, count - offset) + 1, ++n);
    +
    1143 m_collection.reserve(n);
    +
    1144 for (
    +
    1145 offset = 0;
    +
    1146 offset < count && str_z[offset];
    +
    1147 offset += stdex::strnlen(str_z + offset, count - offset) + 1)
    +
    1148 m_collection.push_back(std::move(std::make_shared<T_parser>(str_z + offset, count - offset, m_locale)));
    +
    1149 }
    +
    1150 }
    +
    1151
    +
    1152 void build(_In_z_ const T* str, _In_ va_list params)
    +
    1153 {
    +
    1154 const T* p;
    +
    1155 for (
    +
    1156 m_collection.push_back(std::move(std::make_shared<T_parser>(str, (size_t)-1, m_locale)));
    +
    1157 (p = va_arg(params, const T*)) != nullptr;
    +
    1158 m_collection.push_back(std::move(std::make_shared<T_parser>(p, (size_t)-1, m_locale))));
    +
    1159 }
    +
    1160 };
    +
    1161
    + + +
    1164#ifdef _UNICODE
    + +
    1166#else
    + +
    1168#endif
    + +
    1170
    +
    1174 template <class T>
    + +
    1176 {
    +
    1177 public:
    + +
    1179 _In_count_(count) const std::shared_ptr<basic_parser<T>>* el = nullptr,
    +
    1180 _In_ size_t count = 0,
    +
    1181 _In_ const std::locale& locale = std::locale()) :
    +
    1182 parser_collection<T>(el, count, locale)
    +
    1183 {}
    +
    1184
    + +
    1186 _Inout_ std::vector<std::shared_ptr<basic_parser<T>>>&& collection,
    +
    1187 _In_ const std::locale& locale = std::locale()) :
    +
    1188 parser_collection<T>(std::move(collection), locale)
    +
    1189 {}
    +
    1190
    +
    1191 virtual bool match(
    +
    1192 _In_reads_or_z_(end) const T* text,
    +
    1193 _In_ size_t start = 0,
    +
    1194 _In_ size_t end = (size_t)-1,
    +
    1195 _In_ int flags = match_default)
    +
    1196 {
    +
    1197 assert(text || start >= end);
    +
    1198 for (auto& el: m_collection)
    +
    1199 el->invalidate();
    +
    1200 if (match_recursively(text, start, end, flags)) {
    +
    1201 interval.start = start;
    +
    1202 return true;
    +
    1203 }
    +
    1204 interval.start = (interval.end = start) + 1;
    +
    1205 return false;
    +
    1206 }
    +
    1207
    +
    1208 protected:
    +
    1209 bool match_recursively(
    +
    1210 _In_reads_or_z_(end) const T* text,
    +
    1211 _In_ size_t start = 0,
    +
    1212 _In_ size_t end = (size_t)-1,
    +
    1213 _In_ int flags = match_default)
    +
    1214 {
    +
    1215 bool all_matched = true;
    +
    1216 for (auto& el: m_collection) {
    +
    1217 if (!el->interval) {
    +
    1218 // Element was not matched in permutatuion yet.
    +
    1219 all_matched = false;
    +
    1220 if (el->match(text, start, end, flags)) {
    +
    1221 // Element matched for the first time.
    +
    1222 if (match_recursively(text, el->interval.end, end, flags)) {
    +
    1223 // Rest of the elements matched too.
    +
    1224 return true;
    +
    1225 }
    +
    1226 el->invalidate();
    +
    1227 }
    +
    1228 }
    +
    1229 }
    +
    1230 if (all_matched) {
    +
    1231 interval.end = start;
    +
    1232 return true;
    +
    1233 }
    +
    1234 return false;
    +
    1235 }
    +
    1236 };
    +
    1237
    + + +
    1240#ifdef _UNICODE
    +
    1241 using tpermutation = wpermutation;
    +
    1242#else
    +
    1243 using tpermutation = permutation;
    +
    1244#endif
    +
    1246
    -
    1247 virtual void invalidate()
    -
    1248 {
    -
    1249 value = 0;
    - -
    1251 }
    -
    1252
    +
    1250 template <class T>
    +
    1251 class basic_integer : public basic_parser<T>
    +
    1252 {
    1253 public:
    -
    1254 size_t value;
    -
    1255 };
    -
    1256
    -
    1260 template <class T>
    - -
    1262 {
    -
    1263 public:
    - -
    1265 _In_ const std::shared_ptr<basic_tester<T>>& digit_0,
    -
    1266 _In_ const std::shared_ptr<basic_tester<T>>& digit_1,
    -
    1267 _In_ const std::shared_ptr<basic_tester<T>>& digit_2,
    -
    1268 _In_ const std::shared_ptr<basic_tester<T>>& digit_3,
    -
    1269 _In_ const std::shared_ptr<basic_tester<T>>& digit_4,
    -
    1270 _In_ const std::shared_ptr<basic_tester<T>>& digit_5,
    -
    1271 _In_ const std::shared_ptr<basic_tester<T>>& digit_6,
    -
    1272 _In_ const std::shared_ptr<basic_tester<T>>& digit_7,
    -
    1273 _In_ const std::shared_ptr<basic_tester<T>>& digit_8,
    -
    1274 _In_ const std::shared_ptr<basic_tester<T>>& digit_9,
    -
    1275 _In_ const std::locale& locale = std::locale()) :
    -
    1276 basic_integer<T>(locale),
    -
    1277 m_digit_0(digit_0),
    -
    1278 m_digit_1(digit_1),
    -
    1279 m_digit_2(digit_2),
    -
    1280 m_digit_3(digit_3),
    -
    1281 m_digit_4(digit_4),
    -
    1282 m_digit_5(digit_5),
    -
    1283 m_digit_6(digit_6),
    -
    1284 m_digit_7(digit_7),
    -
    1285 m_digit_8(digit_8),
    -
    1286 m_digit_9(digit_9)
    -
    1287 {}
    -
    1288
    -
    1289 virtual bool match(
    -
    1290 _In_reads_or_z_(end) const T* text,
    -
    1291 _In_ size_t start = 0,
    -
    1292 _In_ size_t end = (size_t)-1,
    -
    1293 _In_ int flags = match_default)
    -
    1294 {
    -
    1295 assert(text || start >= end);
    -
    1296 for (interval.end = start, value = 0; interval.end < end && text[interval.end];) {
    -
    1297 size_t dig;
    -
    1298 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; interval.end = m_digit_0->interval.end; }
    -
    1299 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; interval.end = m_digit_1->interval.end; }
    -
    1300 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; interval.end = m_digit_2->interval.end; }
    -
    1301 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; interval.end = m_digit_3->interval.end; }
    -
    1302 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; interval.end = m_digit_4->interval.end; }
    -
    1303 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; interval.end = m_digit_5->interval.end; }
    -
    1304 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; interval.end = m_digit_6->interval.end; }
    -
    1305 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; interval.end = m_digit_7->interval.end; }
    -
    1306 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; interval.end = m_digit_8->interval.end; }
    -
    1307 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; interval.end = m_digit_9->interval.end; }
    -
    1308 else break;
    -
    1309 value = value * 10 + dig;
    -
    1310 }
    -
    1311 if (start < interval.end) {
    -
    1312 interval.start = start;
    -
    1313 return true;
    -
    1314 }
    -
    1315 interval.start = (interval.end = start) + 1;
    -
    1316 return false;
    -
    1317 }
    -
    1318
    -
    1319 protected:
    -
    1320 std::shared_ptr<basic_tester<T>>
    -
    1321 m_digit_0,
    -
    1322 m_digit_1,
    -
    1323 m_digit_2,
    -
    1324 m_digit_3,
    -
    1325 m_digit_4,
    -
    1326 m_digit_5,
    -
    1327 m_digit_6,
    -
    1328 m_digit_7,
    -
    1329 m_digit_8,
    -
    1330 m_digit_9;
    -
    1331 };
    -
    1332
    - - -
    1335#ifdef _UNICODE
    -
    1336 using tinteger10 = winteger10;
    -
    1337#else
    -
    1338 using tinteger10 = integer10;
    -
    1339#endif
    - -
    1341
    -
    1345 template <class T>
    - -
    1347 {
    -
    1348 public:
    - -
    1350 _In_ const std::shared_ptr<basic_integer10<T>>& digits,
    -
    1351 _In_ const std::shared_ptr<basic_set<T>>& separator,
    -
    1352 _In_ const std::locale& locale = std::locale()) :
    -
    1353 basic_integer<T>(locale),
    -
    1354 digit_count(0),
    -
    1355 has_separators(false),
    -
    1356 m_digits(digits),
    -
    1357 m_separator(separator)
    -
    1358 {}
    -
    1359
    -
    1360 virtual bool match(
    -
    1361 _In_reads_or_z_(end) const T* text,
    -
    1362 _In_ size_t start = 0,
    -
    1363 _In_ size_t end = (size_t)-1,
    -
    1364 _In_ int flags = match_default)
    -
    1365 {
    -
    1366 assert(text || start >= end);
    -
    1367 if (m_digits->match(text, start, end, flags)) {
    -
    1368 // Leading part match.
    -
    1369 value = m_digits->value;
    -
    1370 digit_count = m_digits->interval.size();
    -
    1371 has_separators = false;
    -
    1372 interval.start = start;
    -
    1373 interval.end = m_digits->interval.end;
    -
    1374 if (m_digits->interval.size() <= 3) {
    -
    1375 // Maybe separated with thousand separators?
    -
    1376 size_t hit_offset = (size_t)-1;
    -
    1377 while (m_separator->match(text, interval.end, end, flags) &&
    -
    1378 (hit_offset == (size_t)-1 || hit_offset == m_separator->hit_offset) && // All separators must be the same, no mixing.
    -
    1379 m_digits->match(text, m_separator->interval.end, end, flags) &&
    -
    1380 m_digits->interval.size() == 3)
    -
    1381 {
    -
    1382 // Thousand separator and three-digit integer followed.
    -
    1383 value = value * 1000 + m_digits->value;
    -
    1384 digit_count += 3;
    -
    1385 has_separators = true;
    -
    1386 interval.end = m_digits->interval.end;
    -
    1387 hit_offset = m_separator->hit_offset;
    -
    1388 }
    -
    1389 }
    -
    1390
    -
    1391 return true;
    -
    1392 }
    -
    1393 value = 0;
    -
    1394 interval.start = (interval.end = start) + 1;
    -
    1395 return false;
    -
    1396 }
    -
    1397
    -
    1398 virtual void invalidate()
    -
    1399 {
    -
    1400 digit_count = 0;
    -
    1401 has_separators = false;
    - -
    1403 }
    -
    1404
    -
    1405 public:
    - - -
    1408
    -
    1409 protected:
    -
    1410 std::shared_ptr<basic_integer10<T>> m_digits;
    -
    1411 std::shared_ptr<basic_set<T>> m_separator;
    -
    1412 };
    -
    1413
    - - -
    1416#ifdef _UNICODE
    -
    1417 using tinteger10ts = winteger10ts;
    -
    1418#else
    -
    1419 using tinteger10ts = integer10ts;
    -
    1420#endif
    - -
    1422
    -
    1426 template <class T>
    - -
    1428 {
    -
    1429 public:
    - -
    1431 _In_ const std::shared_ptr<basic_tester<T>>& digit_0,
    -
    1432 _In_ const std::shared_ptr<basic_tester<T>>& digit_1,
    -
    1433 _In_ const std::shared_ptr<basic_tester<T>>& digit_2,
    -
    1434 _In_ const std::shared_ptr<basic_tester<T>>& digit_3,
    -
    1435 _In_ const std::shared_ptr<basic_tester<T>>& digit_4,
    -
    1436 _In_ const std::shared_ptr<basic_tester<T>>& digit_5,
    -
    1437 _In_ const std::shared_ptr<basic_tester<T>>& digit_6,
    -
    1438 _In_ const std::shared_ptr<basic_tester<T>>& digit_7,
    -
    1439 _In_ const std::shared_ptr<basic_tester<T>>& digit_8,
    -
    1440 _In_ const std::shared_ptr<basic_tester<T>>& digit_9,
    -
    1441 _In_ const std::shared_ptr<basic_tester<T>>& digit_10,
    -
    1442 _In_ const std::shared_ptr<basic_tester<T>>& digit_11,
    -
    1443 _In_ const std::shared_ptr<basic_tester<T>>& digit_12,
    -
    1444 _In_ const std::shared_ptr<basic_tester<T>>& digit_13,
    -
    1445 _In_ const std::shared_ptr<basic_tester<T>>& digit_14,
    -
    1446 _In_ const std::shared_ptr<basic_tester<T>>& digit_15,
    -
    1447 _In_ const std::locale& locale = std::locale()) :
    -
    1448 basic_integer<T>(locale),
    -
    1449 m_digit_0(digit_0),
    -
    1450 m_digit_1(digit_1),
    -
    1451 m_digit_2(digit_2),
    -
    1452 m_digit_3(digit_3),
    -
    1453 m_digit_4(digit_4),
    -
    1454 m_digit_5(digit_5),
    -
    1455 m_digit_6(digit_6),
    -
    1456 m_digit_7(digit_7),
    -
    1457 m_digit_8(digit_8),
    -
    1458 m_digit_9(digit_9),
    -
    1459 m_digit_10(digit_10),
    -
    1460 m_digit_11(digit_11),
    -
    1461 m_digit_12(digit_12),
    -
    1462 m_digit_13(digit_13),
    -
    1463 m_digit_14(digit_14),
    -
    1464 m_digit_15(digit_15)
    -
    1465 {}
    -
    1466
    -
    1467 virtual bool match(
    -
    1468 _In_reads_or_z_(end) const T* text,
    -
    1469 _In_ size_t start = 0,
    -
    1470 _In_ size_t end = (size_t)-1,
    -
    1471 _In_ int flags = match_default)
    -
    1472 {
    -
    1473 assert(text || start >= end);
    -
    1474 for (interval.end = start, value = 0; interval.end < end && text[interval.end];) {
    -
    1475 size_t dig;
    -
    1476 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; interval.end = m_digit_0->interval.end; }
    -
    1477 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; interval.end = m_digit_1->interval.end; }
    -
    1478 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; interval.end = m_digit_2->interval.end; }
    -
    1479 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; interval.end = m_digit_3->interval.end; }
    -
    1480 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; interval.end = m_digit_4->interval.end; }
    -
    1481 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; interval.end = m_digit_5->interval.end; }
    -
    1482 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; interval.end = m_digit_6->interval.end; }
    -
    1483 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; interval.end = m_digit_7->interval.end; }
    -
    1484 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; interval.end = m_digit_8->interval.end; }
    -
    1485 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; interval.end = m_digit_9->interval.end; }
    -
    1486 else if (m_digit_10->match(text, interval.end, end, flags)) { dig = 10; interval.end = m_digit_10->interval.end; }
    -
    1487 else if (m_digit_11->match(text, interval.end, end, flags)) { dig = 11; interval.end = m_digit_11->interval.end; }
    -
    1488 else if (m_digit_12->match(text, interval.end, end, flags)) { dig = 12; interval.end = m_digit_12->interval.end; }
    -
    1489 else if (m_digit_13->match(text, interval.end, end, flags)) { dig = 13; interval.end = m_digit_13->interval.end; }
    -
    1490 else if (m_digit_14->match(text, interval.end, end, flags)) { dig = 14; interval.end = m_digit_14->interval.end; }
    -
    1491 else if (m_digit_15->match(text, interval.end, end, flags)) { dig = 15; interval.end = m_digit_15->interval.end; }
    -
    1492 else break;
    -
    1493 value = value * 16 + dig;
    -
    1494 }
    -
    1495 if (start < interval.end) {
    -
    1496 interval.start = start;
    -
    1497 return true;
    -
    1498 }
    -
    1499 interval.start = (interval.end = start) + 1;
    -
    1500 return false;
    -
    1501 }
    -
    1502
    -
    1503 protected:
    -
    1504 std::shared_ptr<basic_tester<T>>
    -
    1505 m_digit_0,
    -
    1506 m_digit_1,
    -
    1507 m_digit_2,
    -
    1508 m_digit_3,
    -
    1509 m_digit_4,
    -
    1510 m_digit_5,
    -
    1511 m_digit_6,
    -
    1512 m_digit_7,
    -
    1513 m_digit_8,
    -
    1514 m_digit_9,
    -
    1515 m_digit_10,
    -
    1516 m_digit_11,
    -
    1517 m_digit_12,
    -
    1518 m_digit_13,
    -
    1519 m_digit_14,
    -
    1520 m_digit_15;
    -
    1521 };
    -
    1522
    - - -
    1525#ifdef _UNICODE
    -
    1526 using tinteger16 = winteger16;
    -
    1527#else
    -
    1528 using tinteger16 = integer16;
    -
    1529#endif
    - -
    1531
    -
    1535 template <class T>
    - -
    1537 {
    -
    1538 public:
    - -
    1540 _In_ const std::shared_ptr<basic_tester<T>>& digit_1,
    -
    1541 _In_ const std::shared_ptr<basic_tester<T>>& digit_5,
    -
    1542 _In_ const std::shared_ptr<basic_tester<T>>& digit_10,
    -
    1543 _In_ const std::shared_ptr<basic_tester<T>>& digit_50,
    -
    1544 _In_ const std::shared_ptr<basic_tester<T>>& digit_100,
    -
    1545 _In_ const std::shared_ptr<basic_tester<T>>& digit_500,
    -
    1546 _In_ const std::shared_ptr<basic_tester<T>>& digit_1000,
    -
    1547 _In_ const std::shared_ptr<basic_tester<T>>& digit_5000,
    -
    1548 _In_ const std::shared_ptr<basic_tester<T>>& digit_10000,
    -
    1549 _In_ const std::locale& locale = std::locale()) :
    -
    1550 basic_integer<T>(locale),
    -
    1551 m_digit_1(digit_1),
    -
    1552 m_digit_5(digit_5),
    -
    1553 m_digit_10(digit_10),
    -
    1554 m_digit_50(digit_50),
    -
    1555 m_digit_100(digit_100),
    -
    1556 m_digit_500(digit_500),
    -
    1557 m_digit_1000(digit_1000),
    -
    1558 m_digit_5000(digit_5000),
    -
    1559 m_digit_10000(digit_10000)
    -
    1560 {}
    -
    1561
    -
    1562 virtual bool match(
    -
    1563 _In_reads_or_z_(end) const T* text,
    -
    1564 _In_ size_t start = 0,
    -
    1565 _In_ size_t end = (size_t)-1,
    -
    1566 _In_ int flags = match_default)
    -
    1567 {
    -
    1568 assert(text || start >= end);
    -
    1569 size_t
    -
    1570 dig[5] = { (size_t)-1, (size_t)-1, (size_t)-1, (size_t)-1, (size_t)-1 },
    -
    1571 end2;
    -
    1572
    -
    1573 for (interval.end = start, value = 0; interval.end < end && text[interval.end]; dig[3] = dig[2], dig[2] = dig[1], dig[1] = dig[0], interval.end = end2) {
    -
    1574 if (m_digit_1 && m_digit_1->match(text, interval.end, end, flags)) { dig[0] = 1; end2 = m_digit_1->interval.end; }
    -
    1575 else if (m_digit_5 && m_digit_5->match(text, interval.end, end, flags)) { dig[0] = 5; end2 = m_digit_5->interval.end; }
    -
    1576 else if (m_digit_10 && m_digit_10->match(text, interval.end, end, flags)) { dig[0] = 10; end2 = m_digit_10->interval.end; }
    -
    1577 else if (m_digit_50 && m_digit_50->match(text, interval.end, end, flags)) { dig[0] = 50; end2 = m_digit_50->interval.end; }
    -
    1578 else if (m_digit_100 && m_digit_100->match(text, interval.end, end, flags)) { dig[0] = 100; end2 = m_digit_100->interval.end; }
    -
    1579 else if (m_digit_500 && m_digit_500->match(text, interval.end, end, flags)) { dig[0] = 500; end2 = m_digit_500->interval.end; }
    -
    1580 else if (m_digit_1000 && m_digit_1000->match(text, interval.end, end, flags)) { dig[0] = 1000; end2 = m_digit_1000->interval.end; }
    -
    1581 else if (m_digit_5000 && m_digit_5000->match(text, interval.end, end, flags)) { dig[0] = 5000; end2 = m_digit_5000->interval.end; }
    -
    1582 else if (m_digit_10000 && m_digit_10000->match(text, interval.end, end, flags)) { dig[0] = 10000; end2 = m_digit_10000->interval.end; }
    -
    1583 else break;
    +
    1254 basic_integer(_In_ const std::locale& locale = std::locale()) :
    +
    1255 basic_parser<T>(locale),
    +
    1256 value(0)
    +
    1257 {}
    +
    1258
    +
    1259 virtual void invalidate()
    +
    1260 {
    +
    1261 value = 0;
    + +
    1263 }
    +
    1264
    +
    1265 public:
    +
    1266 size_t value;
    +
    1267 };
    +
    1268
    +
    1272 template <class T>
    + +
    1274 {
    +
    1275 public:
    + +
    1277 _In_ const std::shared_ptr<basic_parser<T>>& digit_0,
    +
    1278 _In_ const std::shared_ptr<basic_parser<T>>& digit_1,
    +
    1279 _In_ const std::shared_ptr<basic_parser<T>>& digit_2,
    +
    1280 _In_ const std::shared_ptr<basic_parser<T>>& digit_3,
    +
    1281 _In_ const std::shared_ptr<basic_parser<T>>& digit_4,
    +
    1282 _In_ const std::shared_ptr<basic_parser<T>>& digit_5,
    +
    1283 _In_ const std::shared_ptr<basic_parser<T>>& digit_6,
    +
    1284 _In_ const std::shared_ptr<basic_parser<T>>& digit_7,
    +
    1285 _In_ const std::shared_ptr<basic_parser<T>>& digit_8,
    +
    1286 _In_ const std::shared_ptr<basic_parser<T>>& digit_9,
    +
    1287 _In_ const std::locale& locale = std::locale()) :
    +
    1288 basic_integer<T>(locale),
    +
    1289 m_digit_0(digit_0),
    +
    1290 m_digit_1(digit_1),
    +
    1291 m_digit_2(digit_2),
    +
    1292 m_digit_3(digit_3),
    +
    1293 m_digit_4(digit_4),
    +
    1294 m_digit_5(digit_5),
    +
    1295 m_digit_6(digit_6),
    +
    1296 m_digit_7(digit_7),
    +
    1297 m_digit_8(digit_8),
    +
    1298 m_digit_9(digit_9)
    +
    1299 {}
    +
    1300
    +
    1301 virtual bool match(
    +
    1302 _In_reads_or_z_(end) const T* text,
    +
    1303 _In_ size_t start = 0,
    +
    1304 _In_ size_t end = (size_t)-1,
    +
    1305 _In_ int flags = match_default)
    +
    1306 {
    +
    1307 assert(text || start >= end);
    +
    1308 for (interval.end = start, value = 0; interval.end < end && text[interval.end];) {
    +
    1309 size_t dig;
    +
    1310 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; interval.end = m_digit_0->interval.end; }
    +
    1311 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; interval.end = m_digit_1->interval.end; }
    +
    1312 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; interval.end = m_digit_2->interval.end; }
    +
    1313 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; interval.end = m_digit_3->interval.end; }
    +
    1314 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; interval.end = m_digit_4->interval.end; }
    +
    1315 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; interval.end = m_digit_5->interval.end; }
    +
    1316 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; interval.end = m_digit_6->interval.end; }
    +
    1317 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; interval.end = m_digit_7->interval.end; }
    +
    1318 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; interval.end = m_digit_8->interval.end; }
    +
    1319 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; interval.end = m_digit_9->interval.end; }
    +
    1320 else break;
    +
    1321 value = value * 10 + dig;
    +
    1322 }
    +
    1323 if (start < interval.end) {
    +
    1324 interval.start = start;
    +
    1325 return true;
    +
    1326 }
    +
    1327 interval.start = (interval.end = start) + 1;
    +
    1328 return false;
    +
    1329 }
    +
    1330
    +
    1331 protected:
    +
    1332 std::shared_ptr<basic_parser<T>>
    +
    1333 m_digit_0,
    +
    1334 m_digit_1,
    +
    1335 m_digit_2,
    +
    1336 m_digit_3,
    +
    1337 m_digit_4,
    +
    1338 m_digit_5,
    +
    1339 m_digit_6,
    +
    1340 m_digit_7,
    +
    1341 m_digit_8,
    +
    1342 m_digit_9;
    +
    1343 };
    +
    1344
    + + +
    1347#ifdef _UNICODE
    +
    1348 using tinteger10 = winteger10;
    +
    1349#else
    +
    1350 using tinteger10 = integer10;
    +
    1351#endif
    + +
    1353
    +
    1357 template <class T>
    + +
    1359 {
    +
    1360 public:
    + +
    1362 _In_ const std::shared_ptr<basic_integer10<T>>& digits,
    +
    1363 _In_ const std::shared_ptr<basic_set<T>>& separator,
    +
    1364 _In_ const std::locale& locale = std::locale()) :
    +
    1365 basic_integer<T>(locale),
    +
    1366 digit_count(0),
    +
    1367 has_separators(false),
    +
    1368 m_digits(digits),
    +
    1369 m_separator(separator)
    +
    1370 {}
    +
    1371
    +
    1372 virtual bool match(
    +
    1373 _In_reads_or_z_(end) const T* text,
    +
    1374 _In_ size_t start = 0,
    +
    1375 _In_ size_t end = (size_t)-1,
    +
    1376 _In_ int flags = match_default)
    +
    1377 {
    +
    1378 assert(text || start >= end);
    +
    1379 if (m_digits->match(text, start, end, flags)) {
    +
    1380 // Leading part match.
    +
    1381 value = m_digits->value;
    +
    1382 digit_count = m_digits->interval.size();
    +
    1383 has_separators = false;
    +
    1384 interval.start = start;
    +
    1385 interval.end = m_digits->interval.end;
    +
    1386 if (m_digits->interval.size() <= 3) {
    +
    1387 // Maybe separated with thousand separators?
    +
    1388 size_t hit_offset = (size_t)-1;
    +
    1389 while (m_separator->match(text, interval.end, end, flags) &&
    +
    1390 (hit_offset == (size_t)-1 || hit_offset == m_separator->hit_offset) && // All separators must be the same, no mixing.
    +
    1391 m_digits->match(text, m_separator->interval.end, end, flags) &&
    +
    1392 m_digits->interval.size() == 3)
    +
    1393 {
    +
    1394 // Thousand separator and three-digit integer followed.
    +
    1395 value = value * 1000 + m_digits->value;
    +
    1396 digit_count += 3;
    +
    1397 has_separators = true;
    +
    1398 interval.end = m_digits->interval.end;
    +
    1399 hit_offset = m_separator->hit_offset;
    +
    1400 }
    +
    1401 }
    +
    1402
    +
    1403 return true;
    +
    1404 }
    +
    1405 value = 0;
    +
    1406 interval.start = (interval.end = start) + 1;
    +
    1407 return false;
    +
    1408 }
    +
    1409
    +
    1410 virtual void invalidate()
    +
    1411 {
    +
    1412 digit_count = 0;
    +
    1413 has_separators = false;
    + +
    1415 }
    +
    1416
    +
    1417 public:
    + + +
    1420
    +
    1421 protected:
    +
    1422 std::shared_ptr<basic_integer10<T>> m_digits;
    +
    1423 std::shared_ptr<basic_set<T>> m_separator;
    +
    1424 };
    +
    1425
    + + +
    1428#ifdef _UNICODE
    +
    1429 using tinteger10ts = winteger10ts;
    +
    1430#else
    +
    1431 using tinteger10ts = integer10ts;
    +
    1432#endif
    + +
    1434
    +
    1438 template <class T>
    + +
    1440 {
    +
    1441 public:
    + +
    1443 _In_ const std::shared_ptr<basic_parser<T>>& digit_0,
    +
    1444 _In_ const std::shared_ptr<basic_parser<T>>& digit_1,
    +
    1445 _In_ const std::shared_ptr<basic_parser<T>>& digit_2,
    +
    1446 _In_ const std::shared_ptr<basic_parser<T>>& digit_3,
    +
    1447 _In_ const std::shared_ptr<basic_parser<T>>& digit_4,
    +
    1448 _In_ const std::shared_ptr<basic_parser<T>>& digit_5,
    +
    1449 _In_ const std::shared_ptr<basic_parser<T>>& digit_6,
    +
    1450 _In_ const std::shared_ptr<basic_parser<T>>& digit_7,
    +
    1451 _In_ const std::shared_ptr<basic_parser<T>>& digit_8,
    +
    1452 _In_ const std::shared_ptr<basic_parser<T>>& digit_9,
    +
    1453 _In_ const std::shared_ptr<basic_parser<T>>& digit_10,
    +
    1454 _In_ const std::shared_ptr<basic_parser<T>>& digit_11,
    +
    1455 _In_ const std::shared_ptr<basic_parser<T>>& digit_12,
    +
    1456 _In_ const std::shared_ptr<basic_parser<T>>& digit_13,
    +
    1457 _In_ const std::shared_ptr<basic_parser<T>>& digit_14,
    +
    1458 _In_ const std::shared_ptr<basic_parser<T>>& digit_15,
    +
    1459 _In_ const std::locale& locale = std::locale()) :
    +
    1460 basic_integer<T>(locale),
    +
    1461 m_digit_0(digit_0),
    +
    1462 m_digit_1(digit_1),
    +
    1463 m_digit_2(digit_2),
    +
    1464 m_digit_3(digit_3),
    +
    1465 m_digit_4(digit_4),
    +
    1466 m_digit_5(digit_5),
    +
    1467 m_digit_6(digit_6),
    +
    1468 m_digit_7(digit_7),
    +
    1469 m_digit_8(digit_8),
    +
    1470 m_digit_9(digit_9),
    +
    1471 m_digit_10(digit_10),
    +
    1472 m_digit_11(digit_11),
    +
    1473 m_digit_12(digit_12),
    +
    1474 m_digit_13(digit_13),
    +
    1475 m_digit_14(digit_14),
    +
    1476 m_digit_15(digit_15)
    +
    1477 {}
    +
    1478
    +
    1479 virtual bool match(
    +
    1480 _In_reads_or_z_(end) const T* text,
    +
    1481 _In_ size_t start = 0,
    +
    1482 _In_ size_t end = (size_t)-1,
    +
    1483 _In_ int flags = match_default)
    +
    1484 {
    +
    1485 assert(text || start >= end);
    +
    1486 for (interval.end = start, value = 0; interval.end < end && text[interval.end];) {
    +
    1487 size_t dig;
    +
    1488 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; interval.end = m_digit_0->interval.end; }
    +
    1489 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; interval.end = m_digit_1->interval.end; }
    +
    1490 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; interval.end = m_digit_2->interval.end; }
    +
    1491 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; interval.end = m_digit_3->interval.end; }
    +
    1492 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; interval.end = m_digit_4->interval.end; }
    +
    1493 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; interval.end = m_digit_5->interval.end; }
    +
    1494 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; interval.end = m_digit_6->interval.end; }
    +
    1495 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; interval.end = m_digit_7->interval.end; }
    +
    1496 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; interval.end = m_digit_8->interval.end; }
    +
    1497 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; interval.end = m_digit_9->interval.end; }
    +
    1498 else if (m_digit_10->match(text, interval.end, end, flags)) { dig = 10; interval.end = m_digit_10->interval.end; }
    +
    1499 else if (m_digit_11->match(text, interval.end, end, flags)) { dig = 11; interval.end = m_digit_11->interval.end; }
    +
    1500 else if (m_digit_12->match(text, interval.end, end, flags)) { dig = 12; interval.end = m_digit_12->interval.end; }
    +
    1501 else if (m_digit_13->match(text, interval.end, end, flags)) { dig = 13; interval.end = m_digit_13->interval.end; }
    +
    1502 else if (m_digit_14->match(text, interval.end, end, flags)) { dig = 14; interval.end = m_digit_14->interval.end; }
    +
    1503 else if (m_digit_15->match(text, interval.end, end, flags)) { dig = 15; interval.end = m_digit_15->interval.end; }
    +
    1504 else break;
    +
    1505 value = value * 16 + dig;
    +
    1506 }
    +
    1507 if (start < interval.end) {
    +
    1508 interval.start = start;
    +
    1509 return true;
    +
    1510 }
    +
    1511 interval.start = (interval.end = start) + 1;
    +
    1512 return false;
    +
    1513 }
    +
    1514
    +
    1515 protected:
    +
    1516 std::shared_ptr<basic_parser<T>>
    +
    1517 m_digit_0,
    +
    1518 m_digit_1,
    +
    1519 m_digit_2,
    +
    1520 m_digit_3,
    +
    1521 m_digit_4,
    +
    1522 m_digit_5,
    +
    1523 m_digit_6,
    +
    1524 m_digit_7,
    +
    1525 m_digit_8,
    +
    1526 m_digit_9,
    +
    1527 m_digit_10,
    +
    1528 m_digit_11,
    +
    1529 m_digit_12,
    +
    1530 m_digit_13,
    +
    1531 m_digit_14,
    +
    1532 m_digit_15;
    +
    1533 };
    +
    1534
    + + +
    1537#ifdef _UNICODE
    +
    1538 using tinteger16 = winteger16;
    +
    1539#else
    +
    1540 using tinteger16 = integer16;
    +
    1541#endif
    + +
    1543
    +
    1547 template <class T>
    + +
    1549 {
    +
    1550 public:
    + +
    1552 _In_ const std::shared_ptr<basic_parser<T>>& digit_1,
    +
    1553 _In_ const std::shared_ptr<basic_parser<T>>& digit_5,
    +
    1554 _In_ const std::shared_ptr<basic_parser<T>>& digit_10,
    +
    1555 _In_ const std::shared_ptr<basic_parser<T>>& digit_50,
    +
    1556 _In_ const std::shared_ptr<basic_parser<T>>& digit_100,
    +
    1557 _In_ const std::shared_ptr<basic_parser<T>>& digit_500,
    +
    1558 _In_ const std::shared_ptr<basic_parser<T>>& digit_1000,
    +
    1559 _In_ const std::shared_ptr<basic_parser<T>>& digit_5000,
    +
    1560 _In_ const std::shared_ptr<basic_parser<T>>& digit_10000,
    +
    1561 _In_ const std::locale& locale = std::locale()) :
    +
    1562 basic_integer<T>(locale),
    +
    1563 m_digit_1(digit_1),
    +
    1564 m_digit_5(digit_5),
    +
    1565 m_digit_10(digit_10),
    +
    1566 m_digit_50(digit_50),
    +
    1567 m_digit_100(digit_100),
    +
    1568 m_digit_500(digit_500),
    +
    1569 m_digit_1000(digit_1000),
    +
    1570 m_digit_5000(digit_5000),
    +
    1571 m_digit_10000(digit_10000)
    +
    1572 {}
    +
    1573
    +
    1574 virtual bool match(
    +
    1575 _In_reads_or_z_(end) const T* text,
    +
    1576 _In_ size_t start = 0,
    +
    1577 _In_ size_t end = (size_t)-1,
    +
    1578 _In_ int flags = match_default)
    +
    1579 {
    +
    1580 assert(text || start >= end);
    +
    1581 size_t
    +
    1582 dig[5] = { (size_t)-1, (size_t)-1, (size_t)-1, (size_t)-1, (size_t)-1 },
    +
    1583 end2;
    1584
    -
    1585 // Store first digit.
    -
    1586 if (dig[4] == (size_t)-1) dig[4] = dig[0];
    -
    1587
    -
    1588 if (dig[3] == dig[2] && dig[2] == dig[1] && dig[1] == dig[0] && dig[0] != dig[4]) {
    -
    1589 // Same digit repeated four times. No-go, unless first digit. E.g. XIIII vs. XIV. MMMMMCD allowed, IIII also...
    -
    1590 break;
    -
    1591 }
    -
    1592 if (dig[0] <= dig[1]) {
    -
    1593 // Digit is less or equal previous one: add.
    -
    1594 value += dig[0];
    -
    1595 }
    -
    1596 else if (
    -
    1597 dig[1] == 1 && (dig[0] == 5 || dig[0] == 10) ||
    -
    1598 dig[1] == 10 && (dig[0] == 50 || dig[0] == 100) ||
    -
    1599 dig[1] == 100 && (dig[0] == 500 || dig[0] == 1000) ||
    -
    1600 dig[1] == 1000 && (dig[0] == 5000 || dig[0] == 10000))
    -
    1601 {
    -
    1602 // Digit is up to two orders bigger than previous one: subtract. But...
    -
    1603 if (dig[2] < dig[0]) {
    -
    1604 // Digit is also bigger than pre-previous one. E.g. VIX (V < X => invalid)
    -
    1605 break;
    -
    1606 }
    -
    1607 value -= dig[1]; // Cancel addition in the previous step.
    -
    1608 dig[0] -= dig[1]; // Combine last two digits.
    -
    1609 dig[1] = dig[2]; // The true previous digit is now pre-previous one. :)
    -
    1610 dig[2] = dig[3]; // The true pre-previous digit is now pre-pre-previous one. :)
    -
    1611 value += dig[0]; // Add combined value.
    -
    1612 }
    -
    1613 else {
    -
    1614 // New digit is too big than the previous one. E.g. VX (V < X => invalid)
    -
    1615 break;
    -
    1616 }
    -
    1617 }
    -
    1618 if (value) {
    -
    1619 interval.start = start;
    -
    1620 return true;
    -
    1621 }
    -
    1622 interval.start = (interval.end = start) + 1;
    -
    1623 return false;
    -
    1624 }
    -
    1625
    -
    1626 protected:
    -
    1627 std::shared_ptr<basic_tester<T>>
    -
    1628 m_digit_1,
    -
    1629 m_digit_5,
    -
    1630 m_digit_10,
    -
    1631 m_digit_50,
    -
    1632 m_digit_100,
    -
    1633 m_digit_500,
    -
    1634 m_digit_1000,
    -
    1635 m_digit_5000,
    -
    1636 m_digit_10000;
    -
    1637 };
    -
    1638
    - - -
    1641#ifdef _UNICODE
    - -
    1643#else
    - -
    1645#endif
    - -
    1647
    -
    1651 template <class T>
    - -
    1653 {
    -
    1654 public:
    - -
    1656 _In_ const std::shared_ptr<basic_tester<T>>& _numerator,
    -
    1657 _In_ const std::shared_ptr<basic_tester<T>>& _fraction_line,
    -
    1658 _In_ const std::shared_ptr<basic_tester<T>>& _denominator,
    -
    1659 _In_ const std::locale& locale = std::locale()) :
    -
    1660 basic_tester<T>(locale),
    -
    1661 numerator(_numerator),
    -
    1662 fraction_line(_fraction_line),
    -
    1663 denominator(_denominator)
    -
    1664 {}
    -
    1665
    -
    1666 virtual bool match(
    -
    1667 _In_reads_or_z_(end) const T* text,
    -
    1668 _In_ size_t start = 0,
    -
    1669 _In_ size_t end = (size_t)-1,
    -
    1670 _In_ int flags = match_default)
    -
    1671 {
    -
    1672 assert(text || start >= end);
    -
    1673 if (numerator->match(text, start, end, flags) &&
    -
    1674 fraction_line->match(text, numerator->interval.end, end, flags) &&
    -
    1675 denominator->match(text, fraction_line->interval.end, end, flags))
    -
    1676 {
    -
    1677 interval.start = start;
    -
    1678 interval.end = denominator->interval.end;
    -
    1679 return true;
    -
    1680 }
    -
    1681 numerator->invalidate();
    -
    1682 fraction_line->invalidate();
    -
    1683 denominator->invalidate();
    -
    1684 interval.start = (interval.end = start) + 1;
    -
    1685 return false;
    -
    1686 }
    -
    1687
    -
    1688 virtual void invalidate()
    -
    1689 {
    -
    1690 numerator->invalidate();
    -
    1691 fraction_line->invalidate();
    -
    1692 denominator->invalidate();
    - -
    1694 }
    -
    1695
    -
    1696 public:
    -
    1697 std::shared_ptr<basic_tester<T>> numerator;
    -
    1698 std::shared_ptr<basic_tester<T>> fraction_line;
    -
    1699 std::shared_ptr<basic_tester<T>> denominator;
    -
    1700 };
    -
    1701
    - - -
    1704#ifdef _UNICODE
    -
    1705 using tfraction = wfraction;
    -
    1706#else
    -
    1707 using tfraction = fraction;
    -
    1708#endif
    - -
    1710
    -
    1714 template <class T>
    -
    1715 class basic_score : public basic_tester<T>
    -
    1716 {
    -
    1717 public:
    - -
    1719 _In_ const std::shared_ptr<basic_tester<T>>& _home,
    -
    1720 _In_ const std::shared_ptr<basic_tester<T>>& _separator,
    -
    1721 _In_ const std::shared_ptr<basic_tester<T>>& _guest,
    -
    1722 _In_ const std::shared_ptr<basic_tester<T>>& space,
    -
    1723 _In_ const std::locale& locale = std::locale()) :
    -
    1724 basic_tester<T>(locale),
    -
    1725 home(_home),
    -
    1726 separator(_separator),
    -
    1727 guest(_guest),
    -
    1728 m_space(space)
    -
    1729 {}
    -
    1730
    -
    1731 virtual bool match(
    -
    1732 _In_reads_or_z_(end) const T* text,
    -
    1733 _In_ size_t start = 0,
    -
    1734 _In_ size_t end = (size_t)-1,
    -
    1735 _In_ int flags = match_default)
    -
    1736 {
    -
    1737 assert(text || start >= end);
    -
    1738 interval.end = start;
    -
    1739
    -
    1740 if (home->match(text, interval.end, end, flags))
    -
    1741 interval.end = home->interval.end;
    -
    1742 else
    -
    1743 goto end;
    -
    1744
    -
    1745 const int space_match_flags = flags & ~match_multiline; // Spaces in score must never be broken in new line.
    -
    1746 for (; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    1747
    -
    1748 if (separator->match(text, interval.end, end, flags))
    -
    1749 interval.end = separator->interval.end;
    -
    1750 else
    -
    1751 goto end;
    -
    1752
    -
    1753 for (; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    1754
    -
    1755 if (guest->match(text, interval.end, end, flags))
    -
    1756 interval.end = guest->interval.end;
    -
    1757 else
    -
    1758 goto end;
    +
    1585 for (interval.end = start, value = 0; interval.end < end && text[interval.end]; dig[3] = dig[2], dig[2] = dig[1], dig[1] = dig[0], interval.end = end2) {
    +
    1586 if (m_digit_1 && m_digit_1->match(text, interval.end, end, flags)) { dig[0] = 1; end2 = m_digit_1->interval.end; }
    +
    1587 else if (m_digit_5 && m_digit_5->match(text, interval.end, end, flags)) { dig[0] = 5; end2 = m_digit_5->interval.end; }
    +
    1588 else if (m_digit_10 && m_digit_10->match(text, interval.end, end, flags)) { dig[0] = 10; end2 = m_digit_10->interval.end; }
    +
    1589 else if (m_digit_50 && m_digit_50->match(text, interval.end, end, flags)) { dig[0] = 50; end2 = m_digit_50->interval.end; }
    +
    1590 else if (m_digit_100 && m_digit_100->match(text, interval.end, end, flags)) { dig[0] = 100; end2 = m_digit_100->interval.end; }
    +
    1591 else if (m_digit_500 && m_digit_500->match(text, interval.end, end, flags)) { dig[0] = 500; end2 = m_digit_500->interval.end; }
    +
    1592 else if (m_digit_1000 && m_digit_1000->match(text, interval.end, end, flags)) { dig[0] = 1000; end2 = m_digit_1000->interval.end; }
    +
    1593 else if (m_digit_5000 && m_digit_5000->match(text, interval.end, end, flags)) { dig[0] = 5000; end2 = m_digit_5000->interval.end; }
    +
    1594 else if (m_digit_10000 && m_digit_10000->match(text, interval.end, end, flags)) { dig[0] = 10000; end2 = m_digit_10000->interval.end; }
    +
    1595 else break;
    +
    1596
    +
    1597 // Store first digit.
    +
    1598 if (dig[4] == (size_t)-1) dig[4] = dig[0];
    +
    1599
    +
    1600 if (dig[3] == dig[2] && dig[2] == dig[1] && dig[1] == dig[0] && dig[0] != dig[4]) {
    +
    1601 // Same digit repeated four times. No-go, unless first digit. E.g. XIIII vs. XIV. MMMMMCD allowed, IIII also...
    +
    1602 break;
    +
    1603 }
    +
    1604 if (dig[0] <= dig[1]) {
    +
    1605 // Digit is less or equal previous one: add.
    +
    1606 value += dig[0];
    +
    1607 }
    +
    1608 else if (
    +
    1609 dig[1] == 1 && (dig[0] == 5 || dig[0] == 10) ||
    +
    1610 dig[1] == 10 && (dig[0] == 50 || dig[0] == 100) ||
    +
    1611 dig[1] == 100 && (dig[0] == 500 || dig[0] == 1000) ||
    +
    1612 dig[1] == 1000 && (dig[0] == 5000 || dig[0] == 10000))
    +
    1613 {
    +
    1614 // Digit is up to two orders bigger than previous one: subtract. But...
    +
    1615 if (dig[2] < dig[0]) {
    +
    1616 // Digit is also bigger than pre-previous one. E.g. VIX (V < X => invalid)
    +
    1617 break;
    +
    1618 }
    +
    1619 value -= dig[1]; // Cancel addition in the previous step.
    +
    1620 dig[0] -= dig[1]; // Combine last two digits.
    +
    1621 dig[1] = dig[2]; // The true previous digit is now pre-previous one. :)
    +
    1622 dig[2] = dig[3]; // The true pre-previous digit is now pre-pre-previous one. :)
    +
    1623 value += dig[0]; // Add combined value.
    +
    1624 }
    +
    1625 else {
    +
    1626 // New digit is too big than the previous one. E.g. VX (V < X => invalid)
    +
    1627 break;
    +
    1628 }
    +
    1629 }
    +
    1630 if (value) {
    +
    1631 interval.start = start;
    +
    1632 return true;
    +
    1633 }
    +
    1634 interval.start = (interval.end = start) + 1;
    +
    1635 return false;
    +
    1636 }
    +
    1637
    +
    1638 protected:
    +
    1639 std::shared_ptr<basic_parser<T>>
    +
    1640 m_digit_1,
    +
    1641 m_digit_5,
    +
    1642 m_digit_10,
    +
    1643 m_digit_50,
    +
    1644 m_digit_100,
    +
    1645 m_digit_500,
    +
    1646 m_digit_1000,
    +
    1647 m_digit_5000,
    +
    1648 m_digit_10000;
    +
    1649 };
    +
    1650
    + + +
    1653#ifdef _UNICODE
    + +
    1655#else
    + +
    1657#endif
    + +
    1659
    +
    1663 template <class T>
    + +
    1665 {
    +
    1666 public:
    + +
    1668 _In_ const std::shared_ptr<basic_parser<T>>& _numerator,
    +
    1669 _In_ const std::shared_ptr<basic_parser<T>>& _fraction_line,
    +
    1670 _In_ const std::shared_ptr<basic_parser<T>>& _denominator,
    +
    1671 _In_ const std::locale& locale = std::locale()) :
    +
    1672 basic_parser<T>(locale),
    +
    1673 numerator(_numerator),
    +
    1674 fraction_line(_fraction_line),
    +
    1675 denominator(_denominator)
    +
    1676 {}
    +
    1677
    +
    1678 virtual bool match(
    +
    1679 _In_reads_or_z_(end) const T* text,
    +
    1680 _In_ size_t start = 0,
    +
    1681 _In_ size_t end = (size_t)-1,
    +
    1682 _In_ int flags = match_default)
    +
    1683 {
    +
    1684 assert(text || start >= end);
    +
    1685 if (numerator->match(text, start, end, flags) &&
    +
    1686 fraction_line->match(text, numerator->interval.end, end, flags) &&
    +
    1687 denominator->match(text, fraction_line->interval.end, end, flags))
    +
    1688 {
    +
    1689 interval.start = start;
    +
    1690 interval.end = denominator->interval.end;
    +
    1691 return true;
    +
    1692 }
    +
    1693 numerator->invalidate();
    +
    1694 fraction_line->invalidate();
    +
    1695 denominator->invalidate();
    +
    1696 interval.start = (interval.end = start) + 1;
    +
    1697 return false;
    +
    1698 }
    +
    1699
    +
    1700 virtual void invalidate()
    +
    1701 {
    +
    1702 numerator->invalidate();
    +
    1703 fraction_line->invalidate();
    +
    1704 denominator->invalidate();
    + +
    1706 }
    +
    1707
    +
    1708 public:
    +
    1709 std::shared_ptr<basic_parser<T>> numerator;
    +
    1710 std::shared_ptr<basic_parser<T>> fraction_line;
    +
    1711 std::shared_ptr<basic_parser<T>> denominator;
    +
    1712 };
    +
    1713
    + + +
    1716#ifdef _UNICODE
    +
    1717 using tfraction = wfraction;
    +
    1718#else
    +
    1719 using tfraction = fraction;
    +
    1720#endif
    + +
    1722
    +
    1726 template <class T>
    +
    1727 class basic_score : public basic_parser<T>
    +
    1728 {
    +
    1729 public:
    + +
    1731 _In_ const std::shared_ptr<basic_parser<T>>& _home,
    +
    1732 _In_ const std::shared_ptr<basic_parser<T>>& _separator,
    +
    1733 _In_ const std::shared_ptr<basic_parser<T>>& _guest,
    +
    1734 _In_ const std::shared_ptr<basic_parser<T>>& space,
    +
    1735 _In_ const std::locale& locale = std::locale()) :
    +
    1736 basic_parser<T>(locale),
    +
    1737 home(_home),
    +
    1738 separator(_separator),
    +
    1739 guest(_guest),
    +
    1740 m_space(space)
    +
    1741 {}
    +
    1742
    +
    1743 virtual bool match(
    +
    1744 _In_reads_or_z_(end) const T* text,
    +
    1745 _In_ size_t start = 0,
    +
    1746 _In_ size_t end = (size_t)-1,
    +
    1747 _In_ int flags = match_default)
    +
    1748 {
    +
    1749 assert(text || start >= end);
    +
    1750 interval.end = start;
    +
    1751
    +
    1752 if (home->match(text, interval.end, end, flags))
    +
    1753 interval.end = home->interval.end;
    +
    1754 else
    +
    1755 goto end;
    +
    1756
    +
    1757 const int space_match_flags = flags & ~match_multiline; // Spaces in score must never be broken in new line.
    +
    1758 for (; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    1759
    -
    1760 interval.start = start;
    -
    1761 return true;
    -
    1762
    -
    1763 end:
    -
    1764 home->invalidate();
    -
    1765 separator->invalidate();
    -
    1766 guest->invalidate();
    -
    1767 interval.start = (interval.end = start) + 1;
    -
    1768 return false;
    -
    1769 }
    -
    1770
    -
    1771 virtual void invalidate()
    -
    1772 {
    -
    1773 home->invalidate();
    -
    1774 separator->invalidate();
    -
    1775 guest->invalidate();
    - -
    1777 }
    -
    1778
    -
    1779 public:
    -
    1780 std::shared_ptr<basic_tester<T>> home;
    -
    1781 std::shared_ptr<basic_tester<T>> separator;
    -
    1782 std::shared_ptr<basic_tester<T>> guest;
    -
    1783
    -
    1784 protected:
    -
    1785 std::shared_ptr<basic_tester<T>> m_space;
    -
    1786 };
    -
    1787
    -
    1788 using score = basic_score<char>;
    - -
    1790#ifdef _UNICODE
    -
    1791 using tscore = wscore;
    -
    1792#else
    -
    1793 using tscore = score;
    -
    1794#endif
    - -
    1796
    -
    1800 template <class T>
    - -
    1802 {
    -
    1803 public:
    - -
    1805 _In_ const std::shared_ptr<basic_tester<T>>& _positive_sign,
    -
    1806 _In_ const std::shared_ptr<basic_tester<T>>& _negative_sign,
    -
    1807 _In_ const std::shared_ptr<basic_tester<T>>& _special_sign,
    -
    1808 _In_ const std::shared_ptr<basic_tester<T>>& _number,
    -
    1809 _In_ const std::locale& locale = std::locale()) :
    -
    1810 basic_tester<T>(locale),
    -
    1811 positive_sign(_positive_sign),
    -
    1812 negative_sign(_negative_sign),
    -
    1813 special_sign(_special_sign),
    -
    1814 number(_number)
    -
    1815 {}
    -
    1816
    -
    1817 virtual bool match(
    -
    1818 _In_reads_or_z_(end) const T* text,
    -
    1819 _In_ size_t start = 0,
    -
    1820 _In_ size_t end = (size_t)-1,
    -
    1821 _In_ int flags = match_default)
    -
    1822 {
    -
    1823 assert(text || start >= end);
    -
    1824 interval.end = start;
    -
    1825 if (positive_sign && positive_sign->match(text, interval.end, end, flags)) {
    -
    1826 interval.end = positive_sign->interval.end;
    -
    1827 if (negative_sign) negative_sign->invalidate();
    -
    1828 if (special_sign) special_sign->invalidate();
    -
    1829 }
    -
    1830 else if (negative_sign && negative_sign->match(text, interval.end, end, flags)) {
    -
    1831 interval.end = negative_sign->interval.end;
    -
    1832 if (positive_sign) positive_sign->invalidate();
    -
    1833 if (special_sign) special_sign->invalidate();
    -
    1834 }
    -
    1835 else if (special_sign && special_sign->match(text, interval.end, end, flags)) {
    -
    1836 interval.end = special_sign->interval.end;
    -
    1837 if (positive_sign) positive_sign->invalidate();
    -
    1838 if (negative_sign) negative_sign->invalidate();
    -
    1839 }
    -
    1840 else {
    -
    1841 if (positive_sign) positive_sign->invalidate();
    -
    1842 if (negative_sign) negative_sign->invalidate();
    -
    1843 if (special_sign) special_sign->invalidate();
    -
    1844 }
    -
    1845 if (number->match(text, interval.end, end, flags)) {
    -
    1846 interval.start = start;
    -
    1847 interval.end = number->interval.end;
    -
    1848 return true;
    -
    1849 }
    -
    1850 if (positive_sign) positive_sign->invalidate();
    -
    1851 if (negative_sign) negative_sign->invalidate();
    -
    1852 if (special_sign) special_sign->invalidate();
    -
    1853 number->invalidate();
    -
    1854 interval.start = (interval.end = start) + 1;
    -
    1855 return false;
    -
    1856 }
    -
    1857
    -
    1858 virtual void invalidate()
    -
    1859 {
    -
    1860 if (positive_sign) positive_sign->invalidate();
    -
    1861 if (negative_sign) negative_sign->invalidate();
    -
    1862 if (special_sign) special_sign->invalidate();
    -
    1863 number->invalidate();
    - -
    1865 }
    -
    1866
    -
    1867 public:
    -
    1868 std::shared_ptr<basic_tester<T>> positive_sign;
    -
    1869 std::shared_ptr<basic_tester<T>> negative_sign;
    -
    1870 std::shared_ptr<basic_tester<T>> special_sign;
    -
    1871 std::shared_ptr<basic_tester<T>> number;
    -
    1872 };
    -
    1873
    - - -
    1876#ifdef _UNICODE
    - -
    1878#else
    - -
    1880#endif
    - -
    1882
    -
    1886 template <class T>
    - -
    1888 {
    -
    1889 public:
    - -
    1891 _In_ const std::shared_ptr<basic_tester<T>>& _positive_sign,
    -
    1892 _In_ const std::shared_ptr<basic_tester<T>>& _negative_sign,
    -
    1893 _In_ const std::shared_ptr<basic_tester<T>>& _special_sign,
    -
    1894 _In_ const std::shared_ptr<basic_tester<T>>& _integer,
    -
    1895 _In_ const std::shared_ptr<basic_tester<T>>& space,
    -
    1896 _In_ const std::shared_ptr<basic_tester<T>>& _fraction,
    -
    1897 _In_ const std::locale& locale = std::locale()) :
    -
    1898 basic_tester<T>(locale),
    -
    1899 positive_sign(_positive_sign),
    -
    1900 negative_sign(_negative_sign),
    -
    1901 special_sign(_special_sign),
    -
    1902 integer(_integer),
    -
    1903 fraction(_fraction),
    -
    1904 m_space(space)
    -
    1905 {}
    -
    1906
    -
    1907 virtual bool match(
    -
    1908 _In_reads_or_z_(end) const T* text,
    -
    1909 _In_ size_t start = 0,
    -
    1910 _In_ size_t end = (size_t)-1,
    -
    1911 _In_ int flags = match_default)
    -
    1912 {
    -
    1913 assert(text || start >= end);
    -
    1914 interval.end = start;
    -
    1915
    -
    1916 if (positive_sign && positive_sign->match(text, interval.end, end, flags)) {
    -
    1917 interval.end = positive_sign->interval.end;
    -
    1918 if (negative_sign) negative_sign->invalidate();
    -
    1919 if (special_sign) special_sign->invalidate();
    -
    1920 }
    -
    1921 else if (negative_sign && negative_sign->match(text, interval.end, end, flags)) {
    -
    1922 interval.end = negative_sign->interval.end;
    -
    1923 if (positive_sign) positive_sign->invalidate();
    -
    1924 if (special_sign) special_sign->invalidate();
    -
    1925 }
    -
    1926 else if (special_sign && special_sign->match(text, interval.end, end, flags)) {
    -
    1927 interval.end = special_sign->interval.end;
    -
    1928 if (positive_sign) positive_sign->invalidate();
    -
    1929 if (negative_sign) negative_sign->invalidate();
    -
    1930 }
    -
    1931 else {
    -
    1932 if (positive_sign) positive_sign->invalidate();
    -
    1933 if (negative_sign) negative_sign->invalidate();
    -
    1934 if (special_sign) special_sign->invalidate();
    -
    1935 }
    -
    1936
    -
    1937 // Check for <integer> <fraction>
    -
    1938 const int space_match_flags = flags & ~match_multiline; // Spaces in fractions must never be broken in new line.
    -
    1939 if (integer->match(text, interval.end, end, flags) &&
    -
    1940 m_space->match(text, integer->interval.end, end, space_match_flags))
    -
    1941 {
    -
    1942 for (interval.end = m_space->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    1943 if (fraction->match(text, interval.end, end, flags)) {
    -
    1944 interval.start = start;
    - -
    1946 return true;
    -
    1947 }
    -
    1948 fraction->invalidate();
    -
    1949 interval.start = start;
    -
    1950 interval.end = integer->interval.end;
    -
    1951 return true;
    -
    1952 }
    -
    1953
    -
    1954 // Check for <fraction>
    -
    1955 if (fraction->match(text, interval.end, end, flags)) {
    -
    1956 integer->invalidate();
    -
    1957 interval.start = start;
    - -
    1959 return true;
    -
    1960 }
    -
    1961
    -
    1962 // Check for <integer>
    -
    1963 if (integer->match(text, interval.end, end, flags)) {
    -
    1964 fraction->invalidate();
    -
    1965 interval.start = start;
    -
    1966 interval.end = integer->interval.end;
    -
    1967 return true;
    -
    1968 }
    -
    1969
    -
    1970 if (positive_sign) positive_sign->invalidate();
    -
    1971 if (negative_sign) negative_sign->invalidate();
    -
    1972 if (special_sign) special_sign->invalidate();
    -
    1973 integer->invalidate();
    -
    1974 fraction->invalidate();
    -
    1975 interval.start = (interval.end = start) + 1;
    -
    1976 return false;
    -
    1977 }
    -
    1978
    -
    1979 virtual void invalidate()
    -
    1980 {
    -
    1981 if (positive_sign) positive_sign->invalidate();
    -
    1982 if (negative_sign) negative_sign->invalidate();
    -
    1983 if (special_sign) special_sign->invalidate();
    -
    1984 integer->invalidate();
    -
    1985 fraction->invalidate();
    - -
    1987 }
    -
    1988
    -
    1989 public:
    -
    1990 std::shared_ptr<basic_tester<T>> positive_sign;
    -
    1991 std::shared_ptr<basic_tester<T>> negative_sign;
    -
    1992 std::shared_ptr<basic_tester<T>> special_sign;
    -
    1993 std::shared_ptr<basic_tester<T>> integer;
    -
    1994 std::shared_ptr<basic_tester<T>> fraction;
    -
    1995
    -
    1996 protected:
    -
    1997 std::shared_ptr<basic_tester<T>> m_space;
    -
    1998 };
    -
    1999
    - - -
    2002#ifdef _UNICODE
    - -
    2004#else
    - -
    2006#endif
    - -
    2008
    -
    2012 template <class T>
    - -
    2014 {
    -
    2015 public:
    - -
    2017 _In_ const std::shared_ptr<basic_tester<T>>& _positive_sign,
    -
    2018 _In_ const std::shared_ptr<basic_tester<T>>& _negative_sign,
    -
    2019 _In_ const std::shared_ptr<basic_tester<T>>& _special_sign,
    -
    2020 _In_ const std::shared_ptr<basic_integer<T>>& _integer,
    -
    2021 _In_ const std::shared_ptr<basic_tester<T>>& _decimal_separator,
    -
    2022 _In_ const std::shared_ptr<basic_integer<T>>& _decimal,
    -
    2023 _In_ const std::shared_ptr<basic_tester<T>>& _exponent_symbol,
    -
    2024 _In_ const std::shared_ptr<basic_tester<T>>& _positive_exp_sign,
    -
    2025 _In_ const std::shared_ptr<basic_tester<T>>& _negative_exp_sign,
    -
    2026 _In_ const std::shared_ptr<basic_integer<T>>& _exponent,
    -
    2027 _In_ const std::locale& locale = std::locale()) :
    -
    2028 basic_tester<T>(locale),
    -
    2029 positive_sign(_positive_sign),
    -
    2030 negative_sign(_negative_sign),
    -
    2031 special_sign(_special_sign),
    -
    2032 integer(_integer),
    -
    2033 decimal_separator(_decimal_separator),
    -
    2034 decimal(_decimal),
    -
    2035 exponent_symbol(_exponent_symbol),
    -
    2036 positive_exp_sign(_positive_exp_sign),
    -
    2037 negative_exp_sign(_negative_exp_sign),
    -
    2038 exponent(_exponent),
    -
    2039 value(std::numeric_limits<double>::quiet_NaN())
    -
    2040 {}
    -
    2041
    -
    2042 virtual bool match(
    -
    2043 _In_reads_or_z_(end) const T* text,
    -
    2044 _In_ size_t start = 0,
    -
    2045 _In_ size_t end = (size_t)-1,
    -
    2046 _In_ int flags = match_default)
    -
    2047 {
    -
    2048 assert(text || start >= end);
    -
    2049 interval.end = start;
    -
    2050
    -
    2051 if (positive_sign && positive_sign->match(text, interval.end, end, flags)) {
    -
    2052 interval.end = positive_sign->interval.end;
    -
    2053 if (negative_sign) negative_sign->invalidate();
    -
    2054 if (special_sign) special_sign->invalidate();
    -
    2055 }
    -
    2056 else if (negative_sign && negative_sign->match(text, interval.end, end, flags)) {
    -
    2057 interval.end = negative_sign->interval.end;
    -
    2058 if (positive_sign) positive_sign->invalidate();
    -
    2059 if (special_sign) special_sign->invalidate();
    -
    2060 }
    -
    2061 else if (special_sign && special_sign->match(text, interval.end, end, flags)) {
    -
    2062 interval.end = special_sign->interval.end;
    -
    2063 if (positive_sign) positive_sign->invalidate();
    -
    2064 if (negative_sign) negative_sign->invalidate();
    -
    2065 }
    -
    2066 else {
    -
    2067 if (positive_sign) positive_sign->invalidate();
    -
    2068 if (negative_sign) negative_sign->invalidate();
    -
    2069 if (special_sign) special_sign->invalidate();
    -
    2070 }
    -
    2071
    -
    2072 if (integer->match(text, interval.end, end, flags))
    -
    2073 interval.end = integer->interval.end;
    -
    2074
    -
    2075 if (decimal_separator->match(text, interval.end, end, flags) &&
    -
    2076 decimal->match(text, decimal_separator->interval.end, end, flags))
    -
    2077 interval.end = decimal->interval.end;
    +
    1760 if (separator->match(text, interval.end, end, flags))
    +
    1761 interval.end = separator->interval.end;
    +
    1762 else
    +
    1763 goto end;
    +
    1764
    +
    1765 for (; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    1766
    +
    1767 if (guest->match(text, interval.end, end, flags))
    +
    1768 interval.end = guest->interval.end;
    +
    1769 else
    +
    1770 goto end;
    +
    1771
    +
    1772 interval.start = start;
    +
    1773 return true;
    +
    1774
    +
    1775 end:
    +
    1776 home->invalidate();
    +
    1777 separator->invalidate();
    +
    1778 guest->invalidate();
    +
    1779 interval.start = (interval.end = start) + 1;
    +
    1780 return false;
    +
    1781 }
    +
    1782
    +
    1783 virtual void invalidate()
    +
    1784 {
    +
    1785 home->invalidate();
    +
    1786 separator->invalidate();
    +
    1787 guest->invalidate();
    + +
    1789 }
    +
    1790
    +
    1791 public:
    +
    1792 std::shared_ptr<basic_parser<T>> home;
    +
    1793 std::shared_ptr<basic_parser<T>> separator;
    +
    1794 std::shared_ptr<basic_parser<T>> guest;
    +
    1795
    +
    1796 protected:
    +
    1797 std::shared_ptr<basic_parser<T>> m_space;
    +
    1798 };
    +
    1799
    +
    1800 using score = basic_score<char>;
    + +
    1802#ifdef _UNICODE
    +
    1803 using tscore = wscore;
    +
    1804#else
    +
    1805 using tscore = score;
    +
    1806#endif
    + +
    1808
    +
    1812 template <class T>
    + +
    1814 {
    +
    1815 public:
    + +
    1817 _In_ const std::shared_ptr<basic_parser<T>>& _positive_sign,
    +
    1818 _In_ const std::shared_ptr<basic_parser<T>>& _negative_sign,
    +
    1819 _In_ const std::shared_ptr<basic_parser<T>>& _special_sign,
    +
    1820 _In_ const std::shared_ptr<basic_parser<T>>& _number,
    +
    1821 _In_ const std::locale& locale = std::locale()) :
    +
    1822 basic_parser<T>(locale),
    +
    1823 positive_sign(_positive_sign),
    +
    1824 negative_sign(_negative_sign),
    +
    1825 special_sign(_special_sign),
    +
    1826 number(_number)
    +
    1827 {}
    +
    1828
    +
    1829 virtual bool match(
    +
    1830 _In_reads_or_z_(end) const T* text,
    +
    1831 _In_ size_t start = 0,
    +
    1832 _In_ size_t end = (size_t)-1,
    +
    1833 _In_ int flags = match_default)
    +
    1834 {
    +
    1835 assert(text || start >= end);
    +
    1836 interval.end = start;
    +
    1837 if (positive_sign && positive_sign->match(text, interval.end, end, flags)) {
    +
    1838 interval.end = positive_sign->interval.end;
    +
    1839 if (negative_sign) negative_sign->invalidate();
    +
    1840 if (special_sign) special_sign->invalidate();
    +
    1841 }
    +
    1842 else if (negative_sign && negative_sign->match(text, interval.end, end, flags)) {
    +
    1843 interval.end = negative_sign->interval.end;
    +
    1844 if (positive_sign) positive_sign->invalidate();
    +
    1845 if (special_sign) special_sign->invalidate();
    +
    1846 }
    +
    1847 else if (special_sign && special_sign->match(text, interval.end, end, flags)) {
    +
    1848 interval.end = special_sign->interval.end;
    +
    1849 if (positive_sign) positive_sign->invalidate();
    +
    1850 if (negative_sign) negative_sign->invalidate();
    +
    1851 }
    +
    1852 else {
    +
    1853 if (positive_sign) positive_sign->invalidate();
    +
    1854 if (negative_sign) negative_sign->invalidate();
    +
    1855 if (special_sign) special_sign->invalidate();
    +
    1856 }
    +
    1857 if (number->match(text, interval.end, end, flags)) {
    +
    1858 interval.start = start;
    +
    1859 interval.end = number->interval.end;
    +
    1860 return true;
    +
    1861 }
    +
    1862 if (positive_sign) positive_sign->invalidate();
    +
    1863 if (negative_sign) negative_sign->invalidate();
    +
    1864 if (special_sign) special_sign->invalidate();
    +
    1865 number->invalidate();
    +
    1866 interval.start = (interval.end = start) + 1;
    +
    1867 return false;
    +
    1868 }
    +
    1869
    +
    1870 virtual void invalidate()
    +
    1871 {
    +
    1872 if (positive_sign) positive_sign->invalidate();
    +
    1873 if (negative_sign) negative_sign->invalidate();
    +
    1874 if (special_sign) special_sign->invalidate();
    +
    1875 number->invalidate();
    + +
    1877 }
    +
    1878
    +
    1879 public:
    +
    1880 std::shared_ptr<basic_parser<T>> positive_sign;
    +
    1881 std::shared_ptr<basic_parser<T>> negative_sign;
    +
    1882 std::shared_ptr<basic_parser<T>> special_sign;
    +
    1883 std::shared_ptr<basic_parser<T>> number;
    +
    1884 };
    +
    1885
    + + +
    1888#ifdef _UNICODE
    + +
    1890#else
    + +
    1892#endif
    + +
    1894
    +
    1898 template <class T>
    + +
    1900 {
    +
    1901 public:
    + +
    1903 _In_ const std::shared_ptr<basic_parser<T>>& _positive_sign,
    +
    1904 _In_ const std::shared_ptr<basic_parser<T>>& _negative_sign,
    +
    1905 _In_ const std::shared_ptr<basic_parser<T>>& _special_sign,
    +
    1906 _In_ const std::shared_ptr<basic_parser<T>>& _integer,
    +
    1907 _In_ const std::shared_ptr<basic_parser<T>>& space,
    +
    1908 _In_ const std::shared_ptr<basic_parser<T>>& _fraction,
    +
    1909 _In_ const std::locale& locale = std::locale()) :
    +
    1910 basic_parser<T>(locale),
    +
    1911 positive_sign(_positive_sign),
    +
    1912 negative_sign(_negative_sign),
    +
    1913 special_sign(_special_sign),
    +
    1914 integer(_integer),
    +
    1915 fraction(_fraction),
    +
    1916 m_space(space)
    +
    1917 {}
    +
    1918
    +
    1919 virtual bool match(
    +
    1920 _In_reads_or_z_(end) const T* text,
    +
    1921 _In_ size_t start = 0,
    +
    1922 _In_ size_t end = (size_t)-1,
    +
    1923 _In_ int flags = match_default)
    +
    1924 {
    +
    1925 assert(text || start >= end);
    +
    1926 interval.end = start;
    +
    1927
    +
    1928 if (positive_sign && positive_sign->match(text, interval.end, end, flags)) {
    +
    1929 interval.end = positive_sign->interval.end;
    +
    1930 if (negative_sign) negative_sign->invalidate();
    +
    1931 if (special_sign) special_sign->invalidate();
    +
    1932 }
    +
    1933 else if (negative_sign && negative_sign->match(text, interval.end, end, flags)) {
    +
    1934 interval.end = negative_sign->interval.end;
    +
    1935 if (positive_sign) positive_sign->invalidate();
    +
    1936 if (special_sign) special_sign->invalidate();
    +
    1937 }
    +
    1938 else if (special_sign && special_sign->match(text, interval.end, end, flags)) {
    +
    1939 interval.end = special_sign->interval.end;
    +
    1940 if (positive_sign) positive_sign->invalidate();
    +
    1941 if (negative_sign) negative_sign->invalidate();
    +
    1942 }
    +
    1943 else {
    +
    1944 if (positive_sign) positive_sign->invalidate();
    +
    1945 if (negative_sign) negative_sign->invalidate();
    +
    1946 if (special_sign) special_sign->invalidate();
    +
    1947 }
    +
    1948
    +
    1949 // Check for <integer> <fraction>
    +
    1950 const int space_match_flags = flags & ~match_multiline; // Spaces in fractions must never be broken in new line.
    +
    1951 if (integer->match(text, interval.end, end, flags) &&
    +
    1952 m_space->match(text, integer->interval.end, end, space_match_flags))
    +
    1953 {
    +
    1954 for (interval.end = m_space->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    1955 if (fraction->match(text, interval.end, end, flags)) {
    +
    1956 interval.start = start;
    + +
    1958 return true;
    +
    1959 }
    +
    1960 fraction->invalidate();
    +
    1961 interval.start = start;
    +
    1962 interval.end = integer->interval.end;
    +
    1963 return true;
    +
    1964 }
    +
    1965
    +
    1966 // Check for <fraction>
    +
    1967 if (fraction->match(text, interval.end, end, flags)) {
    +
    1968 integer->invalidate();
    +
    1969 interval.start = start;
    + +
    1971 return true;
    +
    1972 }
    +
    1973
    +
    1974 // Check for <integer>
    +
    1975 if (integer->match(text, interval.end, end, flags)) {
    +
    1976 fraction->invalidate();
    +
    1977 interval.start = start;
    +
    1978 interval.end = integer->interval.end;
    +
    1979 return true;
    +
    1980 }
    +
    1981
    +
    1982 if (positive_sign) positive_sign->invalidate();
    +
    1983 if (negative_sign) negative_sign->invalidate();
    +
    1984 if (special_sign) special_sign->invalidate();
    +
    1985 integer->invalidate();
    +
    1986 fraction->invalidate();
    +
    1987 interval.start = (interval.end = start) + 1;
    +
    1988 return false;
    +
    1989 }
    +
    1990
    +
    1991 virtual void invalidate()
    +
    1992 {
    +
    1993 if (positive_sign) positive_sign->invalidate();
    +
    1994 if (negative_sign) negative_sign->invalidate();
    +
    1995 if (special_sign) special_sign->invalidate();
    +
    1996 integer->invalidate();
    +
    1997 fraction->invalidate();
    + +
    1999 }
    +
    2000
    +
    2001 public:
    +
    2002 std::shared_ptr<basic_parser<T>> positive_sign;
    +
    2003 std::shared_ptr<basic_parser<T>> negative_sign;
    +
    2004 std::shared_ptr<basic_parser<T>> special_sign;
    +
    2005 std::shared_ptr<basic_parser<T>> integer;
    +
    2006 std::shared_ptr<basic_parser<T>> fraction;
    +
    2007
    +
    2008 protected:
    +
    2009 std::shared_ptr<basic_parser<T>> m_space;
    +
    2010 };
    +
    2011
    + + +
    2014#ifdef _UNICODE
    + +
    2016#else
    + +
    2018#endif
    + +
    2020
    +
    2024 template <class T>
    + +
    2026 {
    +
    2027 public:
    + +
    2029 _In_ const std::shared_ptr<basic_parser<T>>& _positive_sign,
    +
    2030 _In_ const std::shared_ptr<basic_parser<T>>& _negative_sign,
    +
    2031 _In_ const std::shared_ptr<basic_parser<T>>& _special_sign,
    +
    2032 _In_ const std::shared_ptr<basic_integer<T>>& _integer,
    +
    2033 _In_ const std::shared_ptr<basic_parser<T>>& _decimal_separator,
    +
    2034 _In_ const std::shared_ptr<basic_integer<T>>& _decimal,
    +
    2035 _In_ const std::shared_ptr<basic_parser<T>>& _exponent_symbol,
    +
    2036 _In_ const std::shared_ptr<basic_parser<T>>& _positive_exp_sign,
    +
    2037 _In_ const std::shared_ptr<basic_parser<T>>& _negative_exp_sign,
    +
    2038 _In_ const std::shared_ptr<basic_integer<T>>& _exponent,
    +
    2039 _In_ const std::locale& locale = std::locale()) :
    +
    2040 basic_parser<T>(locale),
    +
    2041 positive_sign(_positive_sign),
    +
    2042 negative_sign(_negative_sign),
    +
    2043 special_sign(_special_sign),
    +
    2044 integer(_integer),
    +
    2045 decimal_separator(_decimal_separator),
    +
    2046 decimal(_decimal),
    +
    2047 exponent_symbol(_exponent_symbol),
    +
    2048 positive_exp_sign(_positive_exp_sign),
    +
    2049 negative_exp_sign(_negative_exp_sign),
    +
    2050 exponent(_exponent),
    +
    2051 value(std::numeric_limits<double>::quiet_NaN())
    +
    2052 {}
    +
    2053
    +
    2054 virtual bool match(
    +
    2055 _In_reads_or_z_(end) const T* text,
    +
    2056 _In_ size_t start = 0,
    +
    2057 _In_ size_t end = (size_t)-1,
    +
    2058 _In_ int flags = match_default)
    +
    2059 {
    +
    2060 assert(text || start >= end);
    +
    2061 interval.end = start;
    +
    2062
    +
    2063 if (positive_sign && positive_sign->match(text, interval.end, end, flags)) {
    +
    2064 interval.end = positive_sign->interval.end;
    +
    2065 if (negative_sign) negative_sign->invalidate();
    +
    2066 if (special_sign) special_sign->invalidate();
    +
    2067 }
    +
    2068 else if (negative_sign && negative_sign->match(text, interval.end, end, flags)) {
    +
    2069 interval.end = negative_sign->interval.end;
    +
    2070 if (positive_sign) positive_sign->invalidate();
    +
    2071 if (special_sign) special_sign->invalidate();
    +
    2072 }
    +
    2073 else if (special_sign && special_sign->match(text, interval.end, end, flags)) {
    +
    2074 interval.end = special_sign->interval.end;
    +
    2075 if (positive_sign) positive_sign->invalidate();
    +
    2076 if (negative_sign) negative_sign->invalidate();
    +
    2077 }
    2078 else {
    -
    2079 decimal_separator->invalidate();
    -
    2080 decimal->invalidate();
    -
    2081 }
    -
    2082
    -
    2083 if (!integer->interval.empty() &&
    -
    2084 decimal->interval.empty())
    -
    2085 {
    -
    2086 // No integer part, no decimal part.
    -
    2087 if (positive_sign) positive_sign->invalidate();
    -
    2088 if (negative_sign) negative_sign->invalidate();
    -
    2089 if (special_sign) special_sign->invalidate();
    -
    2090 integer->invalidate();
    -
    2091 decimal_separator->invalidate();
    +
    2079 if (positive_sign) positive_sign->invalidate();
    +
    2080 if (negative_sign) negative_sign->invalidate();
    +
    2081 if (special_sign) special_sign->invalidate();
    +
    2082 }
    +
    2083
    +
    2084 if (integer->match(text, interval.end, end, flags))
    +
    2085 interval.end = integer->interval.end;
    +
    2086
    +
    2087 if (decimal_separator->match(text, interval.end, end, flags) &&
    +
    2088 decimal->match(text, decimal_separator->interval.end, end, flags))
    +
    2089 interval.end = decimal->interval.end;
    +
    2090 else {
    +
    2091 decimal_separator->invalidate();
    2092 decimal->invalidate();
    -
    2093 if (exponent_symbol) exponent_symbol->invalidate();
    -
    2094 if (positive_exp_sign) positive_exp_sign->invalidate();
    -
    2095 if (negative_exp_sign) negative_exp_sign->invalidate();
    -
    2096 if (exponent) exponent->invalidate();
    -
    2097 interval.start = (interval.end = start) + 1;
    -
    2098 return false;
    -
    2099 }
    -
    2100
    -
    2101 if (exponent_symbol && exponent_symbol->match(text, interval.end, end, flags) &&
    -
    2102 (positive_exp_sign && positive_exp_sign->match(text, exponent_symbol->interval.end, end, flags) &&
    -
    2103 exponent && exponent->match(text, positive_exp_sign->interval.end, end, flags) ||
    -
    2104 exponent && exponent->match(text, exponent_symbol->interval.end, end, flags)))
    -
    2105 {
    -
    2106 interval.end = exponent->interval.end;
    -
    2107 if (negative_exp_sign) negative_exp_sign->invalidate();
    -
    2108 }
    -
    2109 else if (exponent_symbol && exponent_symbol->match(text, interval.end, end, flags) &&
    -
    2110 negative_exp_sign && negative_exp_sign->match(text, exponent_symbol->interval.end, end, flags) &&
    -
    2111 exponent && exponent->match(text, negative_exp_sign->interval.end, end, flags))
    -
    2112 {
    -
    2113 interval.end = exponent->interval.end;
    -
    2114 if (positive_exp_sign) positive_exp_sign->invalidate();
    -
    2115 }
    -
    2116 else {
    -
    2117 if (exponent_symbol) exponent_symbol->invalidate();
    -
    2118 if (positive_exp_sign) positive_exp_sign->invalidate();
    -
    2119 if (negative_exp_sign) negative_exp_sign->invalidate();
    -
    2120 if (exponent) exponent->invalidate();
    -
    2121 }
    -
    2122
    -
    2123 value = (double)integer->value;
    -
    2124 if (decimal->interval)
    -
    2125 value += (double)decimal->value * pow(10.0, -(double)decimal->interval.size());
    -
    2126 if (negative_sign && negative_sign->interval)
    -
    2127 value = -value;
    -
    2128 if (exponent && exponent->interval) {
    -
    2129 double e = (double)exponent->value;
    -
    2130 if (negative_exp_sign && negative_exp_sign->interval)
    -
    2131 e = -e;
    -
    2132 value *= pow(10.0, e);
    +
    2093 }
    +
    2094
    +
    2095 if (!integer->interval.empty() &&
    +
    2096 decimal->interval.empty())
    +
    2097 {
    +
    2098 // No integer part, no decimal part.
    +
    2099 if (positive_sign) positive_sign->invalidate();
    +
    2100 if (negative_sign) negative_sign->invalidate();
    +
    2101 if (special_sign) special_sign->invalidate();
    +
    2102 integer->invalidate();
    +
    2103 decimal_separator->invalidate();
    +
    2104 decimal->invalidate();
    +
    2105 if (exponent_symbol) exponent_symbol->invalidate();
    +
    2106 if (positive_exp_sign) positive_exp_sign->invalidate();
    +
    2107 if (negative_exp_sign) negative_exp_sign->invalidate();
    +
    2108 if (exponent) exponent->invalidate();
    +
    2109 interval.start = (interval.end = start) + 1;
    +
    2110 return false;
    +
    2111 }
    +
    2112
    +
    2113 if (exponent_symbol && exponent_symbol->match(text, interval.end, end, flags) &&
    +
    2114 (positive_exp_sign && positive_exp_sign->match(text, exponent_symbol->interval.end, end, flags) &&
    +
    2115 exponent && exponent->match(text, positive_exp_sign->interval.end, end, flags) ||
    +
    2116 exponent && exponent->match(text, exponent_symbol->interval.end, end, flags)))
    +
    2117 {
    +
    2118 interval.end = exponent->interval.end;
    +
    2119 if (negative_exp_sign) negative_exp_sign->invalidate();
    +
    2120 }
    +
    2121 else if (exponent_symbol && exponent_symbol->match(text, interval.end, end, flags) &&
    +
    2122 negative_exp_sign && negative_exp_sign->match(text, exponent_symbol->interval.end, end, flags) &&
    +
    2123 exponent && exponent->match(text, negative_exp_sign->interval.end, end, flags))
    +
    2124 {
    +
    2125 interval.end = exponent->interval.end;
    +
    2126 if (positive_exp_sign) positive_exp_sign->invalidate();
    +
    2127 }
    +
    2128 else {
    +
    2129 if (exponent_symbol) exponent_symbol->invalidate();
    +
    2130 if (positive_exp_sign) positive_exp_sign->invalidate();
    +
    2131 if (negative_exp_sign) negative_exp_sign->invalidate();
    +
    2132 if (exponent) exponent->invalidate();
    2133 }
    2134
    -
    2135 interval.start = start;
    -
    2136 return true;
    -
    2137 }
    -
    2138
    -
    2139 virtual void invalidate()
    -
    2140 {
    -
    2141 if (positive_sign) positive_sign->invalidate();
    -
    2142 if (negative_sign) negative_sign->invalidate();
    -
    2143 if (special_sign) special_sign->invalidate();
    -
    2144 integer->invalidate();
    -
    2145 decimal_separator->invalidate();
    -
    2146 decimal->invalidate();
    -
    2147 if (exponent_symbol) exponent_symbol->invalidate();
    -
    2148 if (positive_exp_sign) positive_exp_sign->invalidate();
    -
    2149 if (negative_exp_sign) negative_exp_sign->invalidate();
    -
    2150 if (exponent) exponent->invalidate();
    -
    2151 value = std::numeric_limits<double>::quiet_NaN();
    - -
    2153 }
    -
    2154
    -
    2155 public:
    -
    2156 std::shared_ptr<basic_tester<T>> positive_sign;
    -
    2157 std::shared_ptr<basic_tester<T>> negative_sign;
    -
    2158 std::shared_ptr<basic_tester<T>> special_sign;
    -
    2159 std::shared_ptr<basic_integer<T>> integer;
    -
    2160 std::shared_ptr<basic_tester<T>> decimal_separator;
    -
    2161 std::shared_ptr<basic_integer<T>> decimal;
    -
    2162 std::shared_ptr<basic_tester<T>> exponent_symbol;
    -
    2163 std::shared_ptr<basic_tester<T>> positive_exp_sign;
    -
    2164 std::shared_ptr<basic_tester<T>> negative_exp_sign;
    -
    2165 std::shared_ptr<basic_integer<T>> exponent;
    -
    2166 double value;
    -
    2167 };
    -
    2168
    - - -
    2171#ifdef _UNICODE
    - -
    2173#else
    - -
    2175#endif
    - -
    2177
    -
    2181 template <class T>
    - -
    2183 {
    -
    2184 public:
    - -
    2186 _In_ const std::shared_ptr<basic_tester<T>>& _positive_sign,
    -
    2187 _In_ const std::shared_ptr<basic_tester<T>>& _negative_sign,
    -
    2188 _In_ const std::shared_ptr<basic_tester<T>>& _special_sign,
    -
    2189 _In_ const std::shared_ptr<basic_tester<T>>& _currency,
    -
    2190 _In_ const std::shared_ptr<basic_tester<T>>& _integer,
    -
    2191 _In_ const std::shared_ptr<basic_tester<T>>& _decimal_separator,
    -
    2192 _In_ const std::shared_ptr<basic_tester<T>>& _decimal,
    -
    2193 _In_ const std::locale& locale = std::locale()) :
    -
    2194 basic_tester<T>(locale),
    -
    2195 positive_sign(_positive_sign),
    -
    2196 negative_sign(_negative_sign),
    -
    2197 special_sign(_special_sign),
    -
    2198 currency(_currency),
    -
    2199 integer(_integer),
    -
    2200 decimal_separator(_decimal_separator),
    -
    2201 decimal(_decimal)
    -
    2202 {}
    -
    2203
    -
    2204 virtual bool match(
    -
    2205 _In_reads_or_z_(end) const T* text,
    -
    2206 _In_ size_t start = 0,
    -
    2207 _In_ size_t end = (size_t)-1,
    -
    2208 _In_ int flags = match_default)
    -
    2209 {
    -
    2210 assert(text || start >= end);
    -
    2211 interval.end = start;
    -
    2212
    -
    2213 if (positive_sign->match(text, interval.end, end, flags)) {
    -
    2214 interval.end = positive_sign->interval.end;
    -
    2215 if (negative_sign) negative_sign->invalidate();
    -
    2216 if (special_sign) special_sign->invalidate();
    -
    2217 }
    -
    2218 else if (negative_sign->match(text, interval.end, end, flags)) {
    -
    2219 interval.end = negative_sign->interval.end;
    -
    2220 if (positive_sign) positive_sign->invalidate();
    -
    2221 if (special_sign) special_sign->invalidate();
    -
    2222 }
    -
    2223 else if (special_sign->match(text, interval.end, end, flags)) {
    -
    2224 interval.end = special_sign->interval.end;
    -
    2225 if (positive_sign) positive_sign->invalidate();
    -
    2226 if (negative_sign) negative_sign->invalidate();
    -
    2227 }
    -
    2228 else {
    -
    2229 if (positive_sign) positive_sign->invalidate();
    -
    2230 if (negative_sign) negative_sign->invalidate();
    -
    2231 if (special_sign) special_sign->invalidate();
    -
    2232 }
    -
    2233
    -
    2234 if (currency->match(text, interval.end, end, flags))
    -
    2235 interval.end = currency->interval.end;
    -
    2236 else {
    -
    2237 if (positive_sign) positive_sign->invalidate();
    -
    2238 if (negative_sign) negative_sign->invalidate();
    -
    2239 if (special_sign) special_sign->invalidate();
    -
    2240 integer->invalidate();
    -
    2241 decimal_separator->invalidate();
    -
    2242 decimal->invalidate();
    -
    2243 interval.start = (interval.end = start) + 1;
    -
    2244 return false;
    -
    2245 }
    -
    2246
    -
    2247 if (integer->match(text, interval.end, end, flags))
    -
    2248 interval.end = integer->interval.end;
    -
    2249 if (decimal_separator->match(text, interval.end, end, flags) &&
    -
    2250 decimal->match(text, decimal_separator->interval.end, end, flags))
    -
    2251 interval.end = decimal->interval.end;
    -
    2252 else {
    -
    2253 decimal_separator->invalidate();
    -
    2254 decimal->invalidate();
    -
    2255 }
    -
    2256
    -
    2257 if (integer->interval.empty() &&
    -
    2258 decimal->interval.empty())
    -
    2259 {
    -
    2260 // No integer part, no decimal part.
    -
    2261 if (positive_sign) positive_sign->invalidate();
    -
    2262 if (negative_sign) negative_sign->invalidate();
    -
    2263 if (special_sign) special_sign->invalidate();
    -
    2264 currency->invalidate();
    -
    2265 integer->invalidate();
    -
    2266 decimal_separator->invalidate();
    -
    2267 decimal->invalidate();
    -
    2268 interval.start = (interval.end = start) + 1;
    -
    2269 return false;
    -
    2270 }
    -
    2271
    -
    2272 interval.start = start;
    -
    2273 return true;
    -
    2274 }
    -
    2275
    -
    2276 virtual void invalidate()
    -
    2277 {
    -
    2278 if (positive_sign) positive_sign->invalidate();
    -
    2279 if (negative_sign) negative_sign->invalidate();
    -
    2280 if (special_sign) special_sign->invalidate();
    -
    2281 currency->invalidate();
    -
    2282 integer->invalidate();
    -
    2283 decimal_separator->invalidate();
    -
    2284 decimal->invalidate();
    - +
    2135 value = (double)integer->value;
    +
    2136 if (decimal->interval)
    +
    2137 value += (double)decimal->value * pow(10.0, -(double)decimal->interval.size());
    +
    2138 if (negative_sign && negative_sign->interval)
    +
    2139 value = -value;
    +
    2140 if (exponent && exponent->interval) {
    +
    2141 double e = (double)exponent->value;
    +
    2142 if (negative_exp_sign && negative_exp_sign->interval)
    +
    2143 e = -e;
    +
    2144 value *= pow(10.0, e);
    +
    2145 }
    +
    2146
    +
    2147 interval.start = start;
    +
    2148 return true;
    +
    2149 }
    +
    2150
    +
    2151 virtual void invalidate()
    +
    2152 {
    +
    2153 if (positive_sign) positive_sign->invalidate();
    +
    2154 if (negative_sign) negative_sign->invalidate();
    +
    2155 if (special_sign) special_sign->invalidate();
    +
    2156 integer->invalidate();
    +
    2157 decimal_separator->invalidate();
    +
    2158 decimal->invalidate();
    +
    2159 if (exponent_symbol) exponent_symbol->invalidate();
    +
    2160 if (positive_exp_sign) positive_exp_sign->invalidate();
    +
    2161 if (negative_exp_sign) negative_exp_sign->invalidate();
    +
    2162 if (exponent) exponent->invalidate();
    +
    2163 value = std::numeric_limits<double>::quiet_NaN();
    + +
    2165 }
    +
    2166
    +
    2167 public:
    +
    2168 std::shared_ptr<basic_parser<T>> positive_sign;
    +
    2169 std::shared_ptr<basic_parser<T>> negative_sign;
    +
    2170 std::shared_ptr<basic_parser<T>> special_sign;
    +
    2171 std::shared_ptr<basic_integer<T>> integer;
    +
    2172 std::shared_ptr<basic_parser<T>> decimal_separator;
    +
    2173 std::shared_ptr<basic_integer<T>> decimal;
    +
    2174 std::shared_ptr<basic_parser<T>> exponent_symbol;
    +
    2175 std::shared_ptr<basic_parser<T>> positive_exp_sign;
    +
    2176 std::shared_ptr<basic_parser<T>> negative_exp_sign;
    +
    2177 std::shared_ptr<basic_integer<T>> exponent;
    +
    2178 double value;
    +
    2179 };
    +
    2180
    + + +
    2183#ifdef _UNICODE
    + +
    2185#else
    + +
    2187#endif
    + +
    2189
    +
    2193 template <class T>
    + +
    2195 {
    +
    2196 public:
    + +
    2198 _In_ const std::shared_ptr<basic_parser<T>>& _positive_sign,
    +
    2199 _In_ const std::shared_ptr<basic_parser<T>>& _negative_sign,
    +
    2200 _In_ const std::shared_ptr<basic_parser<T>>& _special_sign,
    +
    2201 _In_ const std::shared_ptr<basic_parser<T>>& _currency,
    +
    2202 _In_ const std::shared_ptr<basic_parser<T>>& _integer,
    +
    2203 _In_ const std::shared_ptr<basic_parser<T>>& _decimal_separator,
    +
    2204 _In_ const std::shared_ptr<basic_parser<T>>& _decimal,
    +
    2205 _In_ const std::locale& locale = std::locale()) :
    +
    2206 basic_parser<T>(locale),
    +
    2207 positive_sign(_positive_sign),
    +
    2208 negative_sign(_negative_sign),
    +
    2209 special_sign(_special_sign),
    +
    2210 currency(_currency),
    +
    2211 integer(_integer),
    +
    2212 decimal_separator(_decimal_separator),
    +
    2213 decimal(_decimal)
    +
    2214 {}
    +
    2215
    +
    2216 virtual bool match(
    +
    2217 _In_reads_or_z_(end) const T* text,
    +
    2218 _In_ size_t start = 0,
    +
    2219 _In_ size_t end = (size_t)-1,
    +
    2220 _In_ int flags = match_default)
    +
    2221 {
    +
    2222 assert(text || start >= end);
    +
    2223 interval.end = start;
    +
    2224
    +
    2225 if (positive_sign->match(text, interval.end, end, flags)) {
    +
    2226 interval.end = positive_sign->interval.end;
    +
    2227 if (negative_sign) negative_sign->invalidate();
    +
    2228 if (special_sign) special_sign->invalidate();
    +
    2229 }
    +
    2230 else if (negative_sign->match(text, interval.end, end, flags)) {
    +
    2231 interval.end = negative_sign->interval.end;
    +
    2232 if (positive_sign) positive_sign->invalidate();
    +
    2233 if (special_sign) special_sign->invalidate();
    +
    2234 }
    +
    2235 else if (special_sign->match(text, interval.end, end, flags)) {
    +
    2236 interval.end = special_sign->interval.end;
    +
    2237 if (positive_sign) positive_sign->invalidate();
    +
    2238 if (negative_sign) negative_sign->invalidate();
    +
    2239 }
    +
    2240 else {
    +
    2241 if (positive_sign) positive_sign->invalidate();
    +
    2242 if (negative_sign) negative_sign->invalidate();
    +
    2243 if (special_sign) special_sign->invalidate();
    +
    2244 }
    +
    2245
    +
    2246 if (currency->match(text, interval.end, end, flags))
    +
    2247 interval.end = currency->interval.end;
    +
    2248 else {
    +
    2249 if (positive_sign) positive_sign->invalidate();
    +
    2250 if (negative_sign) negative_sign->invalidate();
    +
    2251 if (special_sign) special_sign->invalidate();
    +
    2252 integer->invalidate();
    +
    2253 decimal_separator->invalidate();
    +
    2254 decimal->invalidate();
    +
    2255 interval.start = (interval.end = start) + 1;
    +
    2256 return false;
    +
    2257 }
    +
    2258
    +
    2259 if (integer->match(text, interval.end, end, flags))
    +
    2260 interval.end = integer->interval.end;
    +
    2261 if (decimal_separator->match(text, interval.end, end, flags) &&
    +
    2262 decimal->match(text, decimal_separator->interval.end, end, flags))
    +
    2263 interval.end = decimal->interval.end;
    +
    2264 else {
    +
    2265 decimal_separator->invalidate();
    +
    2266 decimal->invalidate();
    +
    2267 }
    +
    2268
    +
    2269 if (integer->interval.empty() &&
    +
    2270 decimal->interval.empty())
    +
    2271 {
    +
    2272 // No integer part, no decimal part.
    +
    2273 if (positive_sign) positive_sign->invalidate();
    +
    2274 if (negative_sign) negative_sign->invalidate();
    +
    2275 if (special_sign) special_sign->invalidate();
    +
    2276 currency->invalidate();
    +
    2277 integer->invalidate();
    +
    2278 decimal_separator->invalidate();
    +
    2279 decimal->invalidate();
    +
    2280 interval.start = (interval.end = start) + 1;
    +
    2281 return false;
    +
    2282 }
    +
    2283
    +
    2284 interval.start = start;
    +
    2285 return true;
    2286 }
    2287
    -
    2288 public:
    -
    2289 std::shared_ptr<basic_tester<T>> positive_sign;
    -
    2290 std::shared_ptr<basic_tester<T>> negative_sign;
    -
    2291 std::shared_ptr<basic_tester<T>> special_sign;
    -
    2292 std::shared_ptr<basic_tester<T>> currency;
    -
    2293 std::shared_ptr<basic_tester<T>> integer;
    -
    2294 std::shared_ptr<basic_tester<T>> decimal_separator;
    -
    2295 std::shared_ptr<basic_tester<T>> decimal;
    -
    2296 };
    -
    2297
    - - -
    2300#ifdef _UNICODE
    - -
    2302#else
    - -
    2304#endif
    - -
    2306
    -
    2310 template <class T>
    - -
    2312 {
    -
    2313 public:
    - -
    2315 _In_ const std::shared_ptr<basic_tester<T>>& digit_0,
    -
    2316 _In_ const std::shared_ptr<basic_tester<T>>& digit_1,
    -
    2317 _In_ const std::shared_ptr<basic_tester<T>>& digit_2,
    -
    2318 _In_ const std::shared_ptr<basic_tester<T>>& digit_3,
    -
    2319 _In_ const std::shared_ptr<basic_tester<T>>& digit_4,
    -
    2320 _In_ const std::shared_ptr<basic_tester<T>>& digit_5,
    -
    2321 _In_ const std::shared_ptr<basic_tester<T>>& digit_6,
    -
    2322 _In_ const std::shared_ptr<basic_tester<T>>& digit_7,
    -
    2323 _In_ const std::shared_ptr<basic_tester<T>>& digit_8,
    -
    2324 _In_ const std::shared_ptr<basic_tester<T>>& digit_9,
    -
    2325 _In_ const std::shared_ptr<basic_tester<T>>& separator,
    -
    2326 _In_ const std::locale& locale = std::locale()) :
    -
    2327 basic_tester<T>(locale),
    -
    2328 m_digit_0(digit_0),
    -
    2329 m_digit_1(digit_1),
    -
    2330 m_digit_2(digit_2),
    -
    2331 m_digit_3(digit_3),
    -
    2332 m_digit_4(digit_4),
    -
    2333 m_digit_5(digit_5),
    -
    2334 m_digit_6(digit_6),
    -
    2335 m_digit_7(digit_7),
    -
    2336 m_digit_8(digit_8),
    -
    2337 m_digit_9(digit_9),
    -
    2338 m_separator(separator)
    -
    2339 {
    -
    2340 value.s_addr = 0;
    -
    2341 }
    -
    2342
    -
    2343 virtual bool match(
    -
    2344 _In_reads_or_z_(end) const T* text,
    -
    2345 _In_ size_t start = 0,
    -
    2346 _In_ size_t end = (size_t)-1,
    -
    2347 _In_ int flags = match_default)
    -
    2348 {
    -
    2349 assert(text || start >= end);
    -
    2350 interval.end = start;
    -
    2351 value.s_addr = 0;
    -
    2352
    -
    2353 size_t i;
    -
    2354 for (i = 0; i < 4; i++) {
    -
    2355 if (i) {
    -
    2356 if (m_separator->match(text, interval.end, end, flags))
    -
    2357 interval.end = m_separator->interval.end;
    -
    2358 else
    -
    2359 goto error;
    -
    2360 }
    -
    2361
    -
    2362 components[i].start = interval.end;
    -
    2363 bool is_empty = true;
    -
    2364 size_t x;
    -
    2365 for (x = 0; interval.end < end && text[interval.end];) {
    -
    2366 size_t dig, digit_end;
    -
    2367 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; digit_end = m_digit_0->interval.end; }
    -
    2368 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; digit_end = m_digit_1->interval.end; }
    -
    2369 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; digit_end = m_digit_2->interval.end; }
    -
    2370 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; digit_end = m_digit_3->interval.end; }
    -
    2371 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; digit_end = m_digit_4->interval.end; }
    -
    2372 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; digit_end = m_digit_5->interval.end; }
    -
    2373 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; digit_end = m_digit_6->interval.end; }
    -
    2374 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; digit_end = m_digit_7->interval.end; }
    -
    2375 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; digit_end = m_digit_8->interval.end; }
    -
    2376 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; digit_end = m_digit_9->interval.end; }
    -
    2377 else break;
    -
    2378 size_t x_n = x * 10 + dig;
    -
    2379 if (x_n <= 255) {
    -
    2380 x = x_n;
    -
    2381 interval.end = digit_end;
    -
    2382 is_empty = false;
    -
    2383 }
    -
    2384 else
    -
    2385 break;
    -
    2386 }
    -
    2387 if (is_empty)
    -
    2388 goto error;
    -
    2389 components[i].end = interval.end;
    -
    2390 value.s_addr = (value.s_addr << 8) | (uint8_t)x;
    -
    2391 }
    -
    2392 if (i < 4)
    -
    2393 goto error;
    -
    2394
    -
    2395 interval.start = start;
    -
    2396 return true;
    -
    2397
    -
    2398 error:
    -
    2399 components[0].start = 1;
    -
    2400 components[0].end = 0;
    -
    2401 components[1].start = 1;
    -
    2402 components[1].end = 0;
    -
    2403 components[2].start = 1;
    -
    2404 components[2].end = 0;
    -
    2405 components[3].start = 1;
    -
    2406 components[3].end = 0;
    -
    2407 value = 0;
    -
    2408 interval.start = (interval.end = start) + 1;
    -
    2409 return false;
    -
    2410 }
    -
    2411
    -
    2412 virtual void invalidate()
    -
    2413 {
    -
    2414 components[0].start = 1;
    -
    2415 components[0].end = 0;
    -
    2416 components[1].start = 1;
    -
    2417 components[1].end = 0;
    -
    2418 components[2].start = 1;
    -
    2419 components[2].end = 0;
    -
    2420 components[3].start = 1;
    -
    2421 components[3].end = 0;
    -
    2422 value = 0;
    - -
    2424 }
    -
    2425
    -
    2426 public:
    - -
    2428 struct in_addr value;
    -
    2429
    -
    2430 protected:
    -
    2431 std::shared_ptr<basic_tester<T>>
    -
    2432 m_digit_0,
    -
    2433 m_digit_1,
    -
    2434 m_digit_2,
    -
    2435 m_digit_3,
    -
    2436 m_digit_4,
    -
    2437 m_digit_5,
    -
    2438 m_digit_6,
    -
    2439 m_digit_7,
    -
    2440 m_digit_8,
    -
    2441 m_digit_9;
    -
    2442 std::shared_ptr<basic_tester<T>> m_separator;
    -
    2443 };
    -
    2444
    - - -
    2447#ifdef _UNICODE
    - -
    2449#else
    - -
    2451#endif
    - -
    2453
    -
    2457 template <class T>
    - -
    2459 {
    -
    2460 public:
    -
    2461 basic_ipv6_scope_id_char(_In_ const std::locale& locale = std::locale()) : basic_tester<T>(locale)
    -
    2462 {}
    -
    2463
    -
    2464 virtual bool match(
    -
    2465 _In_reads_or_z_(end) const T* text,
    -
    2466 _In_ size_t start = 0,
    -
    2467 _In_ size_t end = (size_t)-1,
    -
    2468 _In_ int flags = match_default)
    -
    2469 {
    -
    2470 assert(text || start >= end);
    -
    2471 if (start < end && text[start]) {
    -
    2472 if (text[start] == '-' ||
    -
    2473 text[start] == '_' ||
    -
    2474 text[start] == ':' ||
    -
    2475 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    -
    2476 {
    -
    2477 interval.end = (interval.start = start) + 1;
    -
    2478 return true;
    -
    2479 }
    -
    2480 }
    -
    2481 interval.start = (interval.end = start) + 1;
    -
    2482 return false;
    -
    2483 }
    -
    2484 };
    -
    2485
    - - -
    2488#ifdef _UNICODE
    - -
    2490#else
    - -
    2492#endif
    -
    2493
    - -
    2498 {
    -
    2499 public:
    -
    2500 sgml_ipv6_scope_id_char(_In_ const std::locale& locale = std::locale()) : sgml_tester(locale)
    -
    2501 {}
    -
    2502
    -
    2503 virtual bool match(
    -
    2504 _In_reads_or_z_(end) const char* text,
    -
    2505 _In_ size_t start = 0,
    -
    2506 _In_ size_t end = (size_t)-1,
    -
    2507 _In_ int flags = match_default)
    -
    2508 {
    -
    2509 assert(text || start >= end);
    -
    2510 if (start < end && text[start]) {
    -
    2511 wchar_t buf[3];
    -
    2512 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    2513 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    2514 if ((chr[0] == L'-' ||
    -
    2515 chr[0] == L'_' ||
    -
    2516 chr[0] == L':') && chr[1] == 0 ||
    -
    2517 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    -
    2518 {
    -
    2519 interval.start = start;
    -
    2520 return true;
    -
    2521 }
    -
    2522 }
    -
    2523 interval.start = (interval.end = start) + 1;
    -
    2524 return false;
    -
    2525 }
    -
    2526 };
    -
    2527
    -
    2531 template <class T>
    - -
    2533 {
    -
    2534 public:
    - -
    2536 _In_ const std::shared_ptr<basic_tester<T>>& digit_0,
    -
    2537 _In_ const std::shared_ptr<basic_tester<T>>& digit_1,
    -
    2538 _In_ const std::shared_ptr<basic_tester<T>>& digit_2,
    -
    2539 _In_ const std::shared_ptr<basic_tester<T>>& digit_3,
    -
    2540 _In_ const std::shared_ptr<basic_tester<T>>& digit_4,
    -
    2541 _In_ const std::shared_ptr<basic_tester<T>>& digit_5,
    -
    2542 _In_ const std::shared_ptr<basic_tester<T>>& digit_6,
    -
    2543 _In_ const std::shared_ptr<basic_tester<T>>& digit_7,
    -
    2544 _In_ const std::shared_ptr<basic_tester<T>>& digit_8,
    -
    2545 _In_ const std::shared_ptr<basic_tester<T>>& digit_9,
    -
    2546 _In_ const std::shared_ptr<basic_tester<T>>& digit_10,
    -
    2547 _In_ const std::shared_ptr<basic_tester<T>>& digit_11,
    -
    2548 _In_ const std::shared_ptr<basic_tester<T>>& digit_12,
    -
    2549 _In_ const std::shared_ptr<basic_tester<T>>& digit_13,
    -
    2550 _In_ const std::shared_ptr<basic_tester<T>>& digit_14,
    -
    2551 _In_ const std::shared_ptr<basic_tester<T>>& digit_15,
    -
    2552 _In_ const std::shared_ptr<basic_tester<T>>& separator,
    -
    2553 _In_ const std::shared_ptr<basic_tester<T>>& scope_id_separator = nullptr,
    -
    2554 _In_ const std::shared_ptr<basic_tester<T>>& _scope_id = nullptr,
    -
    2555 _In_ const std::locale& locale = std::locale()) :
    -
    2556 basic_tester<T>(locale),
    -
    2557 m_digit_0(digit_0),
    -
    2558 m_digit_1(digit_1),
    -
    2559 m_digit_2(digit_2),
    -
    2560 m_digit_3(digit_3),
    -
    2561 m_digit_4(digit_4),
    -
    2562 m_digit_5(digit_5),
    -
    2563 m_digit_6(digit_6),
    -
    2564 m_digit_7(digit_7),
    -
    2565 m_digit_8(digit_8),
    -
    2566 m_digit_9(digit_9),
    -
    2567 m_digit_10(digit_10),
    -
    2568 m_digit_11(digit_11),
    -
    2569 m_digit_12(digit_12),
    -
    2570 m_digit_13(digit_13),
    -
    2571 m_digit_14(digit_14),
    -
    2572 m_digit_15(digit_15),
    -
    2573 m_separator(separator),
    -
    2574 m_scope_id_separator(scope_id_separator),
    -
    2575 scope_id(_scope_id)
    -
    2576 {
    -
    2577 memset(value, 0, sizeof(value));
    -
    2578 }
    -
    2579
    -
    2580 virtual bool match(
    -
    2581 _In_reads_or_z_(end) const T* text,
    -
    2582 _In_ size_t start = 0,
    -
    2583 _In_ size_t end = (size_t)-1,
    -
    2584 _In_ int flags = match_default)
    -
    2585 {
    -
    2586 assert(text || start >= end);
    -
    2587 interval.end = start;
    -
    2588 memset(value, 0, sizeof(value));
    +
    2288 virtual void invalidate()
    +
    2289 {
    +
    2290 if (positive_sign) positive_sign->invalidate();
    +
    2291 if (negative_sign) negative_sign->invalidate();
    +
    2292 if (special_sign) special_sign->invalidate();
    +
    2293 currency->invalidate();
    +
    2294 integer->invalidate();
    +
    2295 decimal_separator->invalidate();
    +
    2296 decimal->invalidate();
    + +
    2298 }
    +
    2299
    +
    2300 public:
    +
    2301 std::shared_ptr<basic_parser<T>> positive_sign;
    +
    2302 std::shared_ptr<basic_parser<T>> negative_sign;
    +
    2303 std::shared_ptr<basic_parser<T>> special_sign;
    +
    2304 std::shared_ptr<basic_parser<T>> currency;
    +
    2305 std::shared_ptr<basic_parser<T>> integer;
    +
    2306 std::shared_ptr<basic_parser<T>> decimal_separator;
    +
    2307 std::shared_ptr<basic_parser<T>> decimal;
    +
    2308 };
    +
    2309
    + + +
    2312#ifdef _UNICODE
    + +
    2314#else
    + +
    2316#endif
    + +
    2318
    +
    2322 template <class T>
    + +
    2324 {
    +
    2325 public:
    + +
    2327 _In_ const std::shared_ptr<basic_parser<T>>& digit_0,
    +
    2328 _In_ const std::shared_ptr<basic_parser<T>>& digit_1,
    +
    2329 _In_ const std::shared_ptr<basic_parser<T>>& digit_2,
    +
    2330 _In_ const std::shared_ptr<basic_parser<T>>& digit_3,
    +
    2331 _In_ const std::shared_ptr<basic_parser<T>>& digit_4,
    +
    2332 _In_ const std::shared_ptr<basic_parser<T>>& digit_5,
    +
    2333 _In_ const std::shared_ptr<basic_parser<T>>& digit_6,
    +
    2334 _In_ const std::shared_ptr<basic_parser<T>>& digit_7,
    +
    2335 _In_ const std::shared_ptr<basic_parser<T>>& digit_8,
    +
    2336 _In_ const std::shared_ptr<basic_parser<T>>& digit_9,
    +
    2337 _In_ const std::shared_ptr<basic_parser<T>>& separator,
    +
    2338 _In_ const std::locale& locale = std::locale()) :
    +
    2339 basic_parser<T>(locale),
    +
    2340 m_digit_0(digit_0),
    +
    2341 m_digit_1(digit_1),
    +
    2342 m_digit_2(digit_2),
    +
    2343 m_digit_3(digit_3),
    +
    2344 m_digit_4(digit_4),
    +
    2345 m_digit_5(digit_5),
    +
    2346 m_digit_6(digit_6),
    +
    2347 m_digit_7(digit_7),
    +
    2348 m_digit_8(digit_8),
    +
    2349 m_digit_9(digit_9),
    +
    2350 m_separator(separator)
    +
    2351 {
    +
    2352 value.s_addr = 0;
    +
    2353 }
    +
    2354
    +
    2355 virtual bool match(
    +
    2356 _In_reads_or_z_(end) const T* text,
    +
    2357 _In_ size_t start = 0,
    +
    2358 _In_ size_t end = (size_t)-1,
    +
    2359 _In_ int flags = match_default)
    +
    2360 {
    +
    2361 assert(text || start >= end);
    +
    2362 interval.end = start;
    +
    2363 value.s_addr = 0;
    +
    2364
    +
    2365 size_t i;
    +
    2366 for (i = 0; i < 4; i++) {
    +
    2367 if (i) {
    +
    2368 if (m_separator->match(text, interval.end, end, flags))
    +
    2369 interval.end = m_separator->interval.end;
    +
    2370 else
    +
    2371 goto error;
    +
    2372 }
    +
    2373
    +
    2374 components[i].start = interval.end;
    +
    2375 bool is_empty = true;
    +
    2376 size_t x;
    +
    2377 for (x = 0; interval.end < end && text[interval.end];) {
    +
    2378 size_t dig, digit_end;
    +
    2379 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; digit_end = m_digit_0->interval.end; }
    +
    2380 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; digit_end = m_digit_1->interval.end; }
    +
    2381 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; digit_end = m_digit_2->interval.end; }
    +
    2382 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; digit_end = m_digit_3->interval.end; }
    +
    2383 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; digit_end = m_digit_4->interval.end; }
    +
    2384 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; digit_end = m_digit_5->interval.end; }
    +
    2385 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; digit_end = m_digit_6->interval.end; }
    +
    2386 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; digit_end = m_digit_7->interval.end; }
    +
    2387 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; digit_end = m_digit_8->interval.end; }
    +
    2388 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; digit_end = m_digit_9->interval.end; }
    +
    2389 else break;
    +
    2390 size_t x_n = x * 10 + dig;
    +
    2391 if (x_n <= 255) {
    +
    2392 x = x_n;
    +
    2393 interval.end = digit_end;
    +
    2394 is_empty = false;
    +
    2395 }
    +
    2396 else
    +
    2397 break;
    +
    2398 }
    +
    2399 if (is_empty)
    +
    2400 goto error;
    +
    2401 components[i].end = interval.end;
    +
    2402 value.s_addr = (value.s_addr << 8) | (uint8_t)x;
    +
    2403 }
    +
    2404 if (i < 4)
    +
    2405 goto error;
    +
    2406
    +
    2407 interval.start = start;
    +
    2408 return true;
    +
    2409
    +
    2410 error:
    +
    2411 components[0].start = 1;
    +
    2412 components[0].end = 0;
    +
    2413 components[1].start = 1;
    +
    2414 components[1].end = 0;
    +
    2415 components[2].start = 1;
    +
    2416 components[2].end = 0;
    +
    2417 components[3].start = 1;
    +
    2418 components[3].end = 0;
    +
    2419 value = 0;
    +
    2420 interval.start = (interval.end = start) + 1;
    +
    2421 return false;
    +
    2422 }
    +
    2423
    +
    2424 virtual void invalidate()
    +
    2425 {
    +
    2426 components[0].start = 1;
    +
    2427 components[0].end = 0;
    +
    2428 components[1].start = 1;
    +
    2429 components[1].end = 0;
    +
    2430 components[2].start = 1;
    +
    2431 components[2].end = 0;
    +
    2432 components[3].start = 1;
    +
    2433 components[3].end = 0;
    +
    2434 value = 0;
    + +
    2436 }
    +
    2437
    +
    2438 public:
    + +
    2440 struct in_addr value;
    +
    2441
    +
    2442 protected:
    +
    2443 std::shared_ptr<basic_parser<T>>
    +
    2444 m_digit_0,
    +
    2445 m_digit_1,
    +
    2446 m_digit_2,
    +
    2447 m_digit_3,
    +
    2448 m_digit_4,
    +
    2449 m_digit_5,
    +
    2450 m_digit_6,
    +
    2451 m_digit_7,
    +
    2452 m_digit_8,
    +
    2453 m_digit_9;
    +
    2454 std::shared_ptr<basic_parser<T>> m_separator;
    +
    2455 };
    +
    2456
    + + +
    2459#ifdef _UNICODE
    + +
    2461#else
    + +
    2463#endif
    + +
    2465
    +
    2469 template <class T>
    + +
    2471 {
    +
    2472 public:
    +
    2473 basic_ipv6_scope_id_char(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
    +
    2474
    +
    2475 virtual bool match(
    +
    2476 _In_reads_or_z_(end) const T* text,
    +
    2477 _In_ size_t start = 0,
    +
    2478 _In_ size_t end = (size_t)-1,
    +
    2479 _In_ int flags = match_default)
    +
    2480 {
    +
    2481 assert(text || start >= end);
    +
    2482 if (start < end && text[start]) {
    +
    2483 if (text[start] == '-' ||
    +
    2484 text[start] == '_' ||
    +
    2485 text[start] == ':' ||
    +
    2486 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    +
    2487 {
    +
    2488 interval.end = (interval.start = start) + 1;
    +
    2489 return true;
    +
    2490 }
    +
    2491 }
    +
    2492 interval.start = (interval.end = start) + 1;
    +
    2493 return false;
    +
    2494 }
    +
    2495 };
    +
    2496
    + + +
    2499#ifdef _UNICODE
    + +
    2501#else
    + +
    2503#endif
    +
    2504
    + +
    2509 {
    +
    2510 public:
    +
    2511 sgml_ipv6_scope_id_char(_In_ const std::locale& locale = std::locale()) : sgml_parser(locale) {}
    +
    2512
    +
    2513 virtual bool match(
    +
    2514 _In_reads_or_z_(end) const char* text,
    +
    2515 _In_ size_t start = 0,
    +
    2516 _In_ size_t end = (size_t)-1,
    +
    2517 _In_ int flags = match_default)
    +
    2518 {
    +
    2519 assert(text || start >= end);
    +
    2520 if (start < end && text[start]) {
    +
    2521 wchar_t buf[3];
    +
    2522 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    2523 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    2524 if ((chr[0] == L'-' ||
    +
    2525 chr[0] == L'_' ||
    +
    2526 chr[0] == L':') && chr[1] == 0 ||
    +
    2527 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    +
    2528 {
    +
    2529 interval.start = start;
    +
    2530 return true;
    +
    2531 }
    +
    2532 }
    +
    2533 interval.start = (interval.end = start) + 1;
    +
    2534 return false;
    +
    2535 }
    +
    2536 };
    +
    2537
    +
    2541 template <class T>
    + +
    2543 {
    +
    2544 public:
    + +
    2546 _In_ const std::shared_ptr<basic_parser<T>>& digit_0,
    +
    2547 _In_ const std::shared_ptr<basic_parser<T>>& digit_1,
    +
    2548 _In_ const std::shared_ptr<basic_parser<T>>& digit_2,
    +
    2549 _In_ const std::shared_ptr<basic_parser<T>>& digit_3,
    +
    2550 _In_ const std::shared_ptr<basic_parser<T>>& digit_4,
    +
    2551 _In_ const std::shared_ptr<basic_parser<T>>& digit_5,
    +
    2552 _In_ const std::shared_ptr<basic_parser<T>>& digit_6,
    +
    2553 _In_ const std::shared_ptr<basic_parser<T>>& digit_7,
    +
    2554 _In_ const std::shared_ptr<basic_parser<T>>& digit_8,
    +
    2555 _In_ const std::shared_ptr<basic_parser<T>>& digit_9,
    +
    2556 _In_ const std::shared_ptr<basic_parser<T>>& digit_10,
    +
    2557 _In_ const std::shared_ptr<basic_parser<T>>& digit_11,
    +
    2558 _In_ const std::shared_ptr<basic_parser<T>>& digit_12,
    +
    2559 _In_ const std::shared_ptr<basic_parser<T>>& digit_13,
    +
    2560 _In_ const std::shared_ptr<basic_parser<T>>& digit_14,
    +
    2561 _In_ const std::shared_ptr<basic_parser<T>>& digit_15,
    +
    2562 _In_ const std::shared_ptr<basic_parser<T>>& separator,
    +
    2563 _In_ const std::shared_ptr<basic_parser<T>>& scope_id_separator = nullptr,
    +
    2564 _In_ const std::shared_ptr<basic_parser<T>>& _scope_id = nullptr,
    +
    2565 _In_ const std::locale& locale = std::locale()) :
    +
    2566 basic_parser<T>(locale),
    +
    2567 m_digit_0(digit_0),
    +
    2568 m_digit_1(digit_1),
    +
    2569 m_digit_2(digit_2),
    +
    2570 m_digit_3(digit_3),
    +
    2571 m_digit_4(digit_4),
    +
    2572 m_digit_5(digit_5),
    +
    2573 m_digit_6(digit_6),
    +
    2574 m_digit_7(digit_7),
    +
    2575 m_digit_8(digit_8),
    +
    2576 m_digit_9(digit_9),
    +
    2577 m_digit_10(digit_10),
    +
    2578 m_digit_11(digit_11),
    +
    2579 m_digit_12(digit_12),
    +
    2580 m_digit_13(digit_13),
    +
    2581 m_digit_14(digit_14),
    +
    2582 m_digit_15(digit_15),
    +
    2583 m_separator(separator),
    +
    2584 m_scope_id_separator(scope_id_separator),
    +
    2585 scope_id(_scope_id)
    +
    2586 {
    +
    2587 memset(value, 0, sizeof(value));
    +
    2588 }
    2589
    -
    2590 size_t i, compaction_i = (size_t)-1, compaction_start = start;
    -
    2591 for (i = 0; i < 8; i++) {
    -
    2592 bool is_empty = true;
    -
    2593
    -
    2594 if (m_separator->match(text, interval.end, end, flags)) {
    -
    2595 if (m_separator->match(text, m_separator->interval.end, end, flags)) {
    -
    2596 // :: found
    -
    2597 if (compaction_i == (size_t)-1) {
    -
    2598 // Zero compaction start
    -
    2599 compaction_i = i;
    -
    2600 compaction_start = m_separator->interval.start;
    -
    2601 interval.end = m_separator->interval.end;
    -
    2602 }
    -
    2603 else {
    -
    2604 // More than one zero compaction
    -
    2605 break;
    -
    2606 }
    -
    2607 }
    -
    2608 else if (i) {
    -
    2609 // Inner : found
    -
    2610 interval.end = m_separator->interval.end;
    -
    2611 }
    -
    2612 else {
    -
    2613 // Leading : found
    -
    2614 goto error;
    -
    2615 }
    -
    2616 }
    -
    2617 else if (i) {
    -
    2618 // : missing
    -
    2619 break;
    -
    2620 }
    -
    2621
    -
    2622 components[i].start = interval.end;
    -
    2623 size_t x;
    -
    2624 for (x = 0; interval.end < end && text[interval.end];) {
    -
    2625 size_t dig, digit_end;
    -
    2626 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; digit_end = m_digit_0->interval.end; }
    -
    2627 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; digit_end = m_digit_1->interval.end; }
    -
    2628 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; digit_end = m_digit_2->interval.end; }
    -
    2629 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; digit_end = m_digit_3->interval.end; }
    -
    2630 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; digit_end = m_digit_4->interval.end; }
    -
    2631 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; digit_end = m_digit_5->interval.end; }
    -
    2632 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; digit_end = m_digit_6->interval.end; }
    -
    2633 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; digit_end = m_digit_7->interval.end; }
    -
    2634 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; digit_end = m_digit_8->interval.end; }
    -
    2635 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; digit_end = m_digit_9->interval.end; }
    -
    2636 else if (m_digit_10->match(text, interval.end, end, flags)) { dig = 10; digit_end = m_digit_10->interval.end; }
    -
    2637 else if (m_digit_11->match(text, interval.end, end, flags)) { dig = 11; digit_end = m_digit_11->interval.end; }
    -
    2638 else if (m_digit_12->match(text, interval.end, end, flags)) { dig = 12; digit_end = m_digit_12->interval.end; }
    -
    2639 else if (m_digit_13->match(text, interval.end, end, flags)) { dig = 13; digit_end = m_digit_13->interval.end; }
    -
    2640 else if (m_digit_14->match(text, interval.end, end, flags)) { dig = 14; digit_end = m_digit_14->interval.end; }
    -
    2641 else if (m_digit_15->match(text, interval.end, end, flags)) { dig = 15; digit_end = m_digit_15->interval.end; }
    -
    2642 else break;
    -
    2643 size_t x_n = x * 16 + dig;
    -
    2644 if (x_n <= 0xffff) {
    -
    2645 x = x_n;
    -
    2646 interval.end = digit_end;
    -
    2647 is_empty = false;
    -
    2648 }
    -
    2649 else
    -
    2650 break;
    -
    2651 }
    -
    2652 if (is_empty) {
    -
    2653 if (compaction_i != (size_t)-1) {
    -
    2654 // Zero compaction active: no sweat.
    -
    2655 break;
    -
    2656 }
    -
    2657 goto error;
    -
    2658 }
    -
    2659 components[i].end = interval.end;
    -
    2660 value.s6_words[i] = (uint16_t)x;
    -
    2661 }
    -
    2662
    -
    2663 if (compaction_i != (size_t)-1) {
    -
    2664 // Align components right due to zero compaction.
    -
    2665 size_t j, k;
    -
    2666 for (j = 8, k = i; k > compaction_i;) {
    -
    2667 value.s6_words[--j] = value.s6_words[--k];
    -
    2668 components[j] = components[k];
    -
    2669 }
    -
    2670 for (; j > compaction_i;) {
    -
    2671 value.s6_words[--j] = 0;
    -
    2672 components[j].start =
    -
    2673 components[j].end = compaction_start;
    -
    2674 }
    -
    2675 }
    -
    2676 else if (i < 8)
    -
    2677 goto error;
    -
    2678
    -
    2679 if (m_scope_id_separator && m_scope_id_separator->match(text, interval.end, end, flags) &&
    -
    2680 scope_id && scope_id->match(text, m_scope_id_separator->interval.end, end, flags))
    -
    2681 interval.end = scope_id->interval.end;
    -
    2682 else if (scope_id)
    -
    2683 scope_id->invalidate();
    -
    2684
    -
    2685 interval.start = start;
    -
    2686 return true;
    -
    2687
    -
    2688 error:
    -
    2689 components[0].start = 1;
    -
    2690 components[0].end = 0;
    -
    2691 components[1].start = 1;
    -
    2692 components[1].end = 0;
    -
    2693 components[2].start = 1;
    -
    2694 components[2].end = 0;
    -
    2695 components[3].start = 1;
    -
    2696 components[3].end = 0;
    -
    2697 components[4].start = 1;
    -
    2698 components[4].end = 0;
    -
    2699 components[5].start = 1;
    -
    2700 components[5].end = 0;
    -
    2701 components[6].start = 1;
    -
    2702 components[6].end = 0;
    -
    2703 components[7].start = 1;
    -
    2704 components[7].end = 0;
    -
    2705 memset(value, 0, sizeof(value));
    -
    2706 if (scope_id) scope_id->invalidate();
    -
    2707 interval.start = (interval.end = start) + 1;
    -
    2708 return false;
    -
    2709 }
    -
    2710
    -
    2711 virtual void invalidate()
    -
    2712 {
    -
    2713 components[0].start = 1;
    -
    2714 components[0].end = 0;
    -
    2715 components[1].start = 1;
    -
    2716 components[1].end = 0;
    -
    2717 components[2].start = 1;
    -
    2718 components[2].end = 0;
    -
    2719 components[3].start = 1;
    -
    2720 components[3].end = 0;
    -
    2721 components[4].start = 1;
    -
    2722 components[4].end = 0;
    -
    2723 components[5].start = 1;
    -
    2724 components[5].end = 0;
    -
    2725 components[6].start = 1;
    -
    2726 components[6].end = 0;
    -
    2727 components[7].start = 1;
    -
    2728 components[7].end = 0;
    -
    2729 memset(value, 0, sizeof(value));
    -
    2730 if (scope_id) scope_id->invalidate();
    - -
    2732 }
    -
    2733
    -
    2734 public:
    - -
    2736 struct in6_addr value;
    -
    2737 std::shared_ptr<basic_tester<T>> scope_id;
    -
    2738
    -
    2739 protected:
    -
    2740 std::shared_ptr<basic_tester<T>>
    -
    2741 m_digit_0,
    -
    2742 m_digit_1,
    -
    2743 m_digit_2,
    -
    2744 m_digit_3,
    -
    2745 m_digit_4,
    -
    2746 m_digit_5,
    -
    2747 m_digit_6,
    -
    2748 m_digit_7,
    -
    2749 m_digit_8,
    -
    2750 m_digit_9,
    -
    2751 m_digit_10,
    -
    2752 m_digit_11,
    -
    2753 m_digit_12,
    -
    2754 m_digit_13,
    -
    2755 m_digit_14,
    -
    2756 m_digit_15;
    -
    2757 std::shared_ptr<basic_tester<T>> m_separator, m_scope_id_separator;
    -
    2758 };
    -
    2759
    - - -
    2762#ifdef _UNICODE
    - -
    2764#else
    - -
    2766#endif
    - -
    2768
    -
    2772 template <class T>
    - -
    2774 {
    -
    2775 public:
    - -
    2777 _In_ bool allow_idn,
    -
    2778 _In_ const std::locale& locale = std::locale()) :
    -
    2779 basic_tester<T>(locale),
    -
    2780 m_allow_idn(allow_idn),
    -
    2781 allow_on_edge(true)
    -
    2782 {}
    -
    2783
    -
    2784 virtual bool match(
    -
    2785 _In_reads_or_z_(end) const T* text,
    -
    2786 _In_ size_t start = 0,
    -
    2787 _In_ size_t end = (size_t)-1,
    -
    2788 _In_ int flags = match_default)
    -
    2789 {
    -
    2790 assert(text || start >= end);
    -
    2791 if (start < end && text[start]) {
    -
    2792 if (('A' <= text[start] && text[start] <= 'Z') ||
    -
    2793 ('a' <= text[start] && text[start] <= 'z') ||
    -
    2794 ('0' <= text[start] && text[start] <= '9'))
    -
    2795 allow_on_edge = true;
    -
    2796 else if (text[start] == '-')
    -
    2797 allow_on_edge = false;
    -
    2798 else if (m_allow_idn && std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    -
    2799 allow_on_edge = true;
    -
    2800 else {
    -
    2801 interval.start = (interval.end = start) + 1;
    -
    2802 return false;
    -
    2803 }
    -
    2804 interval.end = (interval.start = start) + 1;
    -
    2805 return true;
    -
    2806 }
    -
    2807 interval.start = (interval.end = start) + 1;
    -
    2808 return false;
    -
    2809 }
    -
    2810
    -
    2811 public:
    - -
    2813
    -
    2814 protected:
    -
    2815 bool m_allow_idn;
    -
    2816 };
    -
    2817
    - - -
    2820#ifdef _UNICODE
    - -
    2822#else
    - -
    2824#endif
    -
    2825
    - -
    2830 {
    -
    2831 public:
    - -
    2833 _In_ bool allow_idn,
    -
    2834 _In_ const std::locale& locale = std::locale()) :
    -
    2835 basic_dns_domain_char<char>(allow_idn, locale)
    -
    2836 {}
    -
    2837
    -
    2838 virtual bool match(
    -
    2839 _In_reads_or_z_(end) const char* text,
    -
    2840 _In_ size_t start = 0,
    -
    2841 _In_ size_t end = (size_t)-1,
    -
    2842 _In_ int flags = match_default)
    -
    2843 {
    -
    2844 assert(text || start >= end);
    -
    2845 if (start < end && text[start]) {
    -
    2846 wchar_t buf[3];
    -
    2847 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    2848 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    2849 if ((('A' <= chr[0] && chr[0] <= 'Z') ||
    -
    2850 ('a' <= chr[0] && chr[0] <= 'z') ||
    -
    2851 ('0' <= chr[0] && chr[0] <= '9')) && chr[1] == 0)
    -
    2852 allow_on_edge = true;
    -
    2853 else if (chr[0] == '-' && chr[1] == 0)
    -
    2854 allow_on_edge = false;
    -
    2855 else if (m_allow_idn && std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    -
    2856 allow_on_edge = true;
    -
    2857 else {
    -
    2858 interval.start = (interval.end = start) + 1;
    -
    2859 return false;
    -
    2860 }
    -
    2861 interval.start = start;
    -
    2862 return true;
    -
    2863 }
    -
    2864 interval.start = (interval.end = start) + 1;
    -
    2865 return false;
    -
    2866 }
    -
    2867 };
    -
    2868
    -
    2872 template <class T>
    - -
    2874 {
    -
    2875 public:
    - -
    2877 _In_ bool allow_absolute,
    -
    2878 _In_ const std::shared_ptr<basic_dns_domain_char<T>>& domain_char,
    -
    2879 _In_ const std::shared_ptr<basic_tester<T>>& separator,
    -
    2880 _In_ const std::locale& locale = std::locale()) :
    -
    2881 basic_tester<T>(locale),
    -
    2882 m_allow_absolute(allow_absolute),
    -
    2883 m_domain_char(domain_char),
    -
    2884 m_separator(separator)
    -
    2885 {}
    -
    2886
    -
    2887 virtual bool match(
    -
    2888 _In_reads_or_z_(end) const T* text,
    -
    2889 _In_ size_t start = 0,
    -
    2890 _In_ size_t end = (size_t)-1,
    -
    2891 _In_ int flags = match_default)
    -
    2892 {
    -
    2893 assert(text || start >= end);
    -
    2894 size_t i = start, count;
    -
    2895 for (count = 0; i < end && text[i] && count < 127; count++) {
    -
    2896 if (m_domain_char->match(text, i, end, flags) &&
    -
    2897 m_domain_char->allow_on_edge)
    -
    2898 {
    -
    2899 // Domain start
    -
    2900 interval.end = i = m_domain_char->interval.end;
    -
    2901 while (i < end && text[i]) {
    -
    2902 if (m_domain_char->allow_on_edge &&
    -
    2903 m_separator->match(text, i, end, flags))
    -
    2904 {
    -
    2905 // Domain end
    -
    2906 if (m_allow_absolute)
    -
    2907 interval.end = i = m_separator->interval.end;
    -
    2908 else {
    -
    2909 interval.end = i;
    -
    2910 i = m_separator->interval.end;
    -
    2911 }
    -
    2912 break;
    -
    2913 }
    -
    2914 if (m_domain_char->match(text, i, end, flags)) {
    -
    2915 if (m_domain_char->allow_on_edge)
    -
    2916 interval.end = i = m_domain_char->interval.end;
    -
    2917 else
    -
    2918 i = m_domain_char->interval.end;
    -
    2919 }
    -
    2920 else {
    -
    2921 interval.start = start;
    -
    2922 return true;
    +
    2590 virtual bool match(
    +
    2591 _In_reads_or_z_(end) const T* text,
    +
    2592 _In_ size_t start = 0,
    +
    2593 _In_ size_t end = (size_t)-1,
    +
    2594 _In_ int flags = match_default)
    +
    2595 {
    +
    2596 assert(text || start >= end);
    +
    2597 interval.end = start;
    +
    2598 memset(value, 0, sizeof(value));
    +
    2599
    +
    2600 size_t i, compaction_i = (size_t)-1, compaction_start = start;
    +
    2601 for (i = 0; i < 8; i++) {
    +
    2602 bool is_empty = true;
    +
    2603
    +
    2604 if (m_separator->match(text, interval.end, end, flags)) {
    +
    2605 if (m_separator->match(text, m_separator->interval.end, end, flags)) {
    +
    2606 // :: found
    +
    2607 if (compaction_i == (size_t)-1) {
    +
    2608 // Zero compaction start
    +
    2609 compaction_i = i;
    +
    2610 compaction_start = m_separator->interval.start;
    +
    2611 interval.end = m_separator->interval.end;
    +
    2612 }
    +
    2613 else {
    +
    2614 // More than one zero compaction
    +
    2615 break;
    +
    2616 }
    +
    2617 }
    +
    2618 else if (i) {
    +
    2619 // Inner : found
    +
    2620 interval.end = m_separator->interval.end;
    +
    2621 }
    +
    2622 else {
    +
    2623 // Leading : found
    +
    2624 goto error;
    +
    2625 }
    +
    2626 }
    +
    2627 else if (i) {
    +
    2628 // : missing
    +
    2629 break;
    +
    2630 }
    +
    2631
    +
    2632 components[i].start = interval.end;
    +
    2633 size_t x;
    +
    2634 for (x = 0; interval.end < end && text[interval.end];) {
    +
    2635 size_t dig, digit_end;
    +
    2636 if (m_digit_0->match(text, interval.end, end, flags)) { dig = 0; digit_end = m_digit_0->interval.end; }
    +
    2637 else if (m_digit_1->match(text, interval.end, end, flags)) { dig = 1; digit_end = m_digit_1->interval.end; }
    +
    2638 else if (m_digit_2->match(text, interval.end, end, flags)) { dig = 2; digit_end = m_digit_2->interval.end; }
    +
    2639 else if (m_digit_3->match(text, interval.end, end, flags)) { dig = 3; digit_end = m_digit_3->interval.end; }
    +
    2640 else if (m_digit_4->match(text, interval.end, end, flags)) { dig = 4; digit_end = m_digit_4->interval.end; }
    +
    2641 else if (m_digit_5->match(text, interval.end, end, flags)) { dig = 5; digit_end = m_digit_5->interval.end; }
    +
    2642 else if (m_digit_6->match(text, interval.end, end, flags)) { dig = 6; digit_end = m_digit_6->interval.end; }
    +
    2643 else if (m_digit_7->match(text, interval.end, end, flags)) { dig = 7; digit_end = m_digit_7->interval.end; }
    +
    2644 else if (m_digit_8->match(text, interval.end, end, flags)) { dig = 8; digit_end = m_digit_8->interval.end; }
    +
    2645 else if (m_digit_9->match(text, interval.end, end, flags)) { dig = 9; digit_end = m_digit_9->interval.end; }
    +
    2646 else if (m_digit_10->match(text, interval.end, end, flags)) { dig = 10; digit_end = m_digit_10->interval.end; }
    +
    2647 else if (m_digit_11->match(text, interval.end, end, flags)) { dig = 11; digit_end = m_digit_11->interval.end; }
    +
    2648 else if (m_digit_12->match(text, interval.end, end, flags)) { dig = 12; digit_end = m_digit_12->interval.end; }
    +
    2649 else if (m_digit_13->match(text, interval.end, end, flags)) { dig = 13; digit_end = m_digit_13->interval.end; }
    +
    2650 else if (m_digit_14->match(text, interval.end, end, flags)) { dig = 14; digit_end = m_digit_14->interval.end; }
    +
    2651 else if (m_digit_15->match(text, interval.end, end, flags)) { dig = 15; digit_end = m_digit_15->interval.end; }
    +
    2652 else break;
    +
    2653 size_t x_n = x * 16 + dig;
    +
    2654 if (x_n <= 0xffff) {
    +
    2655 x = x_n;
    +
    2656 interval.end = digit_end;
    +
    2657 is_empty = false;
    +
    2658 }
    +
    2659 else
    +
    2660 break;
    +
    2661 }
    +
    2662 if (is_empty) {
    +
    2663 if (compaction_i != (size_t)-1) {
    +
    2664 // Zero compaction active: no sweat.
    +
    2665 break;
    +
    2666 }
    +
    2667 goto error;
    +
    2668 }
    +
    2669 components[i].end = interval.end;
    +
    2670 value.s6_words[i] = (uint16_t)x;
    +
    2671 }
    +
    2672
    +
    2673 if (compaction_i != (size_t)-1) {
    +
    2674 // Align components right due to zero compaction.
    +
    2675 size_t j, k;
    +
    2676 for (j = 8, k = i; k > compaction_i;) {
    +
    2677 value.s6_words[--j] = value.s6_words[--k];
    +
    2678 components[j] = components[k];
    +
    2679 }
    +
    2680 for (; j > compaction_i;) {
    +
    2681 value.s6_words[--j] = 0;
    +
    2682 components[j].start =
    +
    2683 components[j].end = compaction_start;
    +
    2684 }
    +
    2685 }
    +
    2686 else if (i < 8)
    +
    2687 goto error;
    +
    2688
    +
    2689 if (m_scope_id_separator && m_scope_id_separator->match(text, interval.end, end, flags) &&
    +
    2690 scope_id && scope_id->match(text, m_scope_id_separator->interval.end, end, flags))
    +
    2691 interval.end = scope_id->interval.end;
    +
    2692 else if (scope_id)
    +
    2693 scope_id->invalidate();
    +
    2694
    +
    2695 interval.start = start;
    +
    2696 return true;
    +
    2697
    +
    2698 error:
    +
    2699 components[0].start = 1;
    +
    2700 components[0].end = 0;
    +
    2701 components[1].start = 1;
    +
    2702 components[1].end = 0;
    +
    2703 components[2].start = 1;
    +
    2704 components[2].end = 0;
    +
    2705 components[3].start = 1;
    +
    2706 components[3].end = 0;
    +
    2707 components[4].start = 1;
    +
    2708 components[4].end = 0;
    +
    2709 components[5].start = 1;
    +
    2710 components[5].end = 0;
    +
    2711 components[6].start = 1;
    +
    2712 components[6].end = 0;
    +
    2713 components[7].start = 1;
    +
    2714 components[7].end = 0;
    +
    2715 memset(value, 0, sizeof(value));
    +
    2716 if (scope_id) scope_id->invalidate();
    +
    2717 interval.start = (interval.end = start) + 1;
    +
    2718 return false;
    +
    2719 }
    +
    2720
    +
    2721 virtual void invalidate()
    +
    2722 {
    +
    2723 components[0].start = 1;
    +
    2724 components[0].end = 0;
    +
    2725 components[1].start = 1;
    +
    2726 components[1].end = 0;
    +
    2727 components[2].start = 1;
    +
    2728 components[2].end = 0;
    +
    2729 components[3].start = 1;
    +
    2730 components[3].end = 0;
    +
    2731 components[4].start = 1;
    +
    2732 components[4].end = 0;
    +
    2733 components[5].start = 1;
    +
    2734 components[5].end = 0;
    +
    2735 components[6].start = 1;
    +
    2736 components[6].end = 0;
    +
    2737 components[7].start = 1;
    +
    2738 components[7].end = 0;
    +
    2739 memset(value, 0, sizeof(value));
    +
    2740 if (scope_id) scope_id->invalidate();
    + +
    2742 }
    +
    2743
    +
    2744 public:
    + +
    2746 struct in6_addr value;
    +
    2747 std::shared_ptr<basic_parser<T>> scope_id;
    +
    2748
    +
    2749 protected:
    +
    2750 std::shared_ptr<basic_parser<T>>
    +
    2751 m_digit_0,
    +
    2752 m_digit_1,
    +
    2753 m_digit_2,
    +
    2754 m_digit_3,
    +
    2755 m_digit_4,
    +
    2756 m_digit_5,
    +
    2757 m_digit_6,
    +
    2758 m_digit_7,
    +
    2759 m_digit_8,
    +
    2760 m_digit_9,
    +
    2761 m_digit_10,
    +
    2762 m_digit_11,
    +
    2763 m_digit_12,
    +
    2764 m_digit_13,
    +
    2765 m_digit_14,
    +
    2766 m_digit_15;
    +
    2767 std::shared_ptr<basic_parser<T>> m_separator, m_scope_id_separator;
    +
    2768 };
    +
    2769
    + + +
    2772#ifdef _UNICODE
    + +
    2774#else
    + +
    2776#endif
    + +
    2778
    +
    2782 template <class T>
    + +
    2784 {
    +
    2785 public:
    + +
    2787 _In_ bool allow_idn,
    +
    2788 _In_ const std::locale& locale = std::locale()) :
    +
    2789 basic_parser<T>(locale),
    +
    2790 m_allow_idn(allow_idn),
    +
    2791 allow_on_edge(true)
    +
    2792 {}
    +
    2793
    +
    2794 virtual bool match(
    +
    2795 _In_reads_or_z_(end) const T* text,
    +
    2796 _In_ size_t start = 0,
    +
    2797 _In_ size_t end = (size_t)-1,
    +
    2798 _In_ int flags = match_default)
    +
    2799 {
    +
    2800 assert(text || start >= end);
    +
    2801 if (start < end && text[start]) {
    +
    2802 if (('A' <= text[start] && text[start] <= 'Z') ||
    +
    2803 ('a' <= text[start] && text[start] <= 'z') ||
    +
    2804 ('0' <= text[start] && text[start] <= '9'))
    +
    2805 allow_on_edge = true;
    +
    2806 else if (text[start] == '-')
    +
    2807 allow_on_edge = false;
    +
    2808 else if (m_allow_idn && std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    +
    2809 allow_on_edge = true;
    +
    2810 else {
    +
    2811 interval.start = (interval.end = start) + 1;
    +
    2812 return false;
    +
    2813 }
    +
    2814 interval.end = (interval.start = start) + 1;
    +
    2815 return true;
    +
    2816 }
    +
    2817 interval.start = (interval.end = start) + 1;
    +
    2818 return false;
    +
    2819 }
    +
    2820
    +
    2821 public:
    + +
    2823
    +
    2824 protected:
    +
    2825 bool m_allow_idn;
    +
    2826 };
    +
    2827
    + + +
    2830#ifdef _UNICODE
    + +
    2832#else
    + +
    2834#endif
    +
    2835
    + +
    2840 {
    +
    2841 public:
    + +
    2843 _In_ bool allow_idn,
    +
    2844 _In_ const std::locale& locale = std::locale()) :
    +
    2845 basic_dns_domain_char<char>(allow_idn, locale)
    +
    2846 {}
    +
    2847
    +
    2848 virtual bool match(
    +
    2849 _In_reads_or_z_(end) const char* text,
    +
    2850 _In_ size_t start = 0,
    +
    2851 _In_ size_t end = (size_t)-1,
    +
    2852 _In_ int flags = match_default)
    +
    2853 {
    +
    2854 assert(text || start >= end);
    +
    2855 if (start < end && text[start]) {
    +
    2856 wchar_t buf[3];
    +
    2857 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    2858 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    2859 if ((('A' <= chr[0] && chr[0] <= 'Z') ||
    +
    2860 ('a' <= chr[0] && chr[0] <= 'z') ||
    +
    2861 ('0' <= chr[0] && chr[0] <= '9')) && chr[1] == 0)
    +
    2862 allow_on_edge = true;
    +
    2863 else if (chr[0] == '-' && chr[1] == 0)
    +
    2864 allow_on_edge = false;
    +
    2865 else if (m_allow_idn && std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    +
    2866 allow_on_edge = true;
    +
    2867 else {
    +
    2868 interval.start = (interval.end = start) + 1;
    +
    2869 return false;
    +
    2870 }
    +
    2871 interval.start = start;
    +
    2872 return true;
    +
    2873 }
    +
    2874 interval.start = (interval.end = start) + 1;
    +
    2875 return false;
    +
    2876 }
    +
    2877 };
    +
    2878
    +
    2882 template <class T>
    + +
    2884 {
    +
    2885 public:
    + +
    2887 _In_ bool allow_absolute,
    +
    2888 _In_ const std::shared_ptr<basic_dns_domain_char<T>>& domain_char,
    +
    2889 _In_ const std::shared_ptr<basic_parser<T>>& separator,
    +
    2890 _In_ const std::locale& locale = std::locale()) :
    +
    2891 basic_parser<T>(locale),
    +
    2892 m_allow_absolute(allow_absolute),
    +
    2893 m_domain_char(domain_char),
    +
    2894 m_separator(separator)
    +
    2895 {}
    +
    2896
    +
    2897 virtual bool match(
    +
    2898 _In_reads_or_z_(end) const T* text,
    +
    2899 _In_ size_t start = 0,
    +
    2900 _In_ size_t end = (size_t)-1,
    +
    2901 _In_ int flags = match_default)
    +
    2902 {
    +
    2903 assert(text || start >= end);
    +
    2904 size_t i = start, count;
    +
    2905 for (count = 0; i < end && text[i] && count < 127; count++) {
    +
    2906 if (m_domain_char->match(text, i, end, flags) &&
    +
    2907 m_domain_char->allow_on_edge)
    +
    2908 {
    +
    2909 // Domain start
    +
    2910 interval.end = i = m_domain_char->interval.end;
    +
    2911 while (i < end && text[i]) {
    +
    2912 if (m_domain_char->allow_on_edge &&
    +
    2913 m_separator->match(text, i, end, flags))
    +
    2914 {
    +
    2915 // Domain end
    +
    2916 if (m_allow_absolute)
    +
    2917 interval.end = i = m_separator->interval.end;
    +
    2918 else {
    +
    2919 interval.end = i;
    +
    2920 i = m_separator->interval.end;
    +
    2921 }
    +
    2922 break;
    2923 }
    -
    2924 }
    -
    2925 }
    -
    2926 else
    -
    2927 break;
    -
    2928 }
    -
    2929 if (count) {
    -
    2930 interval.start = start;
    -
    2931 return true;
    -
    2932 }
    -
    2933 interval.start = (interval.end = start) + 1;
    -
    2934 return false;
    -
    2935 }
    -
    2936
    -
    2937 protected:
    - -
    2939 std::shared_ptr<basic_dns_domain_char<T>> m_domain_char;
    -
    2940 std::shared_ptr<basic_tester<T>> m_separator;
    -
    2941 };
    -
    2942
    - - -
    2945#ifdef _UNICODE
    -
    2946 using tdns_name = wdns_name;
    -
    2947#else
    -
    2948 using tdns_name = dns_name;
    -
    2949#endif
    - -
    2951
    -
    2955 template <class T>
    - -
    2957 {
    -
    2958 public:
    -
    2959 basic_url_username_char(_In_ const std::locale& locale = std::locale()) : basic_tester<T>(locale) {}
    -
    2960
    -
    2961 virtual bool match(
    -
    2962 _In_reads_or_z_(end) const T* text,
    -
    2963 _In_ size_t start = 0,
    -
    2964 _In_ size_t end = (size_t)-1,
    -
    2965 _In_ int flags = match_default)
    -
    2966 {
    -
    2967 assert(text || start >= end);
    -
    2968 if (start < end && text[start]) {
    -
    2969 if (text[start] == '-' ||
    -
    2970 text[start] == '.' ||
    -
    2971 text[start] == '_' ||
    -
    2972 text[start] == '~' ||
    -
    2973 text[start] == '%' ||
    -
    2974 text[start] == '!' ||
    -
    2975 text[start] == '$' ||
    -
    2976 text[start] == '&' ||
    -
    2977 text[start] == '\'' ||
    -
    2978 //text[start] == '(' ||
    -
    2979 //text[start] == ')' ||
    -
    2980 text[start] == '*' ||
    -
    2981 text[start] == '+' ||
    -
    2982 text[start] == ',' ||
    -
    2983 text[start] == ';' ||
    -
    2984 text[start] == '=' ||
    -
    2985 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    -
    2986 {
    -
    2987 interval.end = (interval.start = start) + 1;
    -
    2988 return true;
    -
    2989 }
    -
    2990 }
    -
    2991 interval.start = (interval.end = start) + 1;
    -
    2992 return false;
    -
    2993 }
    -
    2994 };
    -
    2995
    - - -
    2998#ifdef _UNICODE
    - -
    3000#else
    - -
    3002#endif
    -
    3003
    - -
    3008 {
    -
    3009 public:
    -
    3010 sgml_url_username_char(_In_ const std::locale& locale = std::locale()) : basic_url_username_char<char>(locale) {}
    -
    3011
    -
    3012 virtual bool match(
    -
    3013 _In_reads_or_z_(end) const char* text,
    -
    3014 _In_ size_t start = 0,
    -
    3015 _In_ size_t end = (size_t)-1,
    -
    3016 _In_ int flags = match_default)
    -
    3017 {
    -
    3018 assert(text || start >= end);
    -
    3019 if (start < end && text[start]) {
    -
    3020 wchar_t buf[3];
    -
    3021 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    3022 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    3023 if ((chr[0] == L'-' ||
    -
    3024 chr[0] == L'.' ||
    -
    3025 chr[0] == L'_' ||
    -
    3026 chr[0] == L'~' ||
    -
    3027 chr[0] == L'%' ||
    -
    3028 chr[0] == L'!' ||
    -
    3029 chr[0] == L'$' ||
    -
    3030 chr[0] == L'&' ||
    -
    3031 chr[0] == L'\'' ||
    -
    3032 //chr[0] == L'(' ||
    -
    3033 //chr[0] == L')' ||
    -
    3034 chr[0] == L'*' ||
    -
    3035 chr[0] == L'+' ||
    -
    3036 chr[0] == L',' ||
    -
    3037 chr[0] == L';' ||
    -
    3038 chr[0] == L'=') && chr[1] == 0 ||
    -
    3039 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    -
    3040 {
    -
    3041 interval.start = start;
    -
    3042 return true;
    -
    3043 }
    -
    3044 }
    -
    3045
    -
    3046 interval.start = (interval.end = start) + 1;
    -
    3047 return false;
    -
    3048 }
    -
    3049 };
    -
    3050
    -
    3054 template <class T>
    - -
    3056 {
    -
    3057 public:
    -
    3058 basic_url_password_char(_In_ const std::locale& locale = std::locale()) : basic_tester<T>(locale) {}
    -
    3059
    -
    3060 virtual bool match(
    -
    3061 _In_reads_or_z_(end) const T* text,
    -
    3062 _In_ size_t start = 0,
    -
    3063 _In_ size_t end = (size_t)-1,
    -
    3064 _In_ int flags = match_default)
    -
    3065 {
    -
    3066 assert(text || start >= end);
    -
    3067 if (start < end && text[start]) {
    -
    3068 if (text[start] == '-' ||
    -
    3069 text[start] == '.' ||
    -
    3070 text[start] == '_' ||
    -
    3071 text[start] == '~' ||
    -
    3072 text[start] == '%' ||
    -
    3073 text[start] == '!' ||
    -
    3074 text[start] == '$' ||
    -
    3075 text[start] == '&' ||
    -
    3076 text[start] == '\'' ||
    -
    3077 text[start] == '(' ||
    -
    3078 text[start] == ')' ||
    -
    3079 text[start] == '*' ||
    -
    3080 text[start] == '+' ||
    -
    3081 text[start] == ',' ||
    -
    3082 text[start] == ';' ||
    -
    3083 text[start] == '=' ||
    -
    3084 text[start] == ':' ||
    -
    3085 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    -
    3086 {
    -
    3087 interval.end = (interval.start = start) + 1;
    -
    3088 return true;
    -
    3089 }
    -
    3090 }
    -
    3091 interval.start = (interval.end = start) + 1;
    -
    3092 return false;
    -
    3093 }
    -
    3094 };
    -
    3095
    - - -
    3098#ifdef _UNICODE
    - -
    3100#else
    - -
    3102#endif
    -
    3103
    - -
    3108 {
    -
    3109 public:
    -
    3110 sgml_url_password_char(_In_ const std::locale& locale = std::locale()) : basic_url_password_char<char>(locale) {}
    -
    3111
    -
    3112 virtual bool match(
    -
    3113 _In_reads_or_z_(end) const char* text,
    -
    3114 _In_ size_t start = 0,
    -
    3115 _In_ size_t end = (size_t)-1,
    -
    3116 _In_ int flags = match_default)
    -
    3117 {
    -
    3118 assert(text || start >= end);
    -
    3119 if (start < end && text[start]) {
    -
    3120 wchar_t buf[3];
    -
    3121 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    3122 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    3123 if ((chr[0] == L'-' ||
    -
    3124 chr[0] == L'.' ||
    -
    3125 chr[0] == L'_' ||
    -
    3126 chr[0] == L'~' ||
    -
    3127 chr[0] == L'%' ||
    -
    3128 chr[0] == L'!' ||
    -
    3129 chr[0] == L'$' ||
    -
    3130 chr[0] == L'&' ||
    -
    3131 chr[0] == L'\'' ||
    -
    3132 chr[0] == L'(' ||
    -
    3133 chr[0] == L')' ||
    -
    3134 chr[0] == L'*' ||
    -
    3135 chr[0] == L'+' ||
    -
    3136 chr[0] == L',' ||
    -
    3137 chr[0] == L';' ||
    -
    3138 chr[0] == L'=' ||
    -
    3139 chr[0] == L':') && chr[1] == 0 ||
    -
    3140 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    -
    3141 {
    -
    3142 interval.start = start;
    -
    3143 return true;
    -
    3144 }
    -
    3145 }
    -
    3146 interval.start = (interval.end = start) + 1;
    -
    3147 return false;
    -
    3148 }
    -
    3149 };
    -
    3150
    -
    3154 template <class T>
    - -
    3156 {
    -
    3157 public:
    -
    3158 basic_url_path_char(_In_ const std::locale& locale = std::locale()) : basic_tester<T>(locale) {}
    -
    3159
    -
    3160 virtual bool match(
    -
    3161 _In_reads_or_z_(end) const T* text,
    -
    3162 _In_ size_t start = 0,
    -
    3163 _In_ size_t end = (size_t)-1,
    -
    3164 _In_ int flags = match_default)
    -
    3165 {
    -
    3166 assert(text || start >= end);
    -
    3167 if (start < end && text[start]) {
    -
    3168 if (text[start] == '/' ||
    -
    3169 text[start] == '-' ||
    -
    3170 text[start] == '.' ||
    -
    3171 text[start] == '_' ||
    -
    3172 text[start] == '~' ||
    -
    3173 text[start] == '%' ||
    -
    3174 text[start] == '!' ||
    -
    3175 text[start] == '$' ||
    -
    3176 text[start] == '&' ||
    -
    3177 text[start] == '\'' ||
    -
    3178 text[start] == '(' ||
    -
    3179 text[start] == ')' ||
    -
    3180 text[start] == '*' ||
    -
    3181 text[start] == '+' ||
    -
    3182 text[start] == ',' ||
    -
    3183 text[start] == ';' ||
    -
    3184 text[start] == '=' ||
    -
    3185 text[start] == ':' ||
    -
    3186 text[start] == '@' ||
    -
    3187 text[start] == '?' ||
    -
    3188 text[start] == '#' ||
    -
    3189 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    -
    3190 {
    -
    3191 interval.end = (interval.start = start) + 1;
    -
    3192 return true;
    -
    3193 }
    -
    3194 }
    -
    3195 interval.start = (interval.end = start) + 1;
    -
    3196 return false;
    -
    3197 }
    -
    3198 };
    -
    3199
    - - -
    3202#ifdef _UNICODE
    - -
    3204#else
    - -
    3206#endif
    -
    3207
    - -
    3212 {
    -
    3213 public:
    -
    3214 sgml_url_path_char(_In_ const std::locale& locale = std::locale()) : basic_url_path_char<char>(locale) {}
    -
    3215
    -
    3216 virtual bool match(
    -
    3217 _In_reads_or_z_(end) const char* text,
    -
    3218 _In_ size_t start = 0,
    -
    3219 _In_ size_t end = (size_t)-1,
    -
    3220 _In_ int flags = match_default)
    -
    3221 {
    -
    3222 assert(text || start >= end);
    -
    3223 if (start < end && text[start]) {
    -
    3224 wchar_t buf[3];
    -
    3225 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    -
    3226 const wchar_t* chr_end = chr + stdex::strlen(chr);
    -
    3227 if ((chr[0] == L'/' ||
    -
    3228 chr[0] == L'-' ||
    -
    3229 chr[0] == L'.' ||
    -
    3230 chr[0] == L'_' ||
    -
    3231 chr[0] == L'~' ||
    -
    3232 chr[0] == L'%' ||
    -
    3233 chr[0] == L'!' ||
    -
    3234 chr[0] == L'$' ||
    -
    3235 chr[0] == L'&' ||
    -
    3236 chr[0] == L'\'' ||
    -
    3237 chr[0] == L'(' ||
    -
    3238 chr[0] == L')' ||
    -
    3239 chr[0] == L'*' ||
    -
    3240 chr[0] == L'+' ||
    -
    3241 chr[0] == L',' ||
    -
    3242 chr[0] == L';' ||
    -
    3243 chr[0] == L'=' ||
    -
    3244 chr[0] == L':' ||
    -
    3245 chr[0] == L'@' ||
    -
    3246 chr[0] == L'?' ||
    -
    3247 chr[0] == L'#') && chr[1] == 0 ||
    -
    3248 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    -
    3249 {
    -
    3250 interval.start = start;
    -
    3251 return true;
    -
    3252 }
    -
    3253 }
    -
    3254 interval.start = (interval.end = start) + 1;
    -
    3255 return false;
    -
    3256 }
    -
    3257 };
    -
    3258
    -
    3262 template <class T>
    - -
    3264 {
    -
    3265 public:
    - -
    3267 _In_ const std::shared_ptr<basic_tester<T>>& path_char,
    -
    3268 _In_ const std::shared_ptr<basic_tester<T>>& query_start,
    -
    3269 _In_ const std::shared_ptr<basic_tester<T>>& bookmark_start,
    -
    3270 _In_ const std::locale& locale = std::locale()) :
    -
    3271 basic_tester<T>(locale),
    -
    3272 m_path_char(path_char),
    -
    3273 m_query_start(query_start),
    -
    3274 m_bookmark_start(bookmark_start)
    -
    3275 {}
    -
    3276
    -
    3277 virtual bool match(
    -
    3278 _In_reads_or_z_(end) const T* text,
    -
    3279 _In_ size_t start = 0,
    -
    3280 _In_ size_t end = (size_t)-1,
    -
    3281 _In_ int flags = match_default)
    -
    3282 {
    -
    3283 assert(text || start >= end);
    -
    3284
    -
    3285 interval.end = start;
    -
    3286 path.start = start;
    -
    3287 query.start = 1;
    -
    3288 query.end = 0;
    -
    3289 bookmark.start = 1;
    -
    3290 bookmark.end = 0;
    -
    3291
    -
    3292 for (;;) {
    -
    3293 if (interval.end >= end || !text[interval.end])
    -
    3294 break;
    -
    3295 if (m_query_start->match(text, interval.end, end, flags)) {
    -
    3296 path.end = interval.end;
    -
    3297 query.start = interval.end = m_query_start->interval.end;
    -
    3298 for (;;) {
    -
    3299 if (interval.end >= end || !text[interval.end]) {
    -
    3300 query.end = interval.end;
    -
    3301 break;
    -
    3302 }
    -
    3303 if (m_bookmark_start->match(text, interval.end, end, flags)) {
    -
    3304 query.end = interval.end;
    -
    3305 bookmark.start = interval.end = m_bookmark_start->interval.end;
    -
    3306 for (;;) {
    -
    3307 if (interval.end >= end || !text[interval.end]) {
    -
    3308 bookmark.end = interval.end;
    -
    3309 break;
    -
    3310 }
    -
    3311 if (m_path_char->match(text, interval.end, end, flags))
    -
    3312 interval.end = m_path_char->interval.end;
    -
    3313 else {
    -
    3314 bookmark.end = interval.end;
    -
    3315 break;
    -
    3316 }
    -
    3317 }
    -
    3318 interval.start = start;
    -
    3319 return true;
    -
    3320 }
    -
    3321 if (m_path_char->match(text, interval.end, end, flags))
    -
    3322 interval.end = m_path_char->interval.end;
    -
    3323 else {
    -
    3324 query.end = interval.end;
    -
    3325 break;
    -
    3326 }
    -
    3327 }
    -
    3328 interval.start = start;
    -
    3329 return true;
    -
    3330 }
    -
    3331 if (m_bookmark_start->match(text, interval.end, end, flags)) {
    -
    3332 path.end = interval.end;
    -
    3333 bookmark.start = interval.end = m_bookmark_start->interval.end;
    -
    3334 for (;;) {
    -
    3335 if (interval.end >= end || !text[interval.end]) {
    -
    3336 bookmark.end = interval.end;
    -
    3337 break;
    -
    3338 }
    -
    3339 if (m_path_char->match(text, interval.end, end, flags))
    -
    3340 interval.end = m_path_char->interval.end;
    -
    3341 else {
    -
    3342 bookmark.end = interval.end;
    -
    3343 break;
    -
    3344 }
    -
    3345 }
    -
    3346 interval.start = start;
    -
    3347 return true;
    -
    3348 }
    -
    3349 if (m_path_char->match(text, interval.end, end, flags))
    -
    3350 interval.end = m_path_char->interval.end;
    -
    3351 else
    -
    3352 break;
    -
    3353 }
    -
    3354
    -
    3355 if (start < interval.end) {
    -
    3356 path.end = interval.end;
    -
    3357 interval.start = start;
    -
    3358 return true;
    -
    3359 }
    -
    3360
    -
    3361 path.start = 1;
    -
    3362 path.end = 0;
    -
    3363 bookmark.start = 1;
    -
    3364 bookmark.end = 0;
    -
    3365 interval.start = (interval.end = start) + 1;
    -
    3366 return false;
    -
    3367 }
    -
    3368
    -
    3369 virtual void invalidate()
    -
    3370 {
    +
    2924 if (m_domain_char->match(text, i, end, flags)) {
    +
    2925 if (m_domain_char->allow_on_edge)
    +
    2926 interval.end = i = m_domain_char->interval.end;
    +
    2927 else
    +
    2928 i = m_domain_char->interval.end;
    +
    2929 }
    +
    2930 else {
    +
    2931 interval.start = start;
    +
    2932 return true;
    +
    2933 }
    +
    2934 }
    +
    2935 }
    +
    2936 else
    +
    2937 break;
    +
    2938 }
    +
    2939 if (count) {
    +
    2940 interval.start = start;
    +
    2941 return true;
    +
    2942 }
    +
    2943 interval.start = (interval.end = start) + 1;
    +
    2944 return false;
    +
    2945 }
    +
    2946
    +
    2947 protected:
    + +
    2949 std::shared_ptr<basic_dns_domain_char<T>> m_domain_char;
    +
    2950 std::shared_ptr<basic_parser<T>> m_separator;
    +
    2951 };
    +
    2952
    + + +
    2955#ifdef _UNICODE
    +
    2956 using tdns_name = wdns_name;
    +
    2957#else
    +
    2958 using tdns_name = dns_name;
    +
    2959#endif
    + +
    2961
    +
    2965 template <class T>
    + +
    2967 {
    +
    2968 public:
    +
    2969 basic_url_username_char(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
    +
    2970
    +
    2971 virtual bool match(
    +
    2972 _In_reads_or_z_(end) const T* text,
    +
    2973 _In_ size_t start = 0,
    +
    2974 _In_ size_t end = (size_t)-1,
    +
    2975 _In_ int flags = match_default)
    +
    2976 {
    +
    2977 assert(text || start >= end);
    +
    2978 if (start < end && text[start]) {
    +
    2979 if (text[start] == '-' ||
    +
    2980 text[start] == '.' ||
    +
    2981 text[start] == '_' ||
    +
    2982 text[start] == '~' ||
    +
    2983 text[start] == '%' ||
    +
    2984 text[start] == '!' ||
    +
    2985 text[start] == '$' ||
    +
    2986 text[start] == '&' ||
    +
    2987 text[start] == '\'' ||
    +
    2988 //text[start] == '(' ||
    +
    2989 //text[start] == ')' ||
    +
    2990 text[start] == '*' ||
    +
    2991 text[start] == '+' ||
    +
    2992 text[start] == ',' ||
    +
    2993 text[start] == ';' ||
    +
    2994 text[start] == '=' ||
    +
    2995 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    +
    2996 {
    +
    2997 interval.end = (interval.start = start) + 1;
    +
    2998 return true;
    +
    2999 }
    +
    3000 }
    +
    3001 interval.start = (interval.end = start) + 1;
    +
    3002 return false;
    +
    3003 }
    +
    3004 };
    +
    3005
    + + +
    3008#ifdef _UNICODE
    + +
    3010#else
    + +
    3012#endif
    +
    3013
    + +
    3018 {
    +
    3019 public:
    +
    3020 sgml_url_username_char(_In_ const std::locale& locale = std::locale()) : basic_url_username_char<char>(locale) {}
    +
    3021
    +
    3022 virtual bool match(
    +
    3023 _In_reads_or_z_(end) const char* text,
    +
    3024 _In_ size_t start = 0,
    +
    3025 _In_ size_t end = (size_t)-1,
    +
    3026 _In_ int flags = match_default)
    +
    3027 {
    +
    3028 assert(text || start >= end);
    +
    3029 if (start < end && text[start]) {
    +
    3030 wchar_t buf[3];
    +
    3031 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    3032 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    3033 if ((chr[0] == L'-' ||
    +
    3034 chr[0] == L'.' ||
    +
    3035 chr[0] == L'_' ||
    +
    3036 chr[0] == L'~' ||
    +
    3037 chr[0] == L'%' ||
    +
    3038 chr[0] == L'!' ||
    +
    3039 chr[0] == L'$' ||
    +
    3040 chr[0] == L'&' ||
    +
    3041 chr[0] == L'\'' ||
    +
    3042 //chr[0] == L'(' ||
    +
    3043 //chr[0] == L')' ||
    +
    3044 chr[0] == L'*' ||
    +
    3045 chr[0] == L'+' ||
    +
    3046 chr[0] == L',' ||
    +
    3047 chr[0] == L';' ||
    +
    3048 chr[0] == L'=') && chr[1] == 0 ||
    +
    3049 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    +
    3050 {
    +
    3051 interval.start = start;
    +
    3052 return true;
    +
    3053 }
    +
    3054 }
    +
    3055
    +
    3056 interval.start = (interval.end = start) + 1;
    +
    3057 return false;
    +
    3058 }
    +
    3059 };
    +
    3060
    +
    3064 template <class T>
    + +
    3066 {
    +
    3067 public:
    +
    3068 basic_url_password_char(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
    +
    3069
    +
    3070 virtual bool match(
    +
    3071 _In_reads_or_z_(end) const T* text,
    +
    3072 _In_ size_t start = 0,
    +
    3073 _In_ size_t end = (size_t)-1,
    +
    3074 _In_ int flags = match_default)
    +
    3075 {
    +
    3076 assert(text || start >= end);
    +
    3077 if (start < end && text[start]) {
    +
    3078 if (text[start] == '-' ||
    +
    3079 text[start] == '.' ||
    +
    3080 text[start] == '_' ||
    +
    3081 text[start] == '~' ||
    +
    3082 text[start] == '%' ||
    +
    3083 text[start] == '!' ||
    +
    3084 text[start] == '$' ||
    +
    3085 text[start] == '&' ||
    +
    3086 text[start] == '\'' ||
    +
    3087 text[start] == '(' ||
    +
    3088 text[start] == ')' ||
    +
    3089 text[start] == '*' ||
    +
    3090 text[start] == '+' ||
    +
    3091 text[start] == ',' ||
    +
    3092 text[start] == ';' ||
    +
    3093 text[start] == '=' ||
    +
    3094 text[start] == ':' ||
    +
    3095 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    +
    3096 {
    +
    3097 interval.end = (interval.start = start) + 1;
    +
    3098 return true;
    +
    3099 }
    +
    3100 }
    +
    3101 interval.start = (interval.end = start) + 1;
    +
    3102 return false;
    +
    3103 }
    +
    3104 };
    +
    3105
    + + +
    3108#ifdef _UNICODE
    + +
    3110#else
    + +
    3112#endif
    +
    3113
    + +
    3118 {
    +
    3119 public:
    +
    3120 sgml_url_password_char(_In_ const std::locale& locale = std::locale()) : basic_url_password_char<char>(locale) {}
    +
    3121
    +
    3122 virtual bool match(
    +
    3123 _In_reads_or_z_(end) const char* text,
    +
    3124 _In_ size_t start = 0,
    +
    3125 _In_ size_t end = (size_t)-1,
    +
    3126 _In_ int flags = match_default)
    +
    3127 {
    +
    3128 assert(text || start >= end);
    +
    3129 if (start < end && text[start]) {
    +
    3130 wchar_t buf[3];
    +
    3131 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    3132 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    3133 if ((chr[0] == L'-' ||
    +
    3134 chr[0] == L'.' ||
    +
    3135 chr[0] == L'_' ||
    +
    3136 chr[0] == L'~' ||
    +
    3137 chr[0] == L'%' ||
    +
    3138 chr[0] == L'!' ||
    +
    3139 chr[0] == L'$' ||
    +
    3140 chr[0] == L'&' ||
    +
    3141 chr[0] == L'\'' ||
    +
    3142 chr[0] == L'(' ||
    +
    3143 chr[0] == L')' ||
    +
    3144 chr[0] == L'*' ||
    +
    3145 chr[0] == L'+' ||
    +
    3146 chr[0] == L',' ||
    +
    3147 chr[0] == L';' ||
    +
    3148 chr[0] == L'=' ||
    +
    3149 chr[0] == L':') && chr[1] == 0 ||
    +
    3150 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    +
    3151 {
    +
    3152 interval.start = start;
    +
    3153 return true;
    +
    3154 }
    +
    3155 }
    +
    3156 interval.start = (interval.end = start) + 1;
    +
    3157 return false;
    +
    3158 }
    +
    3159 };
    +
    3160
    +
    3164 template <class T>
    + +
    3166 {
    +
    3167 public:
    +
    3168 basic_url_path_char(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
    +
    3169
    +
    3170 virtual bool match(
    +
    3171 _In_reads_or_z_(end) const T* text,
    +
    3172 _In_ size_t start = 0,
    +
    3173 _In_ size_t end = (size_t)-1,
    +
    3174 _In_ int flags = match_default)
    +
    3175 {
    +
    3176 assert(text || start >= end);
    +
    3177 if (start < end && text[start]) {
    +
    3178 if (text[start] == '/' ||
    +
    3179 text[start] == '-' ||
    +
    3180 text[start] == '.' ||
    +
    3181 text[start] == '_' ||
    +
    3182 text[start] == '~' ||
    +
    3183 text[start] == '%' ||
    +
    3184 text[start] == '!' ||
    +
    3185 text[start] == '$' ||
    +
    3186 text[start] == '&' ||
    +
    3187 text[start] == '\'' ||
    +
    3188 text[start] == '(' ||
    +
    3189 text[start] == ')' ||
    +
    3190 text[start] == '*' ||
    +
    3191 text[start] == '+' ||
    +
    3192 text[start] == ',' ||
    +
    3193 text[start] == ';' ||
    +
    3194 text[start] == '=' ||
    +
    3195 text[start] == ':' ||
    +
    3196 text[start] == '@' ||
    +
    3197 text[start] == '?' ||
    +
    3198 text[start] == '#' ||
    +
    3199 std::use_facet<std::ctype<T>>(m_locale).is(std::ctype_base::alnum, text[start]))
    +
    3200 {
    +
    3201 interval.end = (interval.start = start) + 1;
    +
    3202 return true;
    +
    3203 }
    +
    3204 }
    +
    3205 interval.start = (interval.end = start) + 1;
    +
    3206 return false;
    +
    3207 }
    +
    3208 };
    +
    3209
    + + +
    3212#ifdef _UNICODE
    + +
    3214#else
    + +
    3216#endif
    +
    3217
    + +
    3222 {
    +
    3223 public:
    +
    3224 sgml_url_path_char(_In_ const std::locale& locale = std::locale()) : basic_url_path_char<char>(locale) {}
    +
    3225
    +
    3226 virtual bool match(
    +
    3227 _In_reads_or_z_(end) const char* text,
    +
    3228 _In_ size_t start = 0,
    +
    3229 _In_ size_t end = (size_t)-1,
    +
    3230 _In_ int flags = match_default)
    +
    3231 {
    +
    3232 assert(text || start >= end);
    +
    3233 if (start < end && text[start]) {
    +
    3234 wchar_t buf[3];
    +
    3235 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
    +
    3236 const wchar_t* chr_end = chr + stdex::strlen(chr);
    +
    3237 if ((chr[0] == L'/' ||
    +
    3238 chr[0] == L'-' ||
    +
    3239 chr[0] == L'.' ||
    +
    3240 chr[0] == L'_' ||
    +
    3241 chr[0] == L'~' ||
    +
    3242 chr[0] == L'%' ||
    +
    3243 chr[0] == L'!' ||
    +
    3244 chr[0] == L'$' ||
    +
    3245 chr[0] == L'&' ||
    +
    3246 chr[0] == L'\'' ||
    +
    3247 chr[0] == L'(' ||
    +
    3248 chr[0] == L')' ||
    +
    3249 chr[0] == L'*' ||
    +
    3250 chr[0] == L'+' ||
    +
    3251 chr[0] == L',' ||
    +
    3252 chr[0] == L';' ||
    +
    3253 chr[0] == L'=' ||
    +
    3254 chr[0] == L':' ||
    +
    3255 chr[0] == L'@' ||
    +
    3256 chr[0] == L'?' ||
    +
    3257 chr[0] == L'#') && chr[1] == 0 ||
    +
    3258 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::alnum, chr, chr_end) == chr_end)
    +
    3259 {
    +
    3260 interval.start = start;
    +
    3261 return true;
    +
    3262 }
    +
    3263 }
    +
    3264 interval.start = (interval.end = start) + 1;
    +
    3265 return false;
    +
    3266 }
    +
    3267 };
    +
    3268
    +
    3272 template <class T>
    + +
    3274 {
    +
    3275 public:
    + +
    3277 _In_ const std::shared_ptr<basic_parser<T>>& path_char,
    +
    3278 _In_ const std::shared_ptr<basic_parser<T>>& query_start,
    +
    3279 _In_ const std::shared_ptr<basic_parser<T>>& bookmark_start,
    +
    3280 _In_ const std::locale& locale = std::locale()) :
    +
    3281 basic_parser<T>(locale),
    +
    3282 m_path_char(path_char),
    +
    3283 m_query_start(query_start),
    +
    3284 m_bookmark_start(bookmark_start)
    +
    3285 {}
    +
    3286
    +
    3287 virtual bool match(
    +
    3288 _In_reads_or_z_(end) const T* text,
    +
    3289 _In_ size_t start = 0,
    +
    3290 _In_ size_t end = (size_t)-1,
    +
    3291 _In_ int flags = match_default)
    +
    3292 {
    +
    3293 assert(text || start >= end);
    +
    3294
    +
    3295 interval.end = start;
    +
    3296 path.start = start;
    +
    3297 query.start = 1;
    +
    3298 query.end = 0;
    +
    3299 bookmark.start = 1;
    +
    3300 bookmark.end = 0;
    +
    3301
    +
    3302 for (;;) {
    +
    3303 if (interval.end >= end || !text[interval.end])
    +
    3304 break;
    +
    3305 if (m_query_start->match(text, interval.end, end, flags)) {
    +
    3306 path.end = interval.end;
    +
    3307 query.start = interval.end = m_query_start->interval.end;
    +
    3308 for (;;) {
    +
    3309 if (interval.end >= end || !text[interval.end]) {
    +
    3310 query.end = interval.end;
    +
    3311 break;
    +
    3312 }
    +
    3313 if (m_bookmark_start->match(text, interval.end, end, flags)) {
    +
    3314 query.end = interval.end;
    +
    3315 bookmark.start = interval.end = m_bookmark_start->interval.end;
    +
    3316 for (;;) {
    +
    3317 if (interval.end >= end || !text[interval.end]) {
    +
    3318 bookmark.end = interval.end;
    +
    3319 break;
    +
    3320 }
    +
    3321 if (m_path_char->match(text, interval.end, end, flags))
    +
    3322 interval.end = m_path_char->interval.end;
    +
    3323 else {
    +
    3324 bookmark.end = interval.end;
    +
    3325 break;
    +
    3326 }
    +
    3327 }
    +
    3328 interval.start = start;
    +
    3329 return true;
    +
    3330 }
    +
    3331 if (m_path_char->match(text, interval.end, end, flags))
    +
    3332 interval.end = m_path_char->interval.end;
    +
    3333 else {
    +
    3334 query.end = interval.end;
    +
    3335 break;
    +
    3336 }
    +
    3337 }
    +
    3338 interval.start = start;
    +
    3339 return true;
    +
    3340 }
    +
    3341 if (m_bookmark_start->match(text, interval.end, end, flags)) {
    +
    3342 path.end = interval.end;
    +
    3343 bookmark.start = interval.end = m_bookmark_start->interval.end;
    +
    3344 for (;;) {
    +
    3345 if (interval.end >= end || !text[interval.end]) {
    +
    3346 bookmark.end = interval.end;
    +
    3347 break;
    +
    3348 }
    +
    3349 if (m_path_char->match(text, interval.end, end, flags))
    +
    3350 interval.end = m_path_char->interval.end;
    +
    3351 else {
    +
    3352 bookmark.end = interval.end;
    +
    3353 break;
    +
    3354 }
    +
    3355 }
    +
    3356 interval.start = start;
    +
    3357 return true;
    +
    3358 }
    +
    3359 if (m_path_char->match(text, interval.end, end, flags))
    +
    3360 interval.end = m_path_char->interval.end;
    +
    3361 else
    +
    3362 break;
    +
    3363 }
    +
    3364
    +
    3365 if (start < interval.end) {
    +
    3366 path.end = interval.end;
    +
    3367 interval.start = start;
    +
    3368 return true;
    +
    3369 }
    +
    3370
    3371 path.start = 1;
    3372 path.end = 0;
    -
    3373 query.start = 1;
    -
    3374 query.end = 0;
    -
    3375 bookmark.start = 1;
    -
    3376 bookmark.end = 0;
    - -
    3378 }
    -
    3379
    -
    3380 public:
    - - -
    3383 stdex::interval<size_t> bookmark;
    -
    3384
    -
    3385 protected:
    -
    3386 std::shared_ptr<basic_tester<T>> m_path_char;
    -
    3387 std::shared_ptr<basic_tester<T>> m_query_start;
    -
    3388 std::shared_ptr<basic_tester<T>> m_bookmark_start;
    -
    3389 };
    -
    3390
    - - -
    3393#ifdef _UNICODE
    -
    3394 using turl_path = wurl_path;
    -
    3395#else
    -
    3396 using turl_path = url_path;
    -
    3397#endif
    - -
    3399
    -
    3403 template <class T>
    -
    3404 class basic_url : public basic_tester<T>
    -
    3405 {
    -
    3406 public:
    -
    3407 basic_url(
    -
    3408 _In_ const std::shared_ptr<basic_tester<T>>& _http_scheme,
    -
    3409 _In_ const std::shared_ptr<basic_tester<T>>& _ftp_scheme,
    -
    3410 _In_ const std::shared_ptr<basic_tester<T>>& _mailto_scheme,
    -
    3411 _In_ const std::shared_ptr<basic_tester<T>>& _file_scheme,
    -
    3412 _In_ const std::shared_ptr<basic_tester<T>>& colon,
    -
    3413 _In_ const std::shared_ptr<basic_tester<T>>& slash,
    -
    3414 _In_ const std::shared_ptr<basic_tester<T>>& _username,
    -
    3415 _In_ const std::shared_ptr<basic_tester<T>>& _password,
    -
    3416 _In_ const std::shared_ptr<basic_tester<T>>& at,
    -
    3417 _In_ const std::shared_ptr<basic_tester<T>>& ip_lbracket,
    -
    3418 _In_ const std::shared_ptr<basic_tester<T>>& ip_rbracket,
    -
    3419 _In_ const std::shared_ptr<basic_tester<T>>& _ipv4_host,
    -
    3420 _In_ const std::shared_ptr<basic_tester<T>>& _ipv6_host,
    -
    3421 _In_ const std::shared_ptr<basic_tester<T>>& _dns_host,
    -
    3422 _In_ const std::shared_ptr<basic_tester<T>>& _port,
    -
    3423 _In_ const std::shared_ptr<basic_tester<T>>& _path,
    -
    3424 _In_ const std::locale& locale = std::locale()) :
    -
    3425 basic_tester<T>(locale),
    -
    3426 http_scheme(_http_scheme),
    -
    3427 ftp_scheme(_ftp_scheme),
    -
    3428 mailto_scheme(_mailto_scheme),
    -
    3429 file_scheme(_file_scheme),
    -
    3430 m_colon(colon),
    -
    3431 m_slash(slash),
    -
    3432 username(_username),
    -
    3433 password(_password),
    -
    3434 m_at(at),
    -
    3435 m_ip_lbracket(ip_lbracket),
    -
    3436 m_ip_rbracket(ip_rbracket),
    -
    3437 ipv4_host(_ipv4_host),
    -
    3438 ipv6_host(_ipv6_host),
    -
    3439 dns_host(_dns_host),
    -
    3440 port(_port),
    -
    3441 path(_path)
    -
    3442 {}
    -
    3443
    -
    3444 virtual bool match(
    -
    3445 _In_reads_or_z_(end) const T* text,
    -
    3446 _In_ size_t start = 0,
    -
    3447 _In_ size_t end = (size_t)-1,
    -
    3448 _In_ int flags = match_default)
    -
    3449 {
    -
    3450 assert(text || start >= end);
    -
    3451
    -
    3452 interval.end = start;
    +
    3373 bookmark.start = 1;
    +
    3374 bookmark.end = 0;
    +
    3375 interval.start = (interval.end = start) + 1;
    +
    3376 return false;
    +
    3377 }
    +
    3378
    +
    3379 virtual void invalidate()
    +
    3380 {
    +
    3381 path.start = 1;
    +
    3382 path.end = 0;
    +
    3383 query.start = 1;
    +
    3384 query.end = 0;
    +
    3385 bookmark.start = 1;
    +
    3386 bookmark.end = 0;
    + +
    3388 }
    +
    3389
    +
    3390 public:
    + + +
    3393 stdex::interval<size_t> bookmark;
    +
    3394
    +
    3395 protected:
    +
    3396 std::shared_ptr<basic_parser<T>> m_path_char;
    +
    3397 std::shared_ptr<basic_parser<T>> m_query_start;
    +
    3398 std::shared_ptr<basic_parser<T>> m_bookmark_start;
    +
    3399 };
    +
    3400
    + + +
    3403#ifdef _UNICODE
    +
    3404 using turl_path = wurl_path;
    +
    3405#else
    +
    3406 using turl_path = url_path;
    +
    3407#endif
    + +
    3409
    +
    3413 template <class T>
    +
    3414 class basic_url : public basic_parser<T>
    +
    3415 {
    +
    3416 public:
    +
    3417 basic_url(
    +
    3418 _In_ const std::shared_ptr<basic_parser<T>>& _http_scheme,
    +
    3419 _In_ const std::shared_ptr<basic_parser<T>>& _ftp_scheme,
    +
    3420 _In_ const std::shared_ptr<basic_parser<T>>& _mailto_scheme,
    +
    3421 _In_ const std::shared_ptr<basic_parser<T>>& _file_scheme,
    +
    3422 _In_ const std::shared_ptr<basic_parser<T>>& colon,
    +
    3423 _In_ const std::shared_ptr<basic_parser<T>>& slash,
    +
    3424 _In_ const std::shared_ptr<basic_parser<T>>& _username,
    +
    3425 _In_ const std::shared_ptr<basic_parser<T>>& _password,
    +
    3426 _In_ const std::shared_ptr<basic_parser<T>>& at,
    +
    3427 _In_ const std::shared_ptr<basic_parser<T>>& ip_lbracket,
    +
    3428 _In_ const std::shared_ptr<basic_parser<T>>& ip_rbracket,
    +
    3429 _In_ const std::shared_ptr<basic_parser<T>>& _ipv4_host,
    +
    3430 _In_ const std::shared_ptr<basic_parser<T>>& _ipv6_host,
    +
    3431 _In_ const std::shared_ptr<basic_parser<T>>& _dns_host,
    +
    3432 _In_ const std::shared_ptr<basic_parser<T>>& _port,
    +
    3433 _In_ const std::shared_ptr<basic_parser<T>>& _path,
    +
    3434 _In_ const std::locale& locale = std::locale()) :
    +
    3435 basic_parser<T>(locale),
    +
    3436 http_scheme(_http_scheme),
    +
    3437 ftp_scheme(_ftp_scheme),
    +
    3438 mailto_scheme(_mailto_scheme),
    +
    3439 file_scheme(_file_scheme),
    +
    3440 m_colon(colon),
    +
    3441 m_slash(slash),
    +
    3442 username(_username),
    +
    3443 password(_password),
    +
    3444 m_at(at),
    +
    3445 m_ip_lbracket(ip_lbracket),
    +
    3446 m_ip_rbracket(ip_rbracket),
    +
    3447 ipv4_host(_ipv4_host),
    +
    3448 ipv6_host(_ipv6_host),
    +
    3449 dns_host(_dns_host),
    +
    3450 port(_port),
    +
    3451 path(_path)
    +
    3452 {}
    3453
    -
    3454 if (http_scheme->match(text, interval.end, end, flags) &&
    -
    3455 m_colon->match(text, http_scheme->interval.end, end, flags) &&
    -
    3456 m_slash->match(text, m_colon->interval.end, end, flags) &&
    -
    3457 m_slash->match(text, m_slash->interval.end, end, flags))
    -
    3458 {
    -
    3459 // http://
    -
    3460 interval.end = m_slash->interval.end;
    -
    3461 ftp_scheme->invalidate();
    -
    3462 mailto_scheme->invalidate();
    -
    3463 file_scheme->invalidate();
    -
    3464 }
    -
    3465 else if (ftp_scheme->match(text, interval.end, end, flags) &&
    -
    3466 m_colon->match(text, ftp_scheme->interval.end, end, flags) &&
    -
    3467 m_slash->match(text, m_colon->interval.end, end, flags) &&
    -
    3468 m_slash->match(text, m_slash->interval.end, end, flags))
    -
    3469 {
    -
    3470 // ftp://
    -
    3471 interval.end = m_slash->interval.end;
    -
    3472 http_scheme->invalidate();
    -
    3473 mailto_scheme->invalidate();
    -
    3474 file_scheme->invalidate();
    -
    3475 }
    -
    3476 else if (mailto_scheme->match(text, interval.end, end, flags) &&
    -
    3477 m_colon->match(text, mailto_scheme->interval.end, end, flags))
    -
    3478 {
    -
    3479 // mailto:
    -
    3480 interval.end = m_colon->interval.end;
    -
    3481 http_scheme->invalidate();
    -
    3482 ftp_scheme->invalidate();
    -
    3483 file_scheme->invalidate();
    -
    3484 }
    -
    3485 else if (file_scheme->match(text, interval.end, end, flags) &&
    -
    3486 m_colon->match(text, file_scheme->interval.end, end, flags) &&
    -
    3487 m_slash->match(text, m_colon->interval.end, end, flags) &&
    -
    3488 m_slash->match(text, m_slash->interval.end, end, flags))
    -
    3489 {
    -
    3490 // file://
    -
    3491 interval.end = m_slash->interval.end;
    -
    3492 http_scheme->invalidate();
    -
    3493 ftp_scheme->invalidate();
    -
    3494 mailto_scheme->invalidate();
    -
    3495 }
    -
    3496 else {
    -
    3497 // Default to http:
    -
    3498 http_scheme->invalidate();
    -
    3499 ftp_scheme->invalidate();
    -
    3500 mailto_scheme->invalidate();
    -
    3501 file_scheme->invalidate();
    -
    3502 }
    -
    3503
    -
    3504 if (ftp_scheme->interval) {
    -
    3505 if (username->match(text, interval.end, end, flags)) {
    -
    3506 if (m_colon->match(text, username->interval.end, end, flags) &&
    -
    3507 password->match(text, m_colon->interval.end, end, flags) &&
    -
    3508 m_at->match(text, password->interval.end, end, flags))
    -
    3509 {
    -
    3510 // Username and password
    -
    3511 interval.end = m_at->interval.end;
    -
    3512 }
    -
    3513 else if (m_at->match(text, interval.end, end, flags)) {
    -
    3514 // Username only
    -
    3515 interval.end = m_at->interval.end;
    -
    3516 password->invalidate();
    -
    3517 }
    -
    3518 else {
    -
    3519 username->invalidate();
    -
    3520 password->invalidate();
    -
    3521 }
    -
    3522 }
    -
    3523 else {
    -
    3524 username->invalidate();
    -
    3525 password->invalidate();
    -
    3526 }
    -
    3527
    -
    3528 if (ipv4_host->match(text, interval.end, end, flags)) {
    -
    3529 // Host is IPv4
    -
    3530 interval.end = ipv4_host->interval.end;
    -
    3531 ipv6_host->invalidate();
    -
    3532 dns_host->invalidate();
    -
    3533 }
    -
    3534 else if (
    -
    3535 m_ip_lbracket->match(text, interval.end, end, flags) &&
    -
    3536 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    -
    3537 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    -
    3538 {
    -
    3539 // Host is IPv6
    -
    3540 interval.end = m_ip_rbracket->interval.end;
    -
    3541 ipv4_host->invalidate();
    +
    3454 virtual bool match(
    +
    3455 _In_reads_or_z_(end) const T* text,
    +
    3456 _In_ size_t start = 0,
    +
    3457 _In_ size_t end = (size_t)-1,
    +
    3458 _In_ int flags = match_default)
    +
    3459 {
    +
    3460 assert(text || start >= end);
    +
    3461
    +
    3462 interval.end = start;
    +
    3463
    +
    3464 if (http_scheme->match(text, interval.end, end, flags) &&
    +
    3465 m_colon->match(text, http_scheme->interval.end, end, flags) &&
    +
    3466 m_slash->match(text, m_colon->interval.end, end, flags) &&
    +
    3467 m_slash->match(text, m_slash->interval.end, end, flags))
    +
    3468 {
    +
    3469 // http://
    +
    3470 interval.end = m_slash->interval.end;
    +
    3471 ftp_scheme->invalidate();
    +
    3472 mailto_scheme->invalidate();
    +
    3473 file_scheme->invalidate();
    +
    3474 }
    +
    3475 else if (ftp_scheme->match(text, interval.end, end, flags) &&
    +
    3476 m_colon->match(text, ftp_scheme->interval.end, end, flags) &&
    +
    3477 m_slash->match(text, m_colon->interval.end, end, flags) &&
    +
    3478 m_slash->match(text, m_slash->interval.end, end, flags))
    +
    3479 {
    +
    3480 // ftp://
    +
    3481 interval.end = m_slash->interval.end;
    +
    3482 http_scheme->invalidate();
    +
    3483 mailto_scheme->invalidate();
    +
    3484 file_scheme->invalidate();
    +
    3485 }
    +
    3486 else if (mailto_scheme->match(text, interval.end, end, flags) &&
    +
    3487 m_colon->match(text, mailto_scheme->interval.end, end, flags))
    +
    3488 {
    +
    3489 // mailto:
    +
    3490 interval.end = m_colon->interval.end;
    +
    3491 http_scheme->invalidate();
    +
    3492 ftp_scheme->invalidate();
    +
    3493 file_scheme->invalidate();
    +
    3494 }
    +
    3495 else if (file_scheme->match(text, interval.end, end, flags) &&
    +
    3496 m_colon->match(text, file_scheme->interval.end, end, flags) &&
    +
    3497 m_slash->match(text, m_colon->interval.end, end, flags) &&
    +
    3498 m_slash->match(text, m_slash->interval.end, end, flags))
    +
    3499 {
    +
    3500 // file://
    +
    3501 interval.end = m_slash->interval.end;
    +
    3502 http_scheme->invalidate();
    +
    3503 ftp_scheme->invalidate();
    +
    3504 mailto_scheme->invalidate();
    +
    3505 }
    +
    3506 else {
    +
    3507 // Default to http:
    +
    3508 http_scheme->invalidate();
    +
    3509 ftp_scheme->invalidate();
    +
    3510 mailto_scheme->invalidate();
    +
    3511 file_scheme->invalidate();
    +
    3512 }
    +
    3513
    +
    3514 if (ftp_scheme->interval) {
    +
    3515 if (username->match(text, interval.end, end, flags)) {
    +
    3516 if (m_colon->match(text, username->interval.end, end, flags) &&
    +
    3517 password->match(text, m_colon->interval.end, end, flags) &&
    +
    3518 m_at->match(text, password->interval.end, end, flags))
    +
    3519 {
    +
    3520 // Username and password
    +
    3521 interval.end = m_at->interval.end;
    +
    3522 }
    +
    3523 else if (m_at->match(text, interval.end, end, flags)) {
    +
    3524 // Username only
    +
    3525 interval.end = m_at->interval.end;
    +
    3526 password->invalidate();
    +
    3527 }
    +
    3528 else {
    +
    3529 username->invalidate();
    +
    3530 password->invalidate();
    +
    3531 }
    +
    3532 }
    +
    3533 else {
    +
    3534 username->invalidate();
    +
    3535 password->invalidate();
    +
    3536 }
    +
    3537
    +
    3538 if (ipv4_host->match(text, interval.end, end, flags)) {
    +
    3539 // Host is IPv4
    +
    3540 interval.end = ipv4_host->interval.end;
    +
    3541 ipv6_host->invalidate();
    3542 dns_host->invalidate();
    3543 }
    -
    3544 else if (dns_host->match(text, interval.end, end, flags)) {
    -
    3545 // Host is hostname
    -
    3546 interval.end = dns_host->interval.end;
    -
    3547 ipv4_host->invalidate();
    -
    3548 ipv6_host->invalidate();
    -
    3549 }
    -
    3550 else {
    -
    3551 invalidate();
    -
    3552 return false;
    +
    3544 else if (
    +
    3545 m_ip_lbracket->match(text, interval.end, end, flags) &&
    +
    3546 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    +
    3547 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    +
    3548 {
    +
    3549 // Host is IPv6
    +
    3550 interval.end = m_ip_rbracket->interval.end;
    +
    3551 ipv4_host->invalidate();
    +
    3552 dns_host->invalidate();
    3553 }
    -
    3554
    -
    3555 if (m_colon->match(text, interval.end, end, flags) &&
    -
    3556 port->match(text, m_colon->interval.end, end, flags))
    -
    3557 {
    -
    3558 // Port
    -
    3559 interval.end = port->interval.end;
    -
    3560 }
    -
    3561 else
    -
    3562 port->invalidate();
    -
    3563
    -
    3564 if (path->match(text, interval.end, end, flags)) {
    -
    3565 // Path
    -
    3566 interval.end = path->interval.end;
    -
    3567 }
    -
    3568
    -
    3569 interval.start = start;
    -
    3570 return true;
    -
    3571 }
    -
    3572
    -
    3573 if (mailto_scheme->interval) {
    -
    3574 if (username->match(text, interval.end, end, flags) &&
    -
    3575 m_at->match(text, username->interval.end, end, flags))
    -
    3576 {
    -
    3577 // Username
    -
    3578 interval.end = m_at->interval.end;
    -
    3579 }
    -
    3580 else {
    -
    3581 invalidate();
    -
    3582 return false;
    -
    3583 }
    -
    3584
    -
    3585 if (m_ip_lbracket->match(text, interval.end, end, flags) &&
    -
    3586 ipv4_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    -
    3587 m_ip_rbracket->match(text, ipv4_host->interval.end, end, flags))
    -
    3588 {
    -
    3589 // Host is IPv4
    -
    3590 interval.end = m_ip_rbracket->interval.end;
    -
    3591 ipv6_host->invalidate();
    -
    3592 dns_host->invalidate();
    +
    3554 else if (dns_host->match(text, interval.end, end, flags)) {
    +
    3555 // Host is hostname
    +
    3556 interval.end = dns_host->interval.end;
    +
    3557 ipv4_host->invalidate();
    +
    3558 ipv6_host->invalidate();
    +
    3559 }
    +
    3560 else {
    +
    3561 invalidate();
    +
    3562 return false;
    +
    3563 }
    +
    3564
    +
    3565 if (m_colon->match(text, interval.end, end, flags) &&
    +
    3566 port->match(text, m_colon->interval.end, end, flags))
    +
    3567 {
    +
    3568 // Port
    +
    3569 interval.end = port->interval.end;
    +
    3570 }
    +
    3571 else
    +
    3572 port->invalidate();
    +
    3573
    +
    3574 if (path->match(text, interval.end, end, flags)) {
    +
    3575 // Path
    +
    3576 interval.end = path->interval.end;
    +
    3577 }
    +
    3578
    +
    3579 interval.start = start;
    +
    3580 return true;
    +
    3581 }
    +
    3582
    +
    3583 if (mailto_scheme->interval) {
    +
    3584 if (username->match(text, interval.end, end, flags) &&
    +
    3585 m_at->match(text, username->interval.end, end, flags))
    +
    3586 {
    +
    3587 // Username
    +
    3588 interval.end = m_at->interval.end;
    +
    3589 }
    +
    3590 else {
    +
    3591 invalidate();
    +
    3592 return false;
    3593 }
    -
    3594 else if (
    -
    3595 m_ip_lbracket->match(text, interval.end, end, flags) &&
    -
    3596 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    -
    3597 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    +
    3594
    +
    3595 if (m_ip_lbracket->match(text, interval.end, end, flags) &&
    +
    3596 ipv4_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    +
    3597 m_ip_rbracket->match(text, ipv4_host->interval.end, end, flags))
    3598 {
    -
    3599 // Host is IPv6
    +
    3599 // Host is IPv4
    3600 interval.end = m_ip_rbracket->interval.end;
    -
    3601 ipv4_host->invalidate();
    +
    3601 ipv6_host->invalidate();
    3602 dns_host->invalidate();
    3603 }
    -
    3604 else if (dns_host->match(text, interval.end, end, flags)) {
    -
    3605 // Host is hostname
    -
    3606 interval.end = dns_host->interval.end;
    -
    3607 ipv4_host->invalidate();
    -
    3608 ipv6_host->invalidate();
    -
    3609 }
    -
    3610 else {
    -
    3611 invalidate();
    -
    3612 return false;
    +
    3604 else if (
    +
    3605 m_ip_lbracket->match(text, interval.end, end, flags) &&
    +
    3606 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    +
    3607 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    +
    3608 {
    +
    3609 // Host is IPv6
    +
    3610 interval.end = m_ip_rbracket->interval.end;
    +
    3611 ipv4_host->invalidate();
    +
    3612 dns_host->invalidate();
    3613 }
    -
    3614
    -
    3615 password->invalidate();
    -
    3616 port->invalidate();
    -
    3617 path->invalidate();
    -
    3618 interval.start = start;
    -
    3619 return true;
    -
    3620 }
    -
    3621
    -
    3622 if (file_scheme->interval) {
    -
    3623 if (path->match(text, interval.end, end, flags)) {
    -
    3624 // Path
    -
    3625 interval.end = path->interval.end;
    -
    3626 }
    -
    3627
    -
    3628 username->invalidate();
    -
    3629 password->invalidate();
    -
    3630 ipv4_host->invalidate();
    -
    3631 ipv6_host->invalidate();
    -
    3632 dns_host->invalidate();
    -
    3633 port->invalidate();
    -
    3634 interval.start = start;
    -
    3635 return true;
    -
    3636 }
    +
    3614 else if (dns_host->match(text, interval.end, end, flags)) {
    +
    3615 // Host is hostname
    +
    3616 interval.end = dns_host->interval.end;
    +
    3617 ipv4_host->invalidate();
    +
    3618 ipv6_host->invalidate();
    +
    3619 }
    +
    3620 else {
    +
    3621 invalidate();
    +
    3622 return false;
    +
    3623 }
    +
    3624
    +
    3625 password->invalidate();
    +
    3626 port->invalidate();
    +
    3627 path->invalidate();
    +
    3628 interval.start = start;
    +
    3629 return true;
    +
    3630 }
    +
    3631
    +
    3632 if (file_scheme->interval) {
    +
    3633 if (path->match(text, interval.end, end, flags)) {
    +
    3634 // Path
    +
    3635 interval.end = path->interval.end;
    +
    3636 }
    3637
    -
    3638 // "http://" found or defaulted to
    -
    3639
    -
    3640 // If "http://" explicit, test for username&password.
    -
    3641 if (http_scheme->interval &&
    -
    3642 username->match(text, interval.end, end, flags))
    -
    3643 {
    -
    3644 if (m_colon->match(text, username->interval.end, end, flags) &&
    -
    3645 password->match(text, m_colon->interval.end, end, flags) &&
    -
    3646 m_at->match(text, password->interval.end, end, flags))
    -
    3647 {
    -
    3648 // Username and password
    -
    3649 interval.end = m_at->interval.end;
    -
    3650 }
    -
    3651 else if (m_at->match(text, username->interval.end, end, flags)) {
    -
    3652 // Username only
    -
    3653 interval.end = m_at->interval.end;
    -
    3654 password->invalidate();
    -
    3655 }
    -
    3656 else {
    -
    3657 username->invalidate();
    -
    3658 password->invalidate();
    -
    3659 }
    -
    3660 }
    -
    3661 else {
    -
    3662 username->invalidate();
    -
    3663 password->invalidate();
    -
    3664 }
    -
    3665
    -
    3666 if (ipv4_host->match(text, interval.end, end, flags)) {
    -
    3667 // Host is IPv4
    -
    3668 interval.end = ipv4_host->interval.end;
    -
    3669 ipv6_host->invalidate();
    -
    3670 dns_host->invalidate();
    -
    3671 }
    -
    3672 else if (
    -
    3673 m_ip_lbracket->match(text, interval.end, end, flags) &&
    -
    3674 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    -
    3675 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    -
    3676 {
    -
    3677 // Host is IPv6
    -
    3678 interval.end = m_ip_rbracket->interval.end;
    -
    3679 ipv4_host->invalidate();
    +
    3638 username->invalidate();
    +
    3639 password->invalidate();
    +
    3640 ipv4_host->invalidate();
    +
    3641 ipv6_host->invalidate();
    +
    3642 dns_host->invalidate();
    +
    3643 port->invalidate();
    +
    3644 interval.start = start;
    +
    3645 return true;
    +
    3646 }
    +
    3647
    +
    3648 // "http://" found or defaulted to
    +
    3649
    +
    3650 // If "http://" explicit, test for username&password.
    +
    3651 if (http_scheme->interval &&
    +
    3652 username->match(text, interval.end, end, flags))
    +
    3653 {
    +
    3654 if (m_colon->match(text, username->interval.end, end, flags) &&
    +
    3655 password->match(text, m_colon->interval.end, end, flags) &&
    +
    3656 m_at->match(text, password->interval.end, end, flags))
    +
    3657 {
    +
    3658 // Username and password
    +
    3659 interval.end = m_at->interval.end;
    +
    3660 }
    +
    3661 else if (m_at->match(text, username->interval.end, end, flags)) {
    +
    3662 // Username only
    +
    3663 interval.end = m_at->interval.end;
    +
    3664 password->invalidate();
    +
    3665 }
    +
    3666 else {
    +
    3667 username->invalidate();
    +
    3668 password->invalidate();
    +
    3669 }
    +
    3670 }
    +
    3671 else {
    +
    3672 username->invalidate();
    +
    3673 password->invalidate();
    +
    3674 }
    +
    3675
    +
    3676 if (ipv4_host->match(text, interval.end, end, flags)) {
    +
    3677 // Host is IPv4
    +
    3678 interval.end = ipv4_host->interval.end;
    +
    3679 ipv6_host->invalidate();
    3680 dns_host->invalidate();
    3681 }
    -
    3682 else if (dns_host->match(text, interval.end, end, flags)) {
    -
    3683 // Host is hostname
    -
    3684 interval.end = dns_host->interval.end;
    -
    3685 ipv4_host->invalidate();
    -
    3686 ipv6_host->invalidate();
    -
    3687 }
    -
    3688 else {
    -
    3689 invalidate();
    -
    3690 return false;
    +
    3682 else if (
    +
    3683 m_ip_lbracket->match(text, interval.end, end, flags) &&
    +
    3684 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    +
    3685 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    +
    3686 {
    +
    3687 // Host is IPv6
    +
    3688 interval.end = m_ip_rbracket->interval.end;
    +
    3689 ipv4_host->invalidate();
    +
    3690 dns_host->invalidate();
    3691 }
    -
    3692
    -
    3693 if (m_colon->match(text, interval.end, end, flags) &&
    -
    3694 port->match(text, m_colon->interval.end, end, flags))
    -
    3695 {
    -
    3696 // Port
    -
    3697 interval.end = port->interval.end;
    -
    3698 }
    -
    3699 else
    -
    3700 port->invalidate();
    -
    3701
    -
    3702 if (path->match(text, interval.end, end, flags)) {
    -
    3703 // Path
    -
    3704 interval.end = path->interval.end;
    -
    3705 }
    -
    3706
    -
    3707 interval.start = start;
    -
    3708 return true;
    -
    3709 }
    -
    3710
    -
    3711 virtual void invalidate()
    -
    3712 {
    -
    3713 http_scheme->invalidate();
    -
    3714 ftp_scheme->invalidate();
    -
    3715 mailto_scheme->invalidate();
    -
    3716 file_scheme->invalidate();
    -
    3717 username->invalidate();
    -
    3718 password->invalidate();
    -
    3719 ipv4_host->invalidate();
    -
    3720 ipv6_host->invalidate();
    -
    3721 dns_host->invalidate();
    -
    3722 port->invalidate();
    -
    3723 path->invalidate();
    - -
    3725 }
    -
    3726
    -
    3727 public:
    -
    3728 std::shared_ptr<basic_tester<T>> http_scheme;
    -
    3729 std::shared_ptr<basic_tester<T>> ftp_scheme;
    -
    3730 std::shared_ptr<basic_tester<T>> mailto_scheme;
    -
    3731 std::shared_ptr<basic_tester<T>> file_scheme;
    -
    3732 std::shared_ptr<basic_tester<T>> username;
    -
    3733 std::shared_ptr<basic_tester<T>> password;
    -
    3734 std::shared_ptr<basic_tester<T>> ipv4_host;
    -
    3735 std::shared_ptr<basic_tester<T>> ipv6_host;
    -
    3736 std::shared_ptr<basic_tester<T>> dns_host;
    -
    3737 std::shared_ptr<basic_tester<T>> port;
    -
    3738 std::shared_ptr<basic_tester<T>> path;
    -
    3739
    -
    3740 protected:
    -
    3741 std::shared_ptr<basic_tester<T>> m_colon;
    -
    3742 std::shared_ptr<basic_tester<T>> m_slash;
    -
    3743 std::shared_ptr<basic_tester<T>> m_at;
    -
    3744 std::shared_ptr<basic_tester<T>> m_ip_lbracket;
    -
    3745 std::shared_ptr<basic_tester<T>> m_ip_rbracket;
    -
    3746 };
    -
    3747
    -
    3748 using url = basic_url<char>;
    -
    3749 using wurl = basic_url<wchar_t>;
    -
    3750#ifdef _UNICODE
    -
    3751 using turl = wurl;
    -
    3752#else
    -
    3753 using turl = url;
    -
    3754#endif
    -
    3755 using sgml_url = basic_url<char>;
    -
    3756
    -
    3760 template <class T>
    - -
    3762 {
    -
    3763 public:
    - -
    3765 _In_ const std::shared_ptr<basic_tester<T>>& _username,
    -
    3766 _In_ const std::shared_ptr<basic_tester<T>>& at,
    -
    3767 _In_ const std::shared_ptr<basic_tester<T>>& ip_lbracket,
    -
    3768 _In_ const std::shared_ptr<basic_tester<T>>& ip_rbracket,
    -
    3769 _In_ const std::shared_ptr<basic_tester<T>>& _ipv4_host,
    -
    3770 _In_ const std::shared_ptr<basic_tester<T>>& _ipv6_host,
    -
    3771 _In_ const std::shared_ptr<basic_tester<T>>& _dns_host,
    -
    3772 _In_ const std::locale& locale = std::locale()) :
    -
    3773 basic_tester<T>(locale),
    -
    3774 username(_username),
    -
    3775 m_at(at),
    -
    3776 m_ip_lbracket(ip_lbracket),
    -
    3777 m_ip_rbracket(ip_rbracket),
    -
    3778 ipv4_host(_ipv4_host),
    -
    3779 ipv6_host(_ipv6_host),
    -
    3780 dns_host(_dns_host)
    -
    3781 {}
    -
    3782
    -
    3783 virtual bool match(
    -
    3784 _In_reads_or_z_(end) const T* text,
    -
    3785 _In_ size_t start = 0,
    -
    3786 _In_ size_t end = (size_t)-1,
    -
    3787 _In_ int flags = match_default)
    -
    3788 {
    -
    3789 assert(text || start >= end);
    -
    3790
    -
    3791 if (username->match(text, start, end, flags) &&
    -
    3792 m_at->match(text, username->interval.end, end, flags))
    -
    3793 {
    -
    3794 // Username@
    -
    3795 if (m_ip_lbracket->match(text, m_at->interval.end, end, flags) &&
    -
    3796 ipv4_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    -
    3797 m_ip_rbracket->match(text, ipv4_host->interval.end, end, flags))
    -
    3798 {
    -
    3799 // Host is IPv4
    -
    3800 interval.end = m_ip_rbracket->interval.end;
    -
    3801 ipv6_host->invalidate();
    -
    3802 dns_host->invalidate();
    -
    3803 }
    -
    3804 else if (
    -
    3805 m_ip_lbracket->match(text, m_at->interval.end, end, flags) &&
    -
    3806 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    -
    3807 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    +
    3692 else if (dns_host->match(text, interval.end, end, flags)) {
    +
    3693 // Host is hostname
    +
    3694 interval.end = dns_host->interval.end;
    +
    3695 ipv4_host->invalidate();
    +
    3696 ipv6_host->invalidate();
    +
    3697 }
    +
    3698 else {
    +
    3699 invalidate();
    +
    3700 return false;
    +
    3701 }
    +
    3702
    +
    3703 if (m_colon->match(text, interval.end, end, flags) &&
    +
    3704 port->match(text, m_colon->interval.end, end, flags))
    +
    3705 {
    +
    3706 // Port
    +
    3707 interval.end = port->interval.end;
    +
    3708 }
    +
    3709 else
    +
    3710 port->invalidate();
    +
    3711
    +
    3712 if (path->match(text, interval.end, end, flags)) {
    +
    3713 // Path
    +
    3714 interval.end = path->interval.end;
    +
    3715 }
    +
    3716
    +
    3717 interval.start = start;
    +
    3718 return true;
    +
    3719 }
    +
    3720
    +
    3721 virtual void invalidate()
    +
    3722 {
    +
    3723 http_scheme->invalidate();
    +
    3724 ftp_scheme->invalidate();
    +
    3725 mailto_scheme->invalidate();
    +
    3726 file_scheme->invalidate();
    +
    3727 username->invalidate();
    +
    3728 password->invalidate();
    +
    3729 ipv4_host->invalidate();
    +
    3730 ipv6_host->invalidate();
    +
    3731 dns_host->invalidate();
    +
    3732 port->invalidate();
    +
    3733 path->invalidate();
    + +
    3735 }
    +
    3736
    +
    3737 public:
    +
    3738 std::shared_ptr<basic_parser<T>> http_scheme;
    +
    3739 std::shared_ptr<basic_parser<T>> ftp_scheme;
    +
    3740 std::shared_ptr<basic_parser<T>> mailto_scheme;
    +
    3741 std::shared_ptr<basic_parser<T>> file_scheme;
    +
    3742 std::shared_ptr<basic_parser<T>> username;
    +
    3743 std::shared_ptr<basic_parser<T>> password;
    +
    3744 std::shared_ptr<basic_parser<T>> ipv4_host;
    +
    3745 std::shared_ptr<basic_parser<T>> ipv6_host;
    +
    3746 std::shared_ptr<basic_parser<T>> dns_host;
    +
    3747 std::shared_ptr<basic_parser<T>> port;
    +
    3748 std::shared_ptr<basic_parser<T>> path;
    +
    3749
    +
    3750 protected:
    +
    3751 std::shared_ptr<basic_parser<T>> m_colon;
    +
    3752 std::shared_ptr<basic_parser<T>> m_slash;
    +
    3753 std::shared_ptr<basic_parser<T>> m_at;
    +
    3754 std::shared_ptr<basic_parser<T>> m_ip_lbracket;
    +
    3755 std::shared_ptr<basic_parser<T>> m_ip_rbracket;
    +
    3756 };
    +
    3757
    +
    3758 using url = basic_url<char>;
    +
    3759 using wurl = basic_url<wchar_t>;
    +
    3760#ifdef _UNICODE
    +
    3761 using turl = wurl;
    +
    3762#else
    +
    3763 using turl = url;
    +
    3764#endif
    +
    3765 using sgml_url = basic_url<char>;
    +
    3766
    +
    3770 template <class T>
    + +
    3772 {
    +
    3773 public:
    + +
    3775 _In_ const std::shared_ptr<basic_parser<T>>& _username,
    +
    3776 _In_ const std::shared_ptr<basic_parser<T>>& at,
    +
    3777 _In_ const std::shared_ptr<basic_parser<T>>& ip_lbracket,
    +
    3778 _In_ const std::shared_ptr<basic_parser<T>>& ip_rbracket,
    +
    3779 _In_ const std::shared_ptr<basic_parser<T>>& _ipv4_host,
    +
    3780 _In_ const std::shared_ptr<basic_parser<T>>& _ipv6_host,
    +
    3781 _In_ const std::shared_ptr<basic_parser<T>>& _dns_host,
    +
    3782 _In_ const std::locale& locale = std::locale()) :
    +
    3783 basic_parser<T>(locale),
    +
    3784 username(_username),
    +
    3785 m_at(at),
    +
    3786 m_ip_lbracket(ip_lbracket),
    +
    3787 m_ip_rbracket(ip_rbracket),
    +
    3788 ipv4_host(_ipv4_host),
    +
    3789 ipv6_host(_ipv6_host),
    +
    3790 dns_host(_dns_host)
    +
    3791 {}
    +
    3792
    +
    3793 virtual bool match(
    +
    3794 _In_reads_or_z_(end) const T* text,
    +
    3795 _In_ size_t start = 0,
    +
    3796 _In_ size_t end = (size_t)-1,
    +
    3797 _In_ int flags = match_default)
    +
    3798 {
    +
    3799 assert(text || start >= end);
    +
    3800
    +
    3801 if (username->match(text, start, end, flags) &&
    +
    3802 m_at->match(text, username->interval.end, end, flags))
    +
    3803 {
    +
    3804 // Username@
    +
    3805 if (m_ip_lbracket->match(text, m_at->interval.end, end, flags) &&
    +
    3806 ipv4_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    +
    3807 m_ip_rbracket->match(text, ipv4_host->interval.end, end, flags))
    3808 {
    -
    3809 // Host is IPv6
    +
    3809 // Host is IPv4
    3810 interval.end = m_ip_rbracket->interval.end;
    -
    3811 ipv4_host->invalidate();
    +
    3811 ipv6_host->invalidate();
    3812 dns_host->invalidate();
    3813 }
    -
    3814 else if (dns_host->match(text, m_at->interval.end, end, flags)) {
    -
    3815 // Host is hostname
    -
    3816 interval.end = dns_host->interval.end;
    -
    3817 ipv4_host->invalidate();
    -
    3818 ipv6_host->invalidate();
    -
    3819 }
    -
    3820 else
    -
    3821 goto error;
    -
    3822 interval.start = start;
    -
    3823 return true;
    -
    3824 }
    -
    3825
    -
    3826 error:
    -
    3827 username->invalidate();
    -
    3828 ipv4_host->invalidate();
    -
    3829 ipv6_host->invalidate();
    -
    3830 dns_host->invalidate();
    -
    3831 interval.start = (interval.end = start) + 1;
    -
    3832 return false;
    -
    3833 }
    -
    3834
    -
    3835 virtual void invalidate()
    -
    3836 {
    +
    3814 else if (
    +
    3815 m_ip_lbracket->match(text, m_at->interval.end, end, flags) &&
    +
    3816 ipv6_host->match(text, m_ip_lbracket->interval.end, end, flags) &&
    +
    3817 m_ip_rbracket->match(text, ipv6_host->interval.end, end, flags))
    +
    3818 {
    +
    3819 // Host is IPv6
    +
    3820 interval.end = m_ip_rbracket->interval.end;
    +
    3821 ipv4_host->invalidate();
    +
    3822 dns_host->invalidate();
    +
    3823 }
    +
    3824 else if (dns_host->match(text, m_at->interval.end, end, flags)) {
    +
    3825 // Host is hostname
    +
    3826 interval.end = dns_host->interval.end;
    +
    3827 ipv4_host->invalidate();
    +
    3828 ipv6_host->invalidate();
    +
    3829 }
    +
    3830 else
    +
    3831 goto error;
    +
    3832 interval.start = start;
    +
    3833 return true;
    +
    3834 }
    +
    3835
    +
    3836 error:
    3837 username->invalidate();
    3838 ipv4_host->invalidate();
    3839 ipv6_host->invalidate();
    3840 dns_host->invalidate();
    - -
    3842 }
    -
    3843
    -
    3844 public:
    -
    3845 std::shared_ptr<basic_tester<T>> username;
    -
    3846 std::shared_ptr<basic_tester<T>> ipv4_host;
    -
    3847 std::shared_ptr<basic_tester<T>> ipv6_host;
    -
    3848 std::shared_ptr<basic_tester<T>> dns_host;
    -
    3849
    -
    3850 protected:
    -
    3851 std::shared_ptr<basic_tester<T>> m_at;
    -
    3852 std::shared_ptr<basic_tester<T>> m_ip_lbracket;
    -
    3853 std::shared_ptr<basic_tester<T>> m_ip_rbracket;
    -
    3854 };
    -
    3855
    - - -
    3858#ifdef _UNICODE
    - -
    3860#else
    - -
    3862#endif
    - -
    3864
    -
    3868 template <class T>
    - -
    3870 {
    -
    3871 public:
    - -
    3873 _In_ const std::shared_ptr<basic_tester<T>>& _emoticon,
    -
    3874 _In_ const std::shared_ptr<basic_tester<T>>& _apex,
    -
    3875 _In_ const std::shared_ptr<basic_tester<T>>& _eyes,
    -
    3876 _In_ const std::shared_ptr<basic_tester<T>>& _nose,
    -
    3877 _In_ const std::shared_ptr<basic_set<T>>& _mouth,
    -
    3878 _In_ const std::locale& locale = std::locale()) :
    -
    3879 basic_tester<T>(locale),
    -
    3880 emoticon(_emoticon),
    -
    3881 apex(_apex),
    -
    3882 eyes(_eyes),
    -
    3883 nose(_nose),
    -
    3884 mouth(_mouth)
    -
    3885 {}
    -
    3886
    -
    3887 virtual bool match(
    -
    3888 _In_reads_or_z_(end) const T* text,
    -
    3889 _In_ size_t start = 0,
    -
    3890 _In_ size_t end = (size_t)-1,
    -
    3891 _In_ int flags = match_default)
    -
    3892 {
    -
    3893 assert(text || start >= end);
    -
    3894
    -
    3895 if (emoticon && emoticon->match(text, start, end, flags)) {
    -
    3896 if (apex) apex->invalidate();
    -
    3897 eyes->invalidate();
    -
    3898 if (nose) nose->invalidate();
    -
    3899 mouth->invalidate();
    -
    3900 interval.start = start;
    - -
    3902 return true;
    -
    3903 }
    +
    3841 interval.start = (interval.end = start) + 1;
    +
    3842 return false;
    +
    3843 }
    +
    3844
    +
    3845 virtual void invalidate()
    +
    3846 {
    +
    3847 username->invalidate();
    +
    3848 ipv4_host->invalidate();
    +
    3849 ipv6_host->invalidate();
    +
    3850 dns_host->invalidate();
    + +
    3852 }
    +
    3853
    +
    3854 public:
    +
    3855 std::shared_ptr<basic_parser<T>> username;
    +
    3856 std::shared_ptr<basic_parser<T>> ipv4_host;
    +
    3857 std::shared_ptr<basic_parser<T>> ipv6_host;
    +
    3858 std::shared_ptr<basic_parser<T>> dns_host;
    +
    3859
    +
    3860 protected:
    +
    3861 std::shared_ptr<basic_parser<T>> m_at;
    +
    3862 std::shared_ptr<basic_parser<T>> m_ip_lbracket;
    +
    3863 std::shared_ptr<basic_parser<T>> m_ip_rbracket;
    +
    3864 };
    +
    3865
    + + +
    3868#ifdef _UNICODE
    + +
    3870#else
    + +
    3872#endif
    + +
    3874
    +
    3878 template <class T>
    + +
    3880 {
    +
    3881 public:
    + +
    3883 _In_ const std::shared_ptr<basic_parser<T>>& _emoticon,
    +
    3884 _In_ const std::shared_ptr<basic_parser<T>>& _apex,
    +
    3885 _In_ const std::shared_ptr<basic_parser<T>>& _eyes,
    +
    3886 _In_ const std::shared_ptr<basic_parser<T>>& _nose,
    +
    3887 _In_ const std::shared_ptr<basic_set<T>>& _mouth,
    +
    3888 _In_ const std::locale& locale = std::locale()) :
    +
    3889 basic_parser<T>(locale),
    +
    3890 emoticon(_emoticon),
    +
    3891 apex(_apex),
    +
    3892 eyes(_eyes),
    +
    3893 nose(_nose),
    +
    3894 mouth(_mouth)
    +
    3895 {}
    +
    3896
    +
    3897 virtual bool match(
    +
    3898 _In_reads_or_z_(end) const T* text,
    +
    3899 _In_ size_t start = 0,
    +
    3900 _In_ size_t end = (size_t)-1,
    +
    3901 _In_ int flags = match_default)
    +
    3902 {
    +
    3903 assert(text || start >= end);
    3904
    -
    3905 interval.end = start;
    -
    3906
    -
    3907 if (apex && apex->match(text, interval.end, end, flags))
    -
    3908 interval.end = apex->interval.end;
    -
    3909
    -
    3910 if (eyes->match(text, interval.end, end, flags)) {
    -
    3911 if (nose && nose->match(text, eyes->interval.end, end, flags) &&
    -
    3912 mouth->match(text, nose->interval.end, end, flags))
    -
    3913 {
    -
    3914 size_t
    -
    3915 start_mouth = mouth->interval.start,
    -
    3916 hit_offset = mouth->hit_offset;
    -
    3917 // Mouth may repeat :-)))))))
    -
    3918 for (interval.end = mouth->interval.end; mouth->match(text, interval.end, end, flags) && mouth->hit_offset == hit_offset; interval.end = mouth->interval.end);
    -
    3919 mouth->interval.start = start_mouth;
    -
    3920 mouth->interval.end = interval.end;
    -
    3921 interval.start = start;
    -
    3922 return true;
    -
    3923 }
    -
    3924 if (mouth->match(text, eyes->interval.end, end, flags)) {
    -
    3925 size_t
    -
    3926 start_mouth = mouth->interval.start,
    -
    3927 hit_offset = mouth->hit_offset;
    -
    3928 // Mouth may repeat :-)))))))
    -
    3929 for (interval.end = mouth->interval.end; mouth->match(text, interval.end, end, flags) && mouth->hit_offset == hit_offset; interval.end = mouth->interval.end);
    -
    3930 if (nose) nose->invalidate();
    -
    3931 mouth->interval.start = start_mouth;
    -
    3932 mouth->interval.end = interval.end;
    -
    3933 interval.start = start;
    -
    3934 return true;
    -
    3935 }
    -
    3936 }
    -
    3937
    -
    3938 if (emoticon) emoticon->invalidate();
    -
    3939 if (apex) apex->invalidate();
    -
    3940 eyes->invalidate();
    -
    3941 if (nose) nose->invalidate();
    -
    3942 mouth->invalidate();
    -
    3943 interval.start = (interval.end = start) + 1;
    -
    3944 return false;
    -
    3945 }
    -
    3946
    -
    3947 virtual void invalidate()
    -
    3948 {
    -
    3949 if (emoticon) emoticon->invalidate();
    -
    3950 if (apex) apex->invalidate();
    -
    3951 eyes->invalidate();
    -
    3952 if (nose) nose->invalidate();
    -
    3953 mouth->invalidate();
    - +
    3905 if (emoticon && emoticon->match(text, start, end, flags)) {
    +
    3906 if (apex) apex->invalidate();
    +
    3907 eyes->invalidate();
    +
    3908 if (nose) nose->invalidate();
    +
    3909 mouth->invalidate();
    +
    3910 interval.start = start;
    + +
    3912 return true;
    +
    3913 }
    +
    3914
    +
    3915 interval.end = start;
    +
    3916
    +
    3917 if (apex && apex->match(text, interval.end, end, flags))
    +
    3918 interval.end = apex->interval.end;
    +
    3919
    +
    3920 if (eyes->match(text, interval.end, end, flags)) {
    +
    3921 if (nose && nose->match(text, eyes->interval.end, end, flags) &&
    +
    3922 mouth->match(text, nose->interval.end, end, flags))
    +
    3923 {
    +
    3924 size_t
    +
    3925 start_mouth = mouth->interval.start,
    +
    3926 hit_offset = mouth->hit_offset;
    +
    3927 // Mouth may repeat :-)))))))
    +
    3928 for (interval.end = mouth->interval.end; mouth->match(text, interval.end, end, flags) && mouth->hit_offset == hit_offset; interval.end = mouth->interval.end);
    +
    3929 mouth->interval.start = start_mouth;
    +
    3930 mouth->interval.end = interval.end;
    +
    3931 interval.start = start;
    +
    3932 return true;
    +
    3933 }
    +
    3934 if (mouth->match(text, eyes->interval.end, end, flags)) {
    +
    3935 size_t
    +
    3936 start_mouth = mouth->interval.start,
    +
    3937 hit_offset = mouth->hit_offset;
    +
    3938 // Mouth may repeat :-)))))))
    +
    3939 for (interval.end = mouth->interval.end; mouth->match(text, interval.end, end, flags) && mouth->hit_offset == hit_offset; interval.end = mouth->interval.end);
    +
    3940 if (nose) nose->invalidate();
    +
    3941 mouth->interval.start = start_mouth;
    +
    3942 mouth->interval.end = interval.end;
    +
    3943 interval.start = start;
    +
    3944 return true;
    +
    3945 }
    +
    3946 }
    +
    3947
    +
    3948 if (emoticon) emoticon->invalidate();
    +
    3949 if (apex) apex->invalidate();
    +
    3950 eyes->invalidate();
    +
    3951 if (nose) nose->invalidate();
    +
    3952 mouth->invalidate();
    +
    3953 interval.start = (interval.end = start) + 1;
    +
    3954 return false;
    3955 }
    3956
    -
    3957 public:
    -
    3958 std::shared_ptr<basic_tester<T>> emoticon;
    -
    3959 std::shared_ptr<basic_tester<T>> apex;
    -
    3960 std::shared_ptr<basic_tester<T>> eyes;
    -
    3961 std::shared_ptr<basic_tester<T>> nose;
    -
    3962 std::shared_ptr<basic_set<T>> mouth;
    -
    3963 };
    -
    3964
    - - -
    3967#ifdef _UNICODE
    -
    3968 using temoticon = wemoticon;
    -
    3969#else
    -
    3970 using temoticon = emoticon;
    -
    3971#endif
    - -
    3973
    -
    3977 template <class T>
    -
    3978 class basic_date : public basic_tester<T>
    -
    3979 {
    -
    3980 public:
    -
    3981 enum class format {
    -
    3982 dmy = 0x1,
    -
    3983 mdy = 0x2,
    -
    3984 ymd = 0x4,
    -
    3985 ym = 0x8,
    -
    3986 my = 0x10,
    -
    3987 dm = 0x20,
    -
    3988 md = 0x40,
    -
    3989 };
    -
    3990
    -
    3991 basic_date(
    -
    3992 _In_ int format_mask,
    -
    3993 _In_ const std::shared_ptr<basic_integer<T>>& _day,
    -
    3994 _In_ const std::shared_ptr<basic_integer<T>>& _month,
    -
    3995 _In_ const std::shared_ptr<basic_integer<T>>& _year,
    -
    3996 _In_ const std::shared_ptr<basic_set<T>>& separator,
    -
    3997 _In_ const std::shared_ptr<basic_tester<T>>& space,
    -
    3998 _In_ const std::locale& locale = std::locale()) :
    -
    3999 basic_tester<T>(locale),
    -
    4000 format(0),
    -
    4001 m_format_mask(format_mask),
    -
    4002 day(_day),
    -
    4003 month(_month),
    -
    4004 year(_year),
    -
    4005 m_separator(separator),
    -
    4006 m_space(space)
    -
    4007 {}
    -
    4008
    -
    4009 virtual bool match(
    -
    4010 _In_reads_or_z_(end) const T* text,
    -
    4011 _In_ size_t start = 0,
    -
    4012 _In_ size_t end = (size_t)-1,
    -
    4013 _In_ int flags = match_default)
    -
    4014 {
    -
    4015 assert(text || start >= end);
    -
    4016
    -
    4017 const int space_match_flags = flags & ~match_multiline; // Spaces in dates must never be broken in new line.
    -
    4018 if ((m_format_mask & format::dmy) != 0) {
    -
    4019 if (day->match(text, start, end, flags)) {
    -
    4020 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4021 if (m_separator->match(text, interval.end, end, flags)) {
    -
    4022 size_t hit_offset = m_separator->hit_offset;
    -
    4023 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4024 if (month->match(text, interval.end, end, flags)) {
    -
    4025 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4026 if (m_separator->match(text, interval.end, end, flags) &&
    -
    4027 m_separator->hit_offset == hit_offset) // Both separators must match.
    -
    4028 {
    -
    4029 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4030 if (year->match(text, interval.end, end, flags) &&
    -
    4031 is_valid(day->value, month->value))
    -
    4032 {
    -
    4033 interval.start = start;
    -
    4034 interval.end = year->interval.end;
    -
    4035 format = format::dmy;
    -
    4036 return true;
    -
    4037 }
    -
    4038 }
    -
    4039 }
    -
    4040 }
    -
    4041 }
    -
    4042 }
    -
    4043
    -
    4044 if ((m_format_mask & format::mdy) != 0) {
    -
    4045 if (month->match(text, start, end, flags)) {
    -
    4046 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4047 if (m_separator->match(text, interval.end, end, flags)) {
    -
    4048 size_t hit_offset = m_separator->hit_offset;
    -
    4049 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4050 if (day->match(text, interval.end, end, flags)) {
    -
    4051 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4052 if (m_separator->match(text, interval.end, end, flags) &&
    -
    4053 m_separator->hit_offset == hit_offset) // Both separators must match.
    -
    4054 {
    -
    4055 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4056 if (year->match(text, interval.end, end, flags) &&
    -
    4057 is_valid(day->value, month->value))
    -
    4058 {
    -
    4059 interval.start = start;
    -
    4060 interval.end = year->interval.end;
    -
    4061 format = format::mdy;
    -
    4062 return true;
    -
    4063 }
    -
    4064 }
    -
    4065 }
    -
    4066 }
    -
    4067 }
    -
    4068 }
    -
    4069
    -
    4070 if ((m_format_mask & format::ymd) != 0) {
    -
    4071 if (year->match(text, start, end, flags)) {
    -
    4072 for (interval.end = year->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4073 if (m_separator->match(text, interval.end, end, flags)) {
    -
    4074 size_t hit_offset = m_separator->hit_offset;
    -
    4075 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4076 if (month->match(text, interval.end, end, flags)) {
    -
    4077 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4078 if (m_separator->match(text, interval.end, end, flags) &&
    -
    4079 m_separator->hit_offset == hit_offset) // Both separators must match.
    -
    4080 {
    -
    4081 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4082 if (day->match(text, interval.end, end, flags) &&
    -
    4083 is_valid(day->value, month->value))
    -
    4084 {
    -
    4085 interval.start = start;
    -
    4086 interval.end = day->interval.end;
    -
    4087 format = format::ymd;
    -
    4088 return true;
    -
    4089 }
    -
    4090 }
    -
    4091 }
    -
    4092 }
    -
    4093 }
    -
    4094 }
    -
    4095
    -
    4096 if ((m_format_mask & format::ym) != 0) {
    -
    4097 if (year->match(text, start, end, flags)) {
    -
    4098 for (interval.end = year->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4099 if (m_separator->match(text, interval.end, end, flags)) {
    -
    4100 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4101 if (month->match(text, interval.end, end, flags) &&
    -
    4102 is_valid((size_t)-1, month->value))
    -
    4103 {
    -
    4104 if (day) day->invalidate();
    -
    4105 interval.start = start;
    -
    4106 interval.end = month->interval.end;
    -
    4107 format = format::ym;
    -
    4108 return true;
    -
    4109 }
    -
    4110 }
    -
    4111 }
    -
    4112 }
    -
    4113
    -
    4114 if ((m_format_mask & format::my) != 0) {
    -
    4115 if (month->match(text, start, end, flags)) {
    -
    4116 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4117 if (m_separator->match(text, interval.end, end, flags)) {
    -
    4118 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4119 if (year->match(text, interval.end, end, flags) &&
    -
    4120 is_valid((size_t)-1, month->value))
    -
    4121 {
    -
    4122 if (day) day->invalidate();
    -
    4123 interval.start = start;
    -
    4124 interval.end = year->interval.end;
    -
    4125 format = format::my;
    -
    4126 return true;
    -
    4127 }
    -
    4128 }
    -
    4129 }
    -
    4130 }
    -
    4131
    -
    4132 if ((m_format_mask & format::dm) != 0) {
    -
    4133 if (day->match(text, start, end, flags)) {
    -
    4134 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4135 if (m_separator->match(text, interval.end, end, flags)) {
    -
    4136 size_t hit_offset = m_separator->hit_offset;
    -
    4137 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4138 if (month->match(text, interval.end, end, flags) &&
    -
    4139 is_valid(day->value, month->value))
    -
    4140 {
    -
    4141 if (year) year->invalidate();
    -
    4142 interval.start = start;
    -
    4143 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4144 if (m_separator->match(text, interval.end, end, flags) &&
    -
    4145 m_separator->hit_offset == hit_offset) // Both separators must match.
    -
    4146 interval.end = m_separator->interval.end;
    -
    4147 else
    -
    4148 interval.end = month->interval.end;
    -
    4149 format = format::dm;
    -
    4150 return true;
    -
    4151 }
    -
    4152 }
    -
    4153 }
    -
    4154 }
    -
    4155
    -
    4156 if ((m_format_mask & format::md) != 0) {
    -
    4157 if (month->match(text, start, end, flags)) {
    -
    4158 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4159 if (m_separator->match(text, interval.end, end, flags)) {
    -
    4160 size_t hit_offset = m_separator->hit_offset;
    -
    4161 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4162 if (day->match(text, interval.end, end, flags) &&
    -
    4163 is_valid(day->value, month->value))
    -
    4164 {
    -
    4165 if (year) year->invalidate();
    -
    4166 interval.start = start;
    -
    4167 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    -
    4168 if (m_separator->match(text, interval.end, end, flags) &&
    -
    4169 m_separator->hit_offset == hit_offset) // Both separators must match.
    -
    4170 interval.end = m_separator->interval.end;
    -
    4171 else
    -
    4172 interval.end = day->interval.end;
    -
    4173 format = format::md;
    -
    4174 return true;
    -
    4175 }
    -
    4176 }
    -
    4177 }
    -
    4178 }
    -
    4179
    -
    4180 if (day) day->invalidate();
    -
    4181 if (month) month->invalidate();
    -
    4182 if (year) year->invalidate();
    -
    4183 format = 0;
    -
    4184 interval.start = (interval.end = start) + 1;
    -
    4185 return false;
    -
    4186 }
    -
    4187
    -
    4188 virtual void invalidate()
    -
    4189 {
    +
    3957 virtual void invalidate()
    +
    3958 {
    +
    3959 if (emoticon) emoticon->invalidate();
    +
    3960 if (apex) apex->invalidate();
    +
    3961 eyes->invalidate();
    +
    3962 if (nose) nose->invalidate();
    +
    3963 mouth->invalidate();
    + +
    3965 }
    +
    3966
    +
    3967 public:
    +
    3968 std::shared_ptr<basic_parser<T>> emoticon;
    +
    3969 std::shared_ptr<basic_parser<T>> apex;
    +
    3970 std::shared_ptr<basic_parser<T>> eyes;
    +
    3971 std::shared_ptr<basic_parser<T>> nose;
    +
    3972 std::shared_ptr<basic_set<T>> mouth;
    +
    3973 };
    +
    3974
    + + +
    3977#ifdef _UNICODE
    +
    3978 using temoticon = wemoticon;
    +
    3979#else
    +
    3980 using temoticon = emoticon;
    +
    3981#endif
    + +
    3983
    +
    3987 template <class T>
    +
    3988 class basic_date : public basic_parser<T>
    +
    3989 {
    +
    3990 public:
    +
    3991 enum class format {
    +
    3992 dmy = 0x1,
    +
    3993 mdy = 0x2,
    +
    3994 ymd = 0x4,
    +
    3995 ym = 0x8,
    +
    3996 my = 0x10,
    +
    3997 dm = 0x20,
    +
    3998 md = 0x40,
    +
    3999 };
    +
    4000
    +
    4001 basic_date(
    +
    4002 _In_ int format_mask,
    +
    4003 _In_ const std::shared_ptr<basic_integer<T>>& _day,
    +
    4004 _In_ const std::shared_ptr<basic_integer<T>>& _month,
    +
    4005 _In_ const std::shared_ptr<basic_integer<T>>& _year,
    +
    4006 _In_ const std::shared_ptr<basic_set<T>>& separator,
    +
    4007 _In_ const std::shared_ptr<basic_parser<T>>& space,
    +
    4008 _In_ const std::locale& locale = std::locale()) :
    +
    4009 basic_parser<T>(locale),
    +
    4010 format(0),
    +
    4011 m_format_mask(format_mask),
    +
    4012 day(_day),
    +
    4013 month(_month),
    +
    4014 year(_year),
    +
    4015 m_separator(separator),
    +
    4016 m_space(space)
    +
    4017 {}
    +
    4018
    +
    4019 virtual bool match(
    +
    4020 _In_reads_or_z_(end) const T* text,
    +
    4021 _In_ size_t start = 0,
    +
    4022 _In_ size_t end = (size_t)-1,
    +
    4023 _In_ int flags = match_default)
    +
    4024 {
    +
    4025 assert(text || start >= end);
    +
    4026
    +
    4027 const int space_match_flags = flags & ~match_multiline; // Spaces in dates must never be broken in new line.
    +
    4028 if ((m_format_mask & format::dmy) != 0) {
    +
    4029 if (day->match(text, start, end, flags)) {
    +
    4030 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4031 if (m_separator->match(text, interval.end, end, flags)) {
    +
    4032 size_t hit_offset = m_separator->hit_offset;
    +
    4033 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4034 if (month->match(text, interval.end, end, flags)) {
    +
    4035 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4036 if (m_separator->match(text, interval.end, end, flags) &&
    +
    4037 m_separator->hit_offset == hit_offset) // Both separators must match.
    +
    4038 {
    +
    4039 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4040 if (year->match(text, interval.end, end, flags) &&
    +
    4041 is_valid(day->value, month->value))
    +
    4042 {
    +
    4043 interval.start = start;
    +
    4044 interval.end = year->interval.end;
    +
    4045 format = format::dmy;
    +
    4046 return true;
    +
    4047 }
    +
    4048 }
    +
    4049 }
    +
    4050 }
    +
    4051 }
    +
    4052 }
    +
    4053
    +
    4054 if ((m_format_mask & format::mdy) != 0) {
    +
    4055 if (month->match(text, start, end, flags)) {
    +
    4056 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4057 if (m_separator->match(text, interval.end, end, flags)) {
    +
    4058 size_t hit_offset = m_separator->hit_offset;
    +
    4059 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4060 if (day->match(text, interval.end, end, flags)) {
    +
    4061 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4062 if (m_separator->match(text, interval.end, end, flags) &&
    +
    4063 m_separator->hit_offset == hit_offset) // Both separators must match.
    +
    4064 {
    +
    4065 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4066 if (year->match(text, interval.end, end, flags) &&
    +
    4067 is_valid(day->value, month->value))
    +
    4068 {
    +
    4069 interval.start = start;
    +
    4070 interval.end = year->interval.end;
    +
    4071 format = format::mdy;
    +
    4072 return true;
    +
    4073 }
    +
    4074 }
    +
    4075 }
    +
    4076 }
    +
    4077 }
    +
    4078 }
    +
    4079
    +
    4080 if ((m_format_mask & format::ymd) != 0) {
    +
    4081 if (year->match(text, start, end, flags)) {
    +
    4082 for (interval.end = year->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4083 if (m_separator->match(text, interval.end, end, flags)) {
    +
    4084 size_t hit_offset = m_separator->hit_offset;
    +
    4085 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4086 if (month->match(text, interval.end, end, flags)) {
    +
    4087 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4088 if (m_separator->match(text, interval.end, end, flags) &&
    +
    4089 m_separator->hit_offset == hit_offset) // Both separators must match.
    +
    4090 {
    +
    4091 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4092 if (day->match(text, interval.end, end, flags) &&
    +
    4093 is_valid(day->value, month->value))
    +
    4094 {
    +
    4095 interval.start = start;
    +
    4096 interval.end = day->interval.end;
    +
    4097 format = format::ymd;
    +
    4098 return true;
    +
    4099 }
    +
    4100 }
    +
    4101 }
    +
    4102 }
    +
    4103 }
    +
    4104 }
    +
    4105
    +
    4106 if ((m_format_mask & format::ym) != 0) {
    +
    4107 if (year->match(text, start, end, flags)) {
    +
    4108 for (interval.end = year->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4109 if (m_separator->match(text, interval.end, end, flags)) {
    +
    4110 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4111 if (month->match(text, interval.end, end, flags) &&
    +
    4112 is_valid((size_t)-1, month->value))
    +
    4113 {
    +
    4114 if (day) day->invalidate();
    +
    4115 interval.start = start;
    +
    4116 interval.end = month->interval.end;
    +
    4117 format = format::ym;
    +
    4118 return true;
    +
    4119 }
    +
    4120 }
    +
    4121 }
    +
    4122 }
    +
    4123
    +
    4124 if ((m_format_mask & format::my) != 0) {
    +
    4125 if (month->match(text, start, end, flags)) {
    +
    4126 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4127 if (m_separator->match(text, interval.end, end, flags)) {
    +
    4128 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4129 if (year->match(text, interval.end, end, flags) &&
    +
    4130 is_valid((size_t)-1, month->value))
    +
    4131 {
    +
    4132 if (day) day->invalidate();
    +
    4133 interval.start = start;
    +
    4134 interval.end = year->interval.end;
    +
    4135 format = format::my;
    +
    4136 return true;
    +
    4137 }
    +
    4138 }
    +
    4139 }
    +
    4140 }
    +
    4141
    +
    4142 if ((m_format_mask & format::dm) != 0) {
    +
    4143 if (day->match(text, start, end, flags)) {
    +
    4144 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4145 if (m_separator->match(text, interval.end, end, flags)) {
    +
    4146 size_t hit_offset = m_separator->hit_offset;
    +
    4147 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4148 if (month->match(text, interval.end, end, flags) &&
    +
    4149 is_valid(day->value, month->value))
    +
    4150 {
    +
    4151 if (year) year->invalidate();
    +
    4152 interval.start = start;
    +
    4153 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4154 if (m_separator->match(text, interval.end, end, flags) &&
    +
    4155 m_separator->hit_offset == hit_offset) // Both separators must match.
    +
    4156 interval.end = m_separator->interval.end;
    +
    4157 else
    +
    4158 interval.end = month->interval.end;
    +
    4159 format = format::dm;
    +
    4160 return true;
    +
    4161 }
    +
    4162 }
    +
    4163 }
    +
    4164 }
    +
    4165
    +
    4166 if ((m_format_mask & format::md) != 0) {
    +
    4167 if (month->match(text, start, end, flags)) {
    +
    4168 for (interval.end = month->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4169 if (m_separator->match(text, interval.end, end, flags)) {
    +
    4170 size_t hit_offset = m_separator->hit_offset;
    +
    4171 for (interval.end = m_separator->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4172 if (day->match(text, interval.end, end, flags) &&
    +
    4173 is_valid(day->value, month->value))
    +
    4174 {
    +
    4175 if (year) year->invalidate();
    +
    4176 interval.start = start;
    +
    4177 for (interval.end = day->interval.end; m_space->match(text, interval.end, end, space_match_flags); interval.end = m_space->interval.end);
    +
    4178 if (m_separator->match(text, interval.end, end, flags) &&
    +
    4179 m_separator->hit_offset == hit_offset) // Both separators must match.
    +
    4180 interval.end = m_separator->interval.end;
    +
    4181 else
    +
    4182 interval.end = day->interval.end;
    +
    4183 format = format::md;
    +
    4184 return true;
    +
    4185 }
    +
    4186 }
    +
    4187 }
    +
    4188 }
    +
    4189
    4190 if (day) day->invalidate();
    4191 if (month) month->invalidate();
    4192 if (year) year->invalidate();
    4193 format = 0;
    - -
    4195 }
    -
    4196
    -
    4197 protected:
    -
    4198 static inline bool is_valid(size_t day, size_t month)
    +
    4194 interval.start = (interval.end = start) + 1;
    +
    4195 return false;
    +
    4196 }
    +
    4197
    +
    4198 virtual void invalidate()
    4199 {
    -
    4200 if (month == (size_t)-1) {
    -
    4201 // Default to January. This allows validating day only, as January has all 31 days.
    -
    4202 month = 1;
    -
    4203 }
    -
    4204 if (day == (size_t)-1) {
    -
    4205 // Default to 1st day in month. This allows validating month only, as each month has 1st day.
    -
    4206 day = 1;
    -
    4207 }
    -
    4208
    -
    4209 switch (month) {
    -
    4210 case 1:
    -
    4211 case 3:
    -
    4212 case 5:
    -
    4213 case 7:
    -
    4214 case 8:
    -
    4215 case 10:
    -
    4216 case 12:
    -
    4217 return 1 <= day && day <= 31;
    -
    4218 case 2:
    -
    4219 return 1 <= day && day <= 29;
    -
    4220 case 4:
    -
    4221 case 6:
    -
    4222 case 9:
    -
    4223 case 11:
    -
    4224 return 1 <= day && day <= 30;
    -
    4225 default:
    -
    4226 return false;
    -
    4227 }
    -
    4228 }
    -
    4229
    -
    4230 public:
    -
    4231 format format;
    -
    4232 std::shared_ptr<basic_integer<T>> day;
    -
    4233 std::shared_ptr<basic_integer<T>> month;
    -
    4234 std::shared_ptr<basic_integer<T>> year;
    -
    4235
    -
    4236 protected:
    -
    4237 int m_format_mask;
    -
    4238 std::shared_ptr<basic_set<T>> m_separator;
    -
    4239 std::shared_ptr<basic_tester<T>> m_space;
    -
    4240 };
    -
    4241
    -
    4242 using date = basic_date<char>;
    -
    4243 using wdate = basic_date<wchar_t>;
    -
    4244#ifdef _UNICODE
    -
    4245 using tdate = wdate;
    -
    4246#else
    -
    4247 using tdate = date;
    -
    4248#endif
    - -
    4250
    -
    4254 template <class T>
    -
    4255 class basic_time : public basic_tester<T>
    -
    4256 {
    -
    4257 public:
    -
    4258 basic_time(
    -
    4259 _In_ const std::shared_ptr<basic_integer10<T>>& _hour,
    -
    4260 _In_ const std::shared_ptr<basic_integer10<T>>& _minute,
    -
    4261 _In_ const std::shared_ptr<basic_integer10<T>>& _second,
    -
    4262 _In_ const std::shared_ptr<basic_integer10<T>>& _millisecond,
    -
    4263 _In_ const std::shared_ptr<basic_set<T>>& separator,
    -
    4264 _In_ const std::shared_ptr<basic_tester<T>>& millisecond_separator,
    -
    4265 _In_ const std::locale& locale = std::locale()) :
    -
    4266 basic_tester<T>(locale),
    -
    4267 hour(_hour),
    -
    4268 minute(_minute),
    -
    4269 second(_second),
    -
    4270 millisecond(_millisecond),
    -
    4271 m_separator(separator),
    -
    4272 m_millisecond_separator(millisecond_separator)
    -
    4273 {}
    -
    4274
    -
    4275 virtual bool match(
    -
    4276 _In_reads_or_z_(end) const T* text,
    -
    4277 _In_ size_t start = 0,
    -
    4278 _In_ size_t end = (size_t)-1,
    -
    4279 _In_ int flags = match_default)
    -
    4280 {
    -
    4281 assert(text || start >= end);
    -
    4282
    -
    4283 if (hour->match(text, start, end, flags) &&
    -
    4284 m_separator->match(text, hour->interval.end, end, flags) &&
    -
    4285 minute->match(text, m_separator->interval.end, end, flags) &&
    -
    4286 minute->value < 60)
    -
    4287 {
    -
    4288 // hh::mm
    -
    4289 size_t hit_offset = m_separator->hit_offset;
    -
    4290 if (m_separator->match(text, minute->interval.end, end, flags) &&
    -
    4291 m_separator->hit_offset == hit_offset && // Both separators must match.
    -
    4292 second && second->match(text, m_separator->interval.end, end, flags) &&
    -
    4293 second->value < 60)
    -
    4294 {
    -
    4295 // hh::mm:ss
    -
    4296 if (m_millisecond_separator && m_millisecond_separator->match(text, second->interval.end, end, flags) &&
    -
    4297 millisecond && millisecond->match(text, m_millisecond_separator->interval.end, end, flags) &&
    -
    4298 millisecond->value < 1000)
    -
    4299 {
    -
    4300 // hh::mm:ss.mmmm
    -
    4301 interval.end = millisecond->interval.end;
    -
    4302 }
    -
    4303 else {
    -
    4304 if (millisecond) millisecond->invalidate();
    -
    4305 interval.end = second->interval.end;
    -
    4306 }
    -
    4307 }
    -
    4308 else {
    -
    4309 if (second) second->invalidate();
    -
    4310 if (millisecond) millisecond->invalidate();
    -
    4311 interval.end = minute->interval.end;
    -
    4312 }
    -
    4313 interval.start = start;
    -
    4314 return true;
    -
    4315 }
    -
    4316
    -
    4317 hour->invalidate();
    -
    4318 minute->invalidate();
    -
    4319 if (second) second->invalidate();
    -
    4320 if (millisecond) millisecond->invalidate();
    -
    4321 interval.start = (interval.end = start) + 1;
    -
    4322 return false;
    -
    4323 }
    -
    4324
    -
    4325 virtual void invalidate()
    -
    4326 {
    +
    4200 if (day) day->invalidate();
    +
    4201 if (month) month->invalidate();
    +
    4202 if (year) year->invalidate();
    +
    4203 format = 0;
    + +
    4205 }
    +
    4206
    +
    4207 protected:
    +
    4208 static inline bool is_valid(size_t day, size_t month)
    +
    4209 {
    +
    4210 if (month == (size_t)-1) {
    +
    4211 // Default to January. This allows validating day only, as January has all 31 days.
    +
    4212 month = 1;
    +
    4213 }
    +
    4214 if (day == (size_t)-1) {
    +
    4215 // Default to 1st day in month. This allows validating month only, as each month has 1st day.
    +
    4216 day = 1;
    +
    4217 }
    +
    4218
    +
    4219 switch (month) {
    +
    4220 case 1:
    +
    4221 case 3:
    +
    4222 case 5:
    +
    4223 case 7:
    +
    4224 case 8:
    +
    4225 case 10:
    +
    4226 case 12:
    +
    4227 return 1 <= day && day <= 31;
    +
    4228 case 2:
    +
    4229 return 1 <= day && day <= 29;
    +
    4230 case 4:
    +
    4231 case 6:
    +
    4232 case 9:
    +
    4233 case 11:
    +
    4234 return 1 <= day && day <= 30;
    +
    4235 default:
    +
    4236 return false;
    +
    4237 }
    +
    4238 }
    +
    4239
    +
    4240 public:
    +
    4241 format format;
    +
    4242 std::shared_ptr<basic_integer<T>> day;
    +
    4243 std::shared_ptr<basic_integer<T>> month;
    +
    4244 std::shared_ptr<basic_integer<T>> year;
    +
    4245
    +
    4246 protected:
    +
    4247 int m_format_mask;
    +
    4248 std::shared_ptr<basic_set<T>> m_separator;
    +
    4249 std::shared_ptr<basic_parser<T>> m_space;
    +
    4250 };
    +
    4251
    +
    4252 using date = basic_date<char>;
    +
    4253 using wdate = basic_date<wchar_t>;
    +
    4254#ifdef _UNICODE
    +
    4255 using tdate = wdate;
    +
    4256#else
    +
    4257 using tdate = date;
    +
    4258#endif
    + +
    4260
    +
    4264 template <class T>
    +
    4265 class basic_time : public basic_parser<T>
    +
    4266 {
    +
    4267 public:
    +
    4268 basic_time(
    +
    4269 _In_ const std::shared_ptr<basic_integer10<T>>& _hour,
    +
    4270 _In_ const std::shared_ptr<basic_integer10<T>>& _minute,
    +
    4271 _In_ const std::shared_ptr<basic_integer10<T>>& _second,
    +
    4272 _In_ const std::shared_ptr<basic_integer10<T>>& _millisecond,
    +
    4273 _In_ const std::shared_ptr<basic_set<T>>& separator,
    +
    4274 _In_ const std::shared_ptr<basic_parser<T>>& millisecond_separator,
    +
    4275 _In_ const std::locale& locale = std::locale()) :
    +
    4276 basic_parser<T>(locale),
    +
    4277 hour(_hour),
    +
    4278 minute(_minute),
    +
    4279 second(_second),
    +
    4280 millisecond(_millisecond),
    +
    4281 m_separator(separator),
    +
    4282 m_millisecond_separator(millisecond_separator)
    +
    4283 {}
    +
    4284
    +
    4285 virtual bool match(
    +
    4286 _In_reads_or_z_(end) const T* text,
    +
    4287 _In_ size_t start = 0,
    +
    4288 _In_ size_t end = (size_t)-1,
    +
    4289 _In_ int flags = match_default)
    +
    4290 {
    +
    4291 assert(text || start >= end);
    +
    4292
    +
    4293 if (hour->match(text, start, end, flags) &&
    +
    4294 m_separator->match(text, hour->interval.end, end, flags) &&
    +
    4295 minute->match(text, m_separator->interval.end, end, flags) &&
    +
    4296 minute->value < 60)
    +
    4297 {
    +
    4298 // hh::mm
    +
    4299 size_t hit_offset = m_separator->hit_offset;
    +
    4300 if (m_separator->match(text, minute->interval.end, end, flags) &&
    +
    4301 m_separator->hit_offset == hit_offset && // Both separators must match.
    +
    4302 second && second->match(text, m_separator->interval.end, end, flags) &&
    +
    4303 second->value < 60)
    +
    4304 {
    +
    4305 // hh::mm:ss
    +
    4306 if (m_millisecond_separator && m_millisecond_separator->match(text, second->interval.end, end, flags) &&
    +
    4307 millisecond && millisecond->match(text, m_millisecond_separator->interval.end, end, flags) &&
    +
    4308 millisecond->value < 1000)
    +
    4309 {
    +
    4310 // hh::mm:ss.mmmm
    +
    4311 interval.end = millisecond->interval.end;
    +
    4312 }
    +
    4313 else {
    +
    4314 if (millisecond) millisecond->invalidate();
    +
    4315 interval.end = second->interval.end;
    +
    4316 }
    +
    4317 }
    +
    4318 else {
    +
    4319 if (second) second->invalidate();
    +
    4320 if (millisecond) millisecond->invalidate();
    +
    4321 interval.end = minute->interval.end;
    +
    4322 }
    +
    4323 interval.start = start;
    +
    4324 return true;
    +
    4325 }
    +
    4326
    4327 hour->invalidate();
    4328 minute->invalidate();
    4329 if (second) second->invalidate();
    4330 if (millisecond) millisecond->invalidate();
    - -
    4332 }
    -
    4333
    -
    4334 public:
    -
    4335 std::shared_ptr<basic_integer10<T>> hour;
    -
    4336 std::shared_ptr<basic_integer10<T>> minute;
    -
    4337 std::shared_ptr<basic_integer10<T>> second;
    -
    4338 std::shared_ptr<basic_integer10<T>> millisecond;
    -
    4339
    -
    4340 protected:
    -
    4341 std::shared_ptr<basic_set<T>> m_separator;
    -
    4342 std::shared_ptr<basic_tester<T>> m_millisecond_separator;
    -
    4343 };
    -
    4344
    -
    4345 using time = basic_time<char>;
    -
    4346 using wtime = basic_time<wchar_t>;
    -
    4347#ifdef _UNICODE
    -
    4348 using ttime = wtime;
    -
    4349#else
    -
    4350 using ttime = time;
    -
    4351#endif
    - -
    4353
    -
    4357 template <class T>
    -
    4358 class basic_angle : public basic_tester<T>
    -
    4359 {
    -
    4360 public:
    - -
    4362 _In_ const std::shared_ptr<basic_integer10<T>>& _degree,
    -
    4363 _In_ const std::shared_ptr<basic_tester<T>>& _degree_separator,
    -
    4364 _In_ const std::shared_ptr<basic_integer10<T>>& _minute,
    -
    4365 _In_ const std::shared_ptr<basic_tester<T>>& _minute_separator,
    -
    4366 _In_ const std::shared_ptr<basic_integer10<T>>& _second,
    -
    4367 _In_ const std::shared_ptr<basic_tester<T>>& _second_separator,
    -
    4368 _In_ const std::shared_ptr<basic_tester<T>>& _decimal,
    -
    4369 _In_ const std::locale& locale = std::locale()) :
    -
    4370 basic_tester<T>(locale),
    -
    4371 degree(_degree),
    -
    4372 degree_separator(_degree_separator),
    -
    4373 minute(_minute),
    -
    4374 minute_separator(_minute_separator),
    -
    4375 second(_second),
    -
    4376 second_separator(_second_separator),
    -
    4377 decimal(_decimal)
    -
    4378 {}
    -
    4379
    -
    4380 virtual bool match(
    -
    4381 _In_reads_or_z_(end) const T* text,
    -
    4382 _In_ size_t start = 0,
    -
    4383 _In_ size_t end = (size_t)-1,
    -
    4384 _In_ int flags = match_default)
    -
    4385 {
    -
    4386 assert(text || start >= end);
    -
    4387
    -
    4388 interval.end = start;
    +
    4331 interval.start = (interval.end = start) + 1;
    +
    4332 return false;
    +
    4333 }
    +
    4334
    +
    4335 virtual void invalidate()
    +
    4336 {
    +
    4337 hour->invalidate();
    +
    4338 minute->invalidate();
    +
    4339 if (second) second->invalidate();
    +
    4340 if (millisecond) millisecond->invalidate();
    + +
    4342 }
    +
    4343
    +
    4344 public:
    +
    4345 std::shared_ptr<basic_integer10<T>> hour;
    +
    4346 std::shared_ptr<basic_integer10<T>> minute;
    +
    4347 std::shared_ptr<basic_integer10<T>> second;
    +
    4348 std::shared_ptr<basic_integer10<T>> millisecond;
    +
    4349
    +
    4350 protected:
    +
    4351 std::shared_ptr<basic_set<T>> m_separator;
    +
    4352 std::shared_ptr<basic_parser<T>> m_millisecond_separator;
    +
    4353 };
    +
    4354
    +
    4355 using time = basic_time<char>;
    +
    4356 using wtime = basic_time<wchar_t>;
    +
    4357#ifdef _UNICODE
    +
    4358 using ttime = wtime;
    +
    4359#else
    +
    4360 using ttime = time;
    +
    4361#endif
    + +
    4363
    +
    4367 template <class T>
    +
    4368 class basic_angle : public basic_parser<T>
    +
    4369 {
    +
    4370 public:
    + +
    4372 _In_ const std::shared_ptr<basic_integer10<T>>& _degree,
    +
    4373 _In_ const std::shared_ptr<basic_parser<T>>& _degree_separator,
    +
    4374 _In_ const std::shared_ptr<basic_integer10<T>>& _minute,
    +
    4375 _In_ const std::shared_ptr<basic_parser<T>>& _minute_separator,
    +
    4376 _In_ const std::shared_ptr<basic_integer10<T>>& _second,
    +
    4377 _In_ const std::shared_ptr<basic_parser<T>>& _second_separator,
    +
    4378 _In_ const std::shared_ptr<basic_parser<T>>& _decimal,
    +
    4379 _In_ const std::locale& locale = std::locale()) :
    +
    4380 basic_parser<T>(locale),
    +
    4381 degree(_degree),
    +
    4382 degree_separator(_degree_separator),
    +
    4383 minute(_minute),
    +
    4384 minute_separator(_minute_separator),
    +
    4385 second(_second),
    +
    4386 second_separator(_second_separator),
    +
    4387 decimal(_decimal)
    +
    4388 {}
    4389
    -
    4390 if (degree->match(text, interval.end, end, flags) &&
    -
    4391 degree_separator->match(text, degree->interval.end, end, flags))
    -
    4392 {
    -
    4393 // Degrees
    -
    4394 interval.end = degree_separator->interval.end;
    -
    4395 }
    -
    4396 else {
    -
    4397 degree->invalidate();
    -
    4398 degree_separator->invalidate();
    -
    4399 }
    -
    4400
    -
    4401 if (minute->match(text, interval.end, end, flags) &&
    -
    4402 minute->value < 60 &&
    -
    4403 minute_separator->match(text, minute->interval.end, end, flags))
    -
    4404 {
    -
    4405 // Minutes
    -
    4406 interval.end = minute_separator->interval.end;
    -
    4407 }
    -
    4408 else {
    -
    4409 minute->invalidate();
    -
    4410 minute_separator->invalidate();
    -
    4411 }
    -
    4412
    -
    4413 if (second && second->match(text, interval.end, end, flags) &&
    -
    4414 second->value < 60)
    -
    4415 {
    -
    4416 // Seconds
    -
    4417 interval.end = second->interval.end;
    -
    4418 if (second_separator && second_separator->match(text, interval.end, end, flags))
    -
    4419 interval.end = second_separator->interval.end;
    -
    4420 else
    -
    4421 if (second_separator) second_separator->invalidate();
    -
    4422 }
    -
    4423 else {
    -
    4424 if (second) second->invalidate();
    -
    4425 if (second_separator) second_separator->invalidate();
    -
    4426 }
    -
    4427
    -
    4428 if (degree->interval.start < degree->interval.end ||
    -
    4429 minute->interval.start < minute->interval.end ||
    -
    4430 second && second->interval.start < second->interval.end)
    -
    4431 {
    -
    4432 if (decimal && decimal->match(text, interval.end, end, flags)) {
    -
    4433 // Decimals
    -
    4434 interval.end = decimal->interval.end;
    -
    4435 }
    -
    4436 else if (decimal)
    -
    4437 decimal->invalidate();
    -
    4438 interval.start = start;
    -
    4439 return true;
    -
    4440 }
    -
    4441 if (decimal) decimal->invalidate();
    -
    4442 interval.start = (interval.end = start) + 1;
    -
    4443 return false;
    -
    4444 }
    -
    4445
    -
    4446 virtual void invalidate()
    -
    4447 {
    -
    4448 degree->invalidate();
    -
    4449 degree_separator->invalidate();
    -
    4450 minute->invalidate();
    -
    4451 minute_separator->invalidate();
    -
    4452 if (second) second->invalidate();
    -
    4453 if (second_separator) second_separator->invalidate();
    -
    4454 if (decimal) decimal->invalidate();
    - -
    4456 }
    -
    4457
    -
    4458 public:
    -
    4459 std::shared_ptr<basic_integer10<T>> degree;
    -
    4460 std::shared_ptr<basic_tester<T>> degree_separator;
    -
    4461 std::shared_ptr<basic_integer10<T>> minute;
    -
    4462 std::shared_ptr<basic_tester<T>> minute_separator;
    -
    4463 std::shared_ptr<basic_integer10<T>> second;
    -
    4464 std::shared_ptr<basic_tester<T>> second_separator;
    -
    4465 std::shared_ptr<basic_tester<T>> decimal;
    -
    4466 };
    +
    4390 virtual bool match(
    +
    4391 _In_reads_or_z_(end) const T* text,
    +
    4392 _In_ size_t start = 0,
    +
    4393 _In_ size_t end = (size_t)-1,
    +
    4394 _In_ int flags = match_default)
    +
    4395 {
    +
    4396 assert(text || start >= end);
    +
    4397
    +
    4398 interval.end = start;
    +
    4399
    +
    4400 if (degree->match(text, interval.end, end, flags) &&
    +
    4401 degree_separator->match(text, degree->interval.end, end, flags))
    +
    4402 {
    +
    4403 // Degrees
    +
    4404 interval.end = degree_separator->interval.end;
    +
    4405 }
    +
    4406 else {
    +
    4407 degree->invalidate();
    +
    4408 degree_separator->invalidate();
    +
    4409 }
    +
    4410
    +
    4411 if (minute->match(text, interval.end, end, flags) &&
    +
    4412 minute->value < 60 &&
    +
    4413 minute_separator->match(text, minute->interval.end, end, flags))
    +
    4414 {
    +
    4415 // Minutes
    +
    4416 interval.end = minute_separator->interval.end;
    +
    4417 }
    +
    4418 else {
    +
    4419 minute->invalidate();
    +
    4420 minute_separator->invalidate();
    +
    4421 }
    +
    4422
    +
    4423 if (second && second->match(text, interval.end, end, flags) &&
    +
    4424 second->value < 60)
    +
    4425 {
    +
    4426 // Seconds
    +
    4427 interval.end = second->interval.end;
    +
    4428 if (second_separator && second_separator->match(text, interval.end, end, flags))
    +
    4429 interval.end = second_separator->interval.end;
    +
    4430 else
    +
    4431 if (second_separator) second_separator->invalidate();
    +
    4432 }
    +
    4433 else {
    +
    4434 if (second) second->invalidate();
    +
    4435 if (second_separator) second_separator->invalidate();
    +
    4436 }
    +
    4437
    +
    4438 if (degree->interval.start < degree->interval.end ||
    +
    4439 minute->interval.start < minute->interval.end ||
    +
    4440 second && second->interval.start < second->interval.end)
    +
    4441 {
    +
    4442 if (decimal && decimal->match(text, interval.end, end, flags)) {
    +
    4443 // Decimals
    +
    4444 interval.end = decimal->interval.end;
    +
    4445 }
    +
    4446 else if (decimal)
    +
    4447 decimal->invalidate();
    +
    4448 interval.start = start;
    +
    4449 return true;
    +
    4450 }
    +
    4451 if (decimal) decimal->invalidate();
    +
    4452 interval.start = (interval.end = start) + 1;
    +
    4453 return false;
    +
    4454 }
    +
    4455
    +
    4456 virtual void invalidate()
    +
    4457 {
    +
    4458 degree->invalidate();
    +
    4459 degree_separator->invalidate();
    +
    4460 minute->invalidate();
    +
    4461 minute_separator->invalidate();
    +
    4462 if (second) second->invalidate();
    +
    4463 if (second_separator) second_separator->invalidate();
    +
    4464 if (decimal) decimal->invalidate();
    + +
    4466 }
    4467
    -
    4468 using angle = basic_angle<char>;
    - -
    4470#ifdef _UNICODE
    -
    4471 using RRegElKot = wangle;
    -
    4472#else
    -
    4473 using RRegElKot = angle;
    -
    4474#endif
    - -
    4476
    -
    4480 template <class T>
    - -
    4482 {
    -
    4483 public:
    - -
    4485 _In_ const std::shared_ptr<basic_tester<T>>& digit,
    -
    4486 _In_ const std::shared_ptr<basic_tester<T>>& plus_sign,
    -
    4487 _In_ const std::shared_ptr<basic_set<T>>& lparenthesis,
    -
    4488 _In_ const std::shared_ptr<basic_set<T>>& rparenthesis,
    -
    4489 _In_ const std::shared_ptr<basic_tester<T>>& separator,
    -
    4490 _In_ const std::shared_ptr<basic_tester<T>>& space,
    -
    4491 _In_ const std::locale& locale = std::locale()) :
    -
    4492 basic_tester<T>(locale),
    -
    4493 m_digit(digit),
    -
    4494 m_plus_sign(plus_sign),
    -
    4495 m_lparenthesis(lparenthesis),
    -
    4496 m_rparenthesis(rparenthesis),
    -
    4497 m_separator(separator),
    -
    4498 m_space(space)
    -
    4499 {}
    -
    4500
    -
    4501 virtual bool match(
    -
    4502 _In_reads_or_z_(end) const T* text,
    -
    4503 _In_ size_t start = 0,
    -
    4504 _In_ size_t end = (size_t)-1,
    -
    4505 _In_ int flags = match_default)
    -
    4506 {
    -
    4507 assert(text || start >= end);
    -
    4508
    -
    4509 size_t safe_digit_end = start, safe_value_size = 0;
    -
    4510 bool has_digits = false, after_digit = false, in_parentheses = false, after_parentheses = false;
    -
    4511 const int space_match_flags = flags & ~match_multiline; // Spaces in phone numbers must never be broken in new line.
    -
    4512
    -
    4513 interval.end = start;
    -
    4514 value.clear();
    -
    4515 m_lparenthesis->invalidate();
    -
    4516 m_rparenthesis->invalidate();
    -
    4517
    -
    4518 if (m_plus_sign && m_plus_sign->match(text, interval.end, end, flags)) {
    -
    4519 value.append(text + m_plus_sign->interval.start, text + m_plus_sign->interval.end);
    -
    4520 safe_value_size = value.size();
    -
    4521 interval.end = m_plus_sign->interval.end;
    -
    4522 }
    -
    4523
    -
    4524 for (;;) {
    -
    4525 assert(text || interval.end >= end);
    -
    4526 if (interval.end >= end || !text[interval.end])
    -
    4527 break;
    -
    4528 if (m_digit->match(text, interval.end, end, flags)) {
    -
    4529 // Digit
    -
    4530 value.append(text + m_digit->interval.start, text + m_digit->interval.end);
    -
    4531 interval.end = m_digit->interval.end;
    -
    4532 if (!in_parentheses) {
    -
    4533 safe_digit_end = interval.end;
    -
    4534 safe_value_size = value.size();
    -
    4535 has_digits = true;
    -
    4536 }
    -
    4537 after_digit = true;
    -
    4538 after_parentheses = false;
    -
    4539 }
    -
    4540 else if (
    -
    4541 m_lparenthesis && !m_lparenthesis->interval && // No left parenthesis yet
    -
    4542 m_rparenthesis && !m_rparenthesis->interval && // Right parenthesis after left
    -
    4543 m_lparenthesis->match(text, interval.end, end, flags))
    -
    4544 {
    -
    4545 // Left parenthesis
    -
    4546 value.Prilepi(text + m_lparenthesis->interval.start, m_lparenthesis->interval.size());
    -
    4547 interval.end = m_lparenthesis->interval.end;
    -
    4548 in_parentheses = true;
    -
    4549 after_digit = false;
    -
    4550 after_parentheses = false;
    -
    4551 }
    -
    4552 else if (
    -
    4553 in_parentheses && // After left parenthesis
    -
    4554 m_rparenthesis && !m_rparenthesis->interval && // No right parenthesis yet
    -
    4555 m_rparenthesis->match(text, interval.end, end, flags) &&
    -
    4556 m_lparenthesis->hit_offset == m_rparenthesis->hit_offset) // Left and right parentheses must match
    -
    4557 {
    -
    4558 // Right parenthesis
    -
    4559 value.append(text + m_rparenthesis->interval.start, text + m_rparenthesis->interval.end);
    -
    4560 interval.end = m_rparenthesis->interval.end;
    -
    4561 safe_digit_end = interval.end;
    -
    4562 safe_value_size = value.size();
    -
    4563 in_parentheses = false;
    -
    4564 after_digit = false;
    -
    4565 after_parentheses = true;
    -
    4566 }
    -
    4567 else if (
    -
    4568 after_digit &&
    -
    4569 !in_parentheses && // No separators inside parentheses
    -
    4570 !after_parentheses && // No separators following right parenthesis
    -
    4571 m_separator && m_separator->match(text, interval.end, end, flags))
    -
    4572 {
    -
    4573 // Separator
    -
    4574 interval.end = m_separator->interval.end;
    -
    4575 after_digit = false;
    -
    4576 after_parentheses = false;
    -
    4577 }
    -
    4578 else if (
    -
    4579 (after_digit || after_parentheses) &&
    -
    4580 m_space && m_space->match(text, interval.end, end, space_match_flags))
    -
    4581 {
    -
    4582 // Space
    -
    4583 interval.end = m_space->interval.end;
    -
    4584 after_digit = false;
    -
    4585 after_parentheses = false;
    -
    4586 }
    -
    4587 else
    -
    4588 break;
    -
    4589 }
    -
    4590 if (has_digits) {
    -
    4591 value.erase(safe_value_size);
    -
    4592 interval.start = start;
    -
    4593 interval.end = safe_digit_end;
    -
    4594 return true;
    -
    4595 }
    -
    4596 value.clear();
    -
    4597 interval.start = (interval.end = start) + 1;
    -
    4598 return false;
    -
    4599 }
    -
    4600
    -
    4601 virtual void invalidate()
    -
    4602 {
    -
    4603 value.clear();
    - -
    4605 }
    -
    4606
    -
    4607 public:
    -
    4608 std::basic_string<T> value;
    -
    4609
    -
    4610 protected:
    -
    4611 std::shared_ptr<basic_tester<T>> m_digit;
    -
    4612 std::shared_ptr<basic_tester<T>> m_plus_sign;
    -
    4613 std::shared_ptr<basic_set<T>> m_lparenthesis;
    -
    4614 std::shared_ptr<basic_set<T>> m_rparenthesis;
    -
    4615 std::shared_ptr<basic_tester<T>> m_separator;
    -
    4616 std::shared_ptr<basic_tester<T>> m_space;
    -
    4617 };
    -
    4618
    - - -
    4621#ifdef _UNICODE
    - -
    4623#else
    - -
    4625#endif
    - -
    4627
    -
    4631 template <class T>
    - -
    4633 {
    -
    4634 public:
    - -
    4636 _In_ const std::shared_ptr<basic_tester<T>>& element,
    -
    4637 _In_ const std::shared_ptr<basic_tester<T>>& digit,
    -
    4638 _In_ const std::shared_ptr<basic_tester<T>>& sign,
    -
    4639 _In_ const std::locale& locale = std::locale()) :
    -
    4640 basic_tester<T>(locale),
    -
    4641 m_element(element),
    -
    4642 m_digit(digit),
    -
    4643 m_sign(sign),
    -
    4644 has_digits(false),
    -
    4645 has_charge(false)
    -
    4646 {}
    -
    4647
    -
    4648 virtual bool match(
    -
    4649 _In_reads_or_z_(end) const T* text,
    -
    4650 _In_ size_t start = 0,
    -
    4651 _In_ size_t end = (size_t)-1,
    -
    4652 _In_ int flags = match_default)
    -
    4653 {
    -
    4654 assert(text || start >= end);
    -
    4655
    -
    4656 has_digits = false;
    -
    4657 has_charge = false;
    -
    4658 interval.end = start;
    -
    4659
    -
    4660 const int element_match_flags = flags & ~match_case_insensitive; // Chemical elements are always case-sensitive.
    -
    4661 for (;;) {
    -
    4662 if (m_element->match(text, interval.end, end, element_match_flags)) {
    -
    4663 interval.end = m_element->interval.end;
    -
    4664 while (m_digit->match(text, interval.end, end, flags)) {
    -
    4665 interval.end = m_digit->interval.end;
    -
    4666 has_digits = true;
    -
    4667 }
    -
    4668 }
    -
    4669 else if (start < interval.end) {
    -
    4670 if (m_sign->match(text, interval.end, end, flags)) {
    -
    4671 interval.end = m_sign->interval.end;
    -
    4672 has_charge = true;
    -
    4673 }
    -
    4674 interval.start = start;
    -
    4675 return true;
    -
    4676 }
    -
    4677 else {
    -
    4678 interval.start = (interval.end = start) + 1;
    -
    4679 return false;
    -
    4680 }
    -
    4681 }
    -
    4682 }
    -
    4683
    -
    4684 virtual void invalidate()
    -
    4685 {
    -
    4686 has_digits = false;
    -
    4687 has_charge = false;
    - -
    4689 }
    -
    4690
    -
    4691 public:
    -
    4692 bool has_digits;
    -
    4693 bool has_charge;
    -
    4694
    -
    4695 protected:
    -
    4696 std::shared_ptr<basic_tester<T>> m_element;
    -
    4697 std::shared_ptr<basic_tester<T>> m_digit;
    -
    4698 std::shared_ptr<basic_tester<T>> m_sign;
    -
    4699 };
    +
    4468 public:
    +
    4469 std::shared_ptr<basic_integer10<T>> degree;
    +
    4470 std::shared_ptr<basic_parser<T>> degree_separator;
    +
    4471 std::shared_ptr<basic_integer10<T>> minute;
    +
    4472 std::shared_ptr<basic_parser<T>> minute_separator;
    +
    4473 std::shared_ptr<basic_integer10<T>> second;
    +
    4474 std::shared_ptr<basic_parser<T>> second_separator;
    +
    4475 std::shared_ptr<basic_parser<T>> decimal;
    +
    4476 };
    +
    4477
    +
    4478 using angle = basic_angle<char>;
    + +
    4480#ifdef _UNICODE
    +
    4481 using RRegElKot = wangle;
    +
    4482#else
    +
    4483 using RRegElKot = angle;
    +
    4484#endif
    + +
    4486
    +
    4490 template <class T>
    + +
    4492 {
    +
    4493 public:
    + +
    4495 _In_ const std::shared_ptr<basic_parser<T>>& digit,
    +
    4496 _In_ const std::shared_ptr<basic_parser<T>>& plus_sign,
    +
    4497 _In_ const std::shared_ptr<basic_set<T>>& lparenthesis,
    +
    4498 _In_ const std::shared_ptr<basic_set<T>>& rparenthesis,
    +
    4499 _In_ const std::shared_ptr<basic_parser<T>>& separator,
    +
    4500 _In_ const std::shared_ptr<basic_parser<T>>& space,
    +
    4501 _In_ const std::locale& locale = std::locale()) :
    +
    4502 basic_parser<T>(locale),
    +
    4503 m_digit(digit),
    +
    4504 m_plus_sign(plus_sign),
    +
    4505 m_lparenthesis(lparenthesis),
    +
    4506 m_rparenthesis(rparenthesis),
    +
    4507 m_separator(separator),
    +
    4508 m_space(space)
    +
    4509 {}
    +
    4510
    +
    4511 virtual bool match(
    +
    4512 _In_reads_or_z_(end) const T* text,
    +
    4513 _In_ size_t start = 0,
    +
    4514 _In_ size_t end = (size_t)-1,
    +
    4515 _In_ int flags = match_default)
    +
    4516 {
    +
    4517 assert(text || start >= end);
    +
    4518
    +
    4519 size_t safe_digit_end = start, safe_value_size = 0;
    +
    4520 bool has_digits = false, after_digit = false, in_parentheses = false, after_parentheses = false;
    +
    4521 const int space_match_flags = flags & ~match_multiline; // Spaces in phone numbers must never be broken in new line.
    +
    4522
    +
    4523 interval.end = start;
    +
    4524 value.clear();
    +
    4525 m_lparenthesis->invalidate();
    +
    4526 m_rparenthesis->invalidate();
    +
    4527
    +
    4528 if (m_plus_sign && m_plus_sign->match(text, interval.end, end, flags)) {
    +
    4529 value.append(text + m_plus_sign->interval.start, text + m_plus_sign->interval.end);
    +
    4530 safe_value_size = value.size();
    +
    4531 interval.end = m_plus_sign->interval.end;
    +
    4532 }
    +
    4533
    +
    4534 for (;;) {
    +
    4535 assert(text || interval.end >= end);
    +
    4536 if (interval.end >= end || !text[interval.end])
    +
    4537 break;
    +
    4538 if (m_digit->match(text, interval.end, end, flags)) {
    +
    4539 // Digit
    +
    4540 value.append(text + m_digit->interval.start, text + m_digit->interval.end);
    +
    4541 interval.end = m_digit->interval.end;
    +
    4542 if (!in_parentheses) {
    +
    4543 safe_digit_end = interval.end;
    +
    4544 safe_value_size = value.size();
    +
    4545 has_digits = true;
    +
    4546 }
    +
    4547 after_digit = true;
    +
    4548 after_parentheses = false;
    +
    4549 }
    +
    4550 else if (
    +
    4551 m_lparenthesis && !m_lparenthesis->interval && // No left parenthesis yet
    +
    4552 m_rparenthesis && !m_rparenthesis->interval && // Right parenthesis after left
    +
    4553 m_lparenthesis->match(text, interval.end, end, flags))
    +
    4554 {
    +
    4555 // Left parenthesis
    +
    4556 value.Prilepi(text + m_lparenthesis->interval.start, m_lparenthesis->interval.size());
    +
    4557 interval.end = m_lparenthesis->interval.end;
    +
    4558 in_parentheses = true;
    +
    4559 after_digit = false;
    +
    4560 after_parentheses = false;
    +
    4561 }
    +
    4562 else if (
    +
    4563 in_parentheses && // After left parenthesis
    +
    4564 m_rparenthesis && !m_rparenthesis->interval && // No right parenthesis yet
    +
    4565 m_rparenthesis->match(text, interval.end, end, flags) &&
    +
    4566 m_lparenthesis->hit_offset == m_rparenthesis->hit_offset) // Left and right parentheses must match
    +
    4567 {
    +
    4568 // Right parenthesis
    +
    4569 value.append(text + m_rparenthesis->interval.start, text + m_rparenthesis->interval.end);
    +
    4570 interval.end = m_rparenthesis->interval.end;
    +
    4571 safe_digit_end = interval.end;
    +
    4572 safe_value_size = value.size();
    +
    4573 in_parentheses = false;
    +
    4574 after_digit = false;
    +
    4575 after_parentheses = true;
    +
    4576 }
    +
    4577 else if (
    +
    4578 after_digit &&
    +
    4579 !in_parentheses && // No separators inside parentheses
    +
    4580 !after_parentheses && // No separators following right parenthesis
    +
    4581 m_separator && m_separator->match(text, interval.end, end, flags))
    +
    4582 {
    +
    4583 // Separator
    +
    4584 interval.end = m_separator->interval.end;
    +
    4585 after_digit = false;
    +
    4586 after_parentheses = false;
    +
    4587 }
    +
    4588 else if (
    +
    4589 (after_digit || after_parentheses) &&
    +
    4590 m_space && m_space->match(text, interval.end, end, space_match_flags))
    +
    4591 {
    +
    4592 // Space
    +
    4593 interval.end = m_space->interval.end;
    +
    4594 after_digit = false;
    +
    4595 after_parentheses = false;
    +
    4596 }
    +
    4597 else
    +
    4598 break;
    +
    4599 }
    +
    4600 if (has_digits) {
    +
    4601 value.erase(safe_value_size);
    +
    4602 interval.start = start;
    +
    4603 interval.end = safe_digit_end;
    +
    4604 return true;
    +
    4605 }
    +
    4606 value.clear();
    +
    4607 interval.start = (interval.end = start) + 1;
    +
    4608 return false;
    +
    4609 }
    +
    4610
    +
    4611 virtual void invalidate()
    +
    4612 {
    +
    4613 value.clear();
    + +
    4615 }
    +
    4616
    +
    4617 public:
    +
    4618 std::basic_string<T> value;
    +
    4619
    +
    4620 protected:
    +
    4621 std::shared_ptr<basic_parser<T>> m_digit;
    +
    4622 std::shared_ptr<basic_parser<T>> m_plus_sign;
    +
    4623 std::shared_ptr<basic_set<T>> m_lparenthesis;
    +
    4624 std::shared_ptr<basic_set<T>> m_rparenthesis;
    +
    4625 std::shared_ptr<basic_parser<T>> m_separator;
    +
    4626 std::shared_ptr<basic_parser<T>> m_space;
    +
    4627 };
    +
    4628
    + + +
    4631#ifdef _UNICODE
    + +
    4633#else
    + +
    4635#endif
    + +
    4637
    +
    4641 template <class T>
    + +
    4643 {
    +
    4644 public:
    + +
    4646 _In_ const std::shared_ptr<basic_parser<T>>& element,
    +
    4647 _In_ const std::shared_ptr<basic_parser<T>>& digit,
    +
    4648 _In_ const std::shared_ptr<basic_parser<T>>& sign,
    +
    4649 _In_ const std::locale& locale = std::locale()) :
    +
    4650 basic_parser<T>(locale),
    +
    4651 m_element(element),
    +
    4652 m_digit(digit),
    +
    4653 m_sign(sign),
    +
    4654 has_digits(false),
    +
    4655 has_charge(false)
    +
    4656 {}
    +
    4657
    +
    4658 virtual bool match(
    +
    4659 _In_reads_or_z_(end) const T* text,
    +
    4660 _In_ size_t start = 0,
    +
    4661 _In_ size_t end = (size_t)-1,
    +
    4662 _In_ int flags = match_default)
    +
    4663 {
    +
    4664 assert(text || start >= end);
    +
    4665
    +
    4666 has_digits = false;
    +
    4667 has_charge = false;
    +
    4668 interval.end = start;
    +
    4669
    +
    4670 const int element_match_flags = flags & ~match_case_insensitive; // Chemical elements are always case-sensitive.
    +
    4671 for (;;) {
    +
    4672 if (m_element->match(text, interval.end, end, element_match_flags)) {
    +
    4673 interval.end = m_element->interval.end;
    +
    4674 while (m_digit->match(text, interval.end, end, flags)) {
    +
    4675 interval.end = m_digit->interval.end;
    +
    4676 has_digits = true;
    +
    4677 }
    +
    4678 }
    +
    4679 else if (start < interval.end) {
    +
    4680 if (m_sign->match(text, interval.end, end, flags)) {
    +
    4681 interval.end = m_sign->interval.end;
    +
    4682 has_charge = true;
    +
    4683 }
    +
    4684 interval.start = start;
    +
    4685 return true;
    +
    4686 }
    +
    4687 else {
    +
    4688 interval.start = (interval.end = start) + 1;
    +
    4689 return false;
    +
    4690 }
    +
    4691 }
    +
    4692 }
    +
    4693
    +
    4694 virtual void invalidate()
    +
    4695 {
    +
    4696 has_digits = false;
    +
    4697 has_charge = false;
    + +
    4699 }
    4700
    - - -
    4703#ifdef _UNICODE
    - -
    4705#else
    - -
    4707#endif
    - -
    4709
    - -
    4714 {
    -
    4715 public:
    -
    4716 virtual bool match(
    -
    4717 _In_reads_or_z_(end) const char* text,
    -
    4718 _In_ size_t start = 0,
    -
    4719 _In_ size_t end = (size_t)-1,
    -
    4720 _In_ int flags = match_default)
    -
    4721 {
    -
    4722 assert(text || start >= end);
    -
    4723 interval.end = start;
    -
    4724
    -
    4725 assert(text || interval.end >= end);
    -
    4726 if (interval.end < end && text[interval.end]) {
    -
    4727 if (text[interval.end] == '\r') {
    -
    4728 interval.end++;
    -
    4729 if (interval.end < end && text[interval.end] == '\n') {
    -
    4730 interval.start = start;
    -
    4731 interval.end++;
    -
    4732 return true;
    -
    4733 }
    -
    4734 }
    -
    4735 else if (text[interval.end] == '\n') {
    -
    4736 interval.start = start;
    -
    4737 interval.end++;
    -
    4738 return true;
    -
    4739 }
    -
    4740 }
    -
    4741 interval.start = (interval.end = start) + 1;
    -
    4742 return false;
    -
    4743 }
    -
    4744 };
    -
    4745
    -
    4749 class http_space : public tester
    -
    4750 {
    -
    4751 public:
    -
    4752 virtual bool match(
    -
    4753 _In_reads_or_z_(end) const char* text,
    -
    4754 _In_ size_t start = 0,
    -
    4755 _In_ size_t end = (size_t)-1,
    -
    4756 _In_ int flags = match_default)
    -
    4757 {
    -
    4758 assert(text || start >= end);
    -
    4759 interval.end = start;
    -
    4760 if (m_line_break.match(text, interval.end, end, flags)) {
    -
    4761 interval.end = m_line_break.interval.end;
    -
    4762 if (interval.end < end && text[interval.end] && isspace(text[interval.end])) {
    -
    4763 interval.start = start;
    -
    4764 interval.end++;
    -
    4765 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    -
    4766 return true;
    -
    4767 }
    -
    4768 }
    -
    4769 else if (interval.end < end && text[interval.end] && isspace(text[interval.end])) {
    -
    4770 interval.start = start;
    -
    4771 interval.end++;
    -
    4772 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    -
    4773 return true;
    -
    4774 }
    -
    4775 interval.start = (interval.end = start) + 1;
    -
    4776 return false;
    -
    4777 }
    -
    4778
    -
    4779 protected:
    -
    4780 http_line_break m_line_break;
    -
    4781 };
    -
    4782
    -
    4786 class http_text_char : public tester
    -
    4787 {
    -
    4788 public:
    -
    4789 virtual bool match(
    -
    4790 _In_reads_or_z_(end) const char* text,
    -
    4791 _In_ size_t start = 0,
    -
    4792 _In_ size_t end = (size_t)-1,
    -
    4793 _In_ int flags = match_default)
    -
    4794 {
    -
    4795 assert(text || start >= end);
    -
    4796 interval.end = start;
    -
    4797
    -
    4798 assert(text || interval.end >= end);
    -
    4799 if (m_space.match(text, interval.end, end, flags)) {
    -
    4800 interval.start = start;
    -
    4801 interval.end = m_space.interval.end;
    -
    4802 return true;
    -
    4803 }
    -
    4804 else if (interval.end < end && text[interval.end] && text[interval.end] >= 0x20) {
    -
    4805 interval.start = start;
    -
    4806 interval.end++;
    -
    4807 return true;
    -
    4808 }
    -
    4809 interval.start = (interval.end = start) + 1;
    -
    4810 return false;
    -
    4811 }
    -
    4812
    -
    4813 protected:
    -
    4814 http_space m_space;
    -
    4815 };
    -
    4816
    -
    4820 class http_token : public tester
    -
    4821 {
    -
    4822 public:
    -
    4823 virtual bool match(
    -
    4824 _In_reads_or_z_(end) const char* text,
    -
    4825 _In_ size_t start = 0,
    -
    4826 _In_ size_t end = (size_t)-1,
    -
    4827 _In_ int flags = match_default)
    -
    4828 {
    -
    4829 assert(text || start >= end);
    -
    4830 interval.end = start;
    -
    4831 for (;;) {
    -
    4832 if (interval.end < end && text[interval.end]) {
    -
    4833 if ((unsigned int)text[interval.end] < 0x20 ||
    -
    4834 (unsigned int)text[interval.end] == 0x7f ||
    -
    4835 text[interval.end] == '(' ||
    -
    4836 text[interval.end] == ')' ||
    -
    4837 text[interval.end] == '<' ||
    -
    4838 text[interval.end] == '>' ||
    -
    4839 text[interval.end] == '@' ||
    -
    4840 text[interval.end] == ',' ||
    -
    4841 text[interval.end] == ';' ||
    -
    4842 text[interval.end] == ':' ||
    -
    4843 text[interval.end] == '\\' ||
    -
    4844 text[interval.end] == '\"' ||
    -
    4845 text[interval.end] == '/' ||
    -
    4846 text[interval.end] == '[' ||
    -
    4847 text[interval.end] == ']' ||
    -
    4848 text[interval.end] == '?' ||
    -
    4849 text[interval.end] == '=' ||
    -
    4850 text[interval.end] == '{' ||
    -
    4851 text[interval.end] == '}' ||
    -
    4852 isspace(text[interval.end]))
    -
    4853 break;
    -
    4854 else
    -
    4855 interval.end++;
    -
    4856 }
    -
    4857 else
    -
    4858 break;
    -
    4859 }
    -
    4860 if (start < interval.end) {
    -
    4861 interval.start = start;
    -
    4862 return true;
    -
    4863 }
    -
    4864 else {
    -
    4865 interval.start = (interval.end = start) + 1;
    -
    4866 return false;
    -
    4867 }
    -
    4868 }
    -
    4869 };
    -
    4870
    - -
    4875 {
    -
    4876 public:
    -
    4877 virtual bool match(
    -
    4878 _In_reads_or_z_(end) const char* text,
    -
    4879 _In_ size_t start = 0,
    -
    4880 _In_ size_t end = (size_t)-1,
    -
    4881 _In_ int flags = match_default)
    -
    4882 {
    -
    4883 assert(text || start >= end);
    -
    4884 interval.end = start;
    -
    4885 if (interval.end < end && text[interval.end] != '"')
    -
    4886 goto error;
    -
    4887 interval.end++;
    -
    4888 content.start = interval.end;
    -
    4889 for (;;) {
    -
    4890 assert(text || interval.end >= end);
    -
    4891 if (interval.end < end && text[interval.end]) {
    -
    4892 if (text[interval.end] == '"') {
    -
    4893 content.end = interval.end;
    -
    4894 interval.end++;
    -
    4895 break;
    -
    4896 }
    -
    4897 else if (text[interval.end] == '\\') {
    -
    4898 interval.end++;
    -
    4899 if (interval.end < end && text[interval.end]) {
    -
    4900 interval.end++;
    -
    4901 }
    -
    4902 else
    -
    4903 goto error;
    -
    4904 }
    -
    4905 else if (m_chr.match(text, interval.end, end, flags))
    -
    4906 interval.end++;
    -
    4907 else
    -
    4908 goto error;
    -
    4909 }
    -
    4910 else
    -
    4911 goto error;
    -
    4912 }
    -
    4913 interval.start = start;
    -
    4914 return true;
    -
    4915
    -
    4916 error:
    -
    4917 content.start = 1;
    -
    4918 content.end = 0;
    -
    4919 interval.start = (interval.end = start) + 1;
    -
    4920 return false;
    -
    4921 }
    -
    4922
    -
    4923 virtual void invalidate()
    -
    4924 {
    -
    4925 content.start = 1;
    -
    4926 content.end = 0;
    -
    4927 tester::invalidate();
    -
    4928 }
    -
    4929
    -
    4930 public:
    - +
    4701 public:
    +
    4702 bool has_digits;
    +
    4703 bool has_charge;
    +
    4704
    +
    4705 protected:
    +
    4706 std::shared_ptr<basic_parser<T>> m_element;
    +
    4707 std::shared_ptr<basic_parser<T>> m_digit;
    +
    4708 std::shared_ptr<basic_parser<T>> m_sign;
    +
    4709 };
    +
    4710
    + + +
    4713#ifdef _UNICODE
    + +
    4715#else
    + +
    4717#endif
    + +
    4719
    + +
    4724 {
    +
    4725 public:
    +
    4726 virtual bool match(
    +
    4727 _In_reads_or_z_(end) const char* text,
    +
    4728 _In_ size_t start = 0,
    +
    4729 _In_ size_t end = (size_t)-1,
    +
    4730 _In_ int flags = match_default)
    +
    4731 {
    +
    4732 assert(text || start >= end);
    +
    4733 interval.end = start;
    +
    4734
    +
    4735 assert(text || interval.end >= end);
    +
    4736 if (interval.end < end && text[interval.end]) {
    +
    4737 if (text[interval.end] == '\r') {
    +
    4738 interval.end++;
    +
    4739 if (interval.end < end && text[interval.end] == '\n') {
    +
    4740 interval.start = start;
    +
    4741 interval.end++;
    +
    4742 return true;
    +
    4743 }
    +
    4744 }
    +
    4745 else if (text[interval.end] == '\n') {
    +
    4746 interval.start = start;
    +
    4747 interval.end++;
    +
    4748 return true;
    +
    4749 }
    +
    4750 }
    +
    4751 interval.start = (interval.end = start) + 1;
    +
    4752 return false;
    +
    4753 }
    +
    4754 };
    +
    4755
    +
    4759 class http_space : public parser
    +
    4760 {
    +
    4761 public:
    +
    4762 virtual bool match(
    +
    4763 _In_reads_or_z_(end) const char* text,
    +
    4764 _In_ size_t start = 0,
    +
    4765 _In_ size_t end = (size_t)-1,
    +
    4766 _In_ int flags = match_default)
    +
    4767 {
    +
    4768 assert(text || start >= end);
    +
    4769 interval.end = start;
    +
    4770 if (m_line_break.match(text, interval.end, end, flags)) {
    +
    4771 interval.end = m_line_break.interval.end;
    +
    4772 if (interval.end < end && text[interval.end] && isspace(text[interval.end])) {
    +
    4773 interval.start = start;
    +
    4774 interval.end++;
    +
    4775 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    +
    4776 return true;
    +
    4777 }
    +
    4778 }
    +
    4779 else if (interval.end < end && text[interval.end] && isspace(text[interval.end])) {
    +
    4780 interval.start = start;
    +
    4781 interval.end++;
    +
    4782 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    +
    4783 return true;
    +
    4784 }
    +
    4785 interval.start = (interval.end = start) + 1;
    +
    4786 return false;
    +
    4787 }
    +
    4788
    +
    4789 protected:
    +
    4790 http_line_break m_line_break;
    +
    4791 };
    +
    4792
    +
    4796 class http_text_char : public parser
    +
    4797 {
    +
    4798 public:
    +
    4799 virtual bool match(
    +
    4800 _In_reads_or_z_(end) const char* text,
    +
    4801 _In_ size_t start = 0,
    +
    4802 _In_ size_t end = (size_t)-1,
    +
    4803 _In_ int flags = match_default)
    +
    4804 {
    +
    4805 assert(text || start >= end);
    +
    4806 interval.end = start;
    +
    4807
    +
    4808 assert(text || interval.end >= end);
    +
    4809 if (m_space.match(text, interval.end, end, flags)) {
    +
    4810 interval.start = start;
    +
    4811 interval.end = m_space.interval.end;
    +
    4812 return true;
    +
    4813 }
    +
    4814 else if (interval.end < end && text[interval.end] && text[interval.end] >= 0x20) {
    +
    4815 interval.start = start;
    +
    4816 interval.end++;
    +
    4817 return true;
    +
    4818 }
    +
    4819 interval.start = (interval.end = start) + 1;
    +
    4820 return false;
    +
    4821 }
    +
    4822
    +
    4823 protected:
    +
    4824 http_space m_space;
    +
    4825 };
    +
    4826
    +
    4830 class http_token : public parser
    +
    4831 {
    +
    4832 public:
    +
    4833 virtual bool match(
    +
    4834 _In_reads_or_z_(end) const char* text,
    +
    4835 _In_ size_t start = 0,
    +
    4836 _In_ size_t end = (size_t)-1,
    +
    4837 _In_ int flags = match_default)
    +
    4838 {
    +
    4839 assert(text || start >= end);
    +
    4840 interval.end = start;
    +
    4841 for (;;) {
    +
    4842 if (interval.end < end && text[interval.end]) {
    +
    4843 if ((unsigned int)text[interval.end] < 0x20 ||
    +
    4844 (unsigned int)text[interval.end] == 0x7f ||
    +
    4845 text[interval.end] == '(' ||
    +
    4846 text[interval.end] == ')' ||
    +
    4847 text[interval.end] == '<' ||
    +
    4848 text[interval.end] == '>' ||
    +
    4849 text[interval.end] == '@' ||
    +
    4850 text[interval.end] == ',' ||
    +
    4851 text[interval.end] == ';' ||
    +
    4852 text[interval.end] == ':' ||
    +
    4853 text[interval.end] == '\\' ||
    +
    4854 text[interval.end] == '\"' ||
    +
    4855 text[interval.end] == '/' ||
    +
    4856 text[interval.end] == '[' ||
    +
    4857 text[interval.end] == ']' ||
    +
    4858 text[interval.end] == '?' ||
    +
    4859 text[interval.end] == '=' ||
    +
    4860 text[interval.end] == '{' ||
    +
    4861 text[interval.end] == '}' ||
    +
    4862 isspace(text[interval.end]))
    +
    4863 break;
    +
    4864 else
    +
    4865 interval.end++;
    +
    4866 }
    +
    4867 else
    +
    4868 break;
    +
    4869 }
    +
    4870 if (start < interval.end) {
    +
    4871 interval.start = start;
    +
    4872 return true;
    +
    4873 }
    +
    4874 else {
    +
    4875 interval.start = (interval.end = start) + 1;
    +
    4876 return false;
    +
    4877 }
    +
    4878 }
    +
    4879 };
    +
    4880
    + +
    4885 {
    +
    4886 public:
    +
    4887 virtual bool match(
    +
    4888 _In_reads_or_z_(end) const char* text,
    +
    4889 _In_ size_t start = 0,
    +
    4890 _In_ size_t end = (size_t)-1,
    +
    4891 _In_ int flags = match_default)
    +
    4892 {
    +
    4893 assert(text || start >= end);
    +
    4894 interval.end = start;
    +
    4895 if (interval.end < end && text[interval.end] != '"')
    +
    4896 goto error;
    +
    4897 interval.end++;
    +
    4898 content.start = interval.end;
    +
    4899 for (;;) {
    +
    4900 assert(text || interval.end >= end);
    +
    4901 if (interval.end < end && text[interval.end]) {
    +
    4902 if (text[interval.end] == '"') {
    +
    4903 content.end = interval.end;
    +
    4904 interval.end++;
    +
    4905 break;
    +
    4906 }
    +
    4907 else if (text[interval.end] == '\\') {
    +
    4908 interval.end++;
    +
    4909 if (interval.end < end && text[interval.end]) {
    +
    4910 interval.end++;
    +
    4911 }
    +
    4912 else
    +
    4913 goto error;
    +
    4914 }
    +
    4915 else if (m_chr.match(text, interval.end, end, flags))
    +
    4916 interval.end++;
    +
    4917 else
    +
    4918 goto error;
    +
    4919 }
    +
    4920 else
    +
    4921 goto error;
    +
    4922 }
    +
    4923 interval.start = start;
    +
    4924 return true;
    +
    4925
    +
    4926 error:
    +
    4927 content.start = 1;
    +
    4928 content.end = 0;
    +
    4929 interval.start = (interval.end = start) + 1;
    +
    4930 return false;
    +
    4931 }
    4932
    -
    4933 protected:
    -
    4934 http_text_char m_chr;
    -
    4935 };
    -
    4936
    -
    4940 class http_value : public tester
    -
    4941 {
    -
    4942 public:
    -
    4943 virtual bool match(
    -
    4944 _In_reads_or_z_(end) const char* text,
    -
    4945 _In_ size_t start = 0,
    -
    4946 _In_ size_t end = (size_t)-1,
    -
    4947 _In_ int flags = match_default)
    -
    4948 {
    -
    4949 assert(text || start >= end);
    -
    4950 interval.end = start;
    -
    4951 if (string.match(text, interval.end, end, flags)) {
    -
    4952 token.invalidate();
    -
    4953 interval.end = string.interval.end;
    -
    4954 interval.start = start;
    -
    4955 return true;
    -
    4956 }
    -
    4957 else if (token.match(text, interval.end, end, flags)) {
    -
    4958 string.invalidate();
    -
    4959 interval.end = token.interval.end;
    -
    4960 interval.start = start;
    -
    4961 return true;
    -
    4962 }
    -
    4963 else {
    -
    4964 interval.start = (interval.end = start) + 1;
    -
    4965 return false;
    +
    4933 virtual void invalidate()
    +
    4934 {
    +
    4935 content.start = 1;
    +
    4936 content.end = 0;
    +
    4937 parser::invalidate();
    +
    4938 }
    +
    4939
    +
    4940 public:
    + +
    4942
    +
    4943 protected:
    +
    4944 http_text_char m_chr;
    +
    4945 };
    +
    4946
    +
    4950 class http_value : public parser
    +
    4951 {
    +
    4952 public:
    +
    4953 virtual bool match(
    +
    4954 _In_reads_or_z_(end) const char* text,
    +
    4955 _In_ size_t start = 0,
    +
    4956 _In_ size_t end = (size_t)-1,
    +
    4957 _In_ int flags = match_default)
    +
    4958 {
    +
    4959 assert(text || start >= end);
    +
    4960 interval.end = start;
    +
    4961 if (string.match(text, interval.end, end, flags)) {
    +
    4962 token.invalidate();
    +
    4963 interval.end = string.interval.end;
    +
    4964 interval.start = start;
    +
    4965 return true;
    4966 }
    -
    4967 }
    -
    4968
    -
    4969 virtual void invalidate()
    -
    4970 {
    -
    4971 string.invalidate();
    -
    4972 token.invalidate();
    -
    4973 tester::invalidate();
    -
    4974 }
    -
    4975
    -
    4976 public:
    - - -
    4979 };
    -
    4980
    -
    4984 class http_parameter : public tester
    -
    4985 {
    +
    4967 else if (token.match(text, interval.end, end, flags)) {
    +
    4968 string.invalidate();
    +
    4969 interval.end = token.interval.end;
    +
    4970 interval.start = start;
    +
    4971 return true;
    +
    4972 }
    +
    4973 else {
    +
    4974 interval.start = (interval.end = start) + 1;
    +
    4975 return false;
    +
    4976 }
    +
    4977 }
    +
    4978
    +
    4979 virtual void invalidate()
    +
    4980 {
    +
    4981 string.invalidate();
    +
    4982 token.invalidate();
    +
    4983 parser::invalidate();
    +
    4984 }
    +
    4985
    4986 public:
    -
    4987 virtual bool match(
    -
    4988 _In_reads_or_z_(end) const char* text,
    -
    4989 _In_ size_t start = 0,
    -
    4990 _In_ size_t end = (size_t)-1,
    -
    4991 _In_ int flags = match_default)
    -
    4992 {
    -
    4993 assert(text || start >= end);
    -
    4994 interval.end = start;
    -
    4995 if (name.match(text, interval.end, end, flags))
    -
    4996 interval.end = name.interval.end;
    -
    4997 else
    -
    4998 goto error;
    -
    4999 while (m_space.match(text, interval.end, end, flags))
    -
    5000 interval.end = m_space.interval.end;
    -
    5001 assert(text || interval.end >= end);
    -
    5002 if (interval.end < end && text[interval.end] == '=')
    -
    5003 interval.end++;
    -
    5004 else
    -
    5005 while (m_space.match(text, interval.end, end, flags))
    -
    5006 interval.end = m_space.interval.end;
    -
    5007 if (value.match(text, interval.end, end, flags))
    -
    5008 interval.end = value.interval.end;
    -
    5009 else
    -
    5010 goto error;
    -
    5011 interval.start = start;
    -
    5012 return true;
    -
    5013
    -
    5014 error:
    -
    5015 name.invalidate();
    -
    5016 value.invalidate();
    -
    5017 interval.start = (interval.end = start) + 1;
    -
    5018 return false;
    -
    5019 }
    -
    5020
    -
    5021 virtual void invalidate()
    -
    5022 {
    -
    5023 name.invalidate();
    -
    5024 value.invalidate();
    -
    5025 tester::invalidate();
    -
    5026 }
    -
    5027
    -
    5028 public:
    - - -
    5031
    -
    5032 protected:
    -
    5033 http_space m_space;
    -
    5034 };
    -
    5035
    -
    5039 class http_any_type : public tester
    -
    5040 {
    -
    5041 public:
    -
    5042 virtual bool match(
    -
    5043 _In_reads_or_z_(end) const char* text,
    -
    5044 _In_ size_t start = 0,
    -
    5045 _In_ size_t end = (size_t)-1,
    -
    5046 _In_ int flags = match_default)
    -
    5047 {
    -
    5048 assert(text || start >= end);
    -
    5049 if (start + 2 < end &&
    -
    5050 text[start] == '*' &&
    -
    5051 text[start + 1] == '/' &&
    -
    5052 text[start + 2] == '*')
    -
    5053 {
    -
    5054 interval.end = (interval.start = start) + 3;
    -
    5055 return true;
    -
    5056 }
    -
    5057 else if (start < end && text[start] == '*') {
    -
    5058 interval.end = (interval.start = start) + 1;
    -
    5059 return true;
    -
    5060 }
    -
    5061 else {
    -
    5062 interval.start = (interval.end = start) + 1;
    -
    5063 return false;
    -
    5064 }
    -
    5065 }
    -
    5066 };
    -
    5067
    - -
    5072 {
    -
    5073 public:
    -
    5074 virtual bool match(
    -
    5075 _In_reads_or_z_(end) const char* text,
    -
    5076 _In_ size_t start = 0,
    -
    5077 _In_ size_t end = (size_t)-1,
    -
    5078 _In_ int flags = match_default)
    -
    5079 {
    -
    5080 assert(text || start >= end);
    -
    5081 interval.end = start;
    -
    5082 if (type.match(text, interval.end, end, flags))
    -
    5083 interval.end = type.interval.end;
    -
    5084 else
    -
    5085 goto error;
    -
    5086 while (m_space.match(text, interval.end, end, flags))
    -
    5087 interval.end = m_space.interval.end;
    -
    5088 if (interval.end < end && text[interval.end] == '/')
    -
    5089 interval.end++;
    -
    5090 else
    -
    5091 goto error;
    -
    5092 while (m_space.match(text, interval.end, end, flags))
    -
    5093 interval.end = m_space.interval.end;
    -
    5094 if (subtype.match(text, interval.end, end, flags))
    -
    5095 interval.end = subtype.interval.end;
    -
    5096 else
    -
    5097 goto error;
    -
    5098 interval.start = start;
    -
    5099 return true;
    -
    5100
    -
    5101 error:
    -
    5102 type.invalidate();
    -
    5103 subtype.invalidate();
    -
    5104 interval.start = (interval.end = start) + 1;
    -
    5105 return false;
    -
    5106 }
    -
    5107
    -
    5108 virtual void invalidate()
    -
    5109 {
    -
    5110 type.invalidate();
    -
    5111 subtype.invalidate();
    -
    5112 tester::invalidate();
    -
    5113 }
    -
    5114
    -
    5115 public:
    -
    5116 http_token type;
    -
    5117 http_token subtype;
    -
    5118
    -
    5119 protected:
    -
    5120 http_space m_space;
    -
    5121 };
    -
    5122
    - -
    5127 {
    -
    5128 public:
    -
    5129 virtual bool match(
    -
    5130 _In_reads_or_z_(end) const char* text,
    -
    5131 _In_ size_t start = 0,
    -
    5132 _In_ size_t end = (size_t)-1,
    -
    5133 _In_ int flags = match_default)
    -
    5134 {
    -
    5135 assert(text || start >= end);
    -
    5136 if (!http_media_range::match(text, start, end, flags))
    -
    5137 goto error;
    -
    5138 params.clear();
    -
    5139 for (;;) {
    -
    5140 if (interval.end < end && text[interval.end]) {
    -
    5141 if (m_space.match(text, interval.end, end, flags))
    -
    5142 interval.end = m_space.interval.end;
    -
    5143 else if (text[interval.end] == ';') {
    -
    5144 interval.end++;
    -
    5145 while (m_space.match(text, interval.end, end, flags))
    -
    5146 interval.end = m_space.interval.end;
    -
    5147 http_parameter param;
    -
    5148 if (param.match(text, interval.end, end, flags)) {
    -
    5149 interval.end = param.interval.end;
    -
    5150 params.push_back(std::move(param));
    -
    5151 }
    -
    5152 else
    -
    5153 break;
    -
    5154 }
    -
    5155 else
    -
    5156 break;
    -
    5157 }
    -
    5158 else
    -
    5159 break;
    -
    5160 }
    -
    5161 interval.end = params.empty() ? subtype.interval.end : params.back().interval.end;
    -
    5162 return true;
    -
    5163
    -
    5164 error:
    -
    5165 http_media_range::invalidate();
    -
    5166 params.clear();
    -
    5167 interval.start = (interval.end = start) + 1;
    -
    5168 return false;
    -
    5169 }
    -
    5170
    -
    5171 virtual void invalidate()
    -
    5172 {
    -
    5173 params.clear();
    -
    5174 http_media_range::invalidate();
    -
    5175 }
    -
    5176
    -
    5177 public:
    -
    5178 std::list<http_parameter> params;
    -
    5179 };
    + + +
    4989 };
    +
    4990
    +
    4994 class http_parameter : public parser
    +
    4995 {
    +
    4996 public:
    +
    4997 virtual bool match(
    +
    4998 _In_reads_or_z_(end) const char* text,
    +
    4999 _In_ size_t start = 0,
    +
    5000 _In_ size_t end = (size_t)-1,
    +
    5001 _In_ int flags = match_default)
    +
    5002 {
    +
    5003 assert(text || start >= end);
    +
    5004 interval.end = start;
    +
    5005 if (name.match(text, interval.end, end, flags))
    +
    5006 interval.end = name.interval.end;
    +
    5007 else
    +
    5008 goto error;
    +
    5009 while (m_space.match(text, interval.end, end, flags))
    +
    5010 interval.end = m_space.interval.end;
    +
    5011 assert(text || interval.end >= end);
    +
    5012 if (interval.end < end && text[interval.end] == '=')
    +
    5013 interval.end++;
    +
    5014 else
    +
    5015 while (m_space.match(text, interval.end, end, flags))
    +
    5016 interval.end = m_space.interval.end;
    +
    5017 if (value.match(text, interval.end, end, flags))
    +
    5018 interval.end = value.interval.end;
    +
    5019 else
    +
    5020 goto error;
    +
    5021 interval.start = start;
    +
    5022 return true;
    +
    5023
    +
    5024 error:
    +
    5025 name.invalidate();
    +
    5026 value.invalidate();
    +
    5027 interval.start = (interval.end = start) + 1;
    +
    5028 return false;
    +
    5029 }
    +
    5030
    +
    5031 virtual void invalidate()
    +
    5032 {
    +
    5033 name.invalidate();
    +
    5034 value.invalidate();
    +
    5035 parser::invalidate();
    +
    5036 }
    +
    5037
    +
    5038 public:
    + + +
    5041
    +
    5042 protected:
    +
    5043 http_space m_space;
    +
    5044 };
    +
    5045
    +
    5049 class http_any_type : public parser
    +
    5050 {
    +
    5051 public:
    +
    5052 virtual bool match(
    +
    5053 _In_reads_or_z_(end) const char* text,
    +
    5054 _In_ size_t start = 0,
    +
    5055 _In_ size_t end = (size_t)-1,
    +
    5056 _In_ int flags = match_default)
    +
    5057 {
    +
    5058 assert(text || start >= end);
    +
    5059 if (start + 2 < end &&
    +
    5060 text[start] == '*' &&
    +
    5061 text[start + 1] == '/' &&
    +
    5062 text[start + 2] == '*')
    +
    5063 {
    +
    5064 interval.end = (interval.start = start) + 3;
    +
    5065 return true;
    +
    5066 }
    +
    5067 else if (start < end && text[start] == '*') {
    +
    5068 interval.end = (interval.start = start) + 1;
    +
    5069 return true;
    +
    5070 }
    +
    5071 else {
    +
    5072 interval.start = (interval.end = start) + 1;
    +
    5073 return false;
    +
    5074 }
    +
    5075 }
    +
    5076 };
    +
    5077
    + +
    5082 {
    +
    5083 public:
    +
    5084 virtual bool match(
    +
    5085 _In_reads_or_z_(end) const char* text,
    +
    5086 _In_ size_t start = 0,
    +
    5087 _In_ size_t end = (size_t)-1,
    +
    5088 _In_ int flags = match_default)
    +
    5089 {
    +
    5090 assert(text || start >= end);
    +
    5091 interval.end = start;
    +
    5092 if (type.match(text, interval.end, end, flags))
    +
    5093 interval.end = type.interval.end;
    +
    5094 else
    +
    5095 goto error;
    +
    5096 while (m_space.match(text, interval.end, end, flags))
    +
    5097 interval.end = m_space.interval.end;
    +
    5098 if (interval.end < end && text[interval.end] == '/')
    +
    5099 interval.end++;
    +
    5100 else
    +
    5101 goto error;
    +
    5102 while (m_space.match(text, interval.end, end, flags))
    +
    5103 interval.end = m_space.interval.end;
    +
    5104 if (subtype.match(text, interval.end, end, flags))
    +
    5105 interval.end = subtype.interval.end;
    +
    5106 else
    +
    5107 goto error;
    +
    5108 interval.start = start;
    +
    5109 return true;
    +
    5110
    +
    5111 error:
    +
    5112 type.invalidate();
    +
    5113 subtype.invalidate();
    +
    5114 interval.start = (interval.end = start) + 1;
    +
    5115 return false;
    +
    5116 }
    +
    5117
    +
    5118 virtual void invalidate()
    +
    5119 {
    +
    5120 type.invalidate();
    +
    5121 subtype.invalidate();
    +
    5122 parser::invalidate();
    +
    5123 }
    +
    5124
    +
    5125 public:
    +
    5126 http_token type;
    +
    5127 http_token subtype;
    +
    5128
    +
    5129 protected:
    +
    5130 http_space m_space;
    +
    5131 };
    +
    5132
    + +
    5137 {
    +
    5138 public:
    +
    5139 virtual bool match(
    +
    5140 _In_reads_or_z_(end) const char* text,
    +
    5141 _In_ size_t start = 0,
    +
    5142 _In_ size_t end = (size_t)-1,
    +
    5143 _In_ int flags = match_default)
    +
    5144 {
    +
    5145 assert(text || start >= end);
    +
    5146 if (!http_media_range::match(text, start, end, flags))
    +
    5147 goto error;
    +
    5148 params.clear();
    +
    5149 for (;;) {
    +
    5150 if (interval.end < end && text[interval.end]) {
    +
    5151 if (m_space.match(text, interval.end, end, flags))
    +
    5152 interval.end = m_space.interval.end;
    +
    5153 else if (text[interval.end] == ';') {
    +
    5154 interval.end++;
    +
    5155 while (m_space.match(text, interval.end, end, flags))
    +
    5156 interval.end = m_space.interval.end;
    +
    5157 http_parameter param;
    +
    5158 if (param.match(text, interval.end, end, flags)) {
    +
    5159 interval.end = param.interval.end;
    +
    5160 params.push_back(std::move(param));
    +
    5161 }
    +
    5162 else
    +
    5163 break;
    +
    5164 }
    +
    5165 else
    +
    5166 break;
    +
    5167 }
    +
    5168 else
    +
    5169 break;
    +
    5170 }
    +
    5171 interval.end = params.empty() ? subtype.interval.end : params.back().interval.end;
    +
    5172 return true;
    +
    5173
    +
    5174 error:
    +
    5175 http_media_range::invalidate();
    +
    5176 params.clear();
    +
    5177 interval.start = (interval.end = start) + 1;
    +
    5178 return false;
    +
    5179 }
    5180
    - -
    5185 {
    -
    5186 public:
    -
    5187 virtual bool match(
    -
    5188 _In_reads_or_z_(end) const char* text,
    -
    5189 _In_ size_t start = 0,
    -
    5190 _In_ size_t end = (size_t)-1,
    -
    5191 _In_ int flags = match_default)
    -
    5192 {
    -
    5193 assert(text || start >= end);
    -
    5194 interval.end = start;
    -
    5195 for (;;) {
    -
    5196 if (interval.end < end && text[interval.end]) {
    -
    5197 if ((unsigned int)text[interval.end] < 0x20 ||
    -
    5198 (unsigned int)text[interval.end] == 0x7f ||
    -
    5199 text[interval.end] == ':' ||
    -
    5200 text[interval.end] == '/' ||
    -
    5201 isspace(text[interval.end]))
    -
    5202 break;
    -
    5203 else
    -
    5204 interval.end++;
    -
    5205 }
    -
    5206 else
    -
    5207 break;
    -
    5208 }
    -
    5209 if (start < interval.end) {
    -
    5210 interval.start = start;
    -
    5211 return true;
    -
    5212 }
    -
    5213 interval.start = (interval.end = start) + 1;
    -
    5214 return false;
    -
    5215 }
    -
    5216 };
    -
    5217
    -
    5221 class http_url_port : public tester
    -
    5222 {
    -
    5223 public:
    -
    5224 http_url_port(_In_ const std::locale& locale = std::locale()) :
    -
    5225 tester(locale),
    -
    5226 value(0)
    -
    5227 {}
    -
    5228
    -
    5229 virtual bool match(
    -
    5230 _In_reads_or_z_(end) const char* text,
    -
    5231 _In_ size_t start = 0,
    -
    5232 _In_ size_t end = (size_t)-1,
    -
    5233 _In_ int flags = match_default)
    -
    5234 {
    -
    5235 assert(text || start >= end);
    -
    5236 value = 0;
    -
    5237 interval.end = start;
    -
    5238 for (;;) {
    -
    5239 if (interval.end < end && text[interval.end]) {
    -
    5240 if ('0' <= text[interval.end] && text[interval.end] <= '9') {
    -
    5241 size_t _value = (size_t)value * 10 + text[interval.end] - '0';
    -
    5242 if (_value > (uint16_t)-1) {
    -
    5243 value = 0;
    -
    5244 interval.start = (interval.end = start) + 1;
    -
    5245 return false;
    -
    5246 }
    -
    5247 value = (uint16_t)_value;
    -
    5248 interval.end++;
    -
    5249 }
    -
    5250 else
    -
    5251 break;
    -
    5252 }
    -
    5253 else
    -
    5254 break;
    -
    5255 }
    -
    5256 if (start < interval.end) {
    -
    5257 interval.start = start;
    -
    5258 return true;
    -
    5259 }
    -
    5260 interval.start = (interval.end = start) + 1;
    -
    5261 return false;
    -
    5262 }
    -
    5263
    -
    5264 virtual void invalidate()
    -
    5265 {
    -
    5266 value = 0;
    -
    5267 tester::invalidate();
    -
    5268 }
    -
    5269
    -
    5270 public:
    -
    5271 uint16_t value;
    -
    5272 };
    +
    5181 virtual void invalidate()
    +
    5182 {
    +
    5183 params.clear();
    +
    5184 http_media_range::invalidate();
    +
    5185 }
    +
    5186
    +
    5187 public:
    +
    5188 std::list<http_parameter> params;
    +
    5189 };
    +
    5190
    + +
    5195 {
    +
    5196 public:
    +
    5197 virtual bool match(
    +
    5198 _In_reads_or_z_(end) const char* text,
    +
    5199 _In_ size_t start = 0,
    +
    5200 _In_ size_t end = (size_t)-1,
    +
    5201 _In_ int flags = match_default)
    +
    5202 {
    +
    5203 assert(text || start >= end);
    +
    5204 interval.end = start;
    +
    5205 for (;;) {
    +
    5206 if (interval.end < end && text[interval.end]) {
    +
    5207 if ((unsigned int)text[interval.end] < 0x20 ||
    +
    5208 (unsigned int)text[interval.end] == 0x7f ||
    +
    5209 text[interval.end] == ':' ||
    +
    5210 text[interval.end] == '/' ||
    +
    5211 isspace(text[interval.end]))
    +
    5212 break;
    +
    5213 else
    +
    5214 interval.end++;
    +
    5215 }
    +
    5216 else
    +
    5217 break;
    +
    5218 }
    +
    5219 if (start < interval.end) {
    +
    5220 interval.start = start;
    +
    5221 return true;
    +
    5222 }
    +
    5223 interval.start = (interval.end = start) + 1;
    +
    5224 return false;
    +
    5225 }
    +
    5226 };
    +
    5227
    +
    5231 class http_url_port : public parser
    +
    5232 {
    +
    5233 public:
    +
    5234 http_url_port(_In_ const std::locale& locale = std::locale()) :
    +
    5235 parser(locale),
    +
    5236 value(0)
    +
    5237 {}
    +
    5238
    +
    5239 virtual bool match(
    +
    5240 _In_reads_or_z_(end) const char* text,
    +
    5241 _In_ size_t start = 0,
    +
    5242 _In_ size_t end = (size_t)-1,
    +
    5243 _In_ int flags = match_default)
    +
    5244 {
    +
    5245 assert(text || start >= end);
    +
    5246 value = 0;
    +
    5247 interval.end = start;
    +
    5248 for (;;) {
    +
    5249 if (interval.end < end && text[interval.end]) {
    +
    5250 if ('0' <= text[interval.end] && text[interval.end] <= '9') {
    +
    5251 size_t _value = (size_t)value * 10 + text[interval.end] - '0';
    +
    5252 if (_value > (uint16_t)-1) {
    +
    5253 value = 0;
    +
    5254 interval.start = (interval.end = start) + 1;
    +
    5255 return false;
    +
    5256 }
    +
    5257 value = (uint16_t)_value;
    +
    5258 interval.end++;
    +
    5259 }
    +
    5260 else
    +
    5261 break;
    +
    5262 }
    +
    5263 else
    +
    5264 break;
    +
    5265 }
    +
    5266 if (start < interval.end) {
    +
    5267 interval.start = start;
    +
    5268 return true;
    +
    5269 }
    +
    5270 interval.start = (interval.end = start) + 1;
    +
    5271 return false;
    +
    5272 }
    5273
    - -
    5278 {
    -
    5279 public:
    -
    5280 virtual bool match(
    -
    5281 _In_reads_or_z_(end) const char* text,
    -
    5282 _In_ size_t start = 0,
    -
    5283 _In_ size_t end = (size_t)-1,
    -
    5284 _In_ int flags = match_default)
    -
    5285 {
    -
    5286 assert(text || start >= end);
    -
    5287 interval.end = start;
    -
    5288 for (;;) {
    -
    5289 if (interval.end < end && text[interval.end]) {
    -
    5290 if ((unsigned int)text[interval.end] < 0x20 ||
    -
    5291 (unsigned int)text[interval.end] == 0x7f ||
    -
    5292 text[interval.end] == '?' ||
    -
    5293 text[interval.end] == '/' ||
    -
    5294 isspace(text[interval.end]))
    -
    5295 break;
    -
    5296 else
    -
    5297 interval.end++;
    -
    5298 }
    -
    5299 else
    -
    5300 break;
    -
    5301 }
    -
    5302 interval.start = start;
    -
    5303 return true;
    -
    5304 }
    -
    5305 };
    -
    5306
    -
    5310 class http_url_path : public tester
    -
    5311 {
    -
    5312 public:
    -
    5313 virtual bool match(
    -
    5314 _In_reads_or_z_(end) const char* text,
    -
    5315 _In_ size_t start = 0,
    -
    5316 _In_ size_t end = (size_t)-1,
    -
    5317 _In_ int flags = match_default)
    -
    5318 {
    -
    5319 assert(text || start >= end);
    - -
    5321 interval.end = start;
    -
    5322 segments.clear();
    -
    5323 assert(text || interval.end >= end);
    -
    5324 if (interval.end < end && text[interval.end] != '/')
    -
    5325 goto error;
    -
    5326 interval.end++;
    -
    5327 s.match(text, interval.end, end, flags);
    -
    5328 segments.push_back(s);
    - -
    5330 for (;;) {
    -
    5331 if (interval.end < end && text[interval.end]) {
    -
    5332 if (text[interval.end] == '/') {
    -
    5333 interval.end++;
    -
    5334 s.match(text, interval.end, end, flags);
    -
    5335 segments.push_back(s);
    - -
    5337 }
    -
    5338 else
    -
    5339 break;
    -
    5340 }
    -
    5341 else
    -
    5342 break;
    -
    5343 }
    -
    5344 interval.start = start;
    -
    5345 return true;
    -
    5346
    -
    5347 error:
    -
    5348 segments.clear();
    -
    5349 interval.start = (interval.end = start) + 1;
    -
    5350 return false;
    -
    5351 }
    -
    5352
    -
    5353 virtual void invalidate()
    -
    5354 {
    -
    5355 segments.clear();
    -
    5356 tester::invalidate();
    -
    5357 }
    -
    5358
    -
    5359 public:
    -
    5360 std::vector<http_url_path_segment> segments;
    -
    5361 };
    +
    5274 virtual void invalidate()
    +
    5275 {
    +
    5276 value = 0;
    +
    5277 parser::invalidate();
    +
    5278 }
    +
    5279
    +
    5280 public:
    +
    5281 uint16_t value;
    +
    5282 };
    +
    5283
    + +
    5288 {
    +
    5289 public:
    +
    5290 virtual bool match(
    +
    5291 _In_reads_or_z_(end) const char* text,
    +
    5292 _In_ size_t start = 0,
    +
    5293 _In_ size_t end = (size_t)-1,
    +
    5294 _In_ int flags = match_default)
    +
    5295 {
    +
    5296 assert(text || start >= end);
    +
    5297 interval.end = start;
    +
    5298 for (;;) {
    +
    5299 if (interval.end < end && text[interval.end]) {
    +
    5300 if ((unsigned int)text[interval.end] < 0x20 ||
    +
    5301 (unsigned int)text[interval.end] == 0x7f ||
    +
    5302 text[interval.end] == '?' ||
    +
    5303 text[interval.end] == '/' ||
    +
    5304 isspace(text[interval.end]))
    +
    5305 break;
    +
    5306 else
    +
    5307 interval.end++;
    +
    5308 }
    +
    5309 else
    +
    5310 break;
    +
    5311 }
    +
    5312 interval.start = start;
    +
    5313 return true;
    +
    5314 }
    +
    5315 };
    +
    5316
    +
    5320 class http_url_path : public parser
    +
    5321 {
    +
    5322 public:
    +
    5323 virtual bool match(
    +
    5324 _In_reads_or_z_(end) const char* text,
    +
    5325 _In_ size_t start = 0,
    +
    5326 _In_ size_t end = (size_t)-1,
    +
    5327 _In_ int flags = match_default)
    +
    5328 {
    +
    5329 assert(text || start >= end);
    + +
    5331 interval.end = start;
    +
    5332 segments.clear();
    +
    5333 assert(text || interval.end >= end);
    +
    5334 if (interval.end < end && text[interval.end] != '/')
    +
    5335 goto error;
    +
    5336 interval.end++;
    +
    5337 s.match(text, interval.end, end, flags);
    +
    5338 segments.push_back(s);
    + +
    5340 for (;;) {
    +
    5341 if (interval.end < end && text[interval.end]) {
    +
    5342 if (text[interval.end] == '/') {
    +
    5343 interval.end++;
    +
    5344 s.match(text, interval.end, end, flags);
    +
    5345 segments.push_back(s);
    + +
    5347 }
    +
    5348 else
    +
    5349 break;
    +
    5350 }
    +
    5351 else
    +
    5352 break;
    +
    5353 }
    +
    5354 interval.start = start;
    +
    5355 return true;
    +
    5356
    +
    5357 error:
    +
    5358 segments.clear();
    +
    5359 interval.start = (interval.end = start) + 1;
    +
    5360 return false;
    +
    5361 }
    5362
    - -
    5367 {
    -
    5368 public:
    -
    5369 virtual bool match(
    -
    5370 _In_reads_or_z_(end) const char* text,
    -
    5371 _In_ size_t start = 0,
    -
    5372 _In_ size_t end = (size_t)-1,
    -
    5373 _In_ int flags = match_default)
    -
    5374 {
    -
    5375 assert(text || start >= end);
    -
    5376 interval.end = start;
    -
    5377 name.start = interval.end;
    -
    5378 for (;;) {
    -
    5379 if (interval.end < end && text[interval.end]) {
    -
    5380 if ((unsigned int)text[interval.end] < 0x20 ||
    -
    5381 (unsigned int)text[interval.end] == 0x7f ||
    -
    5382 text[interval.end] == '&' ||
    -
    5383 text[interval.end] == '=' ||
    -
    5384 isspace(text[interval.end]))
    -
    5385 break;
    -
    5386 else
    -
    5387 interval.end++;
    -
    5388 }
    -
    5389 else
    -
    5390 break;
    -
    5391 }
    -
    5392 if (start < interval.end)
    -
    5393 name.end = interval.end;
    -
    5394 else
    -
    5395 goto error;
    -
    5396 if (text[interval.end] == '=') {
    -
    5397 interval.end++;
    -
    5398 value.start = interval.end;
    -
    5399 for (;;) {
    -
    5400 if (interval.end < end && text[interval.end]) {
    -
    5401 if ((unsigned int)text[interval.end] < 0x20 ||
    -
    5402 (unsigned int)text[interval.end] == 0x7f ||
    -
    5403 text[interval.end] == '&' ||
    -
    5404 isspace(text[interval.end]))
    -
    5405 break;
    -
    5406 else
    -
    5407 interval.end++;
    -
    5408 }
    -
    5409 else
    -
    5410 break;
    -
    5411 }
    -
    5412 value.end = interval.end;
    -
    5413 }
    -
    5414 else {
    -
    5415 value.start = 1;
    -
    5416 value.end = 0;
    -
    5417 }
    -
    5418 interval.start = start;
    -
    5419 return true;
    -
    5420
    -
    5421 error:
    -
    5422 name.start = 1;
    -
    5423 name.end = 0;
    -
    5424 value.start = 1;
    -
    5425 value.end = 0;
    -
    5426 interval.start = (interval.end = start) + 1;
    -
    5427 return false;
    -
    5428 }
    -
    5429
    -
    5430 virtual void invalidate()
    -
    5431 {
    +
    5363 virtual void invalidate()
    +
    5364 {
    +
    5365 segments.clear();
    +
    5366 parser::invalidate();
    +
    5367 }
    +
    5368
    +
    5369 public:
    +
    5370 std::vector<http_url_path_segment> segments;
    +
    5371 };
    +
    5372
    + +
    5377 {
    +
    5378 public:
    +
    5379 virtual bool match(
    +
    5380 _In_reads_or_z_(end) const char* text,
    +
    5381 _In_ size_t start = 0,
    +
    5382 _In_ size_t end = (size_t)-1,
    +
    5383 _In_ int flags = match_default)
    +
    5384 {
    +
    5385 assert(text || start >= end);
    +
    5386 interval.end = start;
    +
    5387 name.start = interval.end;
    +
    5388 for (;;) {
    +
    5389 if (interval.end < end && text[interval.end]) {
    +
    5390 if ((unsigned int)text[interval.end] < 0x20 ||
    +
    5391 (unsigned int)text[interval.end] == 0x7f ||
    +
    5392 text[interval.end] == '&' ||
    +
    5393 text[interval.end] == '=' ||
    +
    5394 isspace(text[interval.end]))
    +
    5395 break;
    +
    5396 else
    +
    5397 interval.end++;
    +
    5398 }
    +
    5399 else
    +
    5400 break;
    +
    5401 }
    +
    5402 if (start < interval.end)
    +
    5403 name.end = interval.end;
    +
    5404 else
    +
    5405 goto error;
    +
    5406 if (text[interval.end] == '=') {
    +
    5407 interval.end++;
    +
    5408 value.start = interval.end;
    +
    5409 for (;;) {
    +
    5410 if (interval.end < end && text[interval.end]) {
    +
    5411 if ((unsigned int)text[interval.end] < 0x20 ||
    +
    5412 (unsigned int)text[interval.end] == 0x7f ||
    +
    5413 text[interval.end] == '&' ||
    +
    5414 isspace(text[interval.end]))
    +
    5415 break;
    +
    5416 else
    +
    5417 interval.end++;
    +
    5418 }
    +
    5419 else
    +
    5420 break;
    +
    5421 }
    +
    5422 value.end = interval.end;
    +
    5423 }
    +
    5424 else {
    +
    5425 value.start = 1;
    +
    5426 value.end = 0;
    +
    5427 }
    +
    5428 interval.start = start;
    +
    5429 return true;
    +
    5430
    +
    5431 error:
    5432 name.start = 1;
    5433 name.end = 0;
    5434 value.start = 1;
    5435 value.end = 0;
    -
    5436 tester::invalidate();
    -
    5437 }
    -
    5438
    -
    5439 public:
    - - -
    5442 };
    -
    5443
    -
    5447 class http_url : public tester
    -
    5448 {
    +
    5436 interval.start = (interval.end = start) + 1;
    +
    5437 return false;
    +
    5438 }
    +
    5439
    +
    5440 virtual void invalidate()
    +
    5441 {
    +
    5442 name.start = 1;
    +
    5443 name.end = 0;
    +
    5444 value.start = 1;
    +
    5445 value.end = 0;
    +
    5446 parser::invalidate();
    +
    5447 }
    +
    5448
    5449 public:
    -
    5450 virtual bool match(
    -
    5451 _In_reads_or_z_(end) const char* text,
    -
    5452 _In_ size_t start = 0,
    -
    5453 _In_ size_t end = (size_t)-1,
    -
    5454 _In_ int flags = match_default)
    -
    5455 {
    -
    5456 assert(text || start >= end);
    -
    5457 interval.end = start;
    -
    5458
    -
    5459 if (interval.end + 7 <= end && stdex::strnicmp(text + interval.end, 7, "http://", (size_t)-1, m_locale) == 0) {
    -
    5460 interval.end += 7;
    -
    5461 if (server.match(text, interval.end, end, flags))
    -
    5462 interval.end = server.interval.end;
    -
    5463 else
    -
    5464 goto error;
    -
    5465 if (interval.end < end && text[interval.end] == ':') {
    -
    5466 interval.end++;
    -
    5467 if (port.match(text, interval.end, end, flags))
    -
    5468 interval.end = port.interval.end;
    -
    5469 }
    -
    5470 else {
    -
    5471 port.invalidate();
    -
    5472 port.value = 80;
    -
    5473 }
    -
    5474 }
    -
    5475 else {
    -
    5476 server.invalidate();
    -
    5477 port.invalidate();
    -
    5478 port.value = 80;
    -
    5479 }
    -
    5480
    -
    5481 if (path.match(text, interval.end, end, flags))
    -
    5482 interval.end = path.interval.end;
    -
    5483 else
    -
    5484 goto error;
    -
    5485
    -
    5486 params.clear();
    -
    5487
    -
    5488 if (interval.end < end && text[interval.end] == '?') {
    -
    5489 interval.end++;
    -
    5490 for (;;) {
    -
    5491 if (interval.end < end && text[interval.end]) {
    -
    5492 if ((unsigned int)text[interval.end] < 0x20 ||
    -
    5493 (unsigned int)text[interval.end] == 0x7f ||
    -
    5494 isspace(text[interval.end]))
    -
    5495 break;
    -
    5496 else if (text[interval.end] == '&')
    -
    5497 interval.end++;
    -
    5498 else {
    -
    5499 http_url_parameter param;
    -
    5500 if (param.match(text, interval.end, end, flags)) {
    -
    5501 interval.end = param.interval.end;
    -
    5502 params.push_back(std::move(param));
    -
    5503 }
    -
    5504 else
    -
    5505 break;
    -
    5506 }
    -
    5507 }
    -
    5508 else
    -
    5509 break;
    -
    5510 }
    -
    5511 }
    -
    5512
    -
    5513 interval.start = start;
    -
    5514 return true;
    -
    5515
    -
    5516 error:
    -
    5517 server.invalidate();
    -
    5518 port.invalidate();
    -
    5519 path.invalidate();
    -
    5520 params.clear();
    -
    5521 interval.start = (interval.end = start) + 1;
    -
    5522 return false;
    -
    5523 }
    -
    5524
    -
    5525 virtual void invalidate()
    -
    5526 {
    -
    5527 server.invalidate();
    -
    5528 port.invalidate();
    -
    5529 path.invalidate();
    -
    5530 params.clear();
    -
    5531 tester::invalidate();
    -
    5532 }
    -
    5533
    -
    5534 public:
    -
    5535 http_url_server server;
    -
    5536 http_url_port port;
    -
    5537 http_url_path path;
    -
    5538 std::list<http_url_parameter> params;
    -
    5539 };
    -
    5540
    -
    5544 class http_language : public tester
    -
    5545 {
    -
    5546 public:
    -
    5547 virtual bool match(
    -
    5548 _In_reads_or_z_(end) const char* text,
    -
    5549 _In_ size_t start = 0,
    -
    5550 _In_ size_t end = (size_t)-1,
    -
    5551 _In_ int flags = match_default)
    -
    5552 {
    -
    5553 assert(text || start >= end);
    -
    5554 interval.end = start;
    -
    5555 components.clear();
    -
    5556 for (;;) {
    -
    5557 if (interval.end < end && text[interval.end]) {
    - -
    5559 k.end = interval.end;
    -
    5560 for (;;) {
    -
    5561 if (k.end < end && text[k.end]) {
    -
    5562 if (isalpha(text[k.end]))
    -
    5563 k.end++;
    -
    5564 else
    -
    5565 break;
    -
    5566 }
    -
    5567 else
    -
    5568 break;
    -
    5569 }
    -
    5570 if (interval.end < k.end) {
    -
    5571 k.start = interval.end;
    -
    5572 interval.end = k.end;
    -
    5573 components.push_back(k);
    -
    5574 }
    -
    5575 else
    -
    5576 break;
    -
    5577 if (interval.end < end && text[interval.end] == '-')
    -
    5578 interval.end++;
    -
    5579 else
    -
    5580 break;
    -
    5581 }
    -
    5582 else
    -
    5583 break;
    -
    5584 }
    -
    5585 if (!components.empty()) {
    -
    5586 interval.start = start;
    -
    5587 interval.end = components.back().end;
    -
    5588 return true;
    -
    5589 }
    -
    5590 interval.start = (interval.end = start) + 1;
    -
    5591 return false;
    -
    5592 }
    -
    5593
    -
    5594 virtual void invalidate()
    -
    5595 {
    -
    5596 components.clear();
    -
    5597 tester::invalidate();
    -
    5598 }
    -
    5599
    -
    5600 public:
    -
    5601 std::vector<stdex::interval<size_t>> components;
    -
    5602 };
    -
    5603
    -
    5607 class http_weight : public tester
    -
    5608 {
    -
    5609 public:
    -
    5610 http_weight(_In_ const std::locale& locale = std::locale()) :
    -
    5611 tester(locale),
    -
    5612 value(1.0f)
    -
    5613 {}
    + + +
    5452 };
    +
    5453
    +
    5457 class http_url : public parser
    +
    5458 {
    +
    5459 public:
    +
    5460 http_url(_In_ const std::locale& locale = std::locale()) :
    +
    5461 parser(locale),
    +
    5462 port(locale)
    +
    5463 {}
    +
    5464
    +
    5465 virtual bool match(
    +
    5466 _In_reads_or_z_(end) const char* text,
    +
    5467 _In_ size_t start = 0,
    +
    5468 _In_ size_t end = (size_t)-1,
    +
    5469 _In_ int flags = match_default)
    +
    5470 {
    +
    5471 assert(text || start >= end);
    +
    5472 interval.end = start;
    +
    5473
    +
    5474 if (interval.end + 7 <= end && stdex::strnicmp(text + interval.end, 7, "http://", (size_t)-1, m_locale) == 0) {
    +
    5475 interval.end += 7;
    +
    5476 if (server.match(text, interval.end, end, flags))
    +
    5477 interval.end = server.interval.end;
    +
    5478 else
    +
    5479 goto error;
    +
    5480 if (interval.end < end && text[interval.end] == ':') {
    +
    5481 interval.end++;
    +
    5482 if (port.match(text, interval.end, end, flags))
    +
    5483 interval.end = port.interval.end;
    +
    5484 }
    +
    5485 else {
    +
    5486 port.invalidate();
    +
    5487 port.value = 80;
    +
    5488 }
    +
    5489 }
    +
    5490 else {
    +
    5491 server.invalidate();
    +
    5492 port.invalidate();
    +
    5493 port.value = 80;
    +
    5494 }
    +
    5495
    +
    5496 if (path.match(text, interval.end, end, flags))
    +
    5497 interval.end = path.interval.end;
    +
    5498 else
    +
    5499 goto error;
    +
    5500
    +
    5501 params.clear();
    +
    5502
    +
    5503 if (interval.end < end && text[interval.end] == '?') {
    +
    5504 interval.end++;
    +
    5505 for (;;) {
    +
    5506 if (interval.end < end && text[interval.end]) {
    +
    5507 if ((unsigned int)text[interval.end] < 0x20 ||
    +
    5508 (unsigned int)text[interval.end] == 0x7f ||
    +
    5509 isspace(text[interval.end]))
    +
    5510 break;
    +
    5511 else if (text[interval.end] == '&')
    +
    5512 interval.end++;
    +
    5513 else {
    +
    5514 http_url_parameter param;
    +
    5515 if (param.match(text, interval.end, end, flags)) {
    +
    5516 interval.end = param.interval.end;
    +
    5517 params.push_back(std::move(param));
    +
    5518 }
    +
    5519 else
    +
    5520 break;
    +
    5521 }
    +
    5522 }
    +
    5523 else
    +
    5524 break;
    +
    5525 }
    +
    5526 }
    +
    5527
    +
    5528 interval.start = start;
    +
    5529 return true;
    +
    5530
    +
    5531 error:
    +
    5532 server.invalidate();
    +
    5533 port.invalidate();
    +
    5534 path.invalidate();
    +
    5535 params.clear();
    +
    5536 interval.start = (interval.end = start) + 1;
    +
    5537 return false;
    +
    5538 }
    +
    5539
    +
    5540 virtual void invalidate()
    +
    5541 {
    +
    5542 server.invalidate();
    +
    5543 port.invalidate();
    +
    5544 path.invalidate();
    +
    5545 params.clear();
    +
    5546 parser::invalidate();
    +
    5547 }
    +
    5548
    +
    5549 public:
    +
    5550 http_url_server server;
    +
    5551 http_url_port port;
    +
    5552 http_url_path path;
    +
    5553 std::list<http_url_parameter> params;
    +
    5554 };
    +
    5555
    +
    5559 class http_language : public parser
    +
    5560 {
    +
    5561 public:
    +
    5562 virtual bool match(
    +
    5563 _In_reads_or_z_(end) const char* text,
    +
    5564 _In_ size_t start = 0,
    +
    5565 _In_ size_t end = (size_t)-1,
    +
    5566 _In_ int flags = match_default)
    +
    5567 {
    +
    5568 assert(text || start >= end);
    +
    5569 interval.end = start;
    +
    5570 components.clear();
    +
    5571 for (;;) {
    +
    5572 if (interval.end < end && text[interval.end]) {
    + +
    5574 k.end = interval.end;
    +
    5575 for (;;) {
    +
    5576 if (k.end < end && text[k.end]) {
    +
    5577 if (isalpha(text[k.end]))
    +
    5578 k.end++;
    +
    5579 else
    +
    5580 break;
    +
    5581 }
    +
    5582 else
    +
    5583 break;
    +
    5584 }
    +
    5585 if (interval.end < k.end) {
    +
    5586 k.start = interval.end;
    +
    5587 interval.end = k.end;
    +
    5588 components.push_back(k);
    +
    5589 }
    +
    5590 else
    +
    5591 break;
    +
    5592 if (interval.end < end && text[interval.end] == '-')
    +
    5593 interval.end++;
    +
    5594 else
    +
    5595 break;
    +
    5596 }
    +
    5597 else
    +
    5598 break;
    +
    5599 }
    +
    5600 if (!components.empty()) {
    +
    5601 interval.start = start;
    +
    5602 interval.end = components.back().end;
    +
    5603 return true;
    +
    5604 }
    +
    5605 interval.start = (interval.end = start) + 1;
    +
    5606 return false;
    +
    5607 }
    +
    5608
    +
    5609 virtual void invalidate()
    +
    5610 {
    +
    5611 components.clear();
    +
    5612 parser::invalidate();
    +
    5613 }
    5614
    -
    5615 virtual bool match(
    -
    5616 _In_reads_or_z_(end) const char* text,
    -
    5617 _In_ size_t start = 0,
    -
    5618 _In_ size_t end = (size_t)-1,
    -
    5619 _In_ int flags = match_default)
    -
    5620 {
    -
    5621 assert(text || start >= end);
    -
    5622 size_t celi_del = 0, decimalni_del = 0, decimalni_del_n = 1;
    -
    5623 interval.end = start;
    -
    5624 for (;;) {
    -
    5625 if (interval.end < end && text[interval.end]) {
    -
    5626 if ('0' <= text[interval.end] && text[interval.end] <= '9') {
    -
    5627 celi_del = celi_del * 10 + text[interval.end] - '0';
    -
    5628 interval.end++;
    -
    5629 }
    -
    5630 else if (text[interval.end] == '.') {
    -
    5631 interval.end++;
    -
    5632 for (;;) {
    -
    5633 if (interval.end < end && text[interval.end]) {
    -
    5634 if ('0' <= text[interval.end] && text[interval.end] <= '9') {
    -
    5635 decimalni_del = decimalni_del * 10 + text[interval.end] - '0';
    -
    5636 decimalni_del_n *= 10;
    -
    5637 interval.end++;
    -
    5638 }
    -
    5639 else
    -
    5640 break;
    -
    5641 }
    -
    5642 else
    -
    5643 break;
    -
    5644 }
    -
    5645 break;
    -
    5646 }
    -
    5647 else
    -
    5648 break;
    -
    5649 }
    -
    5650 else
    -
    5651 break;
    -
    5652 }
    -
    5653 if (start < interval.end) {
    -
    5654 value = (float)((double)celi_del + (double)decimalni_del / decimalni_del_n);
    -
    5655 interval.start = start;
    -
    5656 return true;
    -
    5657 }
    -
    5658 value = 1.0f;
    -
    5659 interval.start = (interval.end = start) + 1;
    -
    5660 return false;
    -
    5661 }
    -
    5662
    -
    5663 virtual void invalidate()
    -
    5664 {
    -
    5665 value = 1.0f;
    -
    5666 tester::invalidate();
    -
    5667 }
    -
    5668
    -
    5669 public:
    -
    5670 float value;
    -
    5671 };
    -
    5672
    -
    5676 class http_asterisk : public tester
    -
    5677 {
    -
    5678 public:
    -
    5679 virtual bool match(
    -
    5680 _In_reads_or_z_(end) const char* text,
    -
    5681 _In_ size_t start = 0,
    -
    5682 _In_ size_t end = (size_t)-1,
    -
    5683 _In_ int flags = match_default)
    -
    5684 {
    -
    5685 assert(text || end <= start);
    -
    5686 if (start < end && text[start] == '*') {
    -
    5687 interval.end = (interval.start = start) + 1;
    -
    5688 return true;
    -
    5689 }
    -
    5690 interval.start = (interval.end = start) + 1;
    -
    5691 return false;
    -
    5692 }
    -
    5693 };
    -
    5694
    -
    5698 template <class T, class T_asterisk = http_asterisk>
    - -
    5700 {
    -
    5701 public:
    -
    5702 virtual bool match(
    -
    5703 _In_reads_or_z_(end) const char* text,
    -
    5704 _In_ size_t start = 0,
    -
    5705 _In_ size_t end = (size_t)-1,
    -
    5706 _In_ int flags = match_default)
    -
    5707 {
    -
    5708 assert(text || start >= end);
    -
    5709 size_t konec_vrednosti;
    -
    5710 interval.end = start;
    -
    5711 if (asterisk.match(text, interval.end, end, flags)) {
    -
    5712 interval.end = konec_vrednosti = asterisk.interval.end;
    -
    5713 value.invalidate();
    -
    5714 }
    -
    5715 else if (value.match(text, interval.end, end, flags)) {
    -
    5716 interval.end = konec_vrednosti = value.interval.end;
    -
    5717 asterisk.invalidate();
    -
    5718 }
    -
    5719 else {
    -
    5720 asterisk.invalidate();
    -
    5721 value.invalidate();
    -
    5722 interval.start = (interval.end = start) + 1;
    -
    5723 return false;
    -
    5724 }
    -
    5725
    -
    5726 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    -
    5727 if (interval.end < end && text[interval.end] == ';') {
    -
    5728 interval.end++;
    -
    5729 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    -
    5730 if (interval.end < end && (text[interval.end] == 'q' || text[interval.end] == 'Q')) {
    -
    5731 interval.end++;
    -
    5732 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    -
    5733 if (interval.end < end && text[interval.end] == '=') {
    -
    5734 interval.end++;
    -
    5735 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    -
    5736 if (factor.match(text, interval.end, end, flags))
    -
    5737 interval.end = factor.interval.end;
    -
    5738 }
    -
    5739 }
    -
    5740 }
    -
    5741 if (!factor.interval) {
    -
    5742 factor.invalidate();
    -
    5743 interval.end = konec_vrednosti;
    +
    5615 public:
    +
    5616 std::vector<stdex::interval<size_t>> components;
    +
    5617 };
    +
    5618
    +
    5622 class http_weight : public parser
    +
    5623 {
    +
    5624 public:
    +
    5625 http_weight(_In_ const std::locale& locale = std::locale()) :
    +
    5626 parser(locale),
    +
    5627 value(1.0f)
    +
    5628 {}
    +
    5629
    +
    5630 virtual bool match(
    +
    5631 _In_reads_or_z_(end) const char* text,
    +
    5632 _In_ size_t start = 0,
    +
    5633 _In_ size_t end = (size_t)-1,
    +
    5634 _In_ int flags = match_default)
    +
    5635 {
    +
    5636 assert(text || start >= end);
    +
    5637 size_t celi_del = 0, decimalni_del = 0, decimalni_del_n = 1;
    +
    5638 interval.end = start;
    +
    5639 for (;;) {
    +
    5640 if (interval.end < end && text[interval.end]) {
    +
    5641 if ('0' <= text[interval.end] && text[interval.end] <= '9') {
    +
    5642 celi_del = celi_del * 10 + text[interval.end] - '0';
    +
    5643 interval.end++;
    +
    5644 }
    +
    5645 else if (text[interval.end] == '.') {
    +
    5646 interval.end++;
    +
    5647 for (;;) {
    +
    5648 if (interval.end < end && text[interval.end]) {
    +
    5649 if ('0' <= text[interval.end] && text[interval.end] <= '9') {
    +
    5650 decimalni_del = decimalni_del * 10 + text[interval.end] - '0';
    +
    5651 decimalni_del_n *= 10;
    +
    5652 interval.end++;
    +
    5653 }
    +
    5654 else
    +
    5655 break;
    +
    5656 }
    +
    5657 else
    +
    5658 break;
    +
    5659 }
    +
    5660 break;
    +
    5661 }
    +
    5662 else
    +
    5663 break;
    +
    5664 }
    +
    5665 else
    +
    5666 break;
    +
    5667 }
    +
    5668 if (start < interval.end) {
    +
    5669 value = (float)((double)celi_del + (double)decimalni_del / decimalni_del_n);
    +
    5670 interval.start = start;
    +
    5671 return true;
    +
    5672 }
    +
    5673 value = 1.0f;
    +
    5674 interval.start = (interval.end = start) + 1;
    +
    5675 return false;
    +
    5676 }
    +
    5677
    +
    5678 virtual void invalidate()
    +
    5679 {
    +
    5680 value = 1.0f;
    +
    5681 parser::invalidate();
    +
    5682 }
    +
    5683
    +
    5684 public:
    +
    5685 float value;
    +
    5686 };
    +
    5687
    +
    5691 class http_asterisk : public parser
    +
    5692 {
    +
    5693 public:
    +
    5694 virtual bool match(
    +
    5695 _In_reads_or_z_(end) const char* text,
    +
    5696 _In_ size_t start = 0,
    +
    5697 _In_ size_t end = (size_t)-1,
    +
    5698 _In_ int flags = match_default)
    +
    5699 {
    +
    5700 assert(text || end <= start);
    +
    5701 if (start < end && text[start] == '*') {
    +
    5702 interval.end = (interval.start = start) + 1;
    +
    5703 return true;
    +
    5704 }
    +
    5705 interval.start = (interval.end = start) + 1;
    +
    5706 return false;
    +
    5707 }
    +
    5708 };
    +
    5709
    +
    5713 template <class T, class T_asterisk = http_asterisk>
    + +
    5715 {
    +
    5716 public:
    +
    5717 http_weighted_value(_In_ const std::locale& locale = std::locale()) :
    +
    5718 parser(locale),
    +
    5719 factor(locale)
    +
    5720 {}
    +
    5721
    +
    5722 virtual bool match(
    +
    5723 _In_reads_or_z_(end) const char* text,
    +
    5724 _In_ size_t start = 0,
    +
    5725 _In_ size_t end = (size_t)-1,
    +
    5726 _In_ int flags = match_default)
    +
    5727 {
    +
    5728 assert(text || start >= end);
    +
    5729 size_t konec_vrednosti;
    +
    5730 interval.end = start;
    +
    5731 if (asterisk.match(text, interval.end, end, flags)) {
    +
    5732 interval.end = konec_vrednosti = asterisk.interval.end;
    +
    5733 value.invalidate();
    +
    5734 }
    +
    5735 else if (value.match(text, interval.end, end, flags)) {
    +
    5736 interval.end = konec_vrednosti = value.interval.end;
    +
    5737 asterisk.invalidate();
    +
    5738 }
    +
    5739 else {
    +
    5740 asterisk.invalidate();
    +
    5741 value.invalidate();
    +
    5742 interval.start = (interval.end = start) + 1;
    +
    5743 return false;
    5744 }
    -
    5745 interval.start = start;
    -
    5746 return true;
    -
    5747 }
    -
    5748
    -
    5749 virtual void invalidate()
    -
    5750 {
    -
    5751 asterisk.invalidate();
    -
    5752 value.invalidate();
    -
    5753 factor.invalidate();
    -
    5754 tester::invalidate();
    -
    5755 }
    -
    5756
    -
    5757 public:
    -
    5758 T_asterisk asterisk;
    -
    5759 T value;
    -
    5760 http_weight factor;
    -
    5761 };
    -
    5762
    - -
    5767 {
    -
    5768 public:
    -
    5769 virtual bool match(
    -
    5770 _In_reads_or_z_(end) const char* text,
    -
    5771 _In_ size_t start = 0,
    -
    5772 _In_ size_t end = (size_t)-1,
    -
    5773 _In_ int flags = match_default)
    -
    5774 {
    -
    5775 assert(text || start >= end);
    -
    5776 interval.end = start;
    -
    5777 if (interval.end < end && text[interval.end] == '$')
    -
    5778 interval.end++;
    -
    5779 else
    -
    5780 goto error;
    -
    5781 if (name.match(text, interval.end, end, flags))
    -
    5782 interval.end = name.interval.end;
    -
    5783 else
    -
    5784 goto error;
    -
    5785 while (m_space.match(text, interval.end, end, flags))
    -
    5786 interval.end = m_space.interval.end;
    -
    5787 if (interval.end < end && text[interval.end] == '=')
    -
    5788 interval.end++;
    -
    5789 else
    -
    5790 goto error;
    -
    5791 while (m_space.match(text, interval.end, end, flags))
    -
    5792 interval.end = m_space.interval.end;
    -
    5793 if (value.match(text, interval.end, end, flags))
    -
    5794 interval.end = value.interval.end;
    -
    5795 else
    -
    5796 goto error;
    -
    5797 interval.start = start;
    -
    5798 return true;
    -
    5799
    -
    5800 error:
    -
    5801 name.invalidate();
    -
    5802 value.invalidate();
    -
    5803 interval.start = (interval.end = start) + 1;
    -
    5804 return false;
    -
    5805 }
    -
    5806
    -
    5807 virtual void invalidate()
    -
    5808 {
    -
    5809 name.invalidate();
    -
    5810 value.invalidate();
    -
    5811 tester::invalidate();
    -
    5812 }
    -
    5813
    -
    5814 public:
    -
    5815 http_token name;
    -
    5816 http_value value;
    -
    5817
    -
    5818 protected:
    -
    5819 http_space m_space;
    -
    5820 };
    -
    5821
    -
    5825 class http_cookie : public tester
    -
    5826 {
    -
    5827 public:
    -
    5828 virtual bool match(
    -
    5829 _In_reads_or_z_(end) const char* text,
    -
    5830 _In_ size_t start = 0,
    -
    5831 _In_ size_t end = (size_t)-1,
    -
    5832 _In_ int flags = match_default)
    -
    5833 {
    -
    5834 assert(text || start >= end);
    -
    5835 interval.end = start;
    -
    5836 if (name.match(text, interval.end, end, flags))
    -
    5837 interval.end = name.interval.end;
    -
    5838 else
    -
    5839 goto error;
    -
    5840 while (m_space.match(text, interval.end, end, flags))
    -
    5841 interval.end = m_space.interval.end;
    -
    5842 if (interval.end < end && text[interval.end] == '=')
    -
    5843 interval.end++;
    -
    5844 else
    -
    5845 goto error;
    -
    5846 while (m_space.match(text, interval.end, end, flags))
    -
    5847 interval.end = m_space.interval.end;
    -
    5848 if (value.match(text, interval.end, end, flags))
    -
    5849 interval.end = value.interval.end;
    -
    5850 else
    -
    5851 goto error;
    -
    5852 params.clear();
    -
    5853 for (;;) {
    -
    5854 if (interval.end < end && text[interval.end]) {
    -
    5855 if (m_space.match(text, interval.end, end, flags))
    -
    5856 interval.end = m_space.interval.end;
    -
    5857 else if (text[interval.end] == ';') {
    -
    5858 interval.end++;
    -
    5859 while (m_space.match(text, interval.end, end, flags))
    -
    5860 interval.end = m_space.interval.end;
    - -
    5862 if (param.match(text, interval.end, end, flags)) {
    -
    5863 interval.end = param.interval.end;
    -
    5864 params.push_back(std::move(param));
    -
    5865 }
    -
    5866 else
    -
    5867 break;
    -
    5868 }
    -
    5869 else
    -
    5870 break;
    -
    5871 }
    -
    5872 else
    -
    5873 break;
    -
    5874 }
    -
    5875 interval.start = start;
    -
    5876 interval.end = params.empty() ? value.interval.end : params.back().interval.end;
    -
    5877 return true;
    -
    5878
    -
    5879 error:
    -
    5880 name.invalidate();
    -
    5881 value.invalidate();
    -
    5882 params.clear();
    -
    5883 interval.start = (interval.end = start) + 1;
    -
    5884 return false;
    -
    5885 }
    -
    5886
    -
    5887 virtual void invalidate()
    -
    5888 {
    -
    5889 name.invalidate();
    -
    5890 value.invalidate();
    -
    5891 params.clear();
    -
    5892 tester::invalidate();
    -
    5893 }
    -
    5894
    -
    5895 public:
    - - -
    5898 std::list<http_cookie_parameter> params;
    -
    5899
    -
    5900 protected:
    -
    5901 http_space m_space;
    -
    5902 };
    -
    5903
    -
    5907 class http_agent : public tester
    -
    5908 {
    -
    5909 public:
    -
    5910 virtual bool match(
    -
    5911 _In_reads_or_z_(end) const char* text,
    -
    5912 _In_ size_t start = 0,
    -
    5913 _In_ size_t end = (size_t)-1,
    -
    5914 _In_ int flags = match_default)
    -
    5915 {
    -
    5916 assert(text || start >= end);
    -
    5917 interval.end = start;
    -
    5918 type.start = interval.end;
    -
    5919 for (;;) {
    -
    5920 if (interval.end < end && text[interval.end]) {
    -
    5921 if (text[interval.end] == '/') {
    -
    5922 type.end = interval.end;
    -
    5923 interval.end++;
    -
    5924 version.start = interval.end;
    -
    5925 for (;;) {
    -
    5926 if (interval.end < end && text[interval.end]) {
    -
    5927 if (isspace(text[interval.end])) {
    -
    5928 version.end = interval.end;
    -
    5929 break;
    -
    5930 }
    -
    5931 else
    -
    5932 interval.end++;
    -
    5933 }
    -
    5934 else {
    -
    5935 version.end = interval.end;
    -
    5936 break;
    -
    5937 }
    -
    5938 }
    -
    5939 break;
    -
    5940 }
    -
    5941 else if (isspace(text[interval.end])) {
    +
    5745
    +
    5746 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    +
    5747 if (interval.end < end && text[interval.end] == ';') {
    +
    5748 interval.end++;
    +
    5749 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    +
    5750 if (interval.end < end && (text[interval.end] == 'q' || text[interval.end] == 'Q')) {
    +
    5751 interval.end++;
    +
    5752 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    +
    5753 if (interval.end < end && text[interval.end] == '=') {
    +
    5754 interval.end++;
    +
    5755 while (interval.end < end && text[interval.end] && isspace(text[interval.end])) interval.end++;
    +
    5756 if (factor.match(text, interval.end, end, flags))
    +
    5757 interval.end = factor.interval.end;
    +
    5758 }
    +
    5759 }
    +
    5760 }
    +
    5761 if (!factor.interval) {
    +
    5762 factor.invalidate();
    +
    5763 interval.end = konec_vrednosti;
    +
    5764 }
    +
    5765 interval.start = start;
    +
    5766 return true;
    +
    5767 }
    +
    5768
    +
    5769 virtual void invalidate()
    +
    5770 {
    +
    5771 asterisk.invalidate();
    +
    5772 value.invalidate();
    +
    5773 factor.invalidate();
    +
    5774 parser::invalidate();
    +
    5775 }
    +
    5776
    +
    5777 public:
    +
    5778 T_asterisk asterisk;
    +
    5779 T value;
    +
    5780 http_weight factor;
    +
    5781 };
    +
    5782
    + +
    5787 {
    +
    5788 public:
    +
    5789 virtual bool match(
    +
    5790 _In_reads_or_z_(end) const char* text,
    +
    5791 _In_ size_t start = 0,
    +
    5792 _In_ size_t end = (size_t)-1,
    +
    5793 _In_ int flags = match_default)
    +
    5794 {
    +
    5795 assert(text || start >= end);
    +
    5796 interval.end = start;
    +
    5797 if (interval.end < end && text[interval.end] == '$')
    +
    5798 interval.end++;
    +
    5799 else
    +
    5800 goto error;
    +
    5801 if (name.match(text, interval.end, end, flags))
    +
    5802 interval.end = name.interval.end;
    +
    5803 else
    +
    5804 goto error;
    +
    5805 while (m_space.match(text, interval.end, end, flags))
    +
    5806 interval.end = m_space.interval.end;
    +
    5807 if (interval.end < end && text[interval.end] == '=')
    +
    5808 interval.end++;
    +
    5809 else
    +
    5810 goto error;
    +
    5811 while (m_space.match(text, interval.end, end, flags))
    +
    5812 interval.end = m_space.interval.end;
    +
    5813 if (value.match(text, interval.end, end, flags))
    +
    5814 interval.end = value.interval.end;
    +
    5815 else
    +
    5816 goto error;
    +
    5817 interval.start = start;
    +
    5818 return true;
    +
    5819
    +
    5820 error:
    +
    5821 name.invalidate();
    +
    5822 value.invalidate();
    +
    5823 interval.start = (interval.end = start) + 1;
    +
    5824 return false;
    +
    5825 }
    +
    5826
    +
    5827 virtual void invalidate()
    +
    5828 {
    +
    5829 name.invalidate();
    +
    5830 value.invalidate();
    +
    5831 parser::invalidate();
    +
    5832 }
    +
    5833
    +
    5834 public:
    +
    5835 http_token name;
    +
    5836 http_value value;
    +
    5837
    +
    5838 protected:
    +
    5839 http_space m_space;
    +
    5840 };
    +
    5841
    +
    5845 class http_cookie : public parser
    +
    5846 {
    +
    5847 public:
    +
    5848 virtual bool match(
    +
    5849 _In_reads_or_z_(end) const char* text,
    +
    5850 _In_ size_t start = 0,
    +
    5851 _In_ size_t end = (size_t)-1,
    +
    5852 _In_ int flags = match_default)
    +
    5853 {
    +
    5854 assert(text || start >= end);
    +
    5855 interval.end = start;
    +
    5856 if (name.match(text, interval.end, end, flags))
    +
    5857 interval.end = name.interval.end;
    +
    5858 else
    +
    5859 goto error;
    +
    5860 while (m_space.match(text, interval.end, end, flags))
    +
    5861 interval.end = m_space.interval.end;
    +
    5862 if (interval.end < end && text[interval.end] == '=')
    +
    5863 interval.end++;
    +
    5864 else
    +
    5865 goto error;
    +
    5866 while (m_space.match(text, interval.end, end, flags))
    +
    5867 interval.end = m_space.interval.end;
    +
    5868 if (value.match(text, interval.end, end, flags))
    +
    5869 interval.end = value.interval.end;
    +
    5870 else
    +
    5871 goto error;
    +
    5872 params.clear();
    +
    5873 for (;;) {
    +
    5874 if (interval.end < end && text[interval.end]) {
    +
    5875 if (m_space.match(text, interval.end, end, flags))
    +
    5876 interval.end = m_space.interval.end;
    +
    5877 else if (text[interval.end] == ';') {
    +
    5878 interval.end++;
    +
    5879 while (m_space.match(text, interval.end, end, flags))
    +
    5880 interval.end = m_space.interval.end;
    + +
    5882 if (param.match(text, interval.end, end, flags)) {
    +
    5883 interval.end = param.interval.end;
    +
    5884 params.push_back(std::move(param));
    +
    5885 }
    +
    5886 else
    +
    5887 break;
    +
    5888 }
    +
    5889 else
    +
    5890 break;
    +
    5891 }
    +
    5892 else
    +
    5893 break;
    +
    5894 }
    +
    5895 interval.start = start;
    +
    5896 interval.end = params.empty() ? value.interval.end : params.back().interval.end;
    +
    5897 return true;
    +
    5898
    +
    5899 error:
    +
    5900 name.invalidate();
    +
    5901 value.invalidate();
    +
    5902 params.clear();
    +
    5903 interval.start = (interval.end = start) + 1;
    +
    5904 return false;
    +
    5905 }
    +
    5906
    +
    5907 virtual void invalidate()
    +
    5908 {
    +
    5909 name.invalidate();
    +
    5910 value.invalidate();
    +
    5911 params.clear();
    +
    5912 parser::invalidate();
    +
    5913 }
    +
    5914
    +
    5915 public:
    + + +
    5918 std::list<http_cookie_parameter> params;
    +
    5919
    +
    5920 protected:
    +
    5921 http_space m_space;
    +
    5922 };
    +
    5923
    +
    5927 class http_agent : public parser
    +
    5928 {
    +
    5929 public:
    +
    5930 virtual bool match(
    +
    5931 _In_reads_or_z_(end) const char* text,
    +
    5932 _In_ size_t start = 0,
    +
    5933 _In_ size_t end = (size_t)-1,
    +
    5934 _In_ int flags = match_default)
    +
    5935 {
    +
    5936 assert(text || start >= end);
    +
    5937 interval.end = start;
    +
    5938 type.start = interval.end;
    +
    5939 for (;;) {
    +
    5940 if (interval.end < end && text[interval.end]) {
    +
    5941 if (text[interval.end] == '/') {
    5942 type.end = interval.end;
    -
    5943 break;
    -
    5944 }
    -
    5945 else
    -
    5946 interval.end++;
    -
    5947 }
    -
    5948 else {
    -
    5949 type.end = interval.end;
    -
    5950 break;
    -
    5951 }
    -
    5952 }
    -
    5953 if (start < interval.end) {
    -
    5954 interval.start = start;
    -
    5955 return true;
    -
    5956 }
    -
    5957 type.start = 1;
    -
    5958 type.end = 0;
    -
    5959 version.start = 1;
    -
    5960 version.end = 0;
    -
    5961 interval.start = 1;
    -
    5962 interval.end = 0;
    -
    5963 return false;
    -
    5964 }
    -
    5965
    -
    5966 virtual void invalidate()
    -
    5967 {
    -
    5968 type.start = 1;
    -
    5969 type.end = 0;
    -
    5970 version.start = 1;
    -
    5971 version.end = 0;
    -
    5972 tester::invalidate();
    -
    5973 }
    -
    5974
    -
    5975 public:
    - - -
    5978 };
    -
    5979
    -
    5983 class http_protocol : public tester
    -
    5984 {
    -
    5985 public:
    -
    5986 http_protocol(_In_ const std::locale& locale = std::locale()) :
    -
    5987 tester(locale),
    -
    5988 version(0x009)
    -
    5989 {}
    -
    5990
    -
    5991 virtual bool match(
    -
    5992 _In_reads_or_z_(end) const char* text,
    -
    5993 _In_ size_t start = 0,
    -
    5994 _In_ size_t end = (size_t)-1,
    -
    5995 _In_ int flags = match_default)
    -
    5996 {
    -
    5997 assert(text || start >= end);
    -
    5998 interval.end = start;
    -
    5999 type.start = interval.end;
    -
    6000 for (;;) {
    -
    6001 if (interval.end < end && text[interval.end]) {
    -
    6002 if (text[interval.end] == '/') {
    -
    6003 type.end = interval.end;
    -
    6004 interval.end++;
    -
    6005 break;
    -
    6006 }
    -
    6007 else if (isspace(text[interval.end]))
    -
    6008 goto error;
    -
    6009 else
    -
    6010 interval.end++;
    -
    6011 }
    -
    6012 else {
    -
    6013 type.end = interval.end;
    -
    6014 goto error;
    -
    6015 }
    -
    6016 }
    -
    6017 version_maj.start = interval.end;
    -
    6018 for (;;) {
    -
    6019 if (interval.end < end && text[interval.end]) {
    -
    6020 if (text[interval.end] == '.') {
    -
    6021 version_maj.end = interval.end;
    -
    6022 interval.end++;
    -
    6023 version_min.start = interval.end;
    -
    6024 for (;;) {
    -
    6025 if (interval.end < end && text[interval.end]) {
    -
    6026 if (isspace(text[interval.end])) {
    -
    6027 version_min.end = interval.end;
    -
    6028 version =
    -
    6029 (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100 +
    -
    6030 (uint16_t)strtoui(text + version_min.start, version_min.size(), nullptr, 10);
    -
    6031 break;
    -
    6032 }
    -
    6033 else
    -
    6034 interval.end++;
    -
    6035 }
    -
    6036 else
    -
    6037 goto error;
    -
    6038 }
    -
    6039 break;
    -
    6040 }
    -
    6041 else if (isspace(text[interval.end])) {
    -
    6042 version_maj.end = interval.end;
    -
    6043 version_min.start = 1;
    -
    6044 version_min.end = 0;
    -
    6045 version = (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100;
    -
    6046 break;
    -
    6047 }
    -
    6048 else
    -
    6049 interval.end++;
    -
    6050 }
    -
    6051 else
    -
    6052 goto error;
    -
    6053 }
    -
    6054 interval.start = start;
    -
    6055 return true;
    -
    6056
    -
    6057 error:
    -
    6058 type.start = 1;
    -
    6059 type.end = 0;
    -
    6060 version_maj.start = 1;
    -
    6061 version_maj.end = 0;
    -
    6062 version_min.start = 1;
    -
    6063 version_min.end = 0;
    -
    6064 version = 0x009;
    -
    6065 interval.start = 1;
    -
    6066 interval.end = 0;
    -
    6067 return false;
    -
    6068 }
    -
    6069
    -
    6070 virtual void invalidate()
    -
    6071 {
    -
    6072 type.start = 1;
    -
    6073 type.end = 0;
    -
    6074 version_maj.start = 1;
    -
    6075 version_maj.end = 0;
    -
    6076 version_min.start = 1;
    -
    6077 version_min.end = 0;
    -
    6078 version = 0x009;
    -
    6079 tester::invalidate();
    -
    6080 }
    -
    6081
    -
    6082 public:
    - -
    6084 stdex::interval<size_t> version_maj;
    -
    6085 stdex::interval<size_t> version_min;
    -
    6086 uint16_t version;
    -
    6087 };
    -
    6088
    -
    6092 class http_request : public tester
    -
    6093 {
    -
    6094 public:
    -
    6095 virtual bool match(
    -
    6096 _In_reads_or_z_(end) const char* text,
    -
    6097 _In_ size_t start = 0,
    -
    6098 _In_ size_t end = (size_t)-1,
    -
    6099 _In_ int flags = match_default)
    -
    6100 {
    -
    6101 assert(text || start >= end);
    -
    6102 interval.end = start;
    -
    6103
    -
    6104 for (;;) {
    -
    6105 if (m_line_break.match(text, interval.end, end, flags))
    -
    6106 goto error;
    -
    6107 else if (interval.end < end && text[interval.end]) {
    -
    6108 if (isspace(text[interval.end]))
    -
    6109 interval.end++;
    -
    6110 else
    -
    6111 break;
    -
    6112 }
    -
    6113 else
    -
    6114 goto error;
    -
    6115 }
    -
    6116 verb.start = interval.end;
    -
    6117 for (;;) {
    -
    6118 if (m_line_break.match(text, interval.end, end, flags))
    -
    6119 goto error;
    -
    6120 else if (interval.end < end && text[interval.end]) {
    -
    6121 if (isspace(text[interval.end])) {
    -
    6122 verb.end = interval.end;
    -
    6123 interval.end++;
    -
    6124 break;
    -
    6125 }
    -
    6126 else
    -
    6127 interval.end++;
    -
    6128 }
    -
    6129 else
    -
    6130 goto error;
    -
    6131 }
    -
    6132
    -
    6133 for (;;) {
    -
    6134 if (m_line_break.match(text, interval.end, end, flags))
    -
    6135 goto error;
    -
    6136 else if (interval.end < end && text[interval.end]) {
    -
    6137 if (isspace(text[interval.end]))
    -
    6138 interval.end++;
    -
    6139 else
    -
    6140 break;
    -
    6141 }
    -
    6142 else
    -
    6143 goto error;
    -
    6144 }
    -
    6145 if (url.match(text, interval.end, end, flags))
    - -
    6147 else
    -
    6148 goto error;
    -
    6149
    -
    6150 protocol.invalidate();
    -
    6151 for (;;) {
    -
    6152 if (m_line_break.match(text, interval.end, end, flags)) {
    -
    6153 interval.end = m_line_break.interval.end;
    -
    6154 goto end;
    -
    6155 }
    -
    6156 else if (interval.end < end && text[interval.end]) {
    -
    6157 if (isspace(text[interval.end]))
    -
    6158 interval.end++;
    -
    6159 else
    -
    6160 break;
    -
    6161 }
    -
    6162 else
    -
    6163 goto end;
    -
    6164 }
    -
    6165 for (;;) {
    -
    6166 if (m_line_break.match(text, interval.end, end, flags)) {
    -
    6167 interval.end = m_line_break.interval.end;
    -
    6168 goto end;
    -
    6169 }
    -
    6170 else if (protocol.match(text, interval.end, end, flags)) {
    -
    6171 interval.end = protocol.interval.end;
    -
    6172 break;
    -
    6173 }
    -
    6174 else
    -
    6175 goto end;
    -
    6176 }
    -
    6177
    -
    6178 for (;;) {
    -
    6179 if (m_line_break.match(text, interval.end, end, flags)) {
    -
    6180 interval.end = m_line_break.interval.end;
    -
    6181 break;
    -
    6182 }
    -
    6183 else if (interval.end < end && text[interval.end])
    -
    6184 interval.end++;
    -
    6185 else
    -
    6186 goto end;
    -
    6187 }
    -
    6188
    -
    6189 end:
    -
    6190 interval.start = start;
    -
    6191 return true;
    -
    6192
    -
    6193 error:
    -
    6194 verb.start = 1;
    -
    6195 verb.end = 0;
    -
    6196 url.invalidate();
    -
    6197 protocol.invalidate();
    -
    6198 interval.start = 1;
    -
    6199 interval.end = 0;
    -
    6200 return false;
    -
    6201 }
    -
    6202
    -
    6203 virtual void invalidate()
    -
    6204 {
    -
    6205 verb.start = 1;
    -
    6206 verb.end = 0;
    -
    6207 url.invalidate();
    -
    6208 protocol.invalidate();
    -
    6209 tester::invalidate();
    -
    6210 }
    -
    6211
    -
    6212 public:
    - -
    6214 http_url url;
    -
    6215 http_protocol protocol;
    -
    6216
    -
    6217 protected:
    -
    6218 http_line_break m_line_break;
    -
    6219 };
    -
    6220
    -
    6224 class http_header : public tester
    -
    6225 {
    -
    6226 public:
    -
    6227 virtual bool match(
    -
    6228 _In_reads_or_z_(end) const char* text,
    -
    6229 _In_ size_t start = 0,
    -
    6230 _In_ size_t end = (size_t)-1,
    -
    6231 _In_ int flags = match_default)
    -
    6232 {
    -
    6233 assert(text || start >= end);
    -
    6234 interval.end = start;
    -
    6235
    -
    6236 if (m_line_break.match(text, interval.end, end, flags) ||
    -
    6237 interval.end < end && text[interval.end] && isspace(text[interval.end]))
    -
    6238 goto error;
    -
    6239 name.start = interval.end;
    -
    6240 for (;;) {
    -
    6241 if (m_line_break.match(text, interval.end, end, flags))
    -
    6242 goto error;
    -
    6243 else if (interval.end < end && text[interval.end]) {
    -
    6244 if (isspace(text[interval.end])) {
    -
    6245 name.end = interval.end;
    -
    6246 interval.end++;
    -
    6247 for (;;) {
    -
    6248 if (m_line_break.match(text, interval.end, end, flags))
    -
    6249 goto error;
    -
    6250 else if (interval.end < end && text[interval.end]) {
    -
    6251 if (isspace(text[interval.end]))
    -
    6252 interval.end++;
    -
    6253 else
    -
    6254 break;
    -
    6255 }
    -
    6256 else
    -
    6257 goto error;
    -
    6258 }
    -
    6259 if (interval.end < end && text[interval.end] == ':') {
    -
    6260 interval.end++;
    -
    6261 break;
    -
    6262 }
    -
    6263 else
    -
    6264 goto error;
    -
    6265 break;
    -
    6266 }
    -
    6267 else if (text[interval.end] == ':') {
    -
    6268 name.end = interval.end;
    -
    6269 interval.end++;
    -
    6270 break;
    -
    6271 }
    -
    6272 else
    -
    6273 interval.end++;
    -
    6274 }
    -
    6275 else
    -
    6276 goto error;
    -
    6277 }
    -
    6278 value.start = (size_t)-1;
    -
    6279 value.end = 0;
    -
    6280 for (;;) {
    -
    6281 if (m_line_break.match(text, interval.end, end, flags)) {
    -
    6282 interval.end = m_line_break.interval.end;
    -
    6283 if (!m_line_break.match(text, interval.end, end, flags) &&
    -
    6284 interval.end < end && text[interval.end] && isspace(text[interval.end]))
    -
    6285 interval.end++;
    -
    6286 else
    -
    6287 break;
    -
    6288 }
    -
    6289 else if (interval.end < end && text[interval.end]) {
    -
    6290 if (isspace(text[interval.end]))
    -
    6291 interval.end++;
    -
    6292 else {
    -
    6293 if (value.start == (size_t)-1) value.start = interval.end;
    -
    6294 value.end = ++interval.end;
    -
    6295 }
    -
    6296 }
    -
    6297 else
    -
    6298 break;
    -
    6299 }
    -
    6300 interval.start = start;
    -
    6301 return true;
    -
    6302
    -
    6303 error:
    -
    6304 name.start = 1;
    -
    6305 name.end = 0;
    -
    6306 value.start = 1;
    -
    6307 value.end = 0;
    -
    6308 interval.start = 1;
    -
    6309 interval.end = 0;
    -
    6310 return false;
    -
    6311 }
    -
    6312
    -
    6313 virtual void invalidate()
    -
    6314 {
    -
    6315 name.start = 1;
    -
    6316 name.end = 0;
    -
    6317 value.start = 1;
    -
    6318 value.end = 0;
    -
    6319 tester::invalidate();
    -
    6320 }
    -
    6321
    -
    6322 public:
    -
    6323 stdex::interval<size_t> name; // interval imena glave
    -
    6324 stdex::interval<size_t> value; // interval vrednosti glave
    -
    6325
    -
    6326 protected:
    -
    6327 http_line_break m_line_break;
    -
    6328 };
    -
    6329
    -
    6333 template <class T>
    -
    6334 class http_header_collection : public T
    -
    6335 {
    -
    6336 public:
    -
    6337 void insert(
    -
    6338 _In_reads_or_z_(end) const T* text,
    -
    6339 _In_ size_t start = 0,
    -
    6340 _In_ size_t end = (size_t)-1,
    -
    6341 _In_ int flags = match_default)
    -
    6342 {
    -
    6343 while (start < end) {
    -
    6344 while (start < end && text[start] && isspace(text[start])) start++;
    -
    6345 if (start < end && text[start] == ',') {
    -
    6346 start++;
    -
    6347 while (start < end&& text[start] && isspace(text[start])) start++;
    -
    6348 }
    -
    6349 T::key_type el;
    -
    6350 if (el.match(text, start, end, flags)) {
    -
    6351 start = el.interval.end;
    -
    6352 T::insert(std::move(el));
    -
    6353 }
    -
    6354 else
    -
    6355 break;
    -
    6356 }
    -
    6357 }
    -
    6358 };
    -
    6359
    -
    6360 template <class T>
    - -
    6362 constexpr bool operator()(const T& a, const T& b) const noexcept
    -
    6363 {
    -
    6364 return a.factor.value > b.factor.value;
    -
    6365 }
    -
    6366 };
    -
    6367
    -
    6371 template <class T, class _Pr = http_factor_more<T>, class _Alloc = std::allocator<T>>
    - -
    6373
    -
    6377 template <class T>
    - -
    6379 {
    -
    6380 public:
    - -
    6382 _In_ const std::shared_ptr<basic_tester<T>>& quote,
    -
    6383 _In_ const std::shared_ptr<basic_tester<T>>& chr,
    -
    6384 _In_ const std::shared_ptr<basic_tester<T>>& escape,
    -
    6385 _In_ const std::shared_ptr<basic_tester<T>>& sol,
    -
    6386 _In_ const std::shared_ptr<basic_tester<T>>& bs,
    -
    6387 _In_ const std::shared_ptr<basic_tester<T>>& ff,
    -
    6388 _In_ const std::shared_ptr<basic_tester<T>>& lf,
    -
    6389 _In_ const std::shared_ptr<basic_tester<T>>& cr,
    -
    6390 _In_ const std::shared_ptr<basic_tester<T>>& htab,
    -
    6391 _In_ const std::shared_ptr<basic_tester<T>>& uni,
    -
    6392 _In_ const std::shared_ptr<basic_integer16<T>>& hex,
    -
    6393 _In_ const std::locale& locale = std::locale()) :
    -
    6394 basic_tester<T>(locale),
    -
    6395 m_quote(quote),
    -
    6396 m_chr(chr),
    -
    6397 m_escape(escape),
    -
    6398 m_sol(sol),
    -
    6399 m_bs(bs),
    -
    6400 m_ff(ff),
    -
    6401 m_lf(lf),
    -
    6402 m_cr(cr),
    -
    6403 m_htab(htab),
    -
    6404 m_uni(uni),
    -
    6405 m_hex(hex)
    -
    6406 {}
    -
    6407
    -
    6408 virtual bool match(
    -
    6409 _In_reads_or_z_(end) const T* text,
    -
    6410 _In_ size_t start = 0,
    -
    6411 _In_ size_t end = (size_t)-1,
    -
    6412 _In_ int flags = match_default)
    -
    6413 {
    -
    6414 assert(text || start >= end);
    -
    6415 interval.end = start;
    -
    6416 if (m_quote->match(text, interval.end, end, flags)) {
    -
    6417 interval.end = m_quote->interval.end;
    -
    6418 value.clear();
    -
    6419 for (;;) {
    -
    6420 if (m_quote->match(text, interval.end, end, flags)) {
    -
    6421 interval.start = start;
    -
    6422 interval.end = m_quote->interval.end;
    -
    6423 return true;
    -
    6424 }
    -
    6425 if (m_escape->match(text, interval.end, end, flags)) {
    -
    6426 if (m_quote->match(text, m_escape->interval.end, end, flags)) {
    -
    6427 value += '"'; interval.end = m_quote->interval.end;
    -
    6428 continue;
    -
    6429 }
    -
    6430 if (m_sol->match(text, m_escape->interval.end, end, flags)) {
    -
    6431 value += '/'; interval.end = m_sol->interval.end;
    -
    6432 continue;
    -
    6433 }
    -
    6434 if (m_bs->match(text, m_escape->interval.end, end, flags)) {
    -
    6435 value += '\b'; interval.end = m_bs->interval.end;
    -
    6436 continue;
    -
    6437 }
    -
    6438 if (m_ff->match(text, m_escape->interval.end, end, flags)) {
    -
    6439 value += '\f'; interval.end = m_ff->interval.end;
    -
    6440 continue;
    -
    6441 }
    -
    6442 if (m_lf->match(text, m_escape->interval.end, end, flags)) {
    -
    6443 value += '\n'; interval.end = m_lf->interval.end;
    -
    6444 continue;
    -
    6445 }
    -
    6446 if (m_cr->match(text, m_escape->interval.end, end, flags)) {
    -
    6447 value += '\r'; interval.end = m_cr->interval.end;
    -
    6448 continue;
    -
    6449 }
    -
    6450 if (m_htab->match(text, m_escape->interval.end, end, flags)) {
    -
    6451 value += '\t'; interval.end = m_htab->interval.end;
    -
    6452 continue;
    -
    6453 }
    -
    6454 if (
    -
    6455 m_uni->match(text, m_escape->interval.end, end, flags) &&
    -
    6456 m_hex->match(text, m_uni->interval.end, std::min(m_uni->interval.end + 4, end), flags | match_case_insensitive) &&
    -
    6457 m_hex->interval.size() == 4 /* JSON requests 4-digit Unicode sequneces: \u.... */)
    -
    6458 {
    -
    6459 assert(m_hex->value <= 0xffff);
    -
    6460 if (sizeof(T) == 1) {
    -
    6461 if (m_hex->value > 0x7ff) {
    -
    6462 value += (T)(0xe0 | (m_hex->value >> 12) & 0x0f);
    -
    6463 value += (T)(0x80 | (m_hex->value >> 6) & 0x3f);
    -
    6464 value += (T)(0x80 | m_hex->value & 0x3f);
    -
    6465 }
    -
    6466 else if (m_hex->value > 0x7f) {
    -
    6467 value += (T)(0xc0 | (m_hex->value >> 6) & 0x1f);
    -
    6468 value += (T)(0x80 | m_hex->value & 0x3f);
    -
    6469 }
    -
    6470 else
    -
    6471 value += (T)(m_hex->value & 0x7f);
    -
    6472 }
    -
    6473 else
    -
    6474 value += (T)m_hex->value;
    -
    6475 interval.end = m_hex->interval.end;
    -
    6476 continue;
    -
    6477 }
    -
    6478 if (m_escape->match(text, m_escape->interval.end, end, flags)) {
    -
    6479 value += '\\'; interval.end = m_escape->interval.end;
    -
    6480 continue;
    -
    6481 }
    -
    6482 }
    -
    6483 if (m_chr->match(text, interval.end, end, flags)) {
    -
    6484 value.Prilepi(text + m_chr->interval.start, m_chr->interval.size());
    -
    6485 interval.end = m_chr->interval.end;
    -
    6486 continue;
    -
    6487 }
    -
    6488 break;
    -
    6489 }
    -
    6490 }
    -
    6491 value.clear();
    -
    6492 interval.start = (interval.end = start) + 1;
    -
    6493 return false;
    -
    6494 }
    -
    6495
    -
    6496 virtual void invalidate()
    -
    6497 {
    -
    6498 value.clear();
    - -
    6500 }
    -
    6501
    -
    6502 public:
    -
    6503 std::basic_string<T> value;
    -
    6504
    -
    6505 protected:
    -
    6506 std::shared_ptr<basic_tester<T>> m_quote;
    -
    6507 std::shared_ptr<basic_tester<T>> m_chr;
    -
    6508 std::shared_ptr<basic_tester<T>> m_escape;
    -
    6509 std::shared_ptr<basic_tester<T>> m_sol;
    -
    6510 std::shared_ptr<basic_tester<T>> m_bs;
    -
    6511 std::shared_ptr<basic_tester<T>> m_ff;
    -
    6512 std::shared_ptr<basic_tester<T>> m_lf;
    -
    6513 std::shared_ptr<basic_tester<T>> m_cr;
    -
    6514 std::shared_ptr<basic_tester<T>> m_htab;
    -
    6515 std::shared_ptr<basic_tester<T>> m_uni;
    -
    6516 std::shared_ptr<basic_integer16<T>> m_hex;
    -
    6517 };
    -
    6518
    - - -
    6521#ifdef _UNICODE
    -
    6522 using tjson_string = wjson_string;
    -
    6523#else
    -
    6524 using tjson_string = json_string;
    -
    6525#endif
    -
    6526 }
    -
    6527}
    -
    6528
    -
    6529#ifdef _MSC_VER
    -
    6530#pragma warning(pop)
    -
    6531#endif
    -
    Test for angle in d°mm'ss.dddd form.
    Definition: parser.hpp:4359
    +
    5943 interval.end++;
    +
    5944 version.start = interval.end;
    +
    5945 for (;;) {
    +
    5946 if (interval.end < end && text[interval.end]) {
    +
    5947 if (isspace(text[interval.end])) {
    +
    5948 version.end = interval.end;
    +
    5949 break;
    +
    5950 }
    +
    5951 else
    +
    5952 interval.end++;
    +
    5953 }
    +
    5954 else {
    +
    5955 version.end = interval.end;
    +
    5956 break;
    +
    5957 }
    +
    5958 }
    +
    5959 break;
    +
    5960 }
    +
    5961 else if (isspace(text[interval.end])) {
    +
    5962 type.end = interval.end;
    +
    5963 break;
    +
    5964 }
    +
    5965 else
    +
    5966 interval.end++;
    +
    5967 }
    +
    5968 else {
    +
    5969 type.end = interval.end;
    +
    5970 break;
    +
    5971 }
    +
    5972 }
    +
    5973 if (start < interval.end) {
    +
    5974 interval.start = start;
    +
    5975 return true;
    +
    5976 }
    +
    5977 type.start = 1;
    +
    5978 type.end = 0;
    +
    5979 version.start = 1;
    +
    5980 version.end = 0;
    +
    5981 interval.start = 1;
    +
    5982 interval.end = 0;
    +
    5983 return false;
    +
    5984 }
    +
    5985
    +
    5986 virtual void invalidate()
    +
    5987 {
    +
    5988 type.start = 1;
    +
    5989 type.end = 0;
    +
    5990 version.start = 1;
    +
    5991 version.end = 0;
    +
    5992 parser::invalidate();
    +
    5993 }
    +
    5994
    +
    5995 public:
    + + +
    5998 };
    +
    5999
    +
    6003 class http_protocol : public parser
    +
    6004 {
    +
    6005 public:
    +
    6006 http_protocol(_In_ const std::locale& locale = std::locale()) :
    +
    6007 parser(locale),
    +
    6008 version(0x009)
    +
    6009 {}
    +
    6010
    +
    6011 virtual bool match(
    +
    6012 _In_reads_or_z_(end) const char* text,
    +
    6013 _In_ size_t start = 0,
    +
    6014 _In_ size_t end = (size_t)-1,
    +
    6015 _In_ int flags = match_default)
    +
    6016 {
    +
    6017 assert(text || start >= end);
    +
    6018 interval.end = start;
    +
    6019 type.start = interval.end;
    +
    6020 for (;;) {
    +
    6021 if (interval.end < end && text[interval.end]) {
    +
    6022 if (text[interval.end] == '/') {
    +
    6023 type.end = interval.end;
    +
    6024 interval.end++;
    +
    6025 break;
    +
    6026 }
    +
    6027 else if (isspace(text[interval.end]))
    +
    6028 goto error;
    +
    6029 else
    +
    6030 interval.end++;
    +
    6031 }
    +
    6032 else {
    +
    6033 type.end = interval.end;
    +
    6034 goto error;
    +
    6035 }
    +
    6036 }
    +
    6037 version_maj.start = interval.end;
    +
    6038 for (;;) {
    +
    6039 if (interval.end < end && text[interval.end]) {
    +
    6040 if (text[interval.end] == '.') {
    +
    6041 version_maj.end = interval.end;
    +
    6042 interval.end++;
    +
    6043 version_min.start = interval.end;
    +
    6044 for (;;) {
    +
    6045 if (interval.end < end && text[interval.end]) {
    +
    6046 if (isspace(text[interval.end])) {
    +
    6047 version_min.end = interval.end;
    +
    6048 version =
    +
    6049 (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100 +
    +
    6050 (uint16_t)strtoui(text + version_min.start, version_min.size(), nullptr, 10);
    +
    6051 break;
    +
    6052 }
    +
    6053 else
    +
    6054 interval.end++;
    +
    6055 }
    +
    6056 else
    +
    6057 goto error;
    +
    6058 }
    +
    6059 break;
    +
    6060 }
    +
    6061 else if (isspace(text[interval.end])) {
    +
    6062 version_maj.end = interval.end;
    +
    6063 version_min.start = 1;
    +
    6064 version_min.end = 0;
    +
    6065 version = (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100;
    +
    6066 break;
    +
    6067 }
    +
    6068 else
    +
    6069 interval.end++;
    +
    6070 }
    +
    6071 else
    +
    6072 goto error;
    +
    6073 }
    +
    6074 interval.start = start;
    +
    6075 return true;
    +
    6076
    +
    6077 error:
    +
    6078 type.start = 1;
    +
    6079 type.end = 0;
    +
    6080 version_maj.start = 1;
    +
    6081 version_maj.end = 0;
    +
    6082 version_min.start = 1;
    +
    6083 version_min.end = 0;
    +
    6084 version = 0x009;
    +
    6085 interval.start = 1;
    +
    6086 interval.end = 0;
    +
    6087 return false;
    +
    6088 }
    +
    6089
    +
    6090 virtual void invalidate()
    +
    6091 {
    +
    6092 type.start = 1;
    +
    6093 type.end = 0;
    +
    6094 version_maj.start = 1;
    +
    6095 version_maj.end = 0;
    +
    6096 version_min.start = 1;
    +
    6097 version_min.end = 0;
    +
    6098 version = 0x009;
    +
    6099 parser::invalidate();
    +
    6100 }
    +
    6101
    +
    6102 public:
    + +
    6104 stdex::interval<size_t> version_maj;
    +
    6105 stdex::interval<size_t> version_min;
    +
    6106 uint16_t version;
    +
    6107 };
    +
    6108
    +
    6112 class http_request : public parser
    +
    6113 {
    +
    6114 public:
    +
    6115 http_request(_In_ const std::locale& locale = std::locale()) :
    +
    6116 parser(locale),
    +
    6117 url(locale),
    +
    6118 protocol(locale)
    +
    6119 {}
    +
    6120
    +
    6121 virtual bool match(
    +
    6122 _In_reads_or_z_(end) const char* text,
    +
    6123 _In_ size_t start = 0,
    +
    6124 _In_ size_t end = (size_t)-1,
    +
    6125 _In_ int flags = match_default)
    +
    6126 {
    +
    6127 assert(text || start >= end);
    +
    6128 interval.end = start;
    +
    6129
    +
    6130 for (;;) {
    +
    6131 if (m_line_break.match(text, interval.end, end, flags))
    +
    6132 goto error;
    +
    6133 else if (interval.end < end && text[interval.end]) {
    +
    6134 if (isspace(text[interval.end]))
    +
    6135 interval.end++;
    +
    6136 else
    +
    6137 break;
    +
    6138 }
    +
    6139 else
    +
    6140 goto error;
    +
    6141 }
    +
    6142 verb.start = interval.end;
    +
    6143 for (;;) {
    +
    6144 if (m_line_break.match(text, interval.end, end, flags))
    +
    6145 goto error;
    +
    6146 else if (interval.end < end && text[interval.end]) {
    +
    6147 if (isspace(text[interval.end])) {
    +
    6148 verb.end = interval.end;
    +
    6149 interval.end++;
    +
    6150 break;
    +
    6151 }
    +
    6152 else
    +
    6153 interval.end++;
    +
    6154 }
    +
    6155 else
    +
    6156 goto error;
    +
    6157 }
    +
    6158
    +
    6159 for (;;) {
    +
    6160 if (m_line_break.match(text, interval.end, end, flags))
    +
    6161 goto error;
    +
    6162 else if (interval.end < end && text[interval.end]) {
    +
    6163 if (isspace(text[interval.end]))
    +
    6164 interval.end++;
    +
    6165 else
    +
    6166 break;
    +
    6167 }
    +
    6168 else
    +
    6169 goto error;
    +
    6170 }
    +
    6171 if (url.match(text, interval.end, end, flags))
    + +
    6173 else
    +
    6174 goto error;
    +
    6175
    +
    6176 protocol.invalidate();
    +
    6177 for (;;) {
    +
    6178 if (m_line_break.match(text, interval.end, end, flags)) {
    +
    6179 interval.end = m_line_break.interval.end;
    +
    6180 goto end;
    +
    6181 }
    +
    6182 else if (interval.end < end && text[interval.end]) {
    +
    6183 if (isspace(text[interval.end]))
    +
    6184 interval.end++;
    +
    6185 else
    +
    6186 break;
    +
    6187 }
    +
    6188 else
    +
    6189 goto end;
    +
    6190 }
    +
    6191 for (;;) {
    +
    6192 if (m_line_break.match(text, interval.end, end, flags)) {
    +
    6193 interval.end = m_line_break.interval.end;
    +
    6194 goto end;
    +
    6195 }
    +
    6196 else if (protocol.match(text, interval.end, end, flags)) {
    +
    6197 interval.end = protocol.interval.end;
    +
    6198 break;
    +
    6199 }
    +
    6200 else
    +
    6201 goto end;
    +
    6202 }
    +
    6203
    +
    6204 for (;;) {
    +
    6205 if (m_line_break.match(text, interval.end, end, flags)) {
    +
    6206 interval.end = m_line_break.interval.end;
    +
    6207 break;
    +
    6208 }
    +
    6209 else if (interval.end < end && text[interval.end])
    +
    6210 interval.end++;
    +
    6211 else
    +
    6212 goto end;
    +
    6213 }
    +
    6214
    +
    6215 end:
    +
    6216 interval.start = start;
    +
    6217 return true;
    +
    6218
    +
    6219 error:
    +
    6220 verb.start = 1;
    +
    6221 verb.end = 0;
    +
    6222 url.invalidate();
    +
    6223 protocol.invalidate();
    +
    6224 interval.start = 1;
    +
    6225 interval.end = 0;
    +
    6226 return false;
    +
    6227 }
    +
    6228
    +
    6229 virtual void invalidate()
    +
    6230 {
    +
    6231 verb.start = 1;
    +
    6232 verb.end = 0;
    +
    6233 url.invalidate();
    +
    6234 protocol.invalidate();
    +
    6235 parser::invalidate();
    +
    6236 }
    +
    6237
    +
    6238 public:
    + +
    6240 http_url url;
    +
    6241 http_protocol protocol;
    +
    6242
    +
    6243 protected:
    +
    6244 http_line_break m_line_break;
    +
    6245 };
    +
    6246
    +
    6250 class http_header : public parser
    +
    6251 {
    +
    6252 public:
    +
    6253 virtual bool match(
    +
    6254 _In_reads_or_z_(end) const char* text,
    +
    6255 _In_ size_t start = 0,
    +
    6256 _In_ size_t end = (size_t)-1,
    +
    6257 _In_ int flags = match_default)
    +
    6258 {
    +
    6259 assert(text || start >= end);
    +
    6260 interval.end = start;
    +
    6261
    +
    6262 if (m_line_break.match(text, interval.end, end, flags) ||
    +
    6263 interval.end < end && text[interval.end] && isspace(text[interval.end]))
    +
    6264 goto error;
    +
    6265 name.start = interval.end;
    +
    6266 for (;;) {
    +
    6267 if (m_line_break.match(text, interval.end, end, flags))
    +
    6268 goto error;
    +
    6269 else if (interval.end < end && text[interval.end]) {
    +
    6270 if (isspace(text[interval.end])) {
    +
    6271 name.end = interval.end;
    +
    6272 interval.end++;
    +
    6273 for (;;) {
    +
    6274 if (m_line_break.match(text, interval.end, end, flags))
    +
    6275 goto error;
    +
    6276 else if (interval.end < end && text[interval.end]) {
    +
    6277 if (isspace(text[interval.end]))
    +
    6278 interval.end++;
    +
    6279 else
    +
    6280 break;
    +
    6281 }
    +
    6282 else
    +
    6283 goto error;
    +
    6284 }
    +
    6285 if (interval.end < end && text[interval.end] == ':') {
    +
    6286 interval.end++;
    +
    6287 break;
    +
    6288 }
    +
    6289 else
    +
    6290 goto error;
    +
    6291 break;
    +
    6292 }
    +
    6293 else if (text[interval.end] == ':') {
    +
    6294 name.end = interval.end;
    +
    6295 interval.end++;
    +
    6296 break;
    +
    6297 }
    +
    6298 else
    +
    6299 interval.end++;
    +
    6300 }
    +
    6301 else
    +
    6302 goto error;
    +
    6303 }
    +
    6304 value.start = (size_t)-1;
    +
    6305 value.end = 0;
    +
    6306 for (;;) {
    +
    6307 if (m_line_break.match(text, interval.end, end, flags)) {
    +
    6308 interval.end = m_line_break.interval.end;
    +
    6309 if (!m_line_break.match(text, interval.end, end, flags) &&
    +
    6310 interval.end < end && text[interval.end] && isspace(text[interval.end]))
    +
    6311 interval.end++;
    +
    6312 else
    +
    6313 break;
    +
    6314 }
    +
    6315 else if (interval.end < end && text[interval.end]) {
    +
    6316 if (isspace(text[interval.end]))
    +
    6317 interval.end++;
    +
    6318 else {
    +
    6319 if (value.start == (size_t)-1) value.start = interval.end;
    +
    6320 value.end = ++interval.end;
    +
    6321 }
    +
    6322 }
    +
    6323 else
    +
    6324 break;
    +
    6325 }
    +
    6326 interval.start = start;
    +
    6327 return true;
    +
    6328
    +
    6329 error:
    +
    6330 name.start = 1;
    +
    6331 name.end = 0;
    +
    6332 value.start = 1;
    +
    6333 value.end = 0;
    +
    6334 interval.start = 1;
    +
    6335 interval.end = 0;
    +
    6336 return false;
    +
    6337 }
    +
    6338
    +
    6339 virtual void invalidate()
    +
    6340 {
    +
    6341 name.start = 1;
    +
    6342 name.end = 0;
    +
    6343 value.start = 1;
    +
    6344 value.end = 0;
    +
    6345 parser::invalidate();
    +
    6346 }
    +
    6347
    +
    6348 public:
    + + +
    6351
    +
    6352 protected:
    +
    6353 http_line_break m_line_break;
    +
    6354 };
    +
    6355
    +
    6359 template <class T>
    +
    6360 class http_value_collection : public T
    +
    6361 {
    +
    6362 public:
    +
    6363 void insert(
    +
    6364 _In_reads_or_z_(end) const char* text,
    +
    6365 _In_ size_t start = 0,
    +
    6366 _In_ size_t end = (size_t)-1,
    +
    6367 _In_ int flags = match_default)
    +
    6368 {
    +
    6369 while (start < end) {
    +
    6370 while (start < end && text[start] && isspace(text[start])) start++;
    +
    6371 if (start < end && text[start] == ',') {
    +
    6372 start++;
    +
    6373 while (start < end&& text[start] && isspace(text[start])) start++;
    +
    6374 }
    +
    6375 T::key_type el;
    +
    6376 if (el.match(text, start, end, flags)) {
    +
    6377 start = el.interval.end;
    +
    6378 T::insert(std::move(el));
    +
    6379 }
    +
    6380 else
    +
    6381 break;
    +
    6382 }
    +
    6383 }
    +
    6384 };
    +
    6385
    +
    6386 template <class T>
    + +
    6388 constexpr bool operator()(const T& a, const T& b) const noexcept
    +
    6389 {
    +
    6390 return a.factor.value > b.factor.value;
    +
    6391 }
    +
    6392 };
    +
    6393
    +
    6397 template <class T, class _Alloc = std::allocator<T>>
    + +
    6399
    +
    6403 template <class T>
    + +
    6405 {
    +
    6406 public:
    + +
    6408 _In_ const std::shared_ptr<basic_parser<T>>& quote,
    +
    6409 _In_ const std::shared_ptr<basic_parser<T>>& chr,
    +
    6410 _In_ const std::shared_ptr<basic_parser<T>>& escape,
    +
    6411 _In_ const std::shared_ptr<basic_parser<T>>& sol,
    +
    6412 _In_ const std::shared_ptr<basic_parser<T>>& bs,
    +
    6413 _In_ const std::shared_ptr<basic_parser<T>>& ff,
    +
    6414 _In_ const std::shared_ptr<basic_parser<T>>& lf,
    +
    6415 _In_ const std::shared_ptr<basic_parser<T>>& cr,
    +
    6416 _In_ const std::shared_ptr<basic_parser<T>>& htab,
    +
    6417 _In_ const std::shared_ptr<basic_parser<T>>& uni,
    +
    6418 _In_ const std::shared_ptr<basic_integer16<T>>& hex,
    +
    6419 _In_ const std::locale& locale = std::locale()) :
    +
    6420 basic_parser<T>(locale),
    +
    6421 m_quote(quote),
    +
    6422 m_chr(chr),
    +
    6423 m_escape(escape),
    +
    6424 m_sol(sol),
    +
    6425 m_bs(bs),
    +
    6426 m_ff(ff),
    +
    6427 m_lf(lf),
    +
    6428 m_cr(cr),
    +
    6429 m_htab(htab),
    +
    6430 m_uni(uni),
    +
    6431 m_hex(hex)
    +
    6432 {}
    +
    6433
    +
    6434 virtual bool match(
    +
    6435 _In_reads_or_z_(end) const T* text,
    +
    6436 _In_ size_t start = 0,
    +
    6437 _In_ size_t end = (size_t)-1,
    +
    6438 _In_ int flags = match_default)
    +
    6439 {
    +
    6440 assert(text || start >= end);
    +
    6441 interval.end = start;
    +
    6442 if (m_quote->match(text, interval.end, end, flags)) {
    +
    6443 interval.end = m_quote->interval.end;
    +
    6444 value.clear();
    +
    6445 for (;;) {
    +
    6446 if (m_quote->match(text, interval.end, end, flags)) {
    +
    6447 interval.start = start;
    +
    6448 interval.end = m_quote->interval.end;
    +
    6449 return true;
    +
    6450 }
    +
    6451 if (m_escape->match(text, interval.end, end, flags)) {
    +
    6452 if (m_quote->match(text, m_escape->interval.end, end, flags)) {
    +
    6453 value += '"'; interval.end = m_quote->interval.end;
    +
    6454 continue;
    +
    6455 }
    +
    6456 if (m_sol->match(text, m_escape->interval.end, end, flags)) {
    +
    6457 value += '/'; interval.end = m_sol->interval.end;
    +
    6458 continue;
    +
    6459 }
    +
    6460 if (m_bs->match(text, m_escape->interval.end, end, flags)) {
    +
    6461 value += '\b'; interval.end = m_bs->interval.end;
    +
    6462 continue;
    +
    6463 }
    +
    6464 if (m_ff->match(text, m_escape->interval.end, end, flags)) {
    +
    6465 value += '\f'; interval.end = m_ff->interval.end;
    +
    6466 continue;
    +
    6467 }
    +
    6468 if (m_lf->match(text, m_escape->interval.end, end, flags)) {
    +
    6469 value += '\n'; interval.end = m_lf->interval.end;
    +
    6470 continue;
    +
    6471 }
    +
    6472 if (m_cr->match(text, m_escape->interval.end, end, flags)) {
    +
    6473 value += '\r'; interval.end = m_cr->interval.end;
    +
    6474 continue;
    +
    6475 }
    +
    6476 if (m_htab->match(text, m_escape->interval.end, end, flags)) {
    +
    6477 value += '\t'; interval.end = m_htab->interval.end;
    +
    6478 continue;
    +
    6479 }
    +
    6480 if (
    +
    6481 m_uni->match(text, m_escape->interval.end, end, flags) &&
    +
    6482 m_hex->match(text, m_uni->interval.end, std::min(m_uni->interval.end + 4, end), flags | match_case_insensitive) &&
    +
    6483 m_hex->interval.size() == 4 /* JSON requests 4-digit Unicode sequneces: \u.... */)
    +
    6484 {
    +
    6485 assert(m_hex->value <= 0xffff);
    +
    6486 if (sizeof(T) == 1) {
    +
    6487 if (m_hex->value > 0x7ff) {
    +
    6488 value += (T)(0xe0 | (m_hex->value >> 12) & 0x0f);
    +
    6489 value += (T)(0x80 | (m_hex->value >> 6) & 0x3f);
    +
    6490 value += (T)(0x80 | m_hex->value & 0x3f);
    +
    6491 }
    +
    6492 else if (m_hex->value > 0x7f) {
    +
    6493 value += (T)(0xc0 | (m_hex->value >> 6) & 0x1f);
    +
    6494 value += (T)(0x80 | m_hex->value & 0x3f);
    +
    6495 }
    +
    6496 else
    +
    6497 value += (T)(m_hex->value & 0x7f);
    +
    6498 }
    +
    6499 else
    +
    6500 value += (T)m_hex->value;
    +
    6501 interval.end = m_hex->interval.end;
    +
    6502 continue;
    +
    6503 }
    +
    6504 if (m_escape->match(text, m_escape->interval.end, end, flags)) {
    +
    6505 value += '\\'; interval.end = m_escape->interval.end;
    +
    6506 continue;
    +
    6507 }
    +
    6508 }
    +
    6509 if (m_chr->match(text, interval.end, end, flags)) {
    +
    6510 value.Prilepi(text + m_chr->interval.start, m_chr->interval.size());
    +
    6511 interval.end = m_chr->interval.end;
    +
    6512 continue;
    +
    6513 }
    +
    6514 break;
    +
    6515 }
    +
    6516 }
    +
    6517 value.clear();
    +
    6518 interval.start = (interval.end = start) + 1;
    +
    6519 return false;
    +
    6520 }
    +
    6521
    +
    6522 virtual void invalidate()
    +
    6523 {
    +
    6524 value.clear();
    + +
    6526 }
    +
    6527
    +
    6528 public:
    +
    6529 std::basic_string<T> value;
    +
    6530
    +
    6531 protected:
    +
    6532 std::shared_ptr<basic_parser<T>> m_quote;
    +
    6533 std::shared_ptr<basic_parser<T>> m_chr;
    +
    6534 std::shared_ptr<basic_parser<T>> m_escape;
    +
    6535 std::shared_ptr<basic_parser<T>> m_sol;
    +
    6536 std::shared_ptr<basic_parser<T>> m_bs;
    +
    6537 std::shared_ptr<basic_parser<T>> m_ff;
    +
    6538 std::shared_ptr<basic_parser<T>> m_lf;
    +
    6539 std::shared_ptr<basic_parser<T>> m_cr;
    +
    6540 std::shared_ptr<basic_parser<T>> m_htab;
    +
    6541 std::shared_ptr<basic_parser<T>> m_uni;
    +
    6542 std::shared_ptr<basic_integer16<T>> m_hex;
    +
    6543 };
    +
    6544
    + + +
    6547#ifdef _UNICODE
    +
    6548 using tjson_string = wjson_string;
    +
    6549#else
    +
    6550 using tjson_string = json_string;
    +
    6551#endif
    +
    6552 }
    +
    6553}
    +
    6554
    +
    6555#ifdef _MSC_VER
    +
    6556#pragma warning(pop)
    +
    6557#endif
    +
    Test for angle in d°mm'ss.dddd form.
    Definition: parser.hpp:4369
    Test for any code unit.
    Definition: parser.hpp:200
    -
    Test for beginning of line.
    Definition: parser.hpp:582
    -
    Test for any.
    Definition: parser.hpp:1024
    -
    Test for chemical formula.
    Definition: parser.hpp:4633
    -
    Test for any code unit from a given string of code units.
    Definition: parser.hpp:687
    -
    Test for specific code unit.
    Definition: parser.hpp:266
    -
    Test for date.
    Definition: parser.hpp:3979
    -
    Test for valid DNS domain character.
    Definition: parser.hpp:2774
    -
    bool allow_on_edge
    Is character allowed at the beginning or an end of a DNS domain?
    Definition: parser.hpp:2812
    -
    Test for DNS domain/hostname.
    Definition: parser.hpp:2874
    -
    bool m_allow_absolute
    May DNS names end with a dot (absolute name)?
    Definition: parser.hpp:2938
    -
    Test for e-mail address.
    Definition: parser.hpp:3762
    -
    Test for emoticon.
    Definition: parser.hpp:3870
    -
    std::shared_ptr< basic_tester< T > > nose
    nose (e.g. -, o)
    Definition: parser.hpp:3961
    -
    std::shared_ptr< basic_set< T > > mouth
    mouth (e.g. ), ), (, (, |, P, D, p, d)
    Definition: parser.hpp:3962
    -
    std::shared_ptr< basic_tester< T > > eyes
    eyes (e.g. :, ;, >, |, B)
    Definition: parser.hpp:3960
    -
    std::shared_ptr< basic_tester< T > > emoticon
    emoticon as a whole (e.g. 😀, 🤔, 😶)
    Definition: parser.hpp:3958
    -
    std::shared_ptr< basic_tester< T > > apex
    apex/eyebrows/halo (e.g. O, 0)
    Definition: parser.hpp:3959
    -
    Test for end of line.
    Definition: parser.hpp:620
    -
    Test for fraction.
    Definition: parser.hpp:1653
    -
    Test for decimal integer.
    Definition: parser.hpp:1262
    -
    Test for decimal integer possibly containing thousand separators.
    Definition: parser.hpp:1347
    -
    bool has_separators
    Did integer have any separators?
    Definition: parser.hpp:1407
    -
    size_t digit_count
    Total number of digits in integer.
    Definition: parser.hpp:1406
    -
    Test for hexadecimal integer.
    Definition: parser.hpp:1428
    -
    Base class for integer testing.
    Definition: parser.hpp:1240
    -
    size_t value
    Calculated value of the numeral.
    Definition: parser.hpp:1254
    -
    Test for IPv4 address.
    Definition: parser.hpp:2312
    -
    Test for IPv6 address.
    Definition: parser.hpp:2533
    -
    std::shared_ptr< basic_tester< T > > scope_id
    Scope ID (e.g. NIC index with link-local addresses)
    Definition: parser.hpp:2737
    -
    Test for valid IPv6 address scope ID character.
    Definition: parser.hpp:2459
    -
    Test for repeating.
    Definition: parser.hpp:877
    -
    bool m_greedy
    try to match as long sequence as possible
    Definition: parser.hpp:916
    -
    size_t m_min_iterations
    minimum number of iterations
    Definition: parser.hpp:914
    -
    size_t m_max_iterations
    maximum number of iterations
    Definition: parser.hpp:915
    -
    std::shared_ptr< basic_tester< T > > m_el
    repeating element
    Definition: parser.hpp:913
    -
    Test for JSON string.
    Definition: parser.hpp:6379
    -
    Test for mixed numeral.
    Definition: parser.hpp:1888
    -
    std::shared_ptr< basic_tester< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:1992
    -
    std::shared_ptr< basic_tester< T > > fraction
    fraction
    Definition: parser.hpp:1994
    -
    std::shared_ptr< basic_tester< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:1990
    -
    std::shared_ptr< basic_tester< T > > integer
    Integer part.
    Definition: parser.hpp:1993
    -
    std::shared_ptr< basic_tester< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:1991
    -
    Test for monetary numeral.
    Definition: parser.hpp:2183
    -
    std::shared_ptr< basic_tester< T > > decimal_separator
    Decimal separator.
    Definition: parser.hpp:2294
    -
    std::shared_ptr< basic_tester< T > > decimal
    Decimal part.
    Definition: parser.hpp:2295
    -
    std::shared_ptr< basic_tester< T > > currency
    Currency part.
    Definition: parser.hpp:2292
    -
    std::shared_ptr< basic_tester< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:2291
    -
    std::shared_ptr< basic_tester< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:2289
    -
    std::shared_ptr< basic_tester< T > > integer
    Integer part.
    Definition: parser.hpp:2293
    -
    std::shared_ptr< basic_tester< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:2290
    +
    Test for beginning of line.
    Definition: parser.hpp:594
    +
    Test for any.
    Definition: parser.hpp:1036
    +
    Test for chemical formula.
    Definition: parser.hpp:4643
    +
    Test for any code unit from a given string of code units.
    Definition: parser.hpp:699
    +
    Test for specific code unit.
    Definition: parser.hpp:270
    +
    Test for date.
    Definition: parser.hpp:3989
    +
    Test for valid DNS domain character.
    Definition: parser.hpp:2784
    +
    bool allow_on_edge
    Is character allowed at the beginning or an end of a DNS domain?
    Definition: parser.hpp:2822
    +
    Test for DNS domain/hostname.
    Definition: parser.hpp:2884
    +
    bool m_allow_absolute
    May DNS names end with a dot (absolute name)?
    Definition: parser.hpp:2948
    +
    Test for e-mail address.
    Definition: parser.hpp:3772
    +
    Test for emoticon.
    Definition: parser.hpp:3880
    +
    std::shared_ptr< basic_parser< T > > apex
    apex/eyebrows/halo (e.g. O, 0)
    Definition: parser.hpp:3969
    +
    std::shared_ptr< basic_parser< T > > eyes
    eyes (e.g. :, ;, >, |, B)
    Definition: parser.hpp:3970
    +
    std::shared_ptr< basic_set< T > > mouth
    mouth (e.g. ), ), (, (, |, P, D, p, d)
    Definition: parser.hpp:3972
    +
    std::shared_ptr< basic_parser< T > > nose
    nose (e.g. -, o)
    Definition: parser.hpp:3971
    +
    std::shared_ptr< basic_parser< T > > emoticon
    emoticon as a whole (e.g. 😀, 🤔, 😶)
    Definition: parser.hpp:3968
    +
    Test for end of line.
    Definition: parser.hpp:632
    +
    Test for fraction.
    Definition: parser.hpp:1665
    +
    Test for decimal integer.
    Definition: parser.hpp:1274
    +
    Test for decimal integer possibly containing thousand separators.
    Definition: parser.hpp:1359
    +
    bool has_separators
    Did integer have any separators?
    Definition: parser.hpp:1419
    +
    size_t digit_count
    Total number of digits in integer.
    Definition: parser.hpp:1418
    +
    Test for hexadecimal integer.
    Definition: parser.hpp:1440
    +
    Base class for integer testing.
    Definition: parser.hpp:1252
    +
    size_t value
    Calculated value of the numeral.
    Definition: parser.hpp:1266
    +
    Test for IPv4 address.
    Definition: parser.hpp:2324
    +
    Test for IPv6 address.
    Definition: parser.hpp:2543
    +
    std::shared_ptr< basic_parser< T > > scope_id
    Scope ID (e.g. NIC index with link-local addresses)
    Definition: parser.hpp:2747
    +
    Test for valid IPv6 address scope ID character.
    Definition: parser.hpp:2471
    +
    Test for repeating.
    Definition: parser.hpp:889
    +
    bool m_greedy
    try to match as long sequence as possible
    Definition: parser.hpp:928
    +
    std::shared_ptr< basic_parser< T > > m_el
    repeating element
    Definition: parser.hpp:925
    +
    size_t m_min_iterations
    minimum number of iterations
    Definition: parser.hpp:926
    +
    size_t m_max_iterations
    maximum number of iterations
    Definition: parser.hpp:927
    +
    Test for JSON string.
    Definition: parser.hpp:6405
    +
    Test for mixed numeral.
    Definition: parser.hpp:1900
    +
    std::shared_ptr< basic_parser< T > > fraction
    fraction
    Definition: parser.hpp:2006
    +
    std::shared_ptr< basic_parser< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:2004
    +
    std::shared_ptr< basic_parser< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:2003
    +
    std::shared_ptr< basic_parser< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:2002
    +
    std::shared_ptr< basic_parser< T > > integer
    Integer part.
    Definition: parser.hpp:2005
    +
    Test for monetary numeral.
    Definition: parser.hpp:2195
    +
    std::shared_ptr< basic_parser< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:2301
    +
    std::shared_ptr< basic_parser< T > > decimal_separator
    Decimal separator.
    Definition: parser.hpp:2306
    +
    std::shared_ptr< basic_parser< T > > currency
    Currency part.
    Definition: parser.hpp:2304
    +
    std::shared_ptr< basic_parser< T > > decimal
    Decimal part.
    Definition: parser.hpp:2307
    +
    std::shared_ptr< basic_parser< T > > integer
    Integer part.
    Definition: parser.hpp:2305
    +
    std::shared_ptr< basic_parser< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:2302
    +
    std::shared_ptr< basic_parser< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:2303
    "No-op" match
    Definition: parser.hpp:168
    -
    Test for permutation.
    Definition: parser.hpp:1164
    -
    Test for phone number.
    Definition: parser.hpp:4482
    -
    std::basic_string< T > value
    Normalized phone number.
    Definition: parser.hpp:4608
    -
    Test for any punctuation code unit.
    Definition: parser.hpp:438
    -
    Test for Roman numeral.
    Definition: parser.hpp:1537
    -
    Test for scientific numeral.
    Definition: parser.hpp:2014
    -
    std::shared_ptr< basic_tester< T > > positive_exp_sign
    Positive exponent sign (e.g. '+')
    Definition: parser.hpp:2163
    -
    std::shared_ptr< basic_tester< T > > negative_exp_sign
    Negative exponent sign (e.g. '-')
    Definition: parser.hpp:2164
    -
    std::shared_ptr< basic_tester< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:2156
    -
    double value
    Calculated value of the numeral.
    Definition: parser.hpp:2166
    -
    std::shared_ptr< basic_integer< T > > decimal
    Decimal part.
    Definition: parser.hpp:2161
    -
    std::shared_ptr< basic_tester< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:2157
    -
    std::shared_ptr< basic_integer< T > > exponent
    Exponent part.
    Definition: parser.hpp:2165
    -
    std::shared_ptr< basic_tester< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:2158
    -
    std::shared_ptr< basic_tester< T > > decimal_separator
    Decimal separator.
    Definition: parser.hpp:2160
    -
    std::shared_ptr< basic_tester< T > > exponent_symbol
    Exponent symbol (e.g. 'e')
    Definition: parser.hpp:2162
    -
    std::shared_ptr< basic_integer< T > > integer
    Integer part.
    Definition: parser.hpp:2159
    -
    Test for match score.
    Definition: parser.hpp:1716
    -
    Test for sequence.
    Definition: parser.hpp:973
    -
    Definition: parser.hpp:655
    -
    Test for signed numeral.
    Definition: parser.hpp:1802
    -
    std::shared_ptr< basic_tester< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:1868
    -
    std::shared_ptr< basic_tester< T > > number
    Number.
    Definition: parser.hpp:1871
    -
    std::shared_ptr< basic_tester< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:1869
    -
    std::shared_ptr< basic_tester< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:1870
    -
    Test for any space code unit.
    Definition: parser.hpp:359
    -
    Test for any space or punctuation code unit.
    Definition: parser.hpp:508
    -
    Test for any string.
    Definition: parser.hpp:1092
    -
    Test for given string.
    Definition: parser.hpp:782
    -
    Base template for all testers.
    Definition: parser.hpp:49
    -
    interval< size_t > interval
    Test for interval.
    Definition: parser.hpp:148
    -
    Test for time.
    Definition: parser.hpp:4256
    -
    Test for valid URL password character.
    Definition: parser.hpp:3056
    -
    Test for valid URL path character.
    Definition: parser.hpp:3156
    -
    Test for URL path.
    Definition: parser.hpp:3264
    -
    Test for valid URL username character.
    Definition: parser.hpp:2957
    -
    Test for URL.
    Definition: parser.hpp:3405
    -
    Test for HTTP agent.
    Definition: parser.hpp:5908
    -
    Test for HTTP any type.
    Definition: parser.hpp:5040
    -
    Test for HTTP asterisk.
    Definition: parser.hpp:5677
    - - - - - -
    Collection of HTTP headers.
    Definition: parser.hpp:6335
    -
    Test for HTTP header.
    Definition: parser.hpp:6225
    -
    Test for HTTP language (RFC1766)
    Definition: parser.hpp:5545
    -
    Test for HTTP line break (RFC2616: CRLF | LF)
    Definition: parser.hpp:4714
    -
    Test for HTTP media range (RFC2616: media-range)
    Definition: parser.hpp:5072
    -
    Test for HTTP media type (RFC2616: media-type)
    Definition: parser.hpp:5127
    -
    Test for HTTP parameter (RFC2616: parameter)
    Definition: parser.hpp:4985
    -
    http_token name
    Parameter name.
    Definition: parser.hpp:5029
    -
    http_value value
    Parameter value.
    Definition: parser.hpp:5030
    -
    Test for HTTP protocol.
    Definition: parser.hpp:5984
    -
    uint16_t version
    HTTP protocol version: 0x100 = 1.0, 0x101 = 1.1...
    Definition: parser.hpp:6086
    -
    Test for HTTP quoted string (RFC2616: quoted-string)
    Definition: parser.hpp:4875
    -
    stdex::interval< size_t > content
    String content (without quotes)
    Definition: parser.hpp:4931
    -
    Test for HTTP request.
    Definition: parser.hpp:6093
    -
    Test for HTTP space (RFC2616: LWS)
    Definition: parser.hpp:4750
    -
    Test for HTTP text character (RFC2616: TEXT)
    Definition: parser.hpp:4787
    -
    Test for HTTP token (RFC2616: token - tolerates non-ASCII)
    Definition: parser.hpp:4821
    -
    Test for HTTP URL parameter.
    Definition: parser.hpp:5367
    -
    Test for HTTP URL path segment.
    Definition: parser.hpp:5278
    -
    Test for HTTP URL path segment.
    Definition: parser.hpp:5311
    -
    std::vector< http_url_path_segment > segments
    Path segments.
    Definition: parser.hpp:5360
    -
    Test for HTTP URL port.
    Definition: parser.hpp:5222
    -
    Test for HTTP URL server.
    Definition: parser.hpp:5185
    -
    Test for HTTP URL.
    Definition: parser.hpp:5448
    -
    Test for HTTP value (RFC2616: value)
    Definition: parser.hpp:4941
    -
    http_quoted_string string
    Value when matched as quoted string.
    Definition: parser.hpp:4977
    -
    http_token token
    Value when matched as token.
    Definition: parser.hpp:4978
    -
    Test for HTTP weight factor.
    Definition: parser.hpp:5608
    -
    float value
    Calculated value of the weight factor.
    Definition: parser.hpp:5670
    -
    Test for HTTP weighted value.
    Definition: parser.hpp:5700
    -
    Test for any SGML code point.
    Definition: parser.hpp:230
    -
    Test for any SGML code point from a given string of SGML code points.
    Definition: parser.hpp:739
    -
    Test for specific SGML code point.
    Definition: parser.hpp:315
    -
    Test for valid DNS domain SGML character.
    Definition: parser.hpp:2830
    -
    Test for valid IPv6 address scope ID SGML character.
    Definition: parser.hpp:2498
    -
    Test for any SGML punctuation code point.
    Definition: parser.hpp:479
    -
    Test for any SGML space code point.
    Definition: parser.hpp:402
    -
    Test for any SGML space or punctuation code point.
    Definition: parser.hpp:551
    -
    Test for SGML given string.
    Definition: parser.hpp:829
    -
    Test for valid URL password SGML character.
    Definition: parser.hpp:3108
    -
    Test for valid URL path SGML character.
    Definition: parser.hpp:3212
    -
    Test for valid URL username SGML character.
    Definition: parser.hpp:3008
    -
    Base template for collection-holding testers.
    Definition: parser.hpp:933
    +
    Base template for all parsers.
    Definition: parser.hpp:49
    +
    interval< size_t > interval
    Region of the last match.
    Definition: parser.hpp:148
    +
    Test for permutation.
    Definition: parser.hpp:1176
    +
    Test for phone number.
    Definition: parser.hpp:4492
    +
    std::basic_string< T > value
    Normalized phone number.
    Definition: parser.hpp:4618
    +
    Test for any punctuation code unit.
    Definition: parser.hpp:442
    +
    Test for Roman numeral.
    Definition: parser.hpp:1549
    +
    Test for scientific numeral.
    Definition: parser.hpp:2026
    +
    std::shared_ptr< basic_parser< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:2170
    +
    std::shared_ptr< basic_parser< T > > exponent_symbol
    Exponent symbol (e.g. 'e')
    Definition: parser.hpp:2174
    +
    std::shared_ptr< basic_parser< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:2168
    +
    std::shared_ptr< basic_parser< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:2169
    +
    double value
    Calculated value of the numeral.
    Definition: parser.hpp:2178
    +
    std::shared_ptr< basic_parser< T > > negative_exp_sign
    Negative exponent sign (e.g. '-')
    Definition: parser.hpp:2176
    +
    std::shared_ptr< basic_integer< T > > decimal
    Decimal part.
    Definition: parser.hpp:2173
    +
    std::shared_ptr< basic_parser< T > > positive_exp_sign
    Positive exponent sign (e.g. '+')
    Definition: parser.hpp:2175
    +
    std::shared_ptr< basic_integer< T > > exponent
    Exponent part.
    Definition: parser.hpp:2177
    +
    std::shared_ptr< basic_parser< T > > decimal_separator
    Decimal separator.
    Definition: parser.hpp:2172
    +
    std::shared_ptr< basic_integer< T > > integer
    Integer part.
    Definition: parser.hpp:2171
    +
    Test for match score.
    Definition: parser.hpp:1728
    +
    Test for sequence.
    Definition: parser.hpp:985
    +
    Definition: parser.hpp:667
    +
    Test for signed numeral.
    Definition: parser.hpp:1814
    +
    std::shared_ptr< basic_parser< T > > special_sign
    Special sign (e.g. plus-minus '±')
    Definition: parser.hpp:1882
    +
    std::shared_ptr< basic_parser< T > > negative_sign
    Negative sign.
    Definition: parser.hpp:1881
    +
    std::shared_ptr< basic_parser< T > > positive_sign
    Positive sign.
    Definition: parser.hpp:1880
    +
    std::shared_ptr< basic_parser< T > > number
    Number.
    Definition: parser.hpp:1883
    +
    Test for any space code unit.
    Definition: parser.hpp:363
    +
    Test for any space or punctuation code unit.
    Definition: parser.hpp:516
    +
    Test for any string.
    Definition: parser.hpp:1104
    +
    Test for given string.
    Definition: parser.hpp:794
    +
    Test for time.
    Definition: parser.hpp:4266
    +
    Test for valid URL password character.
    Definition: parser.hpp:3066
    +
    Test for valid URL path character.
    Definition: parser.hpp:3166
    +
    Test for URL path.
    Definition: parser.hpp:3274
    +
    Test for valid URL username character.
    Definition: parser.hpp:2967
    +
    Test for URL.
    Definition: parser.hpp:3415
    +
    Test for HTTP agent.
    Definition: parser.hpp:5928
    +
    Test for HTTP any type.
    Definition: parser.hpp:5050
    +
    Test for HTTP asterisk.
    Definition: parser.hpp:5692
    + + + + + +
    Test for HTTP header.
    Definition: parser.hpp:6251
    +
    Test for HTTP language (RFC1766)
    Definition: parser.hpp:5560
    +
    Test for HTTP line break (RFC2616: CRLF | LF)
    Definition: parser.hpp:4724
    +
    Test for HTTP media range (RFC2616: media-range)
    Definition: parser.hpp:5082
    +
    Test for HTTP media type (RFC2616: media-type)
    Definition: parser.hpp:5137
    +
    Test for HTTP parameter (RFC2616: parameter)
    Definition: parser.hpp:4995
    +
    http_token name
    Parameter name.
    Definition: parser.hpp:5039
    +
    http_value value
    Parameter value.
    Definition: parser.hpp:5040
    +
    Test for HTTP protocol.
    Definition: parser.hpp:6004
    +
    uint16_t version
    HTTP protocol version: 0x100 = 1.0, 0x101 = 1.1...
    Definition: parser.hpp:6106
    +
    Test for HTTP quoted string (RFC2616: quoted-string)
    Definition: parser.hpp:4885
    +
    stdex::interval< size_t > content
    String content (without quotes)
    Definition: parser.hpp:4941
    +
    Test for HTTP request.
    Definition: parser.hpp:6113
    +
    Test for HTTP space (RFC2616: LWS)
    Definition: parser.hpp:4760
    +
    Test for HTTP text character (RFC2616: TEXT)
    Definition: parser.hpp:4797
    +
    Test for HTTP token (RFC2616: token - tolerates non-ASCII)
    Definition: parser.hpp:4831
    +
    Test for HTTP URL parameter.
    Definition: parser.hpp:5377
    +
    Test for HTTP URL path segment.
    Definition: parser.hpp:5288
    +
    Test for HTTP URL path segment.
    Definition: parser.hpp:5321
    +
    std::vector< http_url_path_segment > segments
    Path segments.
    Definition: parser.hpp:5370
    +
    Test for HTTP URL port.
    Definition: parser.hpp:5232
    +
    Test for HTTP URL server.
    Definition: parser.hpp:5195
    +
    Test for HTTP URL.
    Definition: parser.hpp:5458
    +
    Collection of HTTP values.
    Definition: parser.hpp:6361
    +
    Test for HTTP value (RFC2616: value)
    Definition: parser.hpp:4951
    +
    http_quoted_string string
    Value when matched as quoted string.
    Definition: parser.hpp:4987
    +
    http_token token
    Value when matched as token.
    Definition: parser.hpp:4988
    +
    Test for HTTP weight factor.
    Definition: parser.hpp:5623
    +
    float value
    Calculated value of the weight factor.
    Definition: parser.hpp:5685
    +
    Test for HTTP weighted value.
    Definition: parser.hpp:5715
    +
    Base template for collection-holding parsers.
    Definition: parser.hpp:945
    +
    Test for any SGML code point.
    Definition: parser.hpp:232
    +
    Test for any SGML code point from a given string of SGML code points.
    Definition: parser.hpp:751
    +
    Test for specific SGML code point.
    Definition: parser.hpp:319
    +
    Test for valid DNS domain SGML character.
    Definition: parser.hpp:2840
    +
    Test for valid IPv6 address scope ID SGML character.
    Definition: parser.hpp:2509
    +
    Test for any SGML punctuation code point.
    Definition: parser.hpp:483
    +
    Test for any SGML space code point.
    Definition: parser.hpp:406
    +
    Test for any SGML space or punctuation code point.
    Definition: parser.hpp:559
    +
    Test for SGML given string.
    Definition: parser.hpp:841
    +
    Test for valid URL password SGML character.
    Definition: parser.hpp:3118
    +
    Test for valid URL path SGML character.
    Definition: parser.hpp:3222
    +
    Test for valid URL username SGML character.
    Definition: parser.hpp:3018
    Numerical interval.
    Definition: interval.hpp:17
    T end
    interval end
    Definition: interval.hpp:19
    interval() noexcept
    Constructs an invalid interval.
    Definition: interval.hpp:24
    T start
    interval start
    Definition: interval.hpp:18
    -
    Definition: parser.hpp:6361
    +
    Definition: parser.hpp:6387
    diff --git a/pch_8h_source.html b/pch_8h_source.html index 08d772ea9..9a74d5a4d 100644 --- a/pch_8h_source.html +++ b/pch_8h_source.html @@ -105,7 +105,7 @@ $(function() { diff --git a/progress_8hpp_source.html b/progress_8hpp_source.html index 915e92877..39194d7bd 100644 --- a/progress_8hpp_source.html +++ b/progress_8hpp_source.html @@ -260,7 +260,7 @@ $(function() { diff --git a/sal_8hpp_source.html b/sal_8hpp_source.html index 5646e9a3c..5cc1ee7ea 100644 --- a/sal_8hpp_source.html +++ b/sal_8hpp_source.html @@ -140,7 +140,7 @@ $(function() { diff --git a/search/all_0.js b/search/all_0.js index a3b78a9d7..070af7f2c 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -2,7 +2,7 @@ var searchData= [ ['abs_0',['abs',['../classstdex_1_1vector__queue.html#ae31dd1a45546dc1ff91eaa82b97c0e1b',1,'stdex::vector_queue']]], ['allow_5fon_5fedge_1',['allow_on_edge',['../classstdex_1_1parser_1_1basic__dns__domain__char.html#a3307235d495a97c98f9efd1464e8a8a7',1,'stdex::parser::basic_dns_domain_char']]], - ['apex_2',['apex',['../classstdex_1_1parser_1_1basic__emoticon.html#ab6c13f75c157a179893df4716a3a1443',1,'stdex::parser::basic_emoticon']]], + ['apex_2',['apex',['../classstdex_1_1parser_1_1basic__emoticon.html#a1b6b7a024dea373b890c1c4516f5e9a4',1,'stdex::parser::basic_emoticon']]], ['at_3',['at',['../classstdex_1_1vector__queue.html#ae135f77af0deabaa5f2cfe5ca25b9f09',1,'stdex::vector_queue::at(size_type pos)'],['../classstdex_1_1vector__queue.html#ac2b559184798a59ee5fed26f27d92e3c',1,'stdex::vector_queue::at(size_type pos) const']]], ['at_5fabs_4',['at_abs',['../classstdex_1_1vector__queue.html#a881da485c13dcee1d35245570420877a',1,'stdex::vector_queue::at_abs(size_type pos)'],['../classstdex_1_1vector__queue.html#afee762c3280d33544ce8dd8ad20af40b',1,'stdex::vector_queue::at_abs(size_type pos) const']]], ['attach_5',['attach',['../classstdex_1_1global__progress.html#aec91532fde2500a5458a397f91c88769',1,'stdex::global_progress']]] diff --git a/search/all_1.js b/search/all_1.js index afcd89161..4e6623176 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -31,25 +31,25 @@ var searchData= ['basic_5fmixed_5fnumeral_28',['basic_mixed_numeral',['../classstdex_1_1parser_1_1basic__mixed__numeral.html',1,'stdex::parser']]], ['basic_5fmonetary_5fnumeral_29',['basic_monetary_numeral',['../classstdex_1_1parser_1_1basic__monetary__numeral.html',1,'stdex::parser']]], ['basic_5fnoop_30',['basic_noop',['../classstdex_1_1parser_1_1basic__noop.html',1,'stdex::parser']]], - ['basic_5fpermutation_31',['basic_permutation',['../classstdex_1_1parser_1_1basic__permutation.html',1,'stdex::parser']]], - ['basic_5fphone_5fnumber_32',['basic_phone_number',['../classstdex_1_1parser_1_1basic__phone__number.html',1,'stdex::parser']]], - ['basic_5fpunct_5fcu_33',['basic_punct_cu',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], - ['basic_5fpunct_5fcu_3c_20char_20_3e_34',['basic_punct_cu< char >',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], - ['basic_5froman_5fnumeral_35',['basic_roman_numeral',['../classstdex_1_1parser_1_1basic__roman__numeral.html',1,'stdex::parser']]], - ['basic_5fscientific_5fnumeral_36',['basic_scientific_numeral',['../classstdex_1_1parser_1_1basic__scientific__numeral.html',1,'stdex::parser']]], - ['basic_5fscore_37',['basic_score',['../classstdex_1_1parser_1_1basic__score.html',1,'stdex::parser']]], - ['basic_5fsequence_38',['basic_sequence',['../classstdex_1_1parser_1_1basic__sequence.html',1,'stdex::parser']]], - ['basic_5fset_39',['basic_set',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], - ['basic_5fset_3c_20char_20_3e_40',['basic_set< char >',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], - ['basic_5fsigned_5fnumeral_41',['basic_signed_numeral',['../classstdex_1_1parser_1_1basic__signed__numeral.html',1,'stdex::parser']]], - ['basic_5fspace_5fcu_42',['basic_space_cu',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], - ['basic_5fspace_5fcu_3c_20char_20_3e_43',['basic_space_cu< char >',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], - ['basic_5fspace_5for_5fpunct_5fcu_44',['basic_space_or_punct_cu',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], - ['basic_5fspace_5for_5fpunct_5fcu_3c_20char_20_3e_45',['basic_space_or_punct_cu< char >',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], - ['basic_5fstring_46',['basic_string',['../classstdex_1_1parser_1_1basic__string.html',1,'stdex::parser']]], - ['basic_5fstring_5fbranch_47',['basic_string_branch',['../classstdex_1_1parser_1_1basic__string__branch.html',1,'stdex::parser']]], - ['basic_5ftester_48',['basic_tester',['../classstdex_1_1parser_1_1basic__tester.html',1,'stdex::parser']]], - ['basic_5ftester_3c_20char_20_3e_49',['basic_tester< char >',['../classstdex_1_1parser_1_1basic__tester.html',1,'stdex::parser']]], + ['basic_5fparser_31',['basic_parser',['../classstdex_1_1parser_1_1basic__parser.html',1,'stdex::parser']]], + ['basic_5fparser_3c_20char_20_3e_32',['basic_parser< char >',['../classstdex_1_1parser_1_1basic__parser.html',1,'stdex::parser']]], + ['basic_5fpermutation_33',['basic_permutation',['../classstdex_1_1parser_1_1basic__permutation.html',1,'stdex::parser']]], + ['basic_5fphone_5fnumber_34',['basic_phone_number',['../classstdex_1_1parser_1_1basic__phone__number.html',1,'stdex::parser']]], + ['basic_5fpunct_5fcu_35',['basic_punct_cu',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], + ['basic_5fpunct_5fcu_3c_20char_20_3e_36',['basic_punct_cu< char >',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], + ['basic_5froman_5fnumeral_37',['basic_roman_numeral',['../classstdex_1_1parser_1_1basic__roman__numeral.html',1,'stdex::parser']]], + ['basic_5fscientific_5fnumeral_38',['basic_scientific_numeral',['../classstdex_1_1parser_1_1basic__scientific__numeral.html',1,'stdex::parser']]], + ['basic_5fscore_39',['basic_score',['../classstdex_1_1parser_1_1basic__score.html',1,'stdex::parser']]], + ['basic_5fsequence_40',['basic_sequence',['../classstdex_1_1parser_1_1basic__sequence.html',1,'stdex::parser']]], + ['basic_5fset_41',['basic_set',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], + ['basic_5fset_3c_20char_20_3e_42',['basic_set< char >',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], + ['basic_5fsigned_5fnumeral_43',['basic_signed_numeral',['../classstdex_1_1parser_1_1basic__signed__numeral.html',1,'stdex::parser']]], + ['basic_5fspace_5fcu_44',['basic_space_cu',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], + ['basic_5fspace_5fcu_3c_20char_20_3e_45',['basic_space_cu< char >',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], + ['basic_5fspace_5for_5fpunct_5fcu_46',['basic_space_or_punct_cu',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], + ['basic_5fspace_5for_5fpunct_5fcu_3c_20char_20_3e_47',['basic_space_or_punct_cu< char >',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], + ['basic_5fstring_48',['basic_string',['../classstdex_1_1parser_1_1basic__string.html',1,'stdex::parser']]], + ['basic_5fstring_5fbranch_49',['basic_string_branch',['../classstdex_1_1parser_1_1basic__string__branch.html',1,'stdex::parser']]], ['basic_5ftime_50',['basic_time',['../classstdex_1_1parser_1_1basic__time.html',1,'stdex::parser']]], ['basic_5furl_51',['basic_url',['../classstdex_1_1parser_1_1basic__url.html',1,'stdex::parser']]], ['basic_5furl_5fpassword_5fchar_52',['basic_url_password_char',['../classstdex_1_1parser_1_1basic__url__password__char.html',1,'stdex::parser']]], diff --git a/search/all_10.js b/search/all_10.js index 551fc44da..6b89c07dc 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -1,6 +1,5 @@ var searchData= [ ['tail_0',['tail',['../classstdex_1_1vector__queue.html#a1b87831a03da17b15d8c330a47708d00',1,'stdex::vector_queue']]], - ['tester_5fcollection_1',['tester_collection',['../classstdex_1_1parser_1_1tester__collection.html',1,'stdex::parser']]], - ['token_2',['token',['../classstdex_1_1parser_1_1http__value.html#aecdecacd265379c1d6e12a75424c5573',1,'stdex::parser::http_value']]] + ['token_1',['token',['../classstdex_1_1parser_1_1http__value.html#aecdecacd265379c1d6e12a75424c5573',1,'stdex::parser::http_value']]] ]; diff --git a/search/all_2.js b/search/all_2.js index d63a23b14..68162d9a3 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -8,5 +8,5 @@ var searchData= ['const_5fpointer_5',['const_pointer',['../classstdex_1_1vector__queue.html#a0da411250e23047a37c4ac09abfa109d',1,'stdex::vector_queue']]], ['const_5freference_6',['const_reference',['../classstdex_1_1vector__queue.html#afc37b516c234d4be0102412b28f46562',1,'stdex::vector_queue']]], ['content_7',['content',['../classstdex_1_1parser_1_1http__quoted__string.html#ab6e413ccf79e9f3dddd35c2a607381dd',1,'stdex::parser::http_quoted_string']]], - ['currency_8',['currency',['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a2f0d25d001827a0e6ebb48b16e4cfec2',1,'stdex::parser::basic_monetary_numeral']]] + ['currency_8',['currency',['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a62545d1c49178d4412da46d3cb2eba25',1,'stdex::parser::basic_monetary_numeral']]] ]; diff --git a/search/all_3.js b/search/all_3.js index a5b41774c..2c064bd8f 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -2,8 +2,8 @@ var searchData= [ ['data_0',['data',['../classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb',1,'stdex::idrec::record']]], ['dec_5fsize_1',['dec_size',['../classstdex_1_1base64__dec.html#a203f2afa5839242c1230cb22e0a65b25',1,'stdex::base64_dec::dec_size()'],['../classstdex_1_1hex__dec.html#acf3d5adf4766056a630d1ceeab946b55',1,'stdex::hex_dec::dec_size()']]], - ['decimal_2',['decimal',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ab002d811ce7c7590863492bbc4ac355f',1,'stdex::parser::basic_scientific_numeral::decimal()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a0f32376676fc3f7e4fbad66771e424c4',1,'stdex::parser::basic_monetary_numeral::decimal()']]], - ['decimal_5fseparator_3',['decimal_separator',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ad259d0eaa6e79c7cd6c114f1bb0da6dc',1,'stdex::parser::basic_scientific_numeral::decimal_separator()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a06cdd1cbfc37511990fc61dc3bade76b',1,'stdex::parser::basic_monetary_numeral::decimal_separator()']]], + ['decimal_2',['decimal',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ab002d811ce7c7590863492bbc4ac355f',1,'stdex::parser::basic_scientific_numeral::decimal()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#ac1442f0871a1b43db2d4cd45e05803ac',1,'stdex::parser::basic_monetary_numeral::decimal()']]], + ['decimal_5fseparator_3',['decimal_separator',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ae09233c93964704acf2bbd762fc14372',1,'stdex::parser::basic_scientific_numeral::decimal_separator()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a5393628850b747e190a4e0d50eb97144',1,'stdex::parser::basic_monetary_numeral::decimal_separator()']]], ['decode_4',['decode',['../classstdex_1_1base64__dec.html#a1beaf09718d63d49f9d95cf0e75a50bf',1,'stdex::base64_dec::decode(std::vector< _Ty, _Ax > &out, bool &is_last, const _Tchr *data, size_t size)'],['../classstdex_1_1base64__dec.html#a4b5f0334d5d5f85b7d02b6b21db8759e',1,'stdex::base64_dec::decode(std::vector< _Ty, _Ax > &out)'],['../classstdex_1_1hex__dec.html#ab5ac7cfefa8db97c8196d1ef2c327406',1,'stdex::hex_dec::decode()']]], ['detach_5',['detach',['../classstdex_1_1global__progress.html#aa2c5391aa2f1f30e72a700768bc52f84',1,'stdex::global_progress']]], ['digit_5fcount_6',['digit_count',['../classstdex_1_1parser_1_1basic__integer10ts.html#a3c400d7c6e0edf695e7cf5e9f43ae388',1,'stdex::parser::basic_integer10ts']]], diff --git a/search/all_4.js b/search/all_4.js index 2a86ea797..ac5df4c4e 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -1,12 +1,12 @@ var searchData= [ - ['emoticon_0',['emoticon',['../classstdex_1_1parser_1_1basic__emoticon.html#a78c5dea0c060b158f41715f3000fcd70',1,'stdex::parser::basic_emoticon']]], + ['emoticon_0',['emoticon',['../classstdex_1_1parser_1_1basic__emoticon.html#ab746ed27e68939dd9e544b6e70476650',1,'stdex::parser::basic_emoticon']]], ['empty_1',['empty',['../structstdex_1_1interval.html#a1fa5153f1f7707e21dc41c31197659a4',1,'stdex::interval::empty()'],['../classstdex_1_1vector__queue.html#a1502ae16a184fac7b1be9e1709dd1b5d',1,'stdex::vector_queue::empty()']]], ['enc_5fsize_2',['enc_size',['../classstdex_1_1base64__enc.html#afbae8f49a0948ea7bb23d0faa8f67f21',1,'stdex::base64_enc::enc_size()'],['../classstdex_1_1hex__enc.html#a47db116dcc51daa878d3ecc4c1ab4d8f',1,'stdex::hex_enc::enc_size(size_t size) const noexcept']]], ['encode_3',['encode',['../classstdex_1_1hex__enc.html#a51554940e79b6192f10a7860ca407191',1,'stdex::hex_enc::encode()'],['../classstdex_1_1base64__enc.html#a709172f7120284fcea1d7856d8ff550d',1,'stdex::base64_enc::encode(std::basic_string< _Elem, _Traits, _Ax > &out, size_t size)'],['../classstdex_1_1base64__enc.html#a506985ccd54fd95dbc021457881d77c2',1,'stdex::base64_enc::encode(std::basic_string< _Elem, _Traits, _Ax > &out)'],['../classstdex_1_1base64__enc.html#a0ee96b5ec63fecc20c44afe1f1df6f04',1,'stdex::base64_enc::encode(std::basic_string< _Elem, _Traits, _Ax > &out, const void *data, size_t size, bool is_last=true)']]], ['end_4',['end',['../structstdex_1_1interval.html#a9b92e2b20290d8ac5a9b00209f25e27a',1,'stdex::interval']]], ['errno_5ferror_5',['errno_error',['../classstdex_1_1errno__error.html#a3dc5e2df06c563a88b3f8766b5e689fc',1,'stdex::errno_error::errno_error(errno_t num, const std::string &msg)'],['../classstdex_1_1errno__error.html#aecd4c5513593dc5270086aee1e192fb2',1,'stdex::errno_error::errno_error(errno_t num, const char *msg=nullptr)'],['../classstdex_1_1errno__error.html#adca7aeb224bac759d355881bf640a2a4',1,'stdex::errno_error::errno_error(const std::string &msg)'],['../classstdex_1_1errno__error.html#add900d5748b938a3a9a123dfd618cbcc',1,'stdex::errno_error::errno_error(const char *msg=nullptr)'],['../classstdex_1_1errno__error.html',1,'stdex::errno_error']]], ['exponent_6',['exponent',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ac3b886b3334d64811d82d1d47fbafe66',1,'stdex::parser::basic_scientific_numeral']]], - ['exponent_5fsymbol_7',['exponent_symbol',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#af4f32b1e0846e26860217155cde66951',1,'stdex::parser::basic_scientific_numeral']]], - ['eyes_8',['eyes',['../classstdex_1_1parser_1_1basic__emoticon.html#a69b8bf12ee621af8434f00144ce8b414',1,'stdex::parser::basic_emoticon']]] + ['exponent_5fsymbol_7',['exponent_symbol',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a66134e1cb72bdfb75f2ac634fee02ee3',1,'stdex::parser::basic_scientific_numeral']]], + ['eyes_8',['eyes',['../classstdex_1_1parser_1_1basic__emoticon.html#a2700be6652350445e571cf95940fd32a',1,'stdex::parser::basic_emoticon']]] ]; diff --git a/search/all_5.js b/search/all_5.js index fe0b5106d..9817624b1 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -1,6 +1,6 @@ var searchData= [ ['find_0',['find',['../classstdex_1_1idrec_1_1record.html#a19523040d07119055884a7a2f8ef25fd',1,'stdex::idrec::record']]], - ['fraction_1',['fraction',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a5b9ea33c95fbac28833b77f0ef7dba8f',1,'stdex::parser::basic_mixed_numeral']]], + ['fraction_1',['fraction',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a288fa70b3073080487d6d253600dca34',1,'stdex::parser::basic_mixed_numeral']]], ['front_2',['front',['../classstdex_1_1vector__queue.html#a61df210878f6b8b2c1b213a93b8af581',1,'stdex::vector_queue::front()'],['../classstdex_1_1vector__queue.html#a96ea84ab879a3190beabdbac5ad7e0ab',1,'stdex::vector_queue::front() const']]] ]; diff --git a/search/all_7.js b/search/all_7.js index dc839ccbe..088bbf909 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -11,25 +11,25 @@ var searchData= ['http_5fcookie_5fparameter_8',['http_cookie_parameter',['../classstdex_1_1parser_1_1http__cookie__parameter.html',1,'stdex::parser']]], ['http_5ffactor_5fmore_9',['http_factor_more',['../structstdex_1_1parser_1_1http__factor__more.html',1,'stdex::parser']]], ['http_5fheader_10',['http_header',['../classstdex_1_1parser_1_1http__header.html',1,'stdex::parser']]], - ['http_5fheader_5fcollection_11',['http_header_collection',['../classstdex_1_1parser_1_1http__header__collection.html',1,'stdex::parser']]], - ['http_5flanguage_12',['http_language',['../classstdex_1_1parser_1_1http__language.html',1,'stdex::parser']]], - ['http_5fline_5fbreak_13',['http_line_break',['../classstdex_1_1parser_1_1http__line__break.html',1,'stdex::parser']]], - ['http_5fmedia_5frange_14',['http_media_range',['../classstdex_1_1parser_1_1http__media__range.html',1,'stdex::parser']]], - ['http_5fmedia_5ftype_15',['http_media_type',['../classstdex_1_1parser_1_1http__media__type.html',1,'stdex::parser']]], - ['http_5fparameter_16',['http_parameter',['../classstdex_1_1parser_1_1http__parameter.html',1,'stdex::parser']]], - ['http_5fprotocol_17',['http_protocol',['../classstdex_1_1parser_1_1http__protocol.html',1,'stdex::parser']]], - ['http_5fquoted_5fstring_18',['http_quoted_string',['../classstdex_1_1parser_1_1http__quoted__string.html',1,'stdex::parser']]], - ['http_5frequest_19',['http_request',['../classstdex_1_1parser_1_1http__request.html',1,'stdex::parser']]], - ['http_5fspace_20',['http_space',['../classstdex_1_1parser_1_1http__space.html',1,'stdex::parser']]], - ['http_5ftext_5fchar_21',['http_text_char',['../classstdex_1_1parser_1_1http__text__char.html',1,'stdex::parser']]], - ['http_5ftoken_22',['http_token',['../classstdex_1_1parser_1_1http__token.html',1,'stdex::parser']]], - ['http_5furl_23',['http_url',['../classstdex_1_1parser_1_1http__url.html',1,'stdex::parser']]], - ['http_5furl_5fparameter_24',['http_url_parameter',['../classstdex_1_1parser_1_1http__url__parameter.html',1,'stdex::parser']]], - ['http_5furl_5fpath_25',['http_url_path',['../classstdex_1_1parser_1_1http__url__path.html',1,'stdex::parser']]], - ['http_5furl_5fpath_5fsegment_26',['http_url_path_segment',['../classstdex_1_1parser_1_1http__url__path__segment.html',1,'stdex::parser']]], - ['http_5furl_5fport_27',['http_url_port',['../classstdex_1_1parser_1_1http__url__port.html',1,'stdex::parser']]], - ['http_5furl_5fserver_28',['http_url_server',['../classstdex_1_1parser_1_1http__url__server.html',1,'stdex::parser']]], - ['http_5fvalue_29',['http_value',['../classstdex_1_1parser_1_1http__value.html',1,'stdex::parser']]], + ['http_5flanguage_11',['http_language',['../classstdex_1_1parser_1_1http__language.html',1,'stdex::parser']]], + ['http_5fline_5fbreak_12',['http_line_break',['../classstdex_1_1parser_1_1http__line__break.html',1,'stdex::parser']]], + ['http_5fmedia_5frange_13',['http_media_range',['../classstdex_1_1parser_1_1http__media__range.html',1,'stdex::parser']]], + ['http_5fmedia_5ftype_14',['http_media_type',['../classstdex_1_1parser_1_1http__media__type.html',1,'stdex::parser']]], + ['http_5fparameter_15',['http_parameter',['../classstdex_1_1parser_1_1http__parameter.html',1,'stdex::parser']]], + ['http_5fprotocol_16',['http_protocol',['../classstdex_1_1parser_1_1http__protocol.html',1,'stdex::parser']]], + ['http_5fquoted_5fstring_17',['http_quoted_string',['../classstdex_1_1parser_1_1http__quoted__string.html',1,'stdex::parser']]], + ['http_5frequest_18',['http_request',['../classstdex_1_1parser_1_1http__request.html',1,'stdex::parser']]], + ['http_5fspace_19',['http_space',['../classstdex_1_1parser_1_1http__space.html',1,'stdex::parser']]], + ['http_5ftext_5fchar_20',['http_text_char',['../classstdex_1_1parser_1_1http__text__char.html',1,'stdex::parser']]], + ['http_5ftoken_21',['http_token',['../classstdex_1_1parser_1_1http__token.html',1,'stdex::parser']]], + ['http_5furl_22',['http_url',['../classstdex_1_1parser_1_1http__url.html',1,'stdex::parser']]], + ['http_5furl_5fparameter_23',['http_url_parameter',['../classstdex_1_1parser_1_1http__url__parameter.html',1,'stdex::parser']]], + ['http_5furl_5fpath_24',['http_url_path',['../classstdex_1_1parser_1_1http__url__path.html',1,'stdex::parser']]], + ['http_5furl_5fpath_5fsegment_25',['http_url_path_segment',['../classstdex_1_1parser_1_1http__url__path__segment.html',1,'stdex::parser']]], + ['http_5furl_5fport_26',['http_url_port',['../classstdex_1_1parser_1_1http__url__port.html',1,'stdex::parser']]], + ['http_5furl_5fserver_27',['http_url_server',['../classstdex_1_1parser_1_1http__url__server.html',1,'stdex::parser']]], + ['http_5fvalue_28',['http_value',['../classstdex_1_1parser_1_1http__value.html',1,'stdex::parser']]], + ['http_5fvalue_5fcollection_29',['http_value_collection',['../classstdex_1_1parser_1_1http__value__collection.html',1,'stdex::parser']]], ['http_5fweight_30',['http_weight',['../classstdex_1_1parser_1_1http__weight.html',1,'stdex::parser']]], ['http_5fweighted_5fvalue_31',['http_weighted_value',['../classstdex_1_1parser_1_1http__weighted__value.html',1,'stdex::parser']]] ]; diff --git a/search/all_8.js b/search/all_8.js index c300f3928..5cee646d1 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -1,7 +1,7 @@ var searchData= [ ['id_0',['id',['../classstdex_1_1idrec_1_1record.html#a24e54541a476b01e332290c57a495926',1,'stdex::idrec::record']]], - ['integer_1',['integer',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a6713e07b435f468a6377cbca7e4595ed',1,'stdex::parser::basic_mixed_numeral::integer()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#aff899e847d2b78df90ab367ef824505a',1,'stdex::parser::basic_scientific_numeral::integer()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#ab9b5bc6ba45203904855ac67b59f1671',1,'stdex::parser::basic_monetary_numeral::integer()']]], - ['interval_2',['interval',['../classstdex_1_1parser_1_1basic__tester.html#a30d9834162b56c5c9e464af6c6e607f3',1,'stdex::parser::basic_tester::interval()'],['../structstdex_1_1interval.html#a9f6c66e8a3fd15c693011216bb45d6b9',1,'stdex::interval::interval() noexcept'],['../structstdex_1_1interval.html#a100a68cd81867cbf1b275cd5ab5d2160',1,'stdex::interval::interval(T x) noexcept'],['../structstdex_1_1interval.html#a41ac8e9fdb33a2dfaae6113006b792d8',1,'stdex::interval::interval(T _start, T _end) noexcept'],['../structstdex_1_1interval.html',1,'stdex::interval< T >']]], + ['integer_1',['integer',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#af42e711d277a70c9624864e5f74a0bfd',1,'stdex::parser::basic_mixed_numeral::integer()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#aff899e847d2b78df90ab367ef824505a',1,'stdex::parser::basic_scientific_numeral::integer()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#acdbf4ca7d154c8723e8c318000853cce',1,'stdex::parser::basic_monetary_numeral::integer()']]], + ['interval_2',['interval',['../classstdex_1_1parser_1_1basic__parser.html#a0b46b1904e5af116c34a10087a5bc056',1,'stdex::parser::basic_parser::interval()'],['../structstdex_1_1interval.html#a9f6c66e8a3fd15c693011216bb45d6b9',1,'stdex::interval::interval() noexcept'],['../structstdex_1_1interval.html#a100a68cd81867cbf1b275cd5ab5d2160',1,'stdex::interval::interval(T x) noexcept'],['../structstdex_1_1interval.html#a41ac8e9fdb33a2dfaae6113006b792d8',1,'stdex::interval::interval(T _start, T _end) noexcept'],['../structstdex_1_1interval.html',1,'stdex::interval< T >']]], ['interval_3c_20size_5ft_20_3e_3',['interval< size_t >',['../structstdex_1_1interval.html',1,'stdex']]] ]; diff --git a/search/all_a.js b/search/all_a.js index 3cdf7103c..6a319fdec 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -3,7 +3,7 @@ var searchData= ['m_5fallow_5fabsolute_0',['m_allow_absolute',['../classstdex_1_1parser_1_1basic__dns__name.html#abfe3327023b10cb9759c13ec987701ab',1,'stdex::parser::basic_dns_name']]], ['m_5fcount_1',['m_count',['../classstdex_1_1vector__queue.html#a6070ca156773c17c6b75bacc5251c04c',1,'stdex::vector_queue']]], ['m_5fdata_2',['m_data',['../classstdex_1_1vector__queue.html#a289d86508a91fbe61e0425e318d735cf',1,'stdex::vector_queue']]], - ['m_5fel_3',['m_el',['../classstdex_1_1parser_1_1basic__iterations.html#acf1bc5a012aaf32ca8997105e28f93d6',1,'stdex::parser::basic_iterations']]], + ['m_5fel_3',['m_el',['../classstdex_1_1parser_1_1basic__iterations.html#a8a06638fea659f03fddc9d41dfc4efac',1,'stdex::parser::basic_iterations']]], ['m_5fgreedy_4',['m_greedy',['../classstdex_1_1parser_1_1basic__iterations.html#a2523c18948003ca4726eaed098e6de12',1,'stdex::parser::basic_iterations']]], ['m_5fhead_5',['m_head',['../classstdex_1_1vector__queue.html#abd8208a4a9e92ec5c38d3718f383e41e',1,'stdex::vector_queue']]], ['m_5fmax_5fiterations_6',['m_max_iterations',['../classstdex_1_1parser_1_1basic__iterations.html#aca0b8e1f9522a5306db5fe173269e8b1',1,'stdex::parser::basic_iterations']]], diff --git a/search/all_b.js b/search/all_b.js index a7aa52727..754ac93a9 100644 --- a/search/all_b.js +++ b/search/all_b.js @@ -1,11 +1,11 @@ var searchData= [ ['name_0',['name',['../classstdex_1_1parser_1_1http__parameter.html#a565c731685b779b2c0a90e8c5b7dbd55',1,'stdex::parser::http_parameter::name()'],['../classstdex_1_1parser_1_1http__cookie.html#aca58f2d8164c41be287a7fe16432ba48',1,'stdex::parser::http_cookie::name()']]], - ['negative_5fexp_5fsign_1',['negative_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a3ebfe6b7950a9ce83c4be5839ddb4c24',1,'stdex::parser::basic_scientific_numeral']]], - ['negative_5fsign_2',['negative_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a770d96b01472df1e7f0afbec48109bbc',1,'stdex::parser::basic_signed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a9bb5dbea1f562247ee19765caef96cdd',1,'stdex::parser::basic_mixed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ab1c6e60d52714da56bfa0ecf95b2ae3e',1,'stdex::parser::basic_scientific_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#aeb94b8a1ee947c2b7fbb2f7b1828c98a',1,'stdex::parser::basic_monetary_numeral::negative_sign()']]], + ['negative_5fexp_5fsign_1',['negative_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#aaeec0779d7bd8f5429108be5b80ba95c',1,'stdex::parser::basic_scientific_numeral']]], + ['negative_5fsign_2',['negative_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a50271856db8a0e66bef91e4e05949bb3',1,'stdex::parser::basic_signed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a76a2ae3e988b901ae4745a5ba8c22d46',1,'stdex::parser::basic_mixed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a8e625f598299499379b3f9e067ad9384',1,'stdex::parser::basic_scientific_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#aef90350963cc64fb710674eedf260708',1,'stdex::parser::basic_monetary_numeral::negative_sign()']]], ['no_5fdelete_3',['no_delete',['../structstdex_1_1no__delete.html',1,'stdex']]], ['no_5fdelete_3c_20t_5b_5d_3e_4',['no_delete< T[]>',['../structstdex_1_1no__delete_3_01_t_0f_0e_4.html',1,'stdex']]], - ['nose_5',['nose',['../classstdex_1_1parser_1_1basic__emoticon.html#a3bcb9a13e7d8933641c36fbb5b76f3a6',1,'stdex::parser::basic_emoticon']]], + ['nose_5',['nose',['../classstdex_1_1parser_1_1basic__emoticon.html#a865f28a87ef1561bca53445e2d1ae253',1,'stdex::parser::basic_emoticon']]], ['num_6',['num',['../classstdex_1_1base64__enc.html#a58e4759143972065f71ed68f6dbc90d8',1,'stdex::base64_enc::num()'],['../classstdex_1_1base64__dec.html#a08acef30d97e7f8213e0c834b93ee849',1,'stdex::base64_dec::num()'],['../classstdex_1_1hex__dec.html#a99111436d6b30595cd1fee112e3200ae',1,'stdex::hex_dec::num()']]], - ['number_7',['number',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a602c930105632850a5313314ec57c88c',1,'stdex::parser::basic_signed_numeral::number()'],['../classstdex_1_1errno__error.html#a6b3c265199470fe39b89f5c9941cc86f',1,'stdex::errno_error::number()']]] + ['number_7',['number',['../classstdex_1_1parser_1_1basic__signed__numeral.html#ae43853317fc7ca8b6df2eda5d466a2aa',1,'stdex::parser::basic_signed_numeral::number()'],['../classstdex_1_1errno__error.html#a6b3c265199470fe39b89f5c9941cc86f',1,'stdex::errno_error::number()']]] ]; diff --git a/search/all_d.js b/search/all_d.js index 7db2a820a..b46ed0432 100644 --- a/search/all_d.js +++ b/search/all_d.js @@ -1,12 +1,13 @@ var searchData= [ ['params_0',['params',['../classstdex_1_1parser_1_1http__cookie.html#aa3d227ae38c1f63b445097ca07091616',1,'stdex::parser::http_cookie']]], - ['pointer_1',['pointer',['../classstdex_1_1vector__queue.html#abf6db5997ee272e03e8db1696a162148',1,'stdex::vector_queue']]], - ['pop_5fback_2',['pop_back',['../classstdex_1_1vector__queue.html#abd0fdb316392da76bac13bdd9d176eb6',1,'stdex::vector_queue']]], - ['pop_5ffront_3',['pop_front',['../classstdex_1_1vector__queue.html#adc05fb6cec951f736337dc340996271f',1,'stdex::vector_queue']]], - ['positive_5fexp_5fsign_4',['positive_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a24cfde1e017b814f0afa700d49f6539b',1,'stdex::parser::basic_scientific_numeral']]], - ['positive_5fsign_5',['positive_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a57e249c0f76db49306e36eb3fe82ac61',1,'stdex::parser::basic_signed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a631af3930323518747179690699bb164',1,'stdex::parser::basic_mixed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a594018a64fdfb92d1e566cd628bfb181',1,'stdex::parser::basic_scientific_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a3ed967d8bd1cd6f52cdbb9b282518598',1,'stdex::parser::basic_monetary_numeral::positive_sign()']]], - ['progress_6',['progress',['../classstdex_1_1progress.html',1,'stdex']]], - ['push_5fback_7',['push_back',['../classstdex_1_1vector__queue.html#ab063bf18b16eed7f4d67e0720bcb8f4f',1,'stdex::vector_queue::push_back(const value_type &v)'],['../classstdex_1_1vector__queue.html#a5b39a88669c8b7e21f1ada2aa8993b2e',1,'stdex::vector_queue::push_back(value_type &&v)']]], - ['push_5ffront_8',['push_front',['../classstdex_1_1vector__queue.html#adfc0d837fa11c1203e9c96a1a5c081b9',1,'stdex::vector_queue::push_front(const value_type &v)'],['../classstdex_1_1vector__queue.html#af307e59213be692f7918c3c541923373',1,'stdex::vector_queue::push_front(value_type &&v)']]] + ['parser_5fcollection_1',['parser_collection',['../classstdex_1_1parser_1_1parser__collection.html',1,'stdex::parser']]], + ['pointer_2',['pointer',['../classstdex_1_1vector__queue.html#abf6db5997ee272e03e8db1696a162148',1,'stdex::vector_queue']]], + ['pop_5fback_3',['pop_back',['../classstdex_1_1vector__queue.html#abd0fdb316392da76bac13bdd9d176eb6',1,'stdex::vector_queue']]], + ['pop_5ffront_4',['pop_front',['../classstdex_1_1vector__queue.html#adc05fb6cec951f736337dc340996271f',1,'stdex::vector_queue']]], + ['positive_5fexp_5fsign_5',['positive_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#abb5d26d24a7bb58d244b7d51722b117a',1,'stdex::parser::basic_scientific_numeral']]], + ['positive_5fsign_6',['positive_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#ac7c9dde1f5b3600a21c1b7935c0a5caf',1,'stdex::parser::basic_signed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#aee09625077f56e1139e3a6c26e24e93f',1,'stdex::parser::basic_mixed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a6e6e08dd8ade04c9aa85fba70e12b7c4',1,'stdex::parser::basic_scientific_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a23fedf450adaace6a027c7788e4a8c61',1,'stdex::parser::basic_monetary_numeral::positive_sign()']]], + ['progress_7',['progress',['../classstdex_1_1progress.html',1,'stdex']]], + ['push_5fback_8',['push_back',['../classstdex_1_1vector__queue.html#ab063bf18b16eed7f4d67e0720bcb8f4f',1,'stdex::vector_queue::push_back(const value_type &v)'],['../classstdex_1_1vector__queue.html#a5b39a88669c8b7e21f1ada2aa8993b2e',1,'stdex::vector_queue::push_back(value_type &&v)']]], + ['push_5ffront_9',['push_front',['../classstdex_1_1vector__queue.html#adfc0d837fa11c1203e9c96a1a5c081b9',1,'stdex::vector_queue::push_front(const value_type &v)'],['../classstdex_1_1vector__queue.html#af307e59213be692f7918c3c541923373',1,'stdex::vector_queue::push_front(value_type &&v)']]] ]; diff --git a/search/all_f.js b/search/all_f.js index 779ed0513..32434eb99 100644 --- a/search/all_f.js +++ b/search/all_f.js @@ -1,6 +1,6 @@ var searchData= [ - ['scope_5fid_0',['scope_id',['../classstdex_1_1parser_1_1basic__ipv6__address.html#a2d16cb04a8b0ca4e1c55b9d681b2e417',1,'stdex::parser::basic_ipv6_address']]], + ['scope_5fid_0',['scope_id',['../classstdex_1_1parser_1_1basic__ipv6__address.html#a67486e83888f48afc62b031f745012c0',1,'stdex::parser::basic_ipv6_address']]], ['segments_1',['segments',['../classstdex_1_1parser_1_1http__url__path.html#a9a5f4002c55cb4500ce43536512b02b9',1,'stdex::parser::http_url_path']]], ['set_2',['set',['../classstdex_1_1global__progress.html#a76e66104444c77b89b687b4ad4945e8e',1,'stdex::global_progress::set()'],['../classstdex_1_1lazy__progress.html#a4e3e7a80da8cce7ccec69c78fcaaabae',1,'stdex::lazy_progress::set()'],['../classstdex_1_1progress.html#acf3a29daf22709bf7e94e864c8be95a1',1,'stdex::progress::set()']]], ['set_5fglobal_5frange_3',['set_global_range',['../classstdex_1_1global__progress.html#ac68b491c62861fae1b16abb3477cb9c1',1,'stdex::global_progress']]], @@ -22,7 +22,7 @@ var searchData= ['show_19',['show',['../classstdex_1_1progress.html#ab6e57aed9e7a18a501e8a63cef199d8e',1,'stdex::progress::show()'],['../classstdex_1_1global__progress.html#a32350e02d5904867402187e81a3c4a26',1,'stdex::global_progress::show()']]], ['size_20',['size',['../structstdex_1_1interval.html#a8c5222bc73fc66ba78bfabc1b985c864',1,'stdex::interval::size()'],['../classstdex_1_1vector__queue.html#ad704df8c3664a6d3f3e0977d87162114',1,'stdex::vector_queue::size() const']]], ['size_5ftype_21',['size_type',['../classstdex_1_1vector__queue.html#a2a044b4eb0242a00568d08b4d8b6343a',1,'stdex::vector_queue']]], - ['special_5fsign_22',['special_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a786ab72c92b1a665b922bb30037d5e93',1,'stdex::parser::basic_signed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a2dab20189aee22c9deb10615bfc6c2f0',1,'stdex::parser::basic_mixed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#acdd1250c2bd8c496f638d374c4cbf716',1,'stdex::parser::basic_scientific_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a3b87d54d42d77f28b5692bc5f85af97a',1,'stdex::parser::basic_monetary_numeral::special_sign()']]], + ['special_5fsign_22',['special_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a38b8207e2b384ed5ffb3f2bfb3e8755f',1,'stdex::parser::basic_signed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a46c6721810cc8f90218aee66a4c27132',1,'stdex::parser::basic_mixed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a5ce9abfbcdc1247e8f504ae13492e7ea',1,'stdex::parser::basic_scientific_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#af0190fa4b0de5e894a14c05550e78365',1,'stdex::parser::basic_monetary_numeral::special_sign()']]], ['start_23',['start',['../structstdex_1_1interval.html#ab6a104de0f15b29bea77fe181b49c40b',1,'stdex::interval']]], ['string_24',['string',['../classstdex_1_1parser_1_1http__value.html#a808ed411ff6816162a54b99fb7307315',1,'stdex::parser::http_value']]] ]; diff --git a/search/classes_0.js b/search/classes_0.js index c5c8d1196..92c29633c 100644 --- a/search/classes_0.js +++ b/search/classes_0.js @@ -30,25 +30,25 @@ var searchData= ['basic_5fmixed_5fnumeral_27',['basic_mixed_numeral',['../classstdex_1_1parser_1_1basic__mixed__numeral.html',1,'stdex::parser']]], ['basic_5fmonetary_5fnumeral_28',['basic_monetary_numeral',['../classstdex_1_1parser_1_1basic__monetary__numeral.html',1,'stdex::parser']]], ['basic_5fnoop_29',['basic_noop',['../classstdex_1_1parser_1_1basic__noop.html',1,'stdex::parser']]], - ['basic_5fpermutation_30',['basic_permutation',['../classstdex_1_1parser_1_1basic__permutation.html',1,'stdex::parser']]], - ['basic_5fphone_5fnumber_31',['basic_phone_number',['../classstdex_1_1parser_1_1basic__phone__number.html',1,'stdex::parser']]], - ['basic_5fpunct_5fcu_32',['basic_punct_cu',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], - ['basic_5fpunct_5fcu_3c_20char_20_3e_33',['basic_punct_cu< char >',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], - ['basic_5froman_5fnumeral_34',['basic_roman_numeral',['../classstdex_1_1parser_1_1basic__roman__numeral.html',1,'stdex::parser']]], - ['basic_5fscientific_5fnumeral_35',['basic_scientific_numeral',['../classstdex_1_1parser_1_1basic__scientific__numeral.html',1,'stdex::parser']]], - ['basic_5fscore_36',['basic_score',['../classstdex_1_1parser_1_1basic__score.html',1,'stdex::parser']]], - ['basic_5fsequence_37',['basic_sequence',['../classstdex_1_1parser_1_1basic__sequence.html',1,'stdex::parser']]], - ['basic_5fset_38',['basic_set',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], - ['basic_5fset_3c_20char_20_3e_39',['basic_set< char >',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], - ['basic_5fsigned_5fnumeral_40',['basic_signed_numeral',['../classstdex_1_1parser_1_1basic__signed__numeral.html',1,'stdex::parser']]], - ['basic_5fspace_5fcu_41',['basic_space_cu',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], - ['basic_5fspace_5fcu_3c_20char_20_3e_42',['basic_space_cu< char >',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], - ['basic_5fspace_5for_5fpunct_5fcu_43',['basic_space_or_punct_cu',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], - ['basic_5fspace_5for_5fpunct_5fcu_3c_20char_20_3e_44',['basic_space_or_punct_cu< char >',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], - ['basic_5fstring_45',['basic_string',['../classstdex_1_1parser_1_1basic__string.html',1,'stdex::parser']]], - ['basic_5fstring_5fbranch_46',['basic_string_branch',['../classstdex_1_1parser_1_1basic__string__branch.html',1,'stdex::parser']]], - ['basic_5ftester_47',['basic_tester',['../classstdex_1_1parser_1_1basic__tester.html',1,'stdex::parser']]], - ['basic_5ftester_3c_20char_20_3e_48',['basic_tester< char >',['../classstdex_1_1parser_1_1basic__tester.html',1,'stdex::parser']]], + ['basic_5fparser_30',['basic_parser',['../classstdex_1_1parser_1_1basic__parser.html',1,'stdex::parser']]], + ['basic_5fparser_3c_20char_20_3e_31',['basic_parser< char >',['../classstdex_1_1parser_1_1basic__parser.html',1,'stdex::parser']]], + ['basic_5fpermutation_32',['basic_permutation',['../classstdex_1_1parser_1_1basic__permutation.html',1,'stdex::parser']]], + ['basic_5fphone_5fnumber_33',['basic_phone_number',['../classstdex_1_1parser_1_1basic__phone__number.html',1,'stdex::parser']]], + ['basic_5fpunct_5fcu_34',['basic_punct_cu',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], + ['basic_5fpunct_5fcu_3c_20char_20_3e_35',['basic_punct_cu< char >',['../classstdex_1_1parser_1_1basic__punct__cu.html',1,'stdex::parser']]], + ['basic_5froman_5fnumeral_36',['basic_roman_numeral',['../classstdex_1_1parser_1_1basic__roman__numeral.html',1,'stdex::parser']]], + ['basic_5fscientific_5fnumeral_37',['basic_scientific_numeral',['../classstdex_1_1parser_1_1basic__scientific__numeral.html',1,'stdex::parser']]], + ['basic_5fscore_38',['basic_score',['../classstdex_1_1parser_1_1basic__score.html',1,'stdex::parser']]], + ['basic_5fsequence_39',['basic_sequence',['../classstdex_1_1parser_1_1basic__sequence.html',1,'stdex::parser']]], + ['basic_5fset_40',['basic_set',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], + ['basic_5fset_3c_20char_20_3e_41',['basic_set< char >',['../classstdex_1_1parser_1_1basic__set.html',1,'stdex::parser']]], + ['basic_5fsigned_5fnumeral_42',['basic_signed_numeral',['../classstdex_1_1parser_1_1basic__signed__numeral.html',1,'stdex::parser']]], + ['basic_5fspace_5fcu_43',['basic_space_cu',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], + ['basic_5fspace_5fcu_3c_20char_20_3e_44',['basic_space_cu< char >',['../classstdex_1_1parser_1_1basic__space__cu.html',1,'stdex::parser']]], + ['basic_5fspace_5for_5fpunct_5fcu_45',['basic_space_or_punct_cu',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], + ['basic_5fspace_5for_5fpunct_5fcu_3c_20char_20_3e_46',['basic_space_or_punct_cu< char >',['../classstdex_1_1parser_1_1basic__space__or__punct__cu.html',1,'stdex::parser']]], + ['basic_5fstring_47',['basic_string',['../classstdex_1_1parser_1_1basic__string.html',1,'stdex::parser']]], + ['basic_5fstring_5fbranch_48',['basic_string_branch',['../classstdex_1_1parser_1_1basic__string__branch.html',1,'stdex::parser']]], ['basic_5ftime_49',['basic_time',['../classstdex_1_1parser_1_1basic__time.html',1,'stdex::parser']]], ['basic_5furl_50',['basic_url',['../classstdex_1_1parser_1_1basic__url.html',1,'stdex::parser']]], ['basic_5furl_5fpassword_5fchar_51',['basic_url_password_char',['../classstdex_1_1parser_1_1basic__url__password__char.html',1,'stdex::parser']]], diff --git a/search/classes_3.js b/search/classes_3.js index 204b3744b..18a83bcf2 100644 --- a/search/classes_3.js +++ b/search/classes_3.js @@ -9,25 +9,25 @@ var searchData= ['http_5fcookie_5fparameter_6',['http_cookie_parameter',['../classstdex_1_1parser_1_1http__cookie__parameter.html',1,'stdex::parser']]], ['http_5ffactor_5fmore_7',['http_factor_more',['../structstdex_1_1parser_1_1http__factor__more.html',1,'stdex::parser']]], ['http_5fheader_8',['http_header',['../classstdex_1_1parser_1_1http__header.html',1,'stdex::parser']]], - ['http_5fheader_5fcollection_9',['http_header_collection',['../classstdex_1_1parser_1_1http__header__collection.html',1,'stdex::parser']]], - ['http_5flanguage_10',['http_language',['../classstdex_1_1parser_1_1http__language.html',1,'stdex::parser']]], - ['http_5fline_5fbreak_11',['http_line_break',['../classstdex_1_1parser_1_1http__line__break.html',1,'stdex::parser']]], - ['http_5fmedia_5frange_12',['http_media_range',['../classstdex_1_1parser_1_1http__media__range.html',1,'stdex::parser']]], - ['http_5fmedia_5ftype_13',['http_media_type',['../classstdex_1_1parser_1_1http__media__type.html',1,'stdex::parser']]], - ['http_5fparameter_14',['http_parameter',['../classstdex_1_1parser_1_1http__parameter.html',1,'stdex::parser']]], - ['http_5fprotocol_15',['http_protocol',['../classstdex_1_1parser_1_1http__protocol.html',1,'stdex::parser']]], - ['http_5fquoted_5fstring_16',['http_quoted_string',['../classstdex_1_1parser_1_1http__quoted__string.html',1,'stdex::parser']]], - ['http_5frequest_17',['http_request',['../classstdex_1_1parser_1_1http__request.html',1,'stdex::parser']]], - ['http_5fspace_18',['http_space',['../classstdex_1_1parser_1_1http__space.html',1,'stdex::parser']]], - ['http_5ftext_5fchar_19',['http_text_char',['../classstdex_1_1parser_1_1http__text__char.html',1,'stdex::parser']]], - ['http_5ftoken_20',['http_token',['../classstdex_1_1parser_1_1http__token.html',1,'stdex::parser']]], - ['http_5furl_21',['http_url',['../classstdex_1_1parser_1_1http__url.html',1,'stdex::parser']]], - ['http_5furl_5fparameter_22',['http_url_parameter',['../classstdex_1_1parser_1_1http__url__parameter.html',1,'stdex::parser']]], - ['http_5furl_5fpath_23',['http_url_path',['../classstdex_1_1parser_1_1http__url__path.html',1,'stdex::parser']]], - ['http_5furl_5fpath_5fsegment_24',['http_url_path_segment',['../classstdex_1_1parser_1_1http__url__path__segment.html',1,'stdex::parser']]], - ['http_5furl_5fport_25',['http_url_port',['../classstdex_1_1parser_1_1http__url__port.html',1,'stdex::parser']]], - ['http_5furl_5fserver_26',['http_url_server',['../classstdex_1_1parser_1_1http__url__server.html',1,'stdex::parser']]], - ['http_5fvalue_27',['http_value',['../classstdex_1_1parser_1_1http__value.html',1,'stdex::parser']]], + ['http_5flanguage_9',['http_language',['../classstdex_1_1parser_1_1http__language.html',1,'stdex::parser']]], + ['http_5fline_5fbreak_10',['http_line_break',['../classstdex_1_1parser_1_1http__line__break.html',1,'stdex::parser']]], + ['http_5fmedia_5frange_11',['http_media_range',['../classstdex_1_1parser_1_1http__media__range.html',1,'stdex::parser']]], + ['http_5fmedia_5ftype_12',['http_media_type',['../classstdex_1_1parser_1_1http__media__type.html',1,'stdex::parser']]], + ['http_5fparameter_13',['http_parameter',['../classstdex_1_1parser_1_1http__parameter.html',1,'stdex::parser']]], + ['http_5fprotocol_14',['http_protocol',['../classstdex_1_1parser_1_1http__protocol.html',1,'stdex::parser']]], + ['http_5fquoted_5fstring_15',['http_quoted_string',['../classstdex_1_1parser_1_1http__quoted__string.html',1,'stdex::parser']]], + ['http_5frequest_16',['http_request',['../classstdex_1_1parser_1_1http__request.html',1,'stdex::parser']]], + ['http_5fspace_17',['http_space',['../classstdex_1_1parser_1_1http__space.html',1,'stdex::parser']]], + ['http_5ftext_5fchar_18',['http_text_char',['../classstdex_1_1parser_1_1http__text__char.html',1,'stdex::parser']]], + ['http_5ftoken_19',['http_token',['../classstdex_1_1parser_1_1http__token.html',1,'stdex::parser']]], + ['http_5furl_20',['http_url',['../classstdex_1_1parser_1_1http__url.html',1,'stdex::parser']]], + ['http_5furl_5fparameter_21',['http_url_parameter',['../classstdex_1_1parser_1_1http__url__parameter.html',1,'stdex::parser']]], + ['http_5furl_5fpath_22',['http_url_path',['../classstdex_1_1parser_1_1http__url__path.html',1,'stdex::parser']]], + ['http_5furl_5fpath_5fsegment_23',['http_url_path_segment',['../classstdex_1_1parser_1_1http__url__path__segment.html',1,'stdex::parser']]], + ['http_5furl_5fport_24',['http_url_port',['../classstdex_1_1parser_1_1http__url__port.html',1,'stdex::parser']]], + ['http_5furl_5fserver_25',['http_url_server',['../classstdex_1_1parser_1_1http__url__server.html',1,'stdex::parser']]], + ['http_5fvalue_26',['http_value',['../classstdex_1_1parser_1_1http__value.html',1,'stdex::parser']]], + ['http_5fvalue_5fcollection_27',['http_value_collection',['../classstdex_1_1parser_1_1http__value__collection.html',1,'stdex::parser']]], ['http_5fweight_28',['http_weight',['../classstdex_1_1parser_1_1http__weight.html',1,'stdex::parser']]], ['http_5fweighted_5fvalue_29',['http_weighted_value',['../classstdex_1_1parser_1_1http__weighted__value.html',1,'stdex::parser']]] ]; diff --git a/search/classes_8.js b/search/classes_8.js index 28b4850ba..300b5d7e4 100644 --- a/search/classes_8.js +++ b/search/classes_8.js @@ -1,4 +1,5 @@ var searchData= [ - ['progress_0',['progress',['../classstdex_1_1progress.html',1,'stdex']]] + ['parser_5fcollection_0',['parser_collection',['../classstdex_1_1parser_1_1parser__collection.html',1,'stdex::parser']]], + ['progress_1',['progress',['../classstdex_1_1progress.html',1,'stdex']]] ]; diff --git a/search/classes_b.js b/search/classes_b.js index 29d41be92..a27d9a257 100644 --- a/search/classes_b.js +++ b/search/classes_b.js @@ -1,4 +1,4 @@ var searchData= [ - ['tester_5fcollection_0',['tester_collection',['../classstdex_1_1parser_1_1tester__collection.html',1,'stdex::parser']]] + ['user_5fcancelled_0',['user_cancelled',['../classstdex_1_1user__cancelled.html',1,'stdex']]] ]; diff --git a/search/classes_c.js b/search/classes_c.js index a27d9a257..3c6b76703 100644 --- a/search/classes_c.js +++ b/search/classes_c.js @@ -1,4 +1,4 @@ var searchData= [ - ['user_5fcancelled_0',['user_cancelled',['../classstdex_1_1user__cancelled.html',1,'stdex']]] + ['vector_5fqueue_0',['vector_queue',['../classstdex_1_1vector__queue.html',1,'stdex']]] ]; diff --git a/search/classes_d.js b/search/classes_d.js deleted file mode 100644 index 3c6b76703..000000000 --- a/search/classes_d.js +++ /dev/null @@ -1,4 +0,0 @@ -var searchData= -[ - ['vector_5fqueue_0',['vector_queue',['../classstdex_1_1vector__queue.html',1,'stdex']]] -]; diff --git a/search/searchdata.js b/search/searchdata.js index b65ca6dfd..50d1606aa 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -1,7 +1,7 @@ var indexSectionsWithContent = { 0: "abcdefghilmnoprstuv~", - 1: "beghilmnprstuv", + 1: "beghilmnprsuv", 2: "abcdefghilnoprstuv~", 3: "abcdefhimnpstv", 4: "cprsv" diff --git a/search/variables_0.js b/search/variables_0.js index dbafa9c7e..657682ae8 100644 --- a/search/variables_0.js +++ b/search/variables_0.js @@ -1,5 +1,5 @@ var searchData= [ ['allow_5fon_5fedge_0',['allow_on_edge',['../classstdex_1_1parser_1_1basic__dns__domain__char.html#a3307235d495a97c98f9efd1464e8a8a7',1,'stdex::parser::basic_dns_domain_char']]], - ['apex_1',['apex',['../classstdex_1_1parser_1_1basic__emoticon.html#ab6c13f75c157a179893df4716a3a1443',1,'stdex::parser::basic_emoticon']]] + ['apex_1',['apex',['../classstdex_1_1parser_1_1basic__emoticon.html#a1b6b7a024dea373b890c1c4516f5e9a4',1,'stdex::parser::basic_emoticon']]] ]; diff --git a/search/variables_2.js b/search/variables_2.js index 7025570bf..96d41e887 100644 --- a/search/variables_2.js +++ b/search/variables_2.js @@ -2,5 +2,5 @@ var searchData= [ ['components_0',['components',['../classstdex_1_1parser_1_1basic__ipv4__address.html#a0dfb21ee671894048c831edef7257931',1,'stdex::parser::basic_ipv4_address::components()'],['../classstdex_1_1parser_1_1basic__ipv6__address.html#abe14c21fb1d4cb35c0121ca610e6e87e',1,'stdex::parser::basic_ipv6_address::components()']]], ['content_1',['content',['../classstdex_1_1parser_1_1http__quoted__string.html#ab6e413ccf79e9f3dddd35c2a607381dd',1,'stdex::parser::http_quoted_string']]], - ['currency_2',['currency',['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a2f0d25d001827a0e6ebb48b16e4cfec2',1,'stdex::parser::basic_monetary_numeral']]] + ['currency_2',['currency',['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a62545d1c49178d4412da46d3cb2eba25',1,'stdex::parser::basic_monetary_numeral']]] ]; diff --git a/search/variables_3.js b/search/variables_3.js index 647967580..7232d2479 100644 --- a/search/variables_3.js +++ b/search/variables_3.js @@ -1,7 +1,7 @@ var searchData= [ ['data_0',['data',['../classstdex_1_1idrec_1_1record.html#a1ab09fae53142836c958a63137fb37cb',1,'stdex::idrec::record']]], - ['decimal_1',['decimal',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ab002d811ce7c7590863492bbc4ac355f',1,'stdex::parser::basic_scientific_numeral::decimal()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a0f32376676fc3f7e4fbad66771e424c4',1,'stdex::parser::basic_monetary_numeral::decimal()']]], - ['decimal_5fseparator_2',['decimal_separator',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ad259d0eaa6e79c7cd6c114f1bb0da6dc',1,'stdex::parser::basic_scientific_numeral::decimal_separator()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a06cdd1cbfc37511990fc61dc3bade76b',1,'stdex::parser::basic_monetary_numeral::decimal_separator()']]], + ['decimal_1',['decimal',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ab002d811ce7c7590863492bbc4ac355f',1,'stdex::parser::basic_scientific_numeral::decimal()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#ac1442f0871a1b43db2d4cd45e05803ac',1,'stdex::parser::basic_monetary_numeral::decimal()']]], + ['decimal_5fseparator_2',['decimal_separator',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ae09233c93964704acf2bbd762fc14372',1,'stdex::parser::basic_scientific_numeral::decimal_separator()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a5393628850b747e190a4e0d50eb97144',1,'stdex::parser::basic_monetary_numeral::decimal_separator()']]], ['digit_5fcount_3',['digit_count',['../classstdex_1_1parser_1_1basic__integer10ts.html#a3c400d7c6e0edf695e7cf5e9f43ae388',1,'stdex::parser::basic_integer10ts']]] ]; diff --git a/search/variables_4.js b/search/variables_4.js index ee52170cf..adfcfc721 100644 --- a/search/variables_4.js +++ b/search/variables_4.js @@ -1,8 +1,8 @@ var searchData= [ - ['emoticon_0',['emoticon',['../classstdex_1_1parser_1_1basic__emoticon.html#a78c5dea0c060b158f41715f3000fcd70',1,'stdex::parser::basic_emoticon']]], + ['emoticon_0',['emoticon',['../classstdex_1_1parser_1_1basic__emoticon.html#ab746ed27e68939dd9e544b6e70476650',1,'stdex::parser::basic_emoticon']]], ['end_1',['end',['../structstdex_1_1interval.html#a9b92e2b20290d8ac5a9b00209f25e27a',1,'stdex::interval']]], ['exponent_2',['exponent',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ac3b886b3334d64811d82d1d47fbafe66',1,'stdex::parser::basic_scientific_numeral']]], - ['exponent_5fsymbol_3',['exponent_symbol',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#af4f32b1e0846e26860217155cde66951',1,'stdex::parser::basic_scientific_numeral']]], - ['eyes_4',['eyes',['../classstdex_1_1parser_1_1basic__emoticon.html#a69b8bf12ee621af8434f00144ce8b414',1,'stdex::parser::basic_emoticon']]] + ['exponent_5fsymbol_3',['exponent_symbol',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a66134e1cb72bdfb75f2ac634fee02ee3',1,'stdex::parser::basic_scientific_numeral']]], + ['eyes_4',['eyes',['../classstdex_1_1parser_1_1basic__emoticon.html#a2700be6652350445e571cf95940fd32a',1,'stdex::parser::basic_emoticon']]] ]; diff --git a/search/variables_5.js b/search/variables_5.js index c8e9f077c..f19af0676 100644 --- a/search/variables_5.js +++ b/search/variables_5.js @@ -1,4 +1,4 @@ var searchData= [ - ['fraction_0',['fraction',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a5b9ea33c95fbac28833b77f0ef7dba8f',1,'stdex::parser::basic_mixed_numeral']]] + ['fraction_0',['fraction',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a288fa70b3073080487d6d253600dca34',1,'stdex::parser::basic_mixed_numeral']]] ]; diff --git a/search/variables_7.js b/search/variables_7.js index cf7363647..02e142db4 100644 --- a/search/variables_7.js +++ b/search/variables_7.js @@ -1,5 +1,5 @@ var searchData= [ - ['integer_0',['integer',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a6713e07b435f468a6377cbca7e4595ed',1,'stdex::parser::basic_mixed_numeral::integer()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#aff899e847d2b78df90ab367ef824505a',1,'stdex::parser::basic_scientific_numeral::integer()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#ab9b5bc6ba45203904855ac67b59f1671',1,'stdex::parser::basic_monetary_numeral::integer()']]], - ['interval_1',['interval',['../classstdex_1_1parser_1_1basic__tester.html#a30d9834162b56c5c9e464af6c6e607f3',1,'stdex::parser::basic_tester']]] + ['integer_0',['integer',['../classstdex_1_1parser_1_1basic__mixed__numeral.html#af42e711d277a70c9624864e5f74a0bfd',1,'stdex::parser::basic_mixed_numeral::integer()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#aff899e847d2b78df90ab367ef824505a',1,'stdex::parser::basic_scientific_numeral::integer()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#acdbf4ca7d154c8723e8c318000853cce',1,'stdex::parser::basic_monetary_numeral::integer()']]], + ['interval_1',['interval',['../classstdex_1_1parser_1_1basic__parser.html#a0b46b1904e5af116c34a10087a5bc056',1,'stdex::parser::basic_parser']]] ]; diff --git a/search/variables_8.js b/search/variables_8.js index 26683fa4a..bf3f02f67 100644 --- a/search/variables_8.js +++ b/search/variables_8.js @@ -3,7 +3,7 @@ var searchData= ['m_5fallow_5fabsolute_0',['m_allow_absolute',['../classstdex_1_1parser_1_1basic__dns__name.html#abfe3327023b10cb9759c13ec987701ab',1,'stdex::parser::basic_dns_name']]], ['m_5fcount_1',['m_count',['../classstdex_1_1vector__queue.html#a6070ca156773c17c6b75bacc5251c04c',1,'stdex::vector_queue']]], ['m_5fdata_2',['m_data',['../classstdex_1_1vector__queue.html#a289d86508a91fbe61e0425e318d735cf',1,'stdex::vector_queue']]], - ['m_5fel_3',['m_el',['../classstdex_1_1parser_1_1basic__iterations.html#acf1bc5a012aaf32ca8997105e28f93d6',1,'stdex::parser::basic_iterations']]], + ['m_5fel_3',['m_el',['../classstdex_1_1parser_1_1basic__iterations.html#a8a06638fea659f03fddc9d41dfc4efac',1,'stdex::parser::basic_iterations']]], ['m_5fgreedy_4',['m_greedy',['../classstdex_1_1parser_1_1basic__iterations.html#a2523c18948003ca4726eaed098e6de12',1,'stdex::parser::basic_iterations']]], ['m_5fhead_5',['m_head',['../classstdex_1_1vector__queue.html#abd8208a4a9e92ec5c38d3718f383e41e',1,'stdex::vector_queue']]], ['m_5fmax_5fiterations_6',['m_max_iterations',['../classstdex_1_1parser_1_1basic__iterations.html#aca0b8e1f9522a5306db5fe173269e8b1',1,'stdex::parser::basic_iterations']]], diff --git a/search/variables_9.js b/search/variables_9.js index 6584e909b..cf7052c83 100644 --- a/search/variables_9.js +++ b/search/variables_9.js @@ -1,9 +1,9 @@ var searchData= [ ['name_0',['name',['../classstdex_1_1parser_1_1http__parameter.html#a565c731685b779b2c0a90e8c5b7dbd55',1,'stdex::parser::http_parameter::name()'],['../classstdex_1_1parser_1_1http__cookie.html#aca58f2d8164c41be287a7fe16432ba48',1,'stdex::parser::http_cookie::name()']]], - ['negative_5fexp_5fsign_1',['negative_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a3ebfe6b7950a9ce83c4be5839ddb4c24',1,'stdex::parser::basic_scientific_numeral']]], - ['negative_5fsign_2',['negative_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a770d96b01472df1e7f0afbec48109bbc',1,'stdex::parser::basic_signed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a9bb5dbea1f562247ee19765caef96cdd',1,'stdex::parser::basic_mixed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#ab1c6e60d52714da56bfa0ecf95b2ae3e',1,'stdex::parser::basic_scientific_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#aeb94b8a1ee947c2b7fbb2f7b1828c98a',1,'stdex::parser::basic_monetary_numeral::negative_sign()']]], - ['nose_3',['nose',['../classstdex_1_1parser_1_1basic__emoticon.html#a3bcb9a13e7d8933641c36fbb5b76f3a6',1,'stdex::parser::basic_emoticon']]], + ['negative_5fexp_5fsign_1',['negative_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#aaeec0779d7bd8f5429108be5b80ba95c',1,'stdex::parser::basic_scientific_numeral']]], + ['negative_5fsign_2',['negative_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a50271856db8a0e66bef91e4e05949bb3',1,'stdex::parser::basic_signed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a76a2ae3e988b901ae4745a5ba8c22d46',1,'stdex::parser::basic_mixed_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a8e625f598299499379b3f9e067ad9384',1,'stdex::parser::basic_scientific_numeral::negative_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#aef90350963cc64fb710674eedf260708',1,'stdex::parser::basic_monetary_numeral::negative_sign()']]], + ['nose_3',['nose',['../classstdex_1_1parser_1_1basic__emoticon.html#a865f28a87ef1561bca53445e2d1ae253',1,'stdex::parser::basic_emoticon']]], ['num_4',['num',['../classstdex_1_1base64__enc.html#a58e4759143972065f71ed68f6dbc90d8',1,'stdex::base64_enc::num()'],['../classstdex_1_1base64__dec.html#a08acef30d97e7f8213e0c834b93ee849',1,'stdex::base64_dec::num()'],['../classstdex_1_1hex__dec.html#a99111436d6b30595cd1fee112e3200ae',1,'stdex::hex_dec::num()']]], - ['number_5',['number',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a602c930105632850a5313314ec57c88c',1,'stdex::parser::basic_signed_numeral']]] + ['number_5',['number',['../classstdex_1_1parser_1_1basic__signed__numeral.html#ae43853317fc7ca8b6df2eda5d466a2aa',1,'stdex::parser::basic_signed_numeral']]] ]; diff --git a/search/variables_a.js b/search/variables_a.js index 3ec2825e8..f434cbfbe 100644 --- a/search/variables_a.js +++ b/search/variables_a.js @@ -1,6 +1,6 @@ var searchData= [ ['params_0',['params',['../classstdex_1_1parser_1_1http__cookie.html#aa3d227ae38c1f63b445097ca07091616',1,'stdex::parser::http_cookie']]], - ['positive_5fexp_5fsign_1',['positive_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a24cfde1e017b814f0afa700d49f6539b',1,'stdex::parser::basic_scientific_numeral']]], - ['positive_5fsign_2',['positive_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a57e249c0f76db49306e36eb3fe82ac61',1,'stdex::parser::basic_signed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a631af3930323518747179690699bb164',1,'stdex::parser::basic_mixed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a594018a64fdfb92d1e566cd628bfb181',1,'stdex::parser::basic_scientific_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a3ed967d8bd1cd6f52cdbb9b282518598',1,'stdex::parser::basic_monetary_numeral::positive_sign()']]] + ['positive_5fexp_5fsign_1',['positive_exp_sign',['../classstdex_1_1parser_1_1basic__scientific__numeral.html#abb5d26d24a7bb58d244b7d51722b117a',1,'stdex::parser::basic_scientific_numeral']]], + ['positive_5fsign_2',['positive_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#ac7c9dde1f5b3600a21c1b7935c0a5caf',1,'stdex::parser::basic_signed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#aee09625077f56e1139e3a6c26e24e93f',1,'stdex::parser::basic_mixed_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a6e6e08dd8ade04c9aa85fba70e12b7c4',1,'stdex::parser::basic_scientific_numeral::positive_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a23fedf450adaace6a027c7788e4a8c61',1,'stdex::parser::basic_monetary_numeral::positive_sign()']]] ]; diff --git a/search/variables_b.js b/search/variables_b.js index caa979bbc..d22ecfce0 100644 --- a/search/variables_b.js +++ b/search/variables_b.js @@ -1,8 +1,8 @@ var searchData= [ - ['scope_5fid_0',['scope_id',['../classstdex_1_1parser_1_1basic__ipv6__address.html#a2d16cb04a8b0ca4e1c55b9d681b2e417',1,'stdex::parser::basic_ipv6_address']]], + ['scope_5fid_0',['scope_id',['../classstdex_1_1parser_1_1basic__ipv6__address.html#a67486e83888f48afc62b031f745012c0',1,'stdex::parser::basic_ipv6_address']]], ['segments_1',['segments',['../classstdex_1_1parser_1_1http__url__path.html#a9a5f4002c55cb4500ce43536512b02b9',1,'stdex::parser::http_url_path']]], - ['special_5fsign_2',['special_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a786ab72c92b1a665b922bb30037d5e93',1,'stdex::parser::basic_signed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a2dab20189aee22c9deb10615bfc6c2f0',1,'stdex::parser::basic_mixed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#acdd1250c2bd8c496f638d374c4cbf716',1,'stdex::parser::basic_scientific_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#a3b87d54d42d77f28b5692bc5f85af97a',1,'stdex::parser::basic_monetary_numeral::special_sign()']]], + ['special_5fsign_2',['special_sign',['../classstdex_1_1parser_1_1basic__signed__numeral.html#a38b8207e2b384ed5ffb3f2bfb3e8755f',1,'stdex::parser::basic_signed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__mixed__numeral.html#a46c6721810cc8f90218aee66a4c27132',1,'stdex::parser::basic_mixed_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__scientific__numeral.html#a5ce9abfbcdc1247e8f504ae13492e7ea',1,'stdex::parser::basic_scientific_numeral::special_sign()'],['../classstdex_1_1parser_1_1basic__monetary__numeral.html#af0190fa4b0de5e894a14c05550e78365',1,'stdex::parser::basic_monetary_numeral::special_sign()']]], ['start_3',['start',['../structstdex_1_1interval.html#ab6a104de0f15b29bea77fe181b49c40b',1,'stdex::interval']]], ['string_4',['string',['../classstdex_1_1parser_1_1http__value.html#a808ed411ff6816162a54b99fb7307315',1,'stdex::parser::http_value']]] ]; diff --git a/sgml_8hpp_source.html b/sgml_8hpp_source.html index 5535cd818..ef65e5292 100644 --- a/sgml_8hpp_source.html +++ b/sgml_8hpp_source.html @@ -364,7 +364,7 @@ $(function() { diff --git a/sgml__unicode_8hpp_source.html b/sgml__unicode_8hpp_source.html index c8973adbe..ba327cd28 100644 --- a/sgml__unicode_8hpp_source.html +++ b/sgml__unicode_8hpp_source.html @@ -3170,7 +3170,7 @@ $(function() { diff --git a/string_8hpp_source.html b/string_8hpp_source.html index bf15fddba..e9ef38584 100644 --- a/string_8hpp_source.html +++ b/string_8hpp_source.html @@ -547,7 +547,7 @@ $(function() { diff --git a/structstdex_1_1interval-members.html b/structstdex_1_1interval-members.html index 5de9dbd29..1a2eb533e 100644 --- a/structstdex_1_1interval-members.html +++ b/structstdex_1_1interval-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/structstdex_1_1interval.html b/structstdex_1_1interval.html index c6aa7906a..62a6dce52 100644 --- a/structstdex_1_1interval.html +++ b/structstdex_1_1interval.html @@ -304,7 +304,7 @@ template<class T > diff --git a/structstdex_1_1mapping-members.html b/structstdex_1_1mapping-members.html index dc3b971f2..32375a9e9 100644 --- a/structstdex_1_1mapping-members.html +++ b/structstdex_1_1mapping-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/structstdex_1_1mapping.html b/structstdex_1_1mapping.html index 2443cf694..b351eedf8 100644 --- a/structstdex_1_1mapping.html +++ b/structstdex_1_1mapping.html @@ -124,7 +124,7 @@ struct stdex::mapping< T >

    Maps index in source string to index in

    diff --git a/structstdex_1_1no__delete-members.html b/structstdex_1_1no__delete-members.html index 6800a3791..1cdabcb33 100644 --- a/structstdex_1_1no__delete-members.html +++ b/structstdex_1_1no__delete-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/structstdex_1_1no__delete.html b/structstdex_1_1no__delete.html index 55b2be732..7fc38429d 100644 --- a/structstdex_1_1no__delete.html +++ b/structstdex_1_1no__delete.html @@ -105,7 +105,7 @@ struct stdex::no_delete< T >

    Noop deleter.

    diff --git a/structstdex_1_1no__delete_3_01_t_0f_0e_4-members.html b/structstdex_1_1no__delete_3_01_t_0f_0e_4-members.html index a8519fd1c..2d75b0f39 100644 --- a/structstdex_1_1no__delete_3_01_t_0f_0e_4-members.html +++ b/structstdex_1_1no__delete_3_01_t_0f_0e_4-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/structstdex_1_1no__delete_3_01_t_0f_0e_4.html b/structstdex_1_1no__delete_3_01_t_0f_0e_4.html index 50687d017..27c05daaf 100644 --- a/structstdex_1_1no__delete_3_01_t_0f_0e_4.html +++ b/structstdex_1_1no__delete_3_01_t_0f_0e_4.html @@ -106,7 +106,7 @@ struct stdex::no_delete< T[]>

    Noop array deleter.

    diff --git a/structstdex_1_1parser_1_1http__factor__more-members.html b/structstdex_1_1parser_1_1http__factor__more-members.html index 19d62d8f1..911f15dbf 100644 --- a/structstdex_1_1parser_1_1http__factor__more-members.html +++ b/structstdex_1_1parser_1_1http__factor__more-members.html @@ -84,7 +84,7 @@ $(function() { diff --git a/structstdex_1_1parser_1_1http__factor__more.html b/structstdex_1_1parser_1_1http__factor__more.html index 3ebb3b959..cf629a478 100644 --- a/structstdex_1_1parser_1_1http__factor__more.html +++ b/structstdex_1_1parser_1_1http__factor__more.html @@ -93,7 +93,7 @@ constexpr bool operator()< diff --git a/vector__queue_8hpp_source.html b/vector__queue_8hpp_source.html index 7eec3723a..bc23c2ecc 100644 --- a/vector__queue_8hpp_source.html +++ b/vector__queue_8hpp_source.html @@ -386,7 +386,7 @@ $(function() {