diff --git a/_unit_tests_2compat_8hpp_source.html b/_unit_tests_2compat_8hpp_source.html index e73b11612..d2f2f9233 100644 --- a/_unit_tests_2compat_8hpp_source.html +++ b/_unit_tests_2compat_8hpp_source.html @@ -170,7 +170,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/annotated.html b/annotated.html index ff5b79b1a..cfc5d1164 100644 --- a/annotated.html +++ b/annotated.html @@ -224,7 +224,7 @@ $(function() { diff --git a/base64_8hpp_source.html b/base64_8hpp_source.html index 8cc02e528..6ab611fb2 100644 --- a/base64_8hpp_source.html +++ b/base64_8hpp_source.html @@ -346,7 +346,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/chrono_8hpp_source.html b/chrono_8hpp_source.html index 11078fb0d..e54c3f04a 100644 --- a/chrono_8hpp_source.html +++ b/chrono_8hpp_source.html @@ -466,7 +466,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/classes.html b/classes.html index 539784b42..390b9d5c7 100644 --- a/classes.html +++ b/classes.html @@ -133,7 +133,7 @@ $(function() { diff --git a/classstdex_1_1base64__dec-members.html b/classstdex_1_1base64__dec-members.html index 86c77dc30..b6d69425b 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 330f6c14c..a1788f2db 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 e10e42b5a..0f8523f20 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 e6fb91ec0..a1745f925 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_1charset__encoder-members.html b/classstdex_1_1charset__encoder-members.html index 2b00facfc..d63795ec1 100644 --- a/classstdex_1_1charset__encoder-members.html +++ b/classstdex_1_1charset__encoder-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/classstdex_1_1charset__encoder.html b/classstdex_1_1charset__encoder.html index a4b9f2a0c..63e835f6d 100644 --- a/classstdex_1_1charset__encoder.html +++ b/classstdex_1_1charset__encoder.html @@ -595,7 +595,7 @@ template<class _Traits_to = std::char_traits<T_to>, class _Alloc_to = diff --git a/classstdex_1_1errno__error-members.html b/classstdex_1_1errno__error-members.html index d2a9d945c..4dfaf80ce 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 7c53d4b49..89de43de5 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 df6c9a3f7..d1e33acf9 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 47a39e276..2f77e89b7 100644 --- a/classstdex_1_1global__progress.html +++ b/classstdex_1_1global__progress.html @@ -547,7 +547,7 @@ template<class T > diff --git a/classstdex_1_1hex__dec-members.html b/classstdex_1_1hex__dec-members.html index fba8758db..43adc00f3 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 4071ee6a5..9a874d1d1 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 fe84a0ee9..8827d9605 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 03b16ff47..0d07c2c3b 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 8e83cb4ac..8d87025be 100644 --- a/classstdex_1_1idrec_1_1record-members.html +++ b/classstdex_1_1idrec_1_1record-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1idrec_1_1record.html b/classstdex_1_1idrec_1_1record.html index b8b6d4fdf..c01ec3644 100644 --- a/classstdex_1_1idrec_1_1record.html +++ b/classstdex_1_1idrec_1_1record.html @@ -526,7 +526,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 be3d19521..3445808fc 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 64f93ba03..4189eaae5 100644 --- a/classstdex_1_1lazy__progress.html +++ b/classstdex_1_1lazy__progress.html @@ -279,7 +279,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 a4d6cf2ba..eef1b2738 100644 --- a/classstdex_1_1parser_1_1basic__angle-members.html +++ b/classstdex_1_1parser_1_1basic__angle-members.html @@ -99,7 +99,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__angle.html b/classstdex_1_1parser_1_1basic__angle.html index cfd0560c8..cac7b7815 100644 --- a/classstdex_1_1parser_1_1basic__angle.html +++ b/classstdex_1_1parser_1_1basic__angle.html @@ -244,7 +244,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__any__cu-members.html b/classstdex_1_1parser_1_1basic__any__cu-members.html index 0e2cde198..bdc874b8d 100644 --- a/classstdex_1_1parser_1_1basic__any__cu-members.html +++ b/classstdex_1_1parser_1_1basic__any__cu-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__any__cu.html b/classstdex_1_1parser_1_1basic__any__cu.html index 06b9fb2b6..caf5cf4f8 100644 --- a/classstdex_1_1parser_1_1basic__any__cu.html +++ b/classstdex_1_1parser_1_1basic__any__cu.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__bol-members.html b/classstdex_1_1parser_1_1basic__bol-members.html index 72a444c3a..371dd25a0 100644 --- a/classstdex_1_1parser_1_1basic__bol-members.html +++ b/classstdex_1_1parser_1_1basic__bol-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__bol.html b/classstdex_1_1parser_1_1basic__bol.html index d719b0ded..09a198175 100644 --- a/classstdex_1_1parser_1_1basic__bol.html +++ b/classstdex_1_1parser_1_1basic__bol.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__branch-members.html b/classstdex_1_1parser_1_1basic__branch-members.html index a004e0053..cf2ed4880 100644 --- a/classstdex_1_1parser_1_1basic__branch-members.html +++ b/classstdex_1_1parser_1_1basic__branch-members.html @@ -99,7 +99,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__branch.html b/classstdex_1_1parser_1_1basic__branch.html index 5ff003b21..a43b29fc4 100644 --- a/classstdex_1_1parser_1_1basic__branch.html +++ b/classstdex_1_1parser_1_1basic__branch.html @@ -253,7 +253,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__chemical__formula-members.html b/classstdex_1_1parser_1_1basic__chemical__formula-members.html index 76e8b001a..27a330e2a 100644 --- a/classstdex_1_1parser_1_1basic__chemical__formula-members.html +++ b/classstdex_1_1parser_1_1basic__chemical__formula-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__chemical__formula.html b/classstdex_1_1parser_1_1basic__chemical__formula.html index 24b3002bf..e789587e5 100644 --- a/classstdex_1_1parser_1_1basic__chemical__formula.html +++ b/classstdex_1_1parser_1_1basic__chemical__formula.html @@ -239,7 +239,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__creditor__reference-members.html b/classstdex_1_1parser_1_1basic__creditor__reference-members.html index 10a272c02..0df918f55 100644 --- a/classstdex_1_1parser_1_1basic__creditor__reference-members.html +++ b/classstdex_1_1parser_1_1basic__creditor__reference-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__creditor__reference.html b/classstdex_1_1parser_1_1basic__creditor__reference.html index c3e362538..ea85d83a6 100644 --- a/classstdex_1_1parser_1_1basic__creditor__reference.html +++ b/classstdex_1_1parser_1_1basic__creditor__reference.html @@ -240,7 +240,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__cu-members.html b/classstdex_1_1parser_1_1basic__cu-members.html index 38578efe2..8f3a038ad 100644 --- a/classstdex_1_1parser_1_1basic__cu-members.html +++ b/classstdex_1_1parser_1_1basic__cu-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__cu.html b/classstdex_1_1parser_1_1basic__cu.html index 4ebf6e9ad..1318b33e7 100644 --- a/classstdex_1_1parser_1_1basic__cu.html +++ b/classstdex_1_1parser_1_1basic__cu.html @@ -201,7 +201,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__cu__set-members.html b/classstdex_1_1parser_1_1basic__cu__set-members.html index 31e1abd7b..6b50188ab 100644 --- a/classstdex_1_1parser_1_1basic__cu__set-members.html +++ b/classstdex_1_1parser_1_1basic__cu__set-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__cu__set.html b/classstdex_1_1parser_1_1basic__cu__set.html index 94f6998ca..78f37b61c 100644 --- a/classstdex_1_1parser_1_1basic__cu__set.html +++ b/classstdex_1_1parser_1_1basic__cu__set.html @@ -210,7 +210,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__date-members.html b/classstdex_1_1parser_1_1basic__date-members.html index e42ff7d4a..1d3dadf34 100644 --- a/classstdex_1_1parser_1_1basic__date-members.html +++ b/classstdex_1_1parser_1_1basic__date-members.html @@ -100,7 +100,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__date.html b/classstdex_1_1parser_1_1basic__date.html index c6556031c..c7c5dd703 100644 --- a/classstdex_1_1parser_1_1basic__date.html +++ b/classstdex_1_1parser_1_1basic__date.html @@ -252,7 +252,7 @@ template<clas 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 29e1943b6..157ac73d3 100644 --- a/classstdex_1_1parser_1_1basic__dns__domain__char-members.html +++ b/classstdex_1_1parser_1_1basic__dns__domain__char-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__dns__domain__char.html b/classstdex_1_1parser_1_1basic__dns__domain__char.html index 7eb8355f5..280ea56f5 100644 --- a/classstdex_1_1parser_1_1basic__dns__domain__char.html +++ b/classstdex_1_1parser_1_1basic__dns__domain__char.html @@ -203,7 +203,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__dns__name-members.html b/classstdex_1_1parser_1_1basic__dns__name-members.html index 82a44987a..d4e8f747e 100644 --- a/classstdex_1_1parser_1_1basic__dns__name-members.html +++ b/classstdex_1_1parser_1_1basic__dns__name-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__dns__name.html b/classstdex_1_1parser_1_1basic__dns__name.html index 07369800e..48a071fcc 100644 --- a/classstdex_1_1parser_1_1basic__dns__name.html +++ b/classstdex_1_1parser_1_1basic__dns__name.html @@ -205,7 +205,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__email__address-members.html b/classstdex_1_1parser_1_1basic__email__address-members.html index 10363e610..1de6f46c2 100644 --- a/classstdex_1_1parser_1_1basic__email__address-members.html +++ b/classstdex_1_1parser_1_1basic__email__address-members.html @@ -99,7 +99,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__email__address.html b/classstdex_1_1parser_1_1basic__email__address.html index 15a2d0198..7c73d0e2c 100644 --- a/classstdex_1_1parser_1_1basic__email__address.html +++ b/classstdex_1_1parser_1_1basic__email__address.html @@ -245,7 +245,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__emoticon-members.html b/classstdex_1_1parser_1_1basic__emoticon-members.html index 99bfd9eca..4ff29e2ae 100644 --- a/classstdex_1_1parser_1_1basic__emoticon-members.html +++ b/classstdex_1_1parser_1_1basic__emoticon-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__emoticon.html b/classstdex_1_1parser_1_1basic__emoticon.html index acd385065..cd4ddfd78 100644 --- a/classstdex_1_1parser_1_1basic__emoticon.html +++ b/classstdex_1_1parser_1_1basic__emoticon.html @@ -243,7 +243,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__eol-members.html b/classstdex_1_1parser_1_1basic__eol-members.html index d50f64a20..bcf81720b 100644 --- a/classstdex_1_1parser_1_1basic__eol-members.html +++ b/classstdex_1_1parser_1_1basic__eol-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__eol.html b/classstdex_1_1parser_1_1basic__eol.html index 872444720..3d9123436 100644 --- a/classstdex_1_1parser_1_1basic__eol.html +++ b/classstdex_1_1parser_1_1basic__eol.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__fraction-members.html b/classstdex_1_1parser_1_1basic__fraction-members.html index 76ae1b35e..44ec1305d 100644 --- a/classstdex_1_1parser_1_1basic__fraction-members.html +++ b/classstdex_1_1parser_1_1basic__fraction-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__fraction.html b/classstdex_1_1parser_1_1basic__fraction.html index b7eed05f6..bd37a012b 100644 --- a/classstdex_1_1parser_1_1basic__fraction.html +++ b/classstdex_1_1parser_1_1basic__fraction.html @@ -232,7 +232,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__iban-members.html b/classstdex_1_1parser_1_1basic__iban-members.html index 9dc372207..88403f341 100644 --- a/classstdex_1_1parser_1_1basic__iban-members.html +++ b/classstdex_1_1parser_1_1basic__iban-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__iban.html b/classstdex_1_1parser_1_1basic__iban.html index 44b62fd73..797f6c65b 100644 --- a/classstdex_1_1parser_1_1basic__iban.html +++ b/classstdex_1_1parser_1_1basic__iban.html @@ -244,7 +244,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer-members.html b/classstdex_1_1parser_1_1basic__integer-members.html index 53762b676..dc6aa04b4 100644 --- a/classstdex_1_1parser_1_1basic__integer-members.html +++ b/classstdex_1_1parser_1_1basic__integer-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__integer.html b/classstdex_1_1parser_1_1basic__integer.html index e7c19defd..b7811cecd 100644 --- a/classstdex_1_1parser_1_1basic__integer.html +++ b/classstdex_1_1parser_1_1basic__integer.html @@ -180,7 +180,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer10-members.html b/classstdex_1_1parser_1_1basic__integer10-members.html index 68db2c5af..5da33d4dd 100644 --- a/classstdex_1_1parser_1_1basic__integer10-members.html +++ b/classstdex_1_1parser_1_1basic__integer10-members.html @@ -104,7 +104,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__integer10.html b/classstdex_1_1parser_1_1basic__integer10.html index e9a131a66..f7b6ad486 100644 --- a/classstdex_1_1parser_1_1basic__integer10.html +++ b/classstdex_1_1parser_1_1basic__integer10.html @@ -234,7 +234,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer10ts-members.html b/classstdex_1_1parser_1_1basic__integer10ts-members.html index 14ecbd10a..7817ae16f 100644 --- a/classstdex_1_1parser_1_1basic__integer10ts-members.html +++ b/classstdex_1_1parser_1_1basic__integer10ts-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__integer10ts.html b/classstdex_1_1parser_1_1basic__integer10ts.html index f3982c7be..f9c0a4b9d 100644 --- a/classstdex_1_1parser_1_1basic__integer10ts.html +++ b/classstdex_1_1parser_1_1basic__integer10ts.html @@ -248,7 +248,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer16-members.html b/classstdex_1_1parser_1_1basic__integer16-members.html index c8b992799..ab2a957ec 100644 --- a/classstdex_1_1parser_1_1basic__integer16-members.html +++ b/classstdex_1_1parser_1_1basic__integer16-members.html @@ -110,7 +110,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__integer16.html b/classstdex_1_1parser_1_1basic__integer16.html index bd4c5206f..a5e74234b 100644 --- a/classstdex_1_1parser_1_1basic__integer16.html +++ b/classstdex_1_1parser_1_1basic__integer16.html @@ -252,7 +252,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__ipv4__address-members.html b/classstdex_1_1parser_1_1basic__ipv4__address-members.html index 3eddde23d..aba6a7376 100644 --- a/classstdex_1_1parser_1_1basic__ipv4__address-members.html +++ b/classstdex_1_1parser_1_1basic__ipv4__address-members.html @@ -105,7 +105,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__ipv4__address.html b/classstdex_1_1parser_1_1basic__ipv4__address.html index e58b1042b..3a93e5786 100644 --- a/classstdex_1_1parser_1_1basic__ipv4__address.html +++ b/classstdex_1_1parser_1_1basic__ipv4__address.html @@ -265,7 +265,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__ipv6__address-members.html b/classstdex_1_1parser_1_1basic__ipv6__address-members.html index 8444b839f..ef89a0d55 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__address-members.html +++ b/classstdex_1_1parser_1_1basic__ipv6__address-members.html @@ -113,7 +113,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__ipv6__address.html b/classstdex_1_1parser_1_1basic__ipv6__address.html index 308b3a9bd..83d81d80a 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__address.html +++ b/classstdex_1_1parser_1_1basic__ipv6__address.html @@ -290,7 +290,7 @@ template<clas 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 651c167de..90a3a1cd1 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 @@ -92,7 +92,7 @@ $(function() { 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 f8604f315..f9882f359 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__iterations-members.html b/classstdex_1_1parser_1_1basic__iterations-members.html index 418665cb6..7b9abb767 100644 --- a/classstdex_1_1parser_1_1basic__iterations-members.html +++ b/classstdex_1_1parser_1_1basic__iterations-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__iterations.html b/classstdex_1_1parser_1_1basic__iterations.html index 523cf0756..90cf57cba 100644 --- a/classstdex_1_1parser_1_1basic__iterations.html +++ b/classstdex_1_1parser_1_1basic__iterations.html @@ -211,7 +211,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__json__string-members.html b/classstdex_1_1parser_1_1basic__json__string-members.html index 5834a0b89..7c872ff32 100644 --- a/classstdex_1_1parser_1_1basic__json__string-members.html +++ b/classstdex_1_1parser_1_1basic__json__string-members.html @@ -104,7 +104,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__json__string.html b/classstdex_1_1parser_1_1basic__json__string.html index 4bd382ee6..091aa1c79 100644 --- a/classstdex_1_1parser_1_1basic__json__string.html +++ b/classstdex_1_1parser_1_1basic__json__string.html @@ -260,7 +260,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__mixed__numeral-members.html b/classstdex_1_1parser_1_1basic__mixed__numeral-members.html index 120d6a208..6f58a5725 100644 --- a/classstdex_1_1parser_1_1basic__mixed__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__mixed__numeral-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__mixed__numeral.html b/classstdex_1_1parser_1_1basic__mixed__numeral.html index f80638da9..9effec40f 100644 --- a/classstdex_1_1parser_1_1basic__mixed__numeral.html +++ b/classstdex_1_1parser_1_1basic__mixed__numeral.html @@ -247,7 +247,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__monetary__numeral-members.html b/classstdex_1_1parser_1_1basic__monetary__numeral-members.html index 5a66b9d15..faaf9728c 100644 --- a/classstdex_1_1parser_1_1basic__monetary__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__monetary__numeral-members.html @@ -99,7 +99,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__monetary__numeral.html b/classstdex_1_1parser_1_1basic__monetary__numeral.html index e773e347a..20a248688 100644 --- a/classstdex_1_1parser_1_1basic__monetary__numeral.html +++ b/classstdex_1_1parser_1_1basic__monetary__numeral.html @@ -251,7 +251,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__noop-members.html b/classstdex_1_1parser_1_1basic__noop-members.html index 423fc0f5a..5f42c22cc 100644 --- a/classstdex_1_1parser_1_1basic__noop-members.html +++ b/classstdex_1_1parser_1_1basic__noop-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__noop.html b/classstdex_1_1parser_1_1basic__noop.html index 341ebe188..9d8864ab5 100644 --- a/classstdex_1_1parser_1_1basic__noop.html +++ b/classstdex_1_1parser_1_1basic__noop.html @@ -188,7 +188,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__parser-members.html b/classstdex_1_1parser_1_1basic__parser-members.html index 3c62adc1b..c5ad93478 100644 --- a/classstdex_1_1parser_1_1basic__parser-members.html +++ b/classstdex_1_1parser_1_1basic__parser-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__parser.html b/classstdex_1_1parser_1_1basic__parser.html index 2a99256a7..ccc07f0b9 100644 --- a/classstdex_1_1parser_1_1basic__parser.html +++ b/classstdex_1_1parser_1_1basic__parser.html @@ -188,7 +188,7 @@ class stdex::parser::basic_parser< T >

Base template for all parse

diff --git a/classstdex_1_1parser_1_1basic__permutation-members.html b/classstdex_1_1parser_1_1basic__permutation-members.html index a9109512c..ef0839bf9 100644 --- a/classstdex_1_1parser_1_1basic__permutation-members.html +++ b/classstdex_1_1parser_1_1basic__permutation-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__permutation.html b/classstdex_1_1parser_1_1basic__permutation.html index 4acef5d51..b7e21a23d 100644 --- a/classstdex_1_1parser_1_1basic__permutation.html +++ b/classstdex_1_1parser_1_1basic__permutation.html @@ -216,7 +216,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__phone__number-members.html b/classstdex_1_1parser_1_1basic__phone__number-members.html index 279378ff7..2b55e8546 100644 --- a/classstdex_1_1parser_1_1basic__phone__number-members.html +++ b/classstdex_1_1parser_1_1basic__phone__number-members.html @@ -99,7 +99,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__phone__number.html b/classstdex_1_1parser_1_1basic__phone__number.html index 8e21a0cd5..d6db0cd28 100644 --- a/classstdex_1_1parser_1_1basic__phone__number.html +++ b/classstdex_1_1parser_1_1basic__phone__number.html @@ -246,7 +246,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__punct__cu-members.html b/classstdex_1_1parser_1_1basic__punct__cu-members.html index a213965af..986584905 100644 --- a/classstdex_1_1parser_1_1basic__punct__cu-members.html +++ b/classstdex_1_1parser_1_1basic__punct__cu-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__punct__cu.html b/classstdex_1_1parser_1_1basic__punct__cu.html index 99f827e7f..e96fce9be 100644 --- a/classstdex_1_1parser_1_1basic__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__punct__cu.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__roman__numeral-members.html b/classstdex_1_1parser_1_1basic__roman__numeral-members.html index 16b471bcf..af87103af 100644 --- a/classstdex_1_1parser_1_1basic__roman__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__roman__numeral-members.html @@ -103,7 +103,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__roman__numeral.html b/classstdex_1_1parser_1_1basic__roman__numeral.html index 748a75b85..f2f1beb48 100644 --- a/classstdex_1_1parser_1_1basic__roman__numeral.html +++ b/classstdex_1_1parser_1_1basic__roman__numeral.html @@ -231,7 +231,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__scientific__numeral-members.html b/classstdex_1_1parser_1_1basic__scientific__numeral-members.html index b4137f8e5..570ce2919 100644 --- a/classstdex_1_1parser_1_1basic__scientific__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__scientific__numeral-members.html @@ -103,7 +103,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__scientific__numeral.html b/classstdex_1_1parser_1_1basic__scientific__numeral.html index 12a01a186..151fb28e1 100644 --- a/classstdex_1_1parser_1_1basic__scientific__numeral.html +++ b/classstdex_1_1parser_1_1basic__scientific__numeral.html @@ -267,7 +267,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__score-members.html b/classstdex_1_1parser_1_1basic__score-members.html index 7f67f343d..c73179ec1 100644 --- a/classstdex_1_1parser_1_1basic__score-members.html +++ b/classstdex_1_1parser_1_1basic__score-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__score.html b/classstdex_1_1parser_1_1basic__score.html index 860480d58..d0a1485d1 100644 --- a/classstdex_1_1parser_1_1basic__score.html +++ b/classstdex_1_1parser_1_1basic__score.html @@ -236,7 +236,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__sequence-members.html b/classstdex_1_1parser_1_1basic__sequence-members.html index 78e028f22..2a79abd15 100644 --- a/classstdex_1_1parser_1_1basic__sequence-members.html +++ b/classstdex_1_1parser_1_1basic__sequence-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__sequence.html b/classstdex_1_1parser_1_1basic__sequence.html index d8e618e26..706ae2778 100644 --- a/classstdex_1_1parser_1_1basic__sequence.html +++ b/classstdex_1_1parser_1_1basic__sequence.html @@ -209,7 +209,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__set-members.html b/classstdex_1_1parser_1_1basic__set-members.html index 786be2abc..7c8ab176a 100644 --- a/classstdex_1_1parser_1_1basic__set-members.html +++ b/classstdex_1_1parser_1_1basic__set-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__set.html b/classstdex_1_1parser_1_1basic__set.html index 86d9e523d..e604d8274 100644 --- a/classstdex_1_1parser_1_1basic__set.html +++ b/classstdex_1_1parser_1_1basic__set.html @@ -223,7 +223,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__si__reference-members.html b/classstdex_1_1parser_1_1basic__si__reference-members.html index ddf475e52..735ba7921 100644 --- a/classstdex_1_1parser_1_1basic__si__reference-members.html +++ b/classstdex_1_1parser_1_1basic__si__reference-members.html @@ -102,7 +102,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__si__reference.html b/classstdex_1_1parser_1_1basic__si__reference.html index 41aaaf759..6c68d2ec6 100644 --- a/classstdex_1_1parser_1_1basic__si__reference.html +++ b/classstdex_1_1parser_1_1basic__si__reference.html @@ -265,7 +265,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html b/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html index 8829585ea..0baf0df42 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html +++ b/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__si__reference__delimiter.html b/classstdex_1_1parser_1_1basic__si__reference__delimiter.html index 30e997efe..02cd9bf7e 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__delimiter.html +++ b/classstdex_1_1parser_1_1basic__si__reference__delimiter.html @@ -192,7 +192,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__si__reference__part-members.html b/classstdex_1_1parser_1_1basic__si__reference__part-members.html index 6e822cfc4..958d976bb 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__part-members.html +++ b/classstdex_1_1parser_1_1basic__si__reference__part-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__si__reference__part.html b/classstdex_1_1parser_1_1basic__si__reference__part.html index e7e63dbb4..21ad8bbcc 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__part.html +++ b/classstdex_1_1parser_1_1basic__si__reference__part.html @@ -192,7 +192,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__signed__numeral-members.html b/classstdex_1_1parser_1_1basic__signed__numeral-members.html index a635ac716..1fa4647f4 100644 --- a/classstdex_1_1parser_1_1basic__signed__numeral-members.html +++ b/classstdex_1_1parser_1_1basic__signed__numeral-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__signed__numeral.html b/classstdex_1_1parser_1_1basic__signed__numeral.html index e40d8b2e0..d8d308853 100644 --- a/classstdex_1_1parser_1_1basic__signed__numeral.html +++ b/classstdex_1_1parser_1_1basic__signed__numeral.html @@ -239,7 +239,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__space__cu-members.html b/classstdex_1_1parser_1_1basic__space__cu-members.html index 203c79838..aa3d2f336 100644 --- a/classstdex_1_1parser_1_1basic__space__cu-members.html +++ b/classstdex_1_1parser_1_1basic__space__cu-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__space__cu.html b/classstdex_1_1parser_1_1basic__space__cu.html index 0aa3fa38b..f7a3604b8 100644 --- a/classstdex_1_1parser_1_1basic__space__cu.html +++ b/classstdex_1_1parser_1_1basic__space__cu.html @@ -198,7 +198,7 @@ template<clas 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 2a93bd56a..23def55c4 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 @@ -93,7 +93,7 @@ $(function() { 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 eda4e6eb2..4bc239453 100644 --- a/classstdex_1_1parser_1_1basic__space__or__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__space__or__punct__cu.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__string-members.html b/classstdex_1_1parser_1_1basic__string-members.html index 4e640a9e8..9a7182401 100644 --- a/classstdex_1_1parser_1_1basic__string-members.html +++ b/classstdex_1_1parser_1_1basic__string-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__string.html b/classstdex_1_1parser_1_1basic__string.html index 6e9abc735..4c19e6ef3 100644 --- a/classstdex_1_1parser_1_1basic__string.html +++ b/classstdex_1_1parser_1_1basic__string.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__string__branch-members.html b/classstdex_1_1parser_1_1basic__string__branch-members.html index 70396cba9..97cf278a0 100644 --- a/classstdex_1_1parser_1_1basic__string__branch-members.html +++ b/classstdex_1_1parser_1_1basic__string__branch-members.html @@ -104,7 +104,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__string__branch.html b/classstdex_1_1parser_1_1basic__string__branch.html index e6070fe96..5957e738a 100644 --- a/classstdex_1_1parser_1_1basic__string__branch.html +++ b/classstdex_1_1parser_1_1basic__string__branch.html @@ -185,7 +185,7 @@ class stdex::parser::basic_string_branch< T, T_parser >

Test for a

diff --git a/classstdex_1_1parser_1_1basic__time-members.html b/classstdex_1_1parser_1_1basic__time-members.html index ef067519a..e7b95a4b1 100644 --- a/classstdex_1_1parser_1_1basic__time-members.html +++ b/classstdex_1_1parser_1_1basic__time-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__time.html b/classstdex_1_1parser_1_1basic__time.html index d3c4d8c36..7219e8af0 100644 --- a/classstdex_1_1parser_1_1basic__time.html +++ b/classstdex_1_1parser_1_1basic__time.html @@ -242,7 +242,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__url-members.html b/classstdex_1_1parser_1_1basic__url-members.html index 22b9e2836..74e4f1219 100644 --- a/classstdex_1_1parser_1_1basic__url-members.html +++ b/classstdex_1_1parser_1_1basic__url-members.html @@ -108,7 +108,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__url.html b/classstdex_1_1parser_1_1basic__url.html index cf9f04db5..aa566c391 100644 --- a/classstdex_1_1parser_1_1basic__url.html +++ b/classstdex_1_1parser_1_1basic__url.html @@ -272,7 +272,7 @@ template<clas 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 961264877..22fe15f88 100644 --- a/classstdex_1_1parser_1_1basic__url__password__char-members.html +++ b/classstdex_1_1parser_1_1basic__url__password__char-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__url__password__char.html b/classstdex_1_1parser_1_1basic__url__password__char.html index 73cf6df5c..957559339 100644 --- a/classstdex_1_1parser_1_1basic__url__password__char.html +++ b/classstdex_1_1parser_1_1basic__url__password__char.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__url__path-members.html b/classstdex_1_1parser_1_1basic__url__path-members.html index 3292bf5e9..1eac0c422 100644 --- a/classstdex_1_1parser_1_1basic__url__path-members.html +++ b/classstdex_1_1parser_1_1basic__url__path-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__url__path.html b/classstdex_1_1parser_1_1basic__url__path.html index aa0927e85..221edf63d 100644 --- a/classstdex_1_1parser_1_1basic__url__path.html +++ b/classstdex_1_1parser_1_1basic__url__path.html @@ -242,7 +242,7 @@ template<clas 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 40e9352eb..01b188485 100644 --- a/classstdex_1_1parser_1_1basic__url__path__char-members.html +++ b/classstdex_1_1parser_1_1basic__url__path__char-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__url__path__char.html b/classstdex_1_1parser_1_1basic__url__path__char.html index 768a77996..577744373 100644 --- a/classstdex_1_1parser_1_1basic__url__path__char.html +++ b/classstdex_1_1parser_1_1basic__url__path__char.html @@ -191,7 +191,7 @@ template<clas 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 11e5306af..06e528189 100644 --- a/classstdex_1_1parser_1_1basic__url__username__char-members.html +++ b/classstdex_1_1parser_1_1basic__url__username__char-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__url__username__char.html b/classstdex_1_1parser_1_1basic__url__username__char.html index c879b91c6..6524a67f2 100644 --- a/classstdex_1_1parser_1_1basic__url__username__char.html +++ b/classstdex_1_1parser_1_1basic__url__username__char.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1http__agent-members.html b/classstdex_1_1parser_1_1http__agent-members.html index fa0fec563..764bcc544 100644 --- a/classstdex_1_1parser_1_1http__agent-members.html +++ b/classstdex_1_1parser_1_1http__agent-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__agent.html b/classstdex_1_1parser_1_1http__agent.html index 4358f87d5..615f5fcfc 100644 --- a/classstdex_1_1parser_1_1http__agent.html +++ b/classstdex_1_1parser_1_1http__agent.html @@ -220,7 +220,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__any__type-members.html b/classstdex_1_1parser_1_1http__any__type-members.html index 5dfe31870..c5a550bb5 100644 --- a/classstdex_1_1parser_1_1http__any__type-members.html +++ b/classstdex_1_1parser_1_1http__any__type-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__any__type.html b/classstdex_1_1parser_1_1http__any__type.html index dde461b1f..b12a85f7a 100644 --- a/classstdex_1_1parser_1_1http__any__type.html +++ b/classstdex_1_1parser_1_1http__any__type.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__asterisk-members.html b/classstdex_1_1parser_1_1http__asterisk-members.html index af8bf0235..b11a538f5 100644 --- a/classstdex_1_1parser_1_1http__asterisk-members.html +++ b/classstdex_1_1parser_1_1http__asterisk-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__asterisk.html b/classstdex_1_1parser_1_1http__asterisk.html index cf31c9647..ad65db448 100644 --- a/classstdex_1_1parser_1_1http__asterisk.html +++ b/classstdex_1_1parser_1_1http__asterisk.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__cookie-members.html b/classstdex_1_1parser_1_1http__cookie-members.html index d02e2b92f..854faba69 100644 --- a/classstdex_1_1parser_1_1http__cookie-members.html +++ b/classstdex_1_1parser_1_1http__cookie-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__cookie.html b/classstdex_1_1parser_1_1http__cookie.html index 685c5d345..e5d165b2b 100644 --- a/classstdex_1_1parser_1_1http__cookie.html +++ b/classstdex_1_1parser_1_1http__cookie.html @@ -230,7 +230,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__cookie__parameter-members.html b/classstdex_1_1parser_1_1http__cookie__parameter-members.html index 5c8dccc7e..07912a843 100644 --- a/classstdex_1_1parser_1_1http__cookie__parameter-members.html +++ b/classstdex_1_1parser_1_1http__cookie__parameter-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__cookie__parameter.html b/classstdex_1_1parser_1_1http__cookie__parameter.html index 50e40c103..8a0f26016 100644 --- a/classstdex_1_1parser_1_1http__cookie__parameter.html +++ b/classstdex_1_1parser_1_1http__cookie__parameter.html @@ -224,7 +224,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__header-members.html b/classstdex_1_1parser_1_1http__header-members.html index 13c4ec96f..025871da4 100644 --- a/classstdex_1_1parser_1_1http__header-members.html +++ b/classstdex_1_1parser_1_1http__header-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__header.html b/classstdex_1_1parser_1_1http__header.html index c210c479e..38fb0f367 100644 --- a/classstdex_1_1parser_1_1http__header.html +++ b/classstdex_1_1parser_1_1http__header.html @@ -224,7 +224,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__language-members.html b/classstdex_1_1parser_1_1http__language-members.html index c2b70e2a2..2518333b9 100644 --- a/classstdex_1_1parser_1_1http__language-members.html +++ b/classstdex_1_1parser_1_1http__language-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__language.html b/classstdex_1_1parser_1_1http__language.html index 664a9d634..07066a3cb 100644 --- a/classstdex_1_1parser_1_1http__language.html +++ b/classstdex_1_1parser_1_1http__language.html @@ -217,7 +217,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__line__break-members.html b/classstdex_1_1parser_1_1http__line__break-members.html index ace5ede6e..6f953dbe2 100644 --- a/classstdex_1_1parser_1_1http__line__break-members.html +++ b/classstdex_1_1parser_1_1http__line__break-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__line__break.html b/classstdex_1_1parser_1_1http__line__break.html index 03a4a95fb..3dad57709 100644 --- a/classstdex_1_1parser_1_1http__line__break.html +++ b/classstdex_1_1parser_1_1http__line__break.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__media__range-members.html b/classstdex_1_1parser_1_1http__media__range-members.html index 6d36f1774..eb6de9576 100644 --- a/classstdex_1_1parser_1_1http__media__range-members.html +++ b/classstdex_1_1parser_1_1http__media__range-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__media__range.html b/classstdex_1_1parser_1_1http__media__range.html index ddab50f7d..2000c181e 100644 --- a/classstdex_1_1parser_1_1http__media__range.html +++ b/classstdex_1_1parser_1_1http__media__range.html @@ -225,7 +225,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__media__type-members.html b/classstdex_1_1parser_1_1http__media__type-members.html index 33eb121e7..060191868 100644 --- a/classstdex_1_1parser_1_1http__media__type-members.html +++ b/classstdex_1_1parser_1_1http__media__type-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__media__type.html b/classstdex_1_1parser_1_1http__media__type.html index ca80d9879..c9521cade 100644 --- a/classstdex_1_1parser_1_1http__media__type.html +++ b/classstdex_1_1parser_1_1http__media__type.html @@ -229,7 +229,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__parameter-members.html b/classstdex_1_1parser_1_1http__parameter-members.html index f7ec6f506..6d4597683 100644 --- a/classstdex_1_1parser_1_1http__parameter-members.html +++ b/classstdex_1_1parser_1_1http__parameter-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__parameter.html b/classstdex_1_1parser_1_1http__parameter.html index 5953a2756..15b002fa2 100644 --- a/classstdex_1_1parser_1_1http__parameter.html +++ b/classstdex_1_1parser_1_1http__parameter.html @@ -226,7 +226,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__protocol-members.html b/classstdex_1_1parser_1_1http__protocol-members.html index 7a774a4a1..ed4b70f2c 100644 --- a/classstdex_1_1parser_1_1http__protocol-members.html +++ b/classstdex_1_1parser_1_1http__protocol-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__protocol.html b/classstdex_1_1parser_1_1http__protocol.html index 06b5aab56..d030d9567 100644 --- a/classstdex_1_1parser_1_1http__protocol.html +++ b/classstdex_1_1parser_1_1http__protocol.html @@ -230,7 +230,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__quoted__string-members.html b/classstdex_1_1parser_1_1http__quoted__string-members.html index 529676473..5d09131d4 100644 --- a/classstdex_1_1parser_1_1http__quoted__string-members.html +++ b/classstdex_1_1parser_1_1http__quoted__string-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__quoted__string.html b/classstdex_1_1parser_1_1http__quoted__string.html index 863923bfa..8fb62f232 100644 --- a/classstdex_1_1parser_1_1http__quoted__string.html +++ b/classstdex_1_1parser_1_1http__quoted__string.html @@ -222,7 +222,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__request-members.html b/classstdex_1_1parser_1_1http__request-members.html index 94ab6b440..0328ea442 100644 --- a/classstdex_1_1parser_1_1http__request-members.html +++ b/classstdex_1_1parser_1_1http__request-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__request.html b/classstdex_1_1parser_1_1http__request.html index d993bd80f..31b26d3a8 100644 --- a/classstdex_1_1parser_1_1http__request.html +++ b/classstdex_1_1parser_1_1http__request.html @@ -230,7 +230,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__space-members.html b/classstdex_1_1parser_1_1http__space-members.html index da2a11304..2716bfce2 100644 --- a/classstdex_1_1parser_1_1http__space-members.html +++ b/classstdex_1_1parser_1_1http__space-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__space.html b/classstdex_1_1parser_1_1http__space.html index afb767bfe..c3925a778 100644 --- a/classstdex_1_1parser_1_1http__space.html +++ b/classstdex_1_1parser_1_1http__space.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1http__text__char-members.html b/classstdex_1_1parser_1_1http__text__char-members.html index a22109b3f..0ec7d9195 100644 --- a/classstdex_1_1parser_1_1http__text__char-members.html +++ b/classstdex_1_1parser_1_1http__text__char-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__text__char.html b/classstdex_1_1parser_1_1http__text__char.html index e826e21a6..715b244ef 100644 --- a/classstdex_1_1parser_1_1http__text__char.html +++ b/classstdex_1_1parser_1_1http__text__char.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1http__token-members.html b/classstdex_1_1parser_1_1http__token-members.html index b797da3ef..db801b754 100644 --- a/classstdex_1_1parser_1_1http__token-members.html +++ b/classstdex_1_1parser_1_1http__token-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__token.html b/classstdex_1_1parser_1_1http__token.html index 5f6913597..b794998ac 100644 --- a/classstdex_1_1parser_1_1http__token.html +++ b/classstdex_1_1parser_1_1http__token.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url-members.html b/classstdex_1_1parser_1_1http__url-members.html index ece2c94cb..35370484b 100644 --- a/classstdex_1_1parser_1_1http__url-members.html +++ b/classstdex_1_1parser_1_1http__url-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__url.html b/classstdex_1_1parser_1_1http__url.html index cde034032..524a96175 100644 --- a/classstdex_1_1parser_1_1http__url.html +++ b/classstdex_1_1parser_1_1http__url.html @@ -229,7 +229,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__parameter-members.html b/classstdex_1_1parser_1_1http__url__parameter-members.html index dc5151e88..a44d947e8 100644 --- a/classstdex_1_1parser_1_1http__url__parameter-members.html +++ b/classstdex_1_1parser_1_1http__url__parameter-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__url__parameter.html b/classstdex_1_1parser_1_1http__url__parameter.html index 56abb52c8..0c09c5781 100644 --- a/classstdex_1_1parser_1_1http__url__parameter.html +++ b/classstdex_1_1parser_1_1http__url__parameter.html @@ -220,7 +220,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__path-members.html b/classstdex_1_1parser_1_1http__url__path-members.html index 6a725d525..1b8e024d2 100644 --- a/classstdex_1_1parser_1_1http__url__path-members.html +++ b/classstdex_1_1parser_1_1http__url__path-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__url__path.html b/classstdex_1_1parser_1_1http__url__path.html index 326ce24f8..3b59f7d3a 100644 --- a/classstdex_1_1parser_1_1http__url__path.html +++ b/classstdex_1_1parser_1_1http__url__path.html @@ -218,7 +218,7 @@ std::locale m_locale 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 0d484f01b..ff420a14d 100644 --- a/classstdex_1_1parser_1_1http__url__path__segment-members.html +++ b/classstdex_1_1parser_1_1http__url__path__segment-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__url__path__segment.html b/classstdex_1_1parser_1_1http__url__path__segment.html index bce333187..8928d0c45 100644 --- a/classstdex_1_1parser_1_1http__url__path__segment.html +++ b/classstdex_1_1parser_1_1http__url__path__segment.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__port-members.html b/classstdex_1_1parser_1_1http__url__port-members.html index b90b0ede4..6490a810e 100644 --- a/classstdex_1_1parser_1_1http__url__port-members.html +++ b/classstdex_1_1parser_1_1http__url__port-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__url__port.html b/classstdex_1_1parser_1_1http__url__port.html index 43106b7df..988a1993b 100644 --- a/classstdex_1_1parser_1_1http__url__port.html +++ b/classstdex_1_1parser_1_1http__url__port.html @@ -220,7 +220,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__server-members.html b/classstdex_1_1parser_1_1http__url__server-members.html index 28ecd3641..f5d6463d1 100644 --- a/classstdex_1_1parser_1_1http__url__server-members.html +++ b/classstdex_1_1parser_1_1http__url__server-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__url__server.html b/classstdex_1_1parser_1_1http__url__server.html index 156cf6976..ed884c6f8 100644 --- a/classstdex_1_1parser_1_1http__url__server.html +++ b/classstdex_1_1parser_1_1http__url__server.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__value-members.html b/classstdex_1_1parser_1_1http__value-members.html index 4b11e60d9..883f132f7 100644 --- a/classstdex_1_1parser_1_1http__value-members.html +++ b/classstdex_1_1parser_1_1http__value-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__value.html b/classstdex_1_1parser_1_1http__value.html index 61e827503..69b9b5cec 100644 --- a/classstdex_1_1parser_1_1http__value.html +++ b/classstdex_1_1parser_1_1http__value.html @@ -222,7 +222,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__value__collection-members.html b/classstdex_1_1parser_1_1http__value__collection-members.html index 2371a020e..a9c36b946 100644 --- a/classstdex_1_1parser_1_1http__value__collection-members.html +++ b/classstdex_1_1parser_1_1http__value__collection-members.html @@ -84,7 +84,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__value__collection.html b/classstdex_1_1parser_1_1http__value__collection.html index d2a8ab712..b024f7826 100644 --- a/classstdex_1_1parser_1_1http__value__collection.html +++ b/classstdex_1_1parser_1_1http__value__collection.html @@ -107,7 +107,7 @@ class stdex::parser::http_value_collection< _Key, T >

Collection o

diff --git a/classstdex_1_1parser_1_1http__weight-members.html b/classstdex_1_1parser_1_1http__weight-members.html index e4c088eca..c93b4ea8f 100644 --- a/classstdex_1_1parser_1_1http__weight-members.html +++ b/classstdex_1_1parser_1_1http__weight-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__weight.html b/classstdex_1_1parser_1_1http__weight.html index 2693caa50..2cc6a4433 100644 --- a/classstdex_1_1parser_1_1http__weight.html +++ b/classstdex_1_1parser_1_1http__weight.html @@ -221,7 +221,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__weighted__value-members.html b/classstdex_1_1parser_1_1http__weighted__value-members.html index ee16d4167..99e518137 100644 --- a/classstdex_1_1parser_1_1http__weighted__value-members.html +++ b/classstdex_1_1parser_1_1http__weighted__value-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1http__weighted__value.html b/classstdex_1_1parser_1_1http__weighted__value.html index 2b1eeb83d..ef01661bc 100644 --- a/classstdex_1_1parser_1_1http__weighted__value.html +++ b/classstdex_1_1parser_1_1http__weighted__value.html @@ -231,7 +231,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1parser__collection-members.html b/classstdex_1_1parser_1_1parser__collection-members.html index 8439a6c82..68404b707 100644 --- a/classstdex_1_1parser_1_1parser__collection-members.html +++ b/classstdex_1_1parser_1_1parser__collection-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1parser__collection.html b/classstdex_1_1parser_1_1parser__collection.html index ce527579f..d38eeb47f 100644 --- a/classstdex_1_1parser_1_1parser__collection.html +++ b/classstdex_1_1parser_1_1parser__collection.html @@ -189,7 +189,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1sgml__any__cp-members.html b/classstdex_1_1parser_1_1sgml__any__cp-members.html index c17f0e820..1625944b5 100644 --- a/classstdex_1_1parser_1_1sgml__any__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__any__cp-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__any__cp.html b/classstdex_1_1parser_1_1sgml__any__cp.html index 9fe3aa7e5..7da64ec5d 100644 --- a/classstdex_1_1parser_1_1sgml__any__cp.html +++ b/classstdex_1_1parser_1_1sgml__any__cp.html @@ -196,7 +196,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__cp-members.html b/classstdex_1_1parser_1_1sgml__cp-members.html index c77f0867b..432819ad8 100644 --- a/classstdex_1_1parser_1_1sgml__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__cp-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__cp.html b/classstdex_1_1parser_1_1sgml__cp.html index 3244a9e82..63e3ee20d 100644 --- a/classstdex_1_1parser_1_1sgml__cp.html +++ b/classstdex_1_1parser_1_1sgml__cp.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1sgml__cp__set-members.html b/classstdex_1_1parser_1_1sgml__cp__set-members.html index a42b69199..f08b3d982 100644 --- a/classstdex_1_1parser_1_1sgml__cp__set-members.html +++ b/classstdex_1_1parser_1_1sgml__cp__set-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__cp__set.html b/classstdex_1_1parser_1_1sgml__cp__set.html index f4928e2c3..1116855a4 100644 --- a/classstdex_1_1parser_1_1sgml__cp__set.html +++ b/classstdex_1_1parser_1_1sgml__cp__set.html @@ -210,7 +210,7 @@ Additional Inherited Members 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 5763314fb..66c3a4af7 100644 --- a/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html +++ b/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__dns__domain__char.html b/classstdex_1_1parser_1_1sgml__dns__domain__char.html index d87d3ee21..e6b0bb559 100644 --- a/classstdex_1_1parser_1_1sgml__dns__domain__char.html +++ b/classstdex_1_1parser_1_1sgml__dns__domain__char.html @@ -205,7 +205,7 @@ std::locale m_locale 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 d35fdec09..f1fee2498 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 @@ -86,7 +86,7 @@ $(function() { 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 0f8ffc810..b4d2a8b42 100644 --- a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html @@ -187,7 +187,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__punct__cp-members.html b/classstdex_1_1parser_1_1sgml__punct__cp-members.html index 3b85a8e06..78056c7dc 100644 --- a/classstdex_1_1parser_1_1sgml__punct__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__punct__cp-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__punct__cp.html b/classstdex_1_1parser_1_1sgml__punct__cp.html index 05862051f..fff01540f 100644 --- a/classstdex_1_1parser_1_1sgml__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__punct__cp.html @@ -200,7 +200,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__space__cp-members.html b/classstdex_1_1parser_1_1sgml__space__cp-members.html index 9eee413b3..1ea894155 100644 --- a/classstdex_1_1parser_1_1sgml__space__cp-members.html +++ b/classstdex_1_1parser_1_1sgml__space__cp-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__space__cp.html b/classstdex_1_1parser_1_1sgml__space__cp.html index c22b7dc2b..2854437b5 100644 --- a/classstdex_1_1parser_1_1sgml__space__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__cp.html @@ -200,7 +200,7 @@ std::locale m_locale 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 5b9f5a258..c9fb78306 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 @@ -93,7 +93,7 @@ $(function() { 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 bbe268d85..ea13ff329 100644 --- a/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html @@ -200,7 +200,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__string-members.html b/classstdex_1_1parser_1_1sgml__string-members.html index 749b878b5..77c1425d6 100644 --- a/classstdex_1_1parser_1_1sgml__string-members.html +++ b/classstdex_1_1parser_1_1sgml__string-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__string.html b/classstdex_1_1parser_1_1sgml__string.html index de83203b4..04f9d7d07 100644 --- a/classstdex_1_1parser_1_1sgml__string.html +++ b/classstdex_1_1parser_1_1sgml__string.html @@ -194,7 +194,7 @@ Additional Inherited Members 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 669725140..0a4e49282 100644 --- a/classstdex_1_1parser_1_1sgml__url__password__char-members.html +++ b/classstdex_1_1parser_1_1sgml__url__password__char-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__url__password__char.html b/classstdex_1_1parser_1_1sgml__url__password__char.html index 40d271653..2962f1291 100644 --- a/classstdex_1_1parser_1_1sgml__url__password__char.html +++ b/classstdex_1_1parser_1_1sgml__url__password__char.html @@ -196,7 +196,7 @@ std::locale m_locale 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 cfa5d14c0..c0990bf04 100644 --- a/classstdex_1_1parser_1_1sgml__url__path__char-members.html +++ b/classstdex_1_1parser_1_1sgml__url__path__char-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__url__path__char.html b/classstdex_1_1parser_1_1sgml__url__path__char.html index 7e21ffd2c..8e805a1a3 100644 --- a/classstdex_1_1parser_1_1sgml__url__path__char.html +++ b/classstdex_1_1parser_1_1sgml__url__path__char.html @@ -196,7 +196,7 @@ std::locale m_locale 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 b4e55afcb..52b558dcb 100644 --- a/classstdex_1_1parser_1_1sgml__url__username__char-members.html +++ b/classstdex_1_1parser_1_1sgml__url__username__char-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1sgml__url__username__char.html b/classstdex_1_1parser_1_1sgml__url__username__char.html index 5e66f39bd..555542967 100644 --- a/classstdex_1_1parser_1_1sgml__url__username__char.html +++ b/classstdex_1_1parser_1_1sgml__url__username__char.html @@ -196,7 +196,7 @@ std::locale m_locale diff --git a/classstdex_1_1progress-members.html b/classstdex_1_1progress-members.html index dcc356248..e4d98cd73 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 002096709..b13852cb6 100644 --- a/classstdex_1_1progress.html +++ b/classstdex_1_1progress.html @@ -319,7 +319,7 @@ template<class T > diff --git a/classstdex_1_1progress__switcher-members.html b/classstdex_1_1progress__switcher-members.html index 86ebd233f..58f6171d2 100644 --- a/classstdex_1_1progress__switcher-members.html +++ b/classstdex_1_1progress__switcher-members.html @@ -100,7 +100,7 @@ $(function() { diff --git a/classstdex_1_1progress__switcher.html b/classstdex_1_1progress__switcher.html index 8dd610b6c..94c9dfdd6 100644 --- a/classstdex_1_1progress__switcher.html +++ b/classstdex_1_1progress__switcher.html @@ -163,7 +163,7 @@ class stdex::progress_switcher< T >

Progress indicator switcher. <

diff --git a/classstdex_1_1ring-members.html b/classstdex_1_1ring-members.html index 257b59188..369ded516 100644 --- a/classstdex_1_1ring-members.html +++ b/classstdex_1_1ring-members.html @@ -100,7 +100,7 @@ $(function() { diff --git a/classstdex_1_1ring.html b/classstdex_1_1ring.html index 285b77d0e..78384b753 100644 --- a/classstdex_1_1ring.html +++ b/classstdex_1_1ring.html @@ -296,7 +296,7 @@ template<class T , size_t CAPACITY> diff --git a/classstdex_1_1stream_1_1async__reader-members.html b/classstdex_1_1stream_1_1async__reader-members.html index d70524399..9d75603f8 100644 --- a/classstdex_1_1stream_1_1async__reader-members.html +++ b/classstdex_1_1stream_1_1async__reader-members.html @@ -150,7 +150,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1async__reader.html b/classstdex_1_1stream_1_1async__reader.html index 0d4e11972..451903873 100644 --- a/classstdex_1_1stream_1_1async__reader.html +++ b/classstdex_1_1stream_1_1async__reader.html @@ -390,7 +390,7 @@ template<size_t CAPACITY = default_async_limit> diff --git a/classstdex_1_1stream_1_1async__writer-members.html b/classstdex_1_1stream_1_1async__writer-members.html index a7f6b83f3..e29b43439 100644 --- a/classstdex_1_1stream_1_1async__writer-members.html +++ b/classstdex_1_1stream_1_1async__writer-members.html @@ -150,7 +150,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1async__writer.html b/classstdex_1_1stream_1_1async__writer.html index 36671900c..1b6f991d5 100644 --- a/classstdex_1_1stream_1_1async__writer.html +++ b/classstdex_1_1stream_1_1async__writer.html @@ -421,7 +421,7 @@ template<size_t CAPACITY = default_async_limit> diff --git a/classstdex_1_1stream_1_1basic-members.html b/classstdex_1_1stream_1_1basic-members.html index fc35b497e..93878122a 100644 --- a/classstdex_1_1stream_1_1basic-members.html +++ b/classstdex_1_1stream_1_1basic-members.html @@ -140,7 +140,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1basic.html b/classstdex_1_1stream_1_1basic.html index e4edd0fb7..71523d7be 100644 --- a/classstdex_1_1stream_1_1basic.html +++ b/classstdex_1_1stream_1_1basic.html @@ -1320,7 +1320,7 @@ template<class T > diff --git a/classstdex_1_1stream_1_1basic__file-members.html b/classstdex_1_1stream_1_1basic__file-members.html index c5c2f10a8..fe86ed324 100644 --- a/classstdex_1_1stream_1_1basic__file-members.html +++ b/classstdex_1_1stream_1_1basic__file-members.html @@ -156,7 +156,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1basic__file.html b/classstdex_1_1stream_1_1basic__file.html index 4e7dc7464..4f7350622 100644 --- a/classstdex_1_1stream_1_1basic__file.html +++ b/classstdex_1_1stream_1_1basic__file.html @@ -927,7 +927,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1basic__sys-members.html b/classstdex_1_1stream_1_1basic__sys-members.html index b433575ad..e48b9a202 100644 --- a/classstdex_1_1stream_1_1basic__sys-members.html +++ b/classstdex_1_1stream_1_1basic__sys-members.html @@ -152,7 +152,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1basic__sys.html b/classstdex_1_1stream_1_1basic__sys.html index dc1f199f5..aaaefe353 100644 --- a/classstdex_1_1stream_1_1basic__sys.html +++ b/classstdex_1_1stream_1_1basic__sys.html @@ -493,7 +493,7 @@ sys_handle m_h diff --git a/classstdex_1_1stream_1_1buffer-members.html b/classstdex_1_1stream_1_1buffer-members.html index 16d343e9e..7b639cdd5 100644 --- a/classstdex_1_1stream_1_1buffer-members.html +++ b/classstdex_1_1stream_1_1buffer-members.html @@ -151,7 +151,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1buffer.html b/classstdex_1_1stream_1_1buffer.html index be48ebcd9..d10f56f24 100644 --- a/classstdex_1_1stream_1_1buffer.html +++ b/classstdex_1_1stream_1_1buffer.html @@ -468,7 +468,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1buffered__sys-members.html b/classstdex_1_1stream_1_1buffered__sys-members.html index ceafc47a3..0438a7d19 100644 --- a/classstdex_1_1stream_1_1buffered__sys-members.html +++ b/classstdex_1_1stream_1_1buffered__sys-members.html @@ -153,7 +153,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1buffered__sys.html b/classstdex_1_1stream_1_1buffered__sys.html index 2ce21a3ea..52b02bb1c 100644 --- a/classstdex_1_1stream_1_1buffered__sys.html +++ b/classstdex_1_1stream_1_1buffered__sys.html @@ -344,7 +344,7 @@ void done () diff --git a/classstdex_1_1stream_1_1cache-members.html b/classstdex_1_1stream_1_1cache-members.html index 519adea54..e43af5e3d 100644 --- a/classstdex_1_1stream_1_1cache-members.html +++ b/classstdex_1_1stream_1_1cache-members.html @@ -168,7 +168,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1cache.html b/classstdex_1_1stream_1_1cache.html index 69d12ef45..1b03d25ff 100644 --- a/classstdex_1_1stream_1_1cache.html +++ b/classstdex_1_1stream_1_1cache.html @@ -933,7 +933,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1cached__file-members.html b/classstdex_1_1stream_1_1cached__file-members.html index a9a1b6c0d..09267d334 100644 --- a/classstdex_1_1stream_1_1cached__file-members.html +++ b/classstdex_1_1stream_1_1cached__file-members.html @@ -172,7 +172,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1cached__file.html b/classstdex_1_1stream_1_1cached__file.html index 68a6e85a5..5e2b2161c 100644 --- a/classstdex_1_1stream_1_1cached__file.html +++ b/classstdex_1_1stream_1_1cached__file.html @@ -499,7 +499,7 @@ void write_cache () diff --git a/classstdex_1_1stream_1_1converter-members.html b/classstdex_1_1stream_1_1converter-members.html index f98efee2e..58d26938a 100644 --- a/classstdex_1_1stream_1_1converter-members.html +++ b/classstdex_1_1stream_1_1converter-members.html @@ -145,7 +145,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1converter.html b/classstdex_1_1stream_1_1converter.html index 9d96068f0..9223a276c 100644 --- a/classstdex_1_1stream_1_1converter.html +++ b/classstdex_1_1stream_1_1converter.html @@ -480,7 +480,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1diag__file-members.html b/classstdex_1_1stream_1_1diag__file-members.html index 61cae9364..1ff6f66f2 100644 --- a/classstdex_1_1stream_1_1diag__file-members.html +++ b/classstdex_1_1stream_1_1diag__file-members.html @@ -159,7 +159,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1diag__file.html b/classstdex_1_1stream_1_1diag__file.html index 67750321b..7adaefe4b 100644 --- a/classstdex_1_1stream_1_1diag__file.html +++ b/classstdex_1_1stream_1_1diag__file.html @@ -720,7 +720,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1fifo-members.html b/classstdex_1_1stream_1_1fifo-members.html index c7fb7ae53..b4da654b9 100644 --- a/classstdex_1_1stream_1_1fifo-members.html +++ b/classstdex_1_1stream_1_1fifo-members.html @@ -147,7 +147,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1fifo.html b/classstdex_1_1stream_1_1fifo.html index 963d78dc5..33e5e8342 100644 --- a/classstdex_1_1stream_1_1fifo.html +++ b/classstdex_1_1stream_1_1fifo.html @@ -445,7 +445,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1file-members.html b/classstdex_1_1stream_1_1file-members.html index 5186d7fe2..b0e39dd04 100644 --- a/classstdex_1_1stream_1_1file-members.html +++ b/classstdex_1_1stream_1_1file-members.html @@ -175,7 +175,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1file.html b/classstdex_1_1stream_1_1file.html index 19d6cdf79..e8d323a34 100644 --- a/classstdex_1_1stream_1_1file.html +++ b/classstdex_1_1stream_1_1file.html @@ -877,7 +877,7 @@ sys_handle m_h diff --git a/classstdex_1_1stream_1_1file__window-members.html b/classstdex_1_1stream_1_1file__window-members.html index a86d10adc..7bc213a7a 100644 --- a/classstdex_1_1stream_1_1file__window-members.html +++ b/classstdex_1_1stream_1_1file__window-members.html @@ -160,7 +160,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1file__window.html b/classstdex_1_1stream_1_1file__window.html index a7e41321e..a1d3829bd 100644 --- a/classstdex_1_1stream_1_1file__window.html +++ b/classstdex_1_1stream_1_1file__window.html @@ -753,7 +753,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1limiter-members.html b/classstdex_1_1stream_1_1limiter-members.html index 342b3ba9c..fe45c6571 100644 --- a/classstdex_1_1stream_1_1limiter-members.html +++ b/classstdex_1_1stream_1_1limiter-members.html @@ -148,7 +148,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1limiter.html b/classstdex_1_1stream_1_1limiter.html index 5a43d897d..e4c2d5d51 100644 --- a/classstdex_1_1stream_1_1limiter.html +++ b/classstdex_1_1stream_1_1limiter.html @@ -429,7 +429,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1memory__file-members.html b/classstdex_1_1stream_1_1memory__file-members.html index 97733cba8..a7a2c5d57 100644 --- a/classstdex_1_1stream_1_1memory__file-members.html +++ b/classstdex_1_1stream_1_1memory__file-members.html @@ -197,7 +197,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1memory__file.html b/classstdex_1_1stream_1_1memory__file.html index 8810ca1c5..c3d2c6396 100644 --- a/classstdex_1_1stream_1_1memory__file.html +++ b/classstdex_1_1stream_1_1memory__file.html @@ -1465,7 +1465,7 @@ template<class T > diff --git a/classstdex_1_1stream_1_1replicator-members.html b/classstdex_1_1stream_1_1replicator-members.html index 2e58fca26..8b9906bc8 100644 --- a/classstdex_1_1stream_1_1replicator-members.html +++ b/classstdex_1_1stream_1_1replicator-members.html @@ -145,7 +145,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1replicator.html b/classstdex_1_1stream_1_1replicator.html index b67403141..61f98ec64 100644 --- a/classstdex_1_1stream_1_1replicator.html +++ b/classstdex_1_1stream_1_1replicator.html @@ -428,7 +428,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1replicator_1_1worker-members.html b/classstdex_1_1stream_1_1replicator_1_1worker-members.html index dee1a7975..168510ef9 100644 --- a/classstdex_1_1stream_1_1replicator_1_1worker-members.html +++ b/classstdex_1_1stream_1_1replicator_1_1worker-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1replicator_1_1worker.html b/classstdex_1_1stream_1_1replicator_1_1worker.html index f42ee041c..84b58175c 100644 --- a/classstdex_1_1stream_1_1replicator_1_1worker.html +++ b/classstdex_1_1stream_1_1replicator_1_1worker.html @@ -146,7 +146,7 @@ static void process_op diff --git a/classstdex_1_1stream_1_1window-members.html b/classstdex_1_1stream_1_1window-members.html index 857271388..7618d53af 100644 --- a/classstdex_1_1stream_1_1window-members.html +++ b/classstdex_1_1stream_1_1window-members.html @@ -151,7 +151,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1window.html b/classstdex_1_1stream_1_1window.html index 6bbbd3d4d..68d298bc1 100644 --- a/classstdex_1_1stream_1_1window.html +++ b/classstdex_1_1stream_1_1window.html @@ -438,7 +438,7 @@ state_t m_state diff --git a/classstdex_1_1sys__object-members.html b/classstdex_1_1sys__object-members.html index b0918355f..272f92696 100644 --- a/classstdex_1_1sys__object-members.html +++ b/classstdex_1_1sys__object-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1sys__object.html b/classstdex_1_1sys__object.html index 7c41cdad4..16853000f 100644 --- a/classstdex_1_1sys__object.html +++ b/classstdex_1_1sys__object.html @@ -182,7 +182,7 @@ sys_handle m_h diff --git a/classstdex_1_1user__cancelled-members.html b/classstdex_1_1user__cancelled-members.html index 5945c2ef1..bbef62d83 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 bddf9001f..3f72fe81f 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 2aad42379..be213d5a2 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 35dc81ebe..6aac74771 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 ddab2d79e..3e941e8c3 100644 --- a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html +++ b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html @@ -100,7 +100,7 @@ Files diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index d50bb08e0..46032d3ba 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 2e439a1d5..8841d0d59 100644 --- a/dir_fca3c47b2ea228727bd6729832f89576.html +++ b/dir_fca3c47b2ea228727bd6729832f89576.html @@ -128,7 +128,7 @@ Files diff --git a/endian_8hpp_source.html b/endian_8hpp_source.html index 85b94b19b..5428956b0 100644 --- a/endian_8hpp_source.html +++ b/endian_8hpp_source.html @@ -226,7 +226,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/errno_8hpp_source.html b/errno_8hpp_source.html index 964234bc0..f8bc84f9c 100644 --- a/errno_8hpp_source.html +++ b/errno_8hpp_source.html @@ -153,7 +153,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/exception_8hpp_source.html b/exception_8hpp_source.html index d1a249e74..910cf6017 100644 --- a/exception_8hpp_source.html +++ b/exception_8hpp_source.html @@ -110,7 +110,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/files.html b/files.html index 2af4360d9..5af974e30 100644 --- a/files.html +++ b/files.html @@ -113,7 +113,7 @@ $(function() { diff --git a/functions.html b/functions.html index 75ef02375..0f068df02 100644 --- a/functions.html +++ b/functions.html @@ -84,7 +84,7 @@ $(function() { diff --git a/functions_b.html b/functions_b.html index 6fa980c17..7f83a6453 100644 --- a/functions_b.html +++ b/functions_b.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_c.html b/functions_c.html index fafcaa2d4..cdc2cc9ed 100644 --- a/functions_c.html +++ b/functions_c.html @@ -92,7 +92,7 @@ $(function() { diff --git a/functions_d.html b/functions_d.html index f9f5ec06c..0e5974487 100644 --- a/functions_d.html +++ b/functions_d.html @@ -87,7 +87,7 @@ $(function() { diff --git a/functions_e.html b/functions_e.html index 01eb58ec2..0a8f5a531 100644 --- a/functions_e.html +++ b/functions_e.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_f.html b/functions_f.html index 96bee6f68..e4985eea7 100644 --- a/functions_f.html +++ b/functions_f.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_func.html b/functions_func.html index 4536cef6e..158ab827b 100644 --- a/functions_func.html +++ b/functions_func.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_func_b.html b/functions_func_b.html index eafcc12b5..8c9223371 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_c.html b/functions_func_c.html index f0d353af5..6d26d3dfa 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_d.html b/functions_func_d.html index 96489d624..eb640ce3c 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -84,7 +84,7 @@ $(function() { diff --git a/functions_func_e.html b/functions_func_e.html index 2efd2ccff..d4407ea19 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_f.html b/functions_func_f.html index fc13d0512..722f330e8 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_g.html b/functions_func_g.html index 66540acb8..949ecf0d8 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_h.html b/functions_func_h.html index d025e72f4..4d0192b27 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_i.html b/functions_func_i.html index acde441cf..58d62cff4 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_l.html b/functions_func_l.html index 7710a4b49..4c08ca741 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_m.html b/functions_func_m.html index fcf497b83..8036a065a 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_n.html b/functions_func_n.html index 199d07152..be8ee14f6 100644 --- a/functions_func_n.html +++ b/functions_func_n.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_o.html b/functions_func_o.html index 9a2ee8913..de88a2602 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_p.html b/functions_func_p.html index f9054dcd2..27dfb9f27 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_func_q.html b/functions_func_q.html index bcd3e4742..a44af224d 100644 --- a/functions_func_q.html +++ b/functions_func_q.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_func_r.html b/functions_func_r.html index fa19a1d4e..4fb66b2f2 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -89,7 +89,7 @@ $(function() { diff --git a/functions_func_s.html b/functions_func_s.html index 2982d0c50..a7f2ac497 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -97,7 +97,7 @@ $(function() { diff --git a/functions_func_t.html b/functions_func_t.html index ede0ea3d7..afc94db87 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_func_u.html b/functions_func_u.html index d020b003f..59dbcc2c1 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_v.html b/functions_func_v.html index 9d963b137..3e47d5ad3 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_func_w.html b/functions_func_w.html index 9af96fc92..d6207861d 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_func_~.html b/functions_func_~.html index 53e80e628..f6a44fae4 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_g.html b/functions_g.html index 793bb5082..928a545d0 100644 --- a/functions_g.html +++ b/functions_g.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_h.html b/functions_h.html index 2564687ac..b3f1604ad 100644 --- a/functions_h.html +++ b/functions_h.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_i.html b/functions_i.html index 5fa2bef06..d0f7a2e4e 100644 --- a/functions_i.html +++ b/functions_i.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_l.html b/functions_l.html index 24142173f..7b653206e 100644 --- a/functions_l.html +++ b/functions_l.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_m.html b/functions_m.html index ed5b0394b..84a5ef2f4 100644 --- a/functions_m.html +++ b/functions_m.html @@ -96,7 +96,7 @@ $(function() { diff --git a/functions_n.html b/functions_n.html index 359a9efa3..b5346b216 100644 --- a/functions_n.html +++ b/functions_n.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_o.html b/functions_o.html index 3887b27f8..3dbb00616 100644 --- a/functions_o.html +++ b/functions_o.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_p.html b/functions_p.html index 80326e740..5112f49e8 100644 --- a/functions_p.html +++ b/functions_p.html @@ -90,7 +90,7 @@ $(function() { diff --git a/functions_q.html b/functions_q.html index ba31a544f..b40bb8426 100644 --- a/functions_q.html +++ b/functions_q.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_r.html b/functions_r.html index b34f39b9a..ae542cfbe 100644 --- a/functions_r.html +++ b/functions_r.html @@ -93,7 +93,7 @@ $(function() { diff --git a/functions_s.html b/functions_s.html index 4335a3a85..4fc23cf14 100644 --- a/functions_s.html +++ b/functions_s.html @@ -103,7 +103,7 @@ $(function() { diff --git a/functions_t.html b/functions_t.html index 9581b22fd..9dd12b841 100644 --- a/functions_t.html +++ b/functions_t.html @@ -84,7 +84,7 @@ $(function() { diff --git a/functions_type.html b/functions_type.html index 6266d1fd2..c7df296b3 100644 --- a/functions_type.html +++ b/functions_type.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_u.html b/functions_u.html index e4d047c02..41810b4d8 100644 --- a/functions_u.html +++ b/functions_u.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_v.html b/functions_v.html index e64fea59f..6084f98ef 100644 --- a/functions_v.html +++ b/functions_v.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_vars.html b/functions_vars.html index e6634494e..8fb7d77e2 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -213,7 +213,7 @@ $(function() { diff --git a/functions_w.html b/functions_w.html index 4f7ba0192..3662faed8 100644 --- a/functions_w.html +++ b/functions_w.html @@ -88,7 +88,7 @@ $(function() { diff --git a/functions_~.html b/functions_~.html index 7af5d50a7..b89a36c94 100644 --- a/functions_~.html +++ b/functions_~.html @@ -78,7 +78,7 @@ $(function() { diff --git a/hex_8hpp_source.html b/hex_8hpp_source.html index c512f0d14..366909111 100644 --- a/hex_8hpp_source.html +++ b/hex_8hpp_source.html @@ -232,7 +232,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/hierarchy.html b/hierarchy.html index 698c2eea0..7bf1f355e 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -236,7 +236,7 @@ $(function() { diff --git a/idrec_8hpp_source.html b/idrec_8hpp_source.html index f5d2ffe8e..6872aeee9 100644 --- a/idrec_8hpp_source.html +++ b/idrec_8hpp_source.html @@ -421,7 +421,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/include_2stdex_2compat_8hpp_source.html b/include_2stdex_2compat_8hpp_source.html index 5c1b052ee..cbcdc6731 100644 --- a/include_2stdex_2compat_8hpp_source.html +++ b/include_2stdex_2compat_8hpp_source.html @@ -282,7 +282,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/index.html b/index.html index 668737121..21c16c982 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 d551dc590..573dfb6af 100644 --- a/interval_8hpp_source.html +++ b/interval_8hpp_source.html @@ -202,7 +202,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/mapping_8hpp_source.html b/mapping_8hpp_source.html index c0734e7b1..6f32b3cc2 100644 --- a/mapping_8hpp_source.html +++ b/mapping_8hpp_source.html @@ -124,7 +124,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/math_8cpp_source.html b/math_8cpp_source.html index 035be17b1..c1ea134e7 100644 --- a/math_8cpp_source.html +++ b/math_8cpp_source.html @@ -129,7 +129,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/math_8hpp_source.html b/math_8hpp_source.html index a184e45ae..dd1d62afa 100644 --- a/math_8hpp_source.html +++ b/math_8hpp_source.html @@ -134,7 +134,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/memory_8hpp_source.html b/memory_8hpp_source.html index 5a9689f14..19839f878 100644 --- a/memory_8hpp_source.html +++ b/memory_8hpp_source.html @@ -128,7 +128,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/parser_8cpp_source.html b/parser_8cpp_source.html index 157beda5f..bc97f608b 100644 --- a/parser_8cpp_source.html +++ b/parser_8cpp_source.html @@ -589,8 +589,8 @@ $(document).ready(function() { init_codefold(0); });
stdex::parser::basic_parser< char >
stdex::parser::basic_parser::interval
interval< size_t > interval
Region of the last match.
Definition parser.hpp:170
stdex::parser::basic_string
Test for given string.
Definition parser.hpp:816
-
stdex::parser::http_header
Test for HTTP header.
Definition parser.hpp:7149
-
stdex::parser::http_request
Test for HTTP request.
Definition parser.hpp:7011
+
stdex::parser::http_header
Test for HTTP header.
Definition parser.hpp:7148
+
stdex::parser::http_request
Test for HTTP request.
Definition parser.hpp:7010
stdex::parser::sgml_cp
Test for specific SGML code point.
Definition parser.hpp:341
stdex::parser::sgml_space_cp
Test for any SGML space code point.
Definition parser.hpp:428
stdex::interval
Numerical interval.
Definition interval.hpp:18
@@ -600,7 +600,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/parser_8hpp_source.html b/parser_8hpp_source.html index aa8006a24..0ea1d1dee 100644 --- a/parser_8hpp_source.html +++ b/parser_8hpp_source.html @@ -4879,2567 +4879,2566 @@ $(document).ready(function() { init_codefold(0); });
4861 else
4862 goto error; // invalid bban
4863 }
-
4864 out:
-
4865 this->bban[n] = 0;
-
4866
-
4867 // Normalize IBAN.
-
4868 T normalized[69];
-
4869 available = 0;
-
4870 for (size_t i = 0; ; ++i) {
-
4871 if (!this->bban[i]) {
-
4872 for (i = 0; i < 2; ++i) {
-
4873 if ('A' <= this->country[i] && this->country[i] <= 'J') {
-
4874 normalized[available++] = '1';
-
4875 normalized[available++] = '0' + this->country[i] - 'A';
-
4876 }
-
4877 else if ('K' <= this->country[i] && this->country[i] <= 'T') {
-
4878 normalized[available++] = '2';
-
4879 normalized[available++] = '0' + this->country[i] - 'K';
-
4880 }
-
4881 else if ('U' <= this->country[i] && this->country[i] <= 'Z') {
-
4882 normalized[available++] = '3';
-
4883 normalized[available++] = '0' + this->country[i] - 'U';
-
4884 }
-
4885 }
-
4886 normalized[available++] = this->check_digits[0];
-
4887 normalized[available++] = this->check_digits[1];
-
4888 normalized[available] = 0;
-
4889 break;
-
4890 }
-
4891 if ('0' <= this->bban[i] && this->bban[i] <= '9')
-
4892 normalized[available++] = this->bban[i];
-
4893 else if ('A' <= this->bban[i] && this->bban[i] <= 'J') {
-
4894 normalized[available++] = '1';
-
4895 normalized[available++] = '0' + this->bban[i] - 'A';
-
4896 }
-
4897 else if ('K' <= this->bban[i] && this->bban[i] <= 'T') {
-
4898 normalized[available++] = '2';
-
4899 normalized[available++] = '0' + this->bban[i] - 'K';
-
4900 }
-
4901 else if ('U' <= this->bban[i] && this->bban[i] <= 'Z') {
-
4902 normalized[available++] = '3';
-
4903 normalized[available++] = '0' + this->bban[i] - 'U';
-
4904 }
-
4905 }
-
4906
-
4907 // Calculate modulo 97.
-
4908 nominator = stdex::strtou32(normalized, 9, &next, 10);
-
4909 for (;;) {
-
4910 nominator %= 97;
-
4911 if (!normalized[next]) {
-
4912 this->is_valid = nominator == 1;
-
4913 break;
-
4914 }
-
4915 size_t digit_count = nominator == 0 ? 0 : nominator < 10 ? 1 : 2;
-
4916 for (; digit_count < 9 && normalized[next]; ++next, ++digit_count)
-
4917 nominator = nominator * 10 + (normalized[next] - '0');
-
4918 }
-
4919
-
4920 this->interval.start = start;
-
4921 return true;
-
4922
-
4923 error:
-
4924 this->country[0] = 0;
-
4925 this->check_digits[0] = 0;
-
4926 this->bban[0] = 0;
-
4927 this->is_valid = false;
-
4928 this->interval.start = (this->interval.end = start) + 1;
-
4929 return false;
-
4930 }
-
4931
-
4932 virtual void invalidate()
-
4933 {
-
4934 this->country[0] = 0;
-
4935 this->check_digits[0] = 0;
-
4936 this->bban[0] = 0;
-
4937 this->is_valid = false;
-
4938 basic_parser<T>::invalidate();
-
4939 }
-
4940
-
4941 public:
-
4942 T country[3];
-
4943 T check_digits[3];
-
4944 T bban[31];
-
4945 bool is_valid;
-
4946
-
4947 protected:
-
4948 std::shared_ptr<basic_parser<T>> m_space;
-
4949 };
+
4864 this->bban[n] = 0;
+
4865
+
4866 // Normalize IBAN.
+
4867 T normalized[69];
+
4868 available = 0;
+
4869 for (size_t i = 0; ; ++i) {
+
4870 if (!this->bban[i]) {
+
4871 for (i = 0; i < 2; ++i) {
+
4872 if ('A' <= this->country[i] && this->country[i] <= 'J') {
+
4873 normalized[available++] = '1';
+
4874 normalized[available++] = '0' + this->country[i] - 'A';
+
4875 }
+
4876 else if ('K' <= this->country[i] && this->country[i] <= 'T') {
+
4877 normalized[available++] = '2';
+
4878 normalized[available++] = '0' + this->country[i] - 'K';
+
4879 }
+
4880 else if ('U' <= this->country[i] && this->country[i] <= 'Z') {
+
4881 normalized[available++] = '3';
+
4882 normalized[available++] = '0' + this->country[i] - 'U';
+
4883 }
+
4884 }
+
4885 normalized[available++] = this->check_digits[0];
+
4886 normalized[available++] = this->check_digits[1];
+
4887 normalized[available] = 0;
+
4888 break;
+
4889 }
+
4890 if ('0' <= this->bban[i] && this->bban[i] <= '9')
+
4891 normalized[available++] = this->bban[i];
+
4892 else if ('A' <= this->bban[i] && this->bban[i] <= 'J') {
+
4893 normalized[available++] = '1';
+
4894 normalized[available++] = '0' + this->bban[i] - 'A';
+
4895 }
+
4896 else if ('K' <= this->bban[i] && this->bban[i] <= 'T') {
+
4897 normalized[available++] = '2';
+
4898 normalized[available++] = '0' + this->bban[i] - 'K';
+
4899 }
+
4900 else if ('U' <= this->bban[i] && this->bban[i] <= 'Z') {
+
4901 normalized[available++] = '3';
+
4902 normalized[available++] = '0' + this->bban[i] - 'U';
+
4903 }
+
4904 }
+
4905
+
4906 // Calculate modulo 97.
+
4907 nominator = stdex::strtou32(normalized, 9, &next, 10);
+
4908 for (;;) {
+
4909 nominator %= 97;
+
4910 if (!normalized[next]) {
+
4911 this->is_valid = nominator == 1;
+
4912 break;
+
4913 }
+
4914 size_t digit_count = nominator == 0 ? 0 : nominator < 10 ? 1 : 2;
+
4915 for (; digit_count < 9 && normalized[next]; ++next, ++digit_count)
+
4916 nominator = nominator * 10 + (normalized[next] - '0');
+
4917 }
+
4918
+
4919 this->interval.start = start;
+
4920 return true;
+
4921
+
4922 error:
+
4923 this->country[0] = 0;
+
4924 this->check_digits[0] = 0;
+
4925 this->bban[0] = 0;
+
4926 this->is_valid = false;
+
4927 this->interval.start = (this->interval.end = start) + 1;
+
4928 return false;
+
4929 }
+
4930
+
4931 virtual void invalidate()
+
4932 {
+
4933 this->country[0] = 0;
+
4934 this->check_digits[0] = 0;
+
4935 this->bban[0] = 0;
+
4936 this->is_valid = false;
+
4937 basic_parser<T>::invalidate();
+
4938 }
+
4939
+
4940 public:
+
4941 T country[3];
+
4942 T check_digits[3];
+
4943 T bban[31];
+
4944 bool is_valid;
+
4945
+
4946 protected:
+
4947 std::shared_ptr<basic_parser<T>> m_space;
+
4948 };
-
4950
-
4951 using iban = basic_iban<char>;
-
4952 using wiban = basic_iban<wchar_t>;
-
4953#ifdef _UNICODE
-
4954 using tiban = wiban;
-
4955#else
-
4956 using tiban = iban;
-
4957#endif
-
4958 using sgml_iban = basic_iban<char>;
-
4959
-
4965 template <class T>
-
-
4966 class basic_creditor_reference : public basic_parser<T>
-
4967 {
-
4968 public:
-
4969 basic_creditor_reference(
-
4970 _In_ const std::shared_ptr<basic_parser<T>>& space,
-
4971 _In_ const std::locale& locale = std::locale()) :
-
4972 basic_parser<T>(locale),
-
4973 m_space(space)
-
4974 {
-
4975 this->check_digits[0] = 0;
-
4976 this->reference[0] = 0;
-
4977 this->is_valid = false;
-
4978 }
-
4979
-
4980 virtual bool match(
-
4981 _In_reads_or_z_(end) const T* text,
-
4982 _In_ size_t start = 0,
-
4983 _In_ size_t end = (size_t)-1,
-
4984 _In_ int flags = match_default)
-
4985 {
-
4986 assert(text || start >= end);
-
4987 const auto& ctype = std::use_facet<std::ctype<T>>(this->m_locale);
-
4988 const bool case_insensitive = flags & match_case_insensitive ? true : false;
-
4989 size_t n, available, next;
-
4990 uint32_t nominator;
-
4991
-
4992 this->interval.end = start;
-
4993 if (this->interval.end + 1 >= end ||
-
4994 (case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end]) != 'R' ||
-
4995 (case_insensitive ? ctype.toupper(text[this->interval.end + 1]) : text[this->interval.end + 1]) != 'F')
-
4996 goto error; // incomplete or wrong reference ID
-
4997 this->interval.end += 2;
-
4998
-
4999 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
-
5000 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
-
5001 goto error; // incomplete or invalid check digits
-
5002 this->check_digits[i] = text[this->interval.end];
-
5003 }
-
5004 this->check_digits[2] = 0;
-
5005
-
5006 for (n = 0;;) {
-
5007 if (m_space && m_space->match(text, this->interval.end, end, flags))
-
5008 this->interval.end = m_space->interval.end;
-
5009 for (size_t j = 0; j < 4; ++j) {
-
5010 if (this->interval.end >= end || !text[this->interval.end])
-
5011 goto out;
-
5012 T chr = case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end];
-
5013 if (('0' <= chr && chr <= '9') || ('A' <= chr && chr <= 'Z')) {
-
5014 if (n >= _countof(reference) - 1)
-
5015 goto error; // reference overflow
-
5016 this->reference[n++] = chr;
-
5017 this->interval.end++;
-
5018 }
-
5019 else
-
5020 goto out;
-
5021 }
-
5022 }
-
5023 out:
-
5024 if (!n)
-
5025 goto error; // reference too short
-
5026 this->reference[_countof(this->reference) - 1] = 0;
-
5027 for (size_t i = n, j = _countof(this->reference) - 1; i;)
-
5028 this->reference[--j] = this->reference[--i];
-
5029 for (size_t j = _countof(this->reference) - 1 - n; j;)
-
5030 this->reference[--j] = '0';
-
5031
-
5032 // Normalize creditor reference.
-
5033 T normalized[47];
-
5034 available = 0;
-
5035 for (size_t i = 0; ; ++i) {
-
5036 if (!this->reference[i]) {
-
5037 normalized[available++] = '2'; // R
-
5038 normalized[available++] = '7';
-
5039 normalized[available++] = '1'; // F
-
5040 normalized[available++] = '5';
-
5041 normalized[available++] = this->check_digits[0];
-
5042 normalized[available++] = this->check_digits[1];
-
5043 normalized[available] = 0;
-
5044 break;
-
5045 }
-
5046 if ('0' <= this->reference[i] && this->reference[i] <= '9')
-
5047 normalized[available++] = this->reference[i];
-
5048 else if ('A' <= this->reference[i] && this->reference[i] <= 'J') {
-
5049 normalized[available++] = '1';
-
5050 normalized[available++] = '0' + this->reference[i] - 'A';
-
5051 }
-
5052 else if ('K' <= this->reference[i] && this->reference[i] <= 'T') {
-
5053 normalized[available++] = '2';
-
5054 normalized[available++] = '0' + this->reference[i] - 'K';
-
5055 }
-
5056 else if ('U' <= this->reference[i] && this->reference[i] <= 'Z') {
-
5057 normalized[available++] = '3';
-
5058 normalized[available++] = '0' + this->reference[i] - 'U';
-
5059 }
-
5060 }
-
5061
-
5062 // Calculate modulo 97.
-
5063 nominator = stdex::strtou32(normalized, 9, &next, 10);
-
5064 for (;;) {
-
5065 nominator %= 97;
-
5066 if (!normalized[next]) {
-
5067 this->is_valid = nominator == 1;
-
5068 break;
-
5069 }
-
5070 size_t digit_count = nominator == 0 ? 0 : nominator < 10 ? 1 : 2;
-
5071 for (; digit_count < 9 && normalized[next]; ++next, ++digit_count)
-
5072 nominator = nominator * 10 + (normalized[next] - '0');
-
5073 }
-
5074
-
5075 this->interval.start = start;
-
5076 return true;
-
5077
-
5078 error:
-
5079 this->check_digits[0] = 0;
-
5080 this->reference[0] = 0;
-
5081 this->is_valid = false;
-
5082 this->interval.start = (this->interval.end = start) + 1;
-
5083 return false;
-
5084 }
-
5085
-
5086 virtual void invalidate()
-
5087 {
-
5088 this->check_digits[0] = 0;
-
5089 this->reference[0] = 0;
-
5090 this->is_valid = false;
-
5091 basic_parser<T>::invalidate();
-
5092 }
-
5093
-
5094 public:
-
5095 T check_digits[3];
-
5096 T reference[22];
-
5097 bool is_valid;
-
5098
-
5099 protected:
-
5100 std::shared_ptr<basic_parser<T>> m_space;
-
5101 };
+
4949
+
4950 using iban = basic_iban<char>;
+
4951 using wiban = basic_iban<wchar_t>;
+
4952#ifdef _UNICODE
+
4953 using tiban = wiban;
+
4954#else
+
4955 using tiban = iban;
+
4956#endif
+
4957 using sgml_iban = basic_iban<char>;
+
4958
+
4964 template <class T>
+
+ +
4966 {
+
4967 public:
+ +
4969 _In_ const std::shared_ptr<basic_parser<T>>& space,
+
4970 _In_ const std::locale& locale = std::locale()) :
+
4971 basic_parser<T>(locale),
+
4972 m_space(space)
+
4973 {
+
4974 this->check_digits[0] = 0;
+
4975 this->reference[0] = 0;
+
4976 this->is_valid = false;
+
4977 }
+
4978
+
4979 virtual bool match(
+
4980 _In_reads_or_z_(end) const T* text,
+
4981 _In_ size_t start = 0,
+
4982 _In_ size_t end = (size_t)-1,
+
4983 _In_ int flags = match_default)
+
4984 {
+
4985 assert(text || start >= end);
+
4986 const auto& ctype = std::use_facet<std::ctype<T>>(this->m_locale);
+
4987 const bool case_insensitive = flags & match_case_insensitive ? true : false;
+
4988 size_t n, available, next;
+ +
4990
+
4991 this->interval.end = start;
+
4992 if (this->interval.end + 1 >= end ||
+
4993 (case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end]) != 'R' ||
+
4994 (case_insensitive ? ctype.toupper(text[this->interval.end + 1]) : text[this->interval.end + 1]) != 'F')
+
4995 goto error; // incomplete or wrong reference ID
+
4996 this->interval.end += 2;
+
4997
+
4998 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
+
4999 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
+
5000 goto error; // incomplete or invalid check digits
+
5001 this->check_digits[i] = text[this->interval.end];
+
5002 }
+
5003 this->check_digits[2] = 0;
+
5004
+
5005 for (n = 0;;) {
+
5006 if (m_space && m_space->match(text, this->interval.end, end, flags))
+
5007 this->interval.end = m_space->interval.end;
+
5008 for (size_t j = 0; j < 4; ++j) {
+
5009 if (this->interval.end >= end || !text[this->interval.end])
+
5010 goto out;
+
5011 T chr = case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end];
+
5012 if (('0' <= chr && chr <= '9') || ('A' <= chr && chr <= 'Z')) {
+
5013 if (n >= _countof(reference) - 1)
+
5014 goto error; // reference overflow
+
5015 this->reference[n++] = chr;
+
5016 this->interval.end++;
+
5017 }
+
5018 else
+
5019 goto out;
+
5020 }
+
5021 }
+
5022 out:
+
5023 if (!n)
+
5024 goto error; // reference too short
+
5025 this->reference[_countof(this->reference) - 1] = 0;
+
5026 for (size_t i = n, j = _countof(this->reference) - 1; i;)
+
5027 this->reference[--j] = this->reference[--i];
+
5028 for (size_t j = _countof(this->reference) - 1 - n; j;)
+
5029 this->reference[--j] = '0';
+
5030
+
5031 // Normalize creditor reference.
+
5032 T normalized[47];
+
5033 available = 0;
+
5034 for (size_t i = 0; ; ++i) {
+
5035 if (!this->reference[i]) {
+
5036 normalized[available++] = '2'; // R
+
5037 normalized[available++] = '7';
+
5038 normalized[available++] = '1'; // F
+
5039 normalized[available++] = '5';
+
5040 normalized[available++] = this->check_digits[0];
+
5041 normalized[available++] = this->check_digits[1];
+
5042 normalized[available] = 0;
+
5043 break;
+
5044 }
+
5045 if ('0' <= this->reference[i] && this->reference[i] <= '9')
+
5046 normalized[available++] = this->reference[i];
+
5047 else if ('A' <= this->reference[i] && this->reference[i] <= 'J') {
+
5048 normalized[available++] = '1';
+
5049 normalized[available++] = '0' + this->reference[i] - 'A';
+
5050 }
+
5051 else if ('K' <= this->reference[i] && this->reference[i] <= 'T') {
+
5052 normalized[available++] = '2';
+
5053 normalized[available++] = '0' + this->reference[i] - 'K';
+
5054 }
+
5055 else if ('U' <= this->reference[i] && this->reference[i] <= 'Z') {
+
5056 normalized[available++] = '3';
+
5057 normalized[available++] = '0' + this->reference[i] - 'U';
+
5058 }
+
5059 }
+
5060
+
5061 // Calculate modulo 97.
+
5062 nominator = stdex::strtou32(normalized, 9, &next, 10);
+
5063 for (;;) {
+
5064 nominator %= 97;
+
5065 if (!normalized[next]) {
+
5066 this->is_valid = nominator == 1;
+
5067 break;
+
5068 }
+
5069 size_t digit_count = nominator == 0 ? 0 : nominator < 10 ? 1 : 2;
+
5070 for (; digit_count < 9 && normalized[next]; ++next, ++digit_count)
+
5071 nominator = nominator * 10 + (normalized[next] - '0');
+
5072 }
+
5073
+
5074 this->interval.start = start;
+
5075 return true;
+
5076
+
5077 error:
+
5078 this->check_digits[0] = 0;
+
5079 this->reference[0] = 0;
+
5080 this->is_valid = false;
+
5081 this->interval.start = (this->interval.end = start) + 1;
+
5082 return false;
+
5083 }
+
5084
+
5085 virtual void invalidate()
+
5086 {
+
5087 this->check_digits[0] = 0;
+
5088 this->reference[0] = 0;
+
5089 this->is_valid = false;
+ +
5091 }
+
5092
+
5093 public:
+ + + +
5097
+
5098 protected:
+
5099 std::shared_ptr<basic_parser<T>> m_space;
+
5100 };
-
5102
-
5103 using creditor_reference = basic_creditor_reference<char>;
-
5104 using wcreditor_reference = basic_creditor_reference<wchar_t>;
-
5105#ifdef _UNICODE
-
5106 using tcreditor_reference = wcreditor_reference;
-
5107#else
-
5108 using tcreditor_reference = creditor_reference;
-
5109#endif
-
5110 using sgml_creditor_reference = basic_creditor_reference<char>;
-
5111
-
5117 template <class T>
-
- -
5119 {
-
5120 public:
-
5121 basic_si_reference_part(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
-
5122
-
5123 virtual bool match(
-
5124 _In_reads_or_z_(end) const T* text,
-
5125 _In_ size_t start = 0,
-
5126 _In_ size_t end = (size_t)-1,
-
5127 _In_ int flags = match_default)
-
5128 {
-
5129 assert(text || start >= end);
-
5130 this->interval.end = start;
-
5131 for (;;) {
-
5132 if (this->interval.end >= end || !text[this->interval.end])
-
5133 break;
-
5134 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9')
-
5135 this->interval.end++;
-
5136 else
-
5137 break;
-
5138 }
- -
5140 this->interval.start = start;
-
5141 return true;
-
5142 }
-
5143 this->interval.start = (this->interval.end = start) + 1;
-
5144 return false;
-
5145 }
-
5146 };
+
5101
+ + +
5104#ifdef _UNICODE
+ +
5106#else
+ +
5108#endif
+ +
5110
+
5116 template <class T>
+
+ +
5118 {
+
5119 public:
+
5120 basic_si_reference_part(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
+
5121
+
5122 virtual bool match(
+
5123 _In_reads_or_z_(end) const T* text,
+
5124 _In_ size_t start = 0,
+
5125 _In_ size_t end = (size_t)-1,
+
5126 _In_ int flags = match_default)
+
5127 {
+
5128 assert(text || start >= end);
+
5129 this->interval.end = start;
+
5130 for (;;) {
+
5131 if (this->interval.end >= end || !text[this->interval.end])
+
5132 break;
+
5133 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9')
+
5134 this->interval.end++;
+
5135 else
+
5136 break;
+
5137 }
+ +
5139 this->interval.start = start;
+
5140 return true;
+
5141 }
+
5142 this->interval.start = (this->interval.end = start) + 1;
+
5143 return false;
+
5144 }
+
5145 };
-
5147
- - -
5150#ifdef _UNICODE
- -
5152#else
- -
5154#endif
- -
5156
-
5162 template <class T>
-
- -
5164 {
-
5165 public:
-
5166 basic_si_reference_delimiter(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
-
5167
-
5168 virtual bool match(
-
5169 _In_reads_or_z_(end) const T* text,
-
5170 _In_ size_t start = 0,
-
5171 _In_ size_t end = (size_t)-1,
-
5172 _In_ int flags = match_default)
-
5173 {
-
5174 assert(text || start >= end);
-
5175 if (start < end && text[start] == '-') {
-
5176 this->interval.end = (this->interval.start = start) + 1;
-
5177 return true;
-
5178 }
-
5179 this->interval.start = (this->interval.end = start) + 1;
-
5180 return false;
-
5181 }
-
5182 };
+
5146
+ + +
5149#ifdef _UNICODE
+ +
5151#else
+ +
5153#endif
+ +
5155
+
5161 template <class T>
+
+ +
5163 {
+
5164 public:
+
5165 basic_si_reference_delimiter(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
+
5166
+
5167 virtual bool match(
+
5168 _In_reads_or_z_(end) const T* text,
+
5169 _In_ size_t start = 0,
+
5170 _In_ size_t end = (size_t)-1,
+
5171 _In_ int flags = match_default)
+
5172 {
+
5173 assert(text || start >= end);
+
5174 if (start < end && text[start] == '-') {
+
5175 this->interval.end = (this->interval.start = start) + 1;
+
5176 return true;
+
5177 }
+
5178 this->interval.start = (this->interval.end = start) + 1;
+
5179 return false;
+
5180 }
+
5181 };
-
5183
- - -
5186#ifdef _UNICODE
- -
5188#else
- -
5190#endif
- -
5192
-
5200 template <class T>
-
- -
5202 {
-
5203 public:
- -
5205 _In_ const std::shared_ptr<basic_parser<T>>& space,
-
5206 _In_ const std::locale& locale = std::locale()) :
-
5207 basic_parser<T>(locale),
-
5208 part1(locale),
-
5209 part2(locale),
-
5210 part3(locale),
-
5211 is_valid(false),
-
5212 m_space(space),
-
5213 m_delimiter(locale)
-
5214 {
-
5215 this->model[0] = 0;
-
5216 }
-
5217
-
5218 virtual bool match(
-
5219 _In_reads_or_z_(end) const T* text,
-
5220 _In_ size_t start = 0,
-
5221 _In_ size_t end = (size_t)-1,
-
5222 _In_ int flags = match_default)
-
5223 {
-
5224 assert(text || start >= end);
-
5225 const auto& ctype = std::use_facet<std::ctype<T>>(this->m_locale);
-
5226 const bool case_insensitive = flags & match_case_insensitive ? true : false;
-
5227
-
5228 this->interval.end = start;
-
5229 if (this->interval.end + 1 >= end ||
-
5230 (case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end]) != 'S' ||
-
5231 (case_insensitive ? ctype.toupper(text[this->interval.end + 1]) : text[this->interval.end + 1]) != 'I')
-
5232 goto error; // incomplete or wrong reference ID
-
5233 this->interval.end += 2;
-
5234
-
5235 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
-
5236 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
-
5237 goto error; // incomplete or invalid model
-
5238 this->model[i] = text[this->interval.end];
-
5239 }
-
5240 this->model[2] = 0;
-
5241
-
5242 this->part1.invalidate();
-
5243 this->part2.invalidate();
-
5244 this->part3.invalidate();
-
5245 if (this->model[0] == '9' && this->model[1] == '9') {
-
5246 is_valid = true;
-
5247 this->interval.start = start;
-
5248 return true;
-
5249 }
-
5250
-
5251 if (m_space && m_space->match(text, this->interval.end, end, flags))
-
5252 this->interval.end = m_space->interval.end;
-
5253
-
5254 this->part1.match(text, this->interval.end, end, flags) &&
-
5255 this->m_delimiter.match(text, this->part1.interval.end, end, flags) &&
-
5256 this->part2.match(text, this->m_delimiter.interval.end, end, flags) &&
-
5257 this->m_delimiter.match(text, this->part2.interval.end, end, flags) &&
-
5258 this->part3.match(text, this->m_delimiter.interval.end, end, flags);
-
5259
-
5260 this->interval.start = start;
-
5261 if (this->part3.interval)
-
5262 this->interval.end = this->part3.interval.end;
-
5263 else if (this->part2.interval)
-
5264 this->interval.end = this->part2.interval.end;
-
5265 else if (this->part1.interval)
-
5266 this->interval.end = this->part1.interval.end;
-
5267 else
-
5268 this->interval.end = start + 4;
-
5269
-
5270 if (this->model[0] == '0' && this->model[1] == '0')
-
5271 is_valid =
-
5272 this->part3.interval ?
-
5273 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5274 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 :
-
5275 this->part2.interval ?
-
5276 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5277 this->part1.interval.size() + this->part2.interval.size() <= 20 :
-
5278 this->part1.interval ?
-
5279 this->part1.interval.size() <= 12 :
-
5280 false;
-
5281 else if (this->model[0] == '0' && this->model[1] == '1')
-
5282 is_valid =
-
5283 this->part3.interval ?
-
5284 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5285 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5286 check11(
-
5287 text + this->part1.interval.start, this->part1.interval.size(),
-
5288 text + this->part2.interval.start, this->part2.interval.size(),
-
5289 text + this->part3.interval.start, this->part3.interval.size()) :
-
5290 this->part2.interval ?
-
5291 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5292 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5293 check11(
-
5294 text + this->part1.interval.start, this->part1.interval.size(),
-
5295 text + this->part2.interval.start, this->part2.interval.size()) :
-
5296 this->part1.interval ?
-
5297 this->part1.interval.size() <= 12 &&
-
5298 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5299 false;
-
5300 else if (this->model[0] == '0' && this->model[1] == '2')
-
5301 is_valid =
-
5302 this->part3.interval ?
-
5303 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5304 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5305 check11(text + this->part2.interval.start, this->part2.interval.size()) &&
-
5306 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5307 false;
-
5308 else if (this->model[0] == '0' && this->model[1] == '3')
-
5309 is_valid =
-
5310 this->part3.interval ?
-
5311 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5312 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5313 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5314 check11(text + this->part2.interval.start, this->part2.interval.size()) &&
-
5315 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5316 false;
-
5317 else if (this->model[0] == '0' && this->model[1] == '4')
-
5318 is_valid =
-
5319 this->part3.interval ?
-
5320 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5321 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5322 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5323 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5324 false;
-
5325 else if ((this->model[0] == '0' || this->model[0] == '5') && this->model[1] == '5')
-
5326 is_valid =
-
5327 this->part3.interval ?
-
5328 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5329 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5330 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5331 this->part2.interval ?
-
5332 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5333 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5334 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5335 this->part1.interval ?
-
5336 this->part1.interval.size() <= 12 &&
-
5337 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5338 false;
-
5339 else if (this->model[0] == '0' && this->model[1] == '6')
-
5340 is_valid =
-
5341 this->part3.interval ?
-
5342 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5343 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5344 check11(
-
5345 text + this->part2.interval.start, this->part2.interval.size(),
-
5346 text + this->part3.interval.start, this->part3.interval.size()) :
-
5347 this->part2.interval ?
-
5348 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5349 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5350 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5351 false;
-
5352 else if (this->model[0] == '0' && this->model[1] == '7')
-
5353 is_valid =
-
5354 this->part3.interval ?
-
5355 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5356 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5357 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5358 this->part2.interval ?
-
5359 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5360 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5361 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5362 false;
-
5363 else if (this->model[0] == '0' && this->model[1] == '8')
-
5364 is_valid =
-
5365 this->part3.interval ?
-
5366 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5367 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5368 check11(
-
5369 text + this->part1.interval.start, this->part1.interval.size(),
-
5370 text + this->part2.interval.start, this->part2.interval.size()) &&
-
5371 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5372 false;
-
5373 else if (this->model[0] == '0' && this->model[1] == '9')
-
5374 is_valid =
-
5375 this->part3.interval ?
-
5376 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5377 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5378 check11(
-
5379 text + this->part1.interval.start, this->part1.interval.size(),
-
5380 text + this->part2.interval.start, this->part2.interval.size()) :
-
5381 this->part2.interval ?
-
5382 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5383 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5384 check11(
-
5385 text + this->part1.interval.start, this->part1.interval.size(),
-
5386 text + this->part2.interval.start, this->part2.interval.size()) :
-
5387 this->part1.interval ?
-
5388 this->part1.interval.size() <= 12 &&
-
5389 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5390 false;
-
5391 else if (this->model[0] == '1' && this->model[1] == '0')
-
5392 is_valid =
-
5393 this->part3.interval ?
-
5394 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5395 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5396 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5397 check11(
-
5398 text + this->part2.interval.start, this->part2.interval.size(),
-
5399 text + this->part3.interval.start, this->part3.interval.size()) :
-
5400 this->part2.interval ?
-
5401 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5402 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5403 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5404 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5405 false;
-
5406 else if (
-
5407 (this->model[0] == '1' && (this->model[1] == '1' || this->model[1] == '8' || this->model[1] == '9')) ||
-
5408 ((this->model[0] == '2' || this->model[0] == '3') && this->model[1] == '8') ||
-
5409 (this->model[0] == '4' && (this->model[1] == '0' || this->model[1] == '1' || this->model[1] == '8' || this->model[1] == '9')) ||
-
5410 (this->model[0] == '5' && (this->model[1] == '1' || this->model[1] == '8')))
-
5411 is_valid =
-
5412 this->part3.interval ?
-
5413 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5414 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5415 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5416 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5417 this->part2.interval ?
-
5418 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5419 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5420 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5421 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5422 false;
-
5423 else if (this->model[0] == '1' && this->model[1] == '2')
-
5424 is_valid =
-
5425 this->part3.interval ? false :
-
5426 this->part2.interval ? false :
-
5427 this->part1.interval ?
-
5428 this->part1.interval.size() <= 13 &&
-
5429 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5430 false;
-
5431 else if ((this->model[0] == '2' || this->model[0] == '3') && this->model[1] == '1')
-
5432 is_valid =
-
5433 this->part3.interval ? false :
-
5434 this->part2.interval ?
-
5435 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5436 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5437 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5438 false;
-
5439 else
-
5440 is_valid = true; // Assume models we don't handle as valid
-
5441 return true;
-
5442
-
5443 error:
-
5444 this->model[0] = 0;
-
5445 this->part1.interval.start = (this->part1.interval.end = start) + 1;
-
5446 this->part2.interval.start = (this->part2.interval.end = start) + 1;
-
5447 this->part3.interval.start = (this->part3.interval.end = start) + 1;
-
5448 this->is_valid = false;
-
5449 this->interval.start = (this->interval.end = start) + 1;
-
5450 return false;
-
5451 }
-
5452
-
5453 virtual void invalidate()
-
5454 {
-
5455 this->model[0] = 0;
-
5456 this->part1.invalidate();
-
5457 this->part2.invalidate();
-
5458 this->part3.invalidate();
-
5459 this->is_valid = false;
- -
5461 }
-
5462
-
5463 protected:
-
5464 static bool check11(
-
5465 _In_count_(num_part1) const T* part1, _In_ size_t num_part1)
-
5466 {
-
5467 assert(part1 && num_part1 >= 1);
-
5468 uint32_t nominator = 0, ponder = 2;
-
5469 for (size_t i = num_part1 - 1; i--; ++ponder)
-
5470 nominator += (part1[i] - '0') * ponder;
-
5471 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
-
5472 if (control >= 10)
-
5473 control = 0;
-
5474 return control == part1[num_part1 - 1] - '0';
-
5475 }
-
5476
-
5477 static bool check11(
-
5478 _In_count_(num_part1) const T* part1, _In_ size_t num_part1,
-
5479 _In_count_(num_part2) const T* part2, _In_ size_t num_part2)
-
5480 {
-
5481 assert(part1 || !num_part1);
-
5482 assert(part2 && num_part2 >= 1);
-
5483 uint32_t nominator = 0, ponder = 2;
-
5484 for (size_t i = num_part2 - 1; i--; ++ponder)
-
5485 nominator += (part2[i] - '0') * ponder;
-
5486 for (size_t i = num_part1; i--; ++ponder)
-
5487 nominator += (part1[i] - '0') * ponder;
-
5488 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
-
5489 if (control == 10)
-
5490 control = 0;
-
5491 return control == part2[num_part2 - 1] - '0';
-
5492 }
-
5493
-
5494 static bool check11(
-
5495 _In_count_(num_part1) const T* part1, _In_ size_t num_part1,
-
5496 _In_count_(num_part2) const T* part2, _In_ size_t num_part2,
-
5497 _In_count_(num_part3) const T* part3, _In_ size_t num_part3)
-
5498 {
-
5499 assert(part1 || !num_part1);
-
5500 assert(part2 || !num_part2);
-
5501 assert(part3 && num_part3 >= 1);
-
5502 uint32_t nominator = 0, ponder = 2;
-
5503 for (size_t i = num_part3 - 1; i--; ++ponder)
-
5504 nominator += (part3[i] - '0') * ponder;
-
5505 for (size_t i = num_part2; i--; ++ponder)
-
5506 nominator += (part2[i] - '0') * ponder;
-
5507 for (size_t i = num_part1; i--; ++ponder)
-
5508 nominator += (part1[i] - '0') * ponder;
-
5509 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
-
5510 if (control == 10)
-
5511 control = 0;
-
5512 return control == part2[num_part3 - 1] - '0';
-
5513 }
-
5514
-
5515 public:
-
5516 T model[3];
- - - - -
5521
-
5522 protected:
-
5523 std::shared_ptr<basic_parser<T>> m_space;
- -
5525 };
+
5182
+ + +
5185#ifdef _UNICODE
+ +
5187#else
+ +
5189#endif
+ +
5191
+
5199 template <class T>
+
+ +
5201 {
+
5202 public:
+ +
5204 _In_ const std::shared_ptr<basic_parser<T>>& space,
+
5205 _In_ const std::locale& locale = std::locale()) :
+
5206 basic_parser<T>(locale),
+
5207 part1(locale),
+
5208 part2(locale),
+
5209 part3(locale),
+
5210 is_valid(false),
+
5211 m_space(space),
+
5212 m_delimiter(locale)
+
5213 {
+
5214 this->model[0] = 0;
+
5215 }
+
5216
+
5217 virtual bool match(
+
5218 _In_reads_or_z_(end) const T* text,
+
5219 _In_ size_t start = 0,
+
5220 _In_ size_t end = (size_t)-1,
+
5221 _In_ int flags = match_default)
+
5222 {
+
5223 assert(text || start >= end);
+
5224 const auto& ctype = std::use_facet<std::ctype<T>>(this->m_locale);
+
5225 const bool case_insensitive = flags & match_case_insensitive ? true : false;
+
5226
+
5227 this->interval.end = start;
+
5228 if (this->interval.end + 1 >= end ||
+
5229 (case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end]) != 'S' ||
+
5230 (case_insensitive ? ctype.toupper(text[this->interval.end + 1]) : text[this->interval.end + 1]) != 'I')
+
5231 goto error; // incomplete or wrong reference ID
+
5232 this->interval.end += 2;
+
5233
+
5234 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
+
5235 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
+
5236 goto error; // incomplete or invalid model
+
5237 this->model[i] = text[this->interval.end];
+
5238 }
+
5239 this->model[2] = 0;
+
5240
+
5241 this->part1.invalidate();
+
5242 this->part2.invalidate();
+
5243 this->part3.invalidate();
+
5244 if (this->model[0] == '9' && this->model[1] == '9') {
+
5245 is_valid = true;
+
5246 this->interval.start = start;
+
5247 return true;
+
5248 }
+
5249
+
5250 if (m_space && m_space->match(text, this->interval.end, end, flags))
+
5251 this->interval.end = m_space->interval.end;
+
5252
+
5253 this->part1.match(text, this->interval.end, end, flags) &&
+
5254 this->m_delimiter.match(text, this->part1.interval.end, end, flags) &&
+
5255 this->part2.match(text, this->m_delimiter.interval.end, end, flags) &&
+
5256 this->m_delimiter.match(text, this->part2.interval.end, end, flags) &&
+
5257 this->part3.match(text, this->m_delimiter.interval.end, end, flags);
+
5258
+
5259 this->interval.start = start;
+
5260 if (this->part3.interval)
+
5261 this->interval.end = this->part3.interval.end;
+
5262 else if (this->part2.interval)
+
5263 this->interval.end = this->part2.interval.end;
+
5264 else if (this->part1.interval)
+
5265 this->interval.end = this->part1.interval.end;
+
5266 else
+
5267 this->interval.end = start + 4;
+
5268
+
5269 if (this->model[0] == '0' && this->model[1] == '0')
+
5270 is_valid =
+
5271 this->part3.interval ?
+
5272 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5273 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 :
+
5274 this->part2.interval ?
+
5275 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5276 this->part1.interval.size() + this->part2.interval.size() <= 20 :
+
5277 this->part1.interval ?
+
5278 this->part1.interval.size() <= 12 :
+
5279 false;
+
5280 else if (this->model[0] == '0' && this->model[1] == '1')
+
5281 is_valid =
+
5282 this->part3.interval ?
+
5283 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5284 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5285 check11(
+
5286 text + this->part1.interval.start, this->part1.interval.size(),
+
5287 text + this->part2.interval.start, this->part2.interval.size(),
+
5288 text + this->part3.interval.start, this->part3.interval.size()) :
+
5289 this->part2.interval ?
+
5290 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5291 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5292 check11(
+
5293 text + this->part1.interval.start, this->part1.interval.size(),
+
5294 text + this->part2.interval.start, this->part2.interval.size()) :
+
5295 this->part1.interval ?
+
5296 this->part1.interval.size() <= 12 &&
+
5297 check11(text + this->part1.interval.start, this->part1.interval.size()) :
+
5298 false;
+
5299 else if (this->model[0] == '0' && this->model[1] == '2')
+
5300 is_valid =
+
5301 this->part3.interval ?
+
5302 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5303 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5304 check11(text + this->part2.interval.start, this->part2.interval.size()) &&
+
5305 check11(text + this->part3.interval.start, this->part3.interval.size()) :
+
5306 false;
+
5307 else if (this->model[0] == '0' && this->model[1] == '3')
+
5308 is_valid =
+
5309 this->part3.interval ?
+
5310 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5311 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5312 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
+
5313 check11(text + this->part2.interval.start, this->part2.interval.size()) &&
+
5314 check11(text + this->part3.interval.start, this->part3.interval.size()) :
+
5315 false;
+
5316 else if (this->model[0] == '0' && this->model[1] == '4')
+
5317 is_valid =
+
5318 this->part3.interval ?
+
5319 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5320 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5321 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
+
5322 check11(text + this->part3.interval.start, this->part3.interval.size()) :
+
5323 false;
+
5324 else if ((this->model[0] == '0' || this->model[0] == '5') && this->model[1] == '5')
+
5325 is_valid =
+
5326 this->part3.interval ?
+
5327 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5328 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5329 check11(text + this->part1.interval.start, this->part1.interval.size()) :
+
5330 this->part2.interval ?
+
5331 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5332 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5333 check11(text + this->part1.interval.start, this->part1.interval.size()) :
+
5334 this->part1.interval ?
+
5335 this->part1.interval.size() <= 12 &&
+
5336 check11(text + this->part1.interval.start, this->part1.interval.size()) :
+
5337 false;
+
5338 else if (this->model[0] == '0' && this->model[1] == '6')
+
5339 is_valid =
+
5340 this->part3.interval ?
+
5341 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5342 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5343 check11(
+
5344 text + this->part2.interval.start, this->part2.interval.size(),
+
5345 text + this->part3.interval.start, this->part3.interval.size()) :
+
5346 this->part2.interval ?
+
5347 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5348 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5349 check11(text + this->part2.interval.start, this->part2.interval.size()) :
+
5350 false;
+
5351 else if (this->model[0] == '0' && this->model[1] == '7')
+
5352 is_valid =
+
5353 this->part3.interval ?
+
5354 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5355 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5356 check11(text + this->part2.interval.start, this->part2.interval.size()) :
+
5357 this->part2.interval ?
+
5358 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5359 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5360 check11(text + this->part2.interval.start, this->part2.interval.size()) :
+
5361 false;
+
5362 else if (this->model[0] == '0' && this->model[1] == '8')
+
5363 is_valid =
+
5364 this->part3.interval ?
+
5365 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5366 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5367 check11(
+
5368 text + this->part1.interval.start, this->part1.interval.size(),
+
5369 text + this->part2.interval.start, this->part2.interval.size()) &&
+
5370 check11(text + this->part3.interval.start, this->part3.interval.size()) :
+
5371 false;
+
5372 else if (this->model[0] == '0' && this->model[1] == '9')
+
5373 is_valid =
+
5374 this->part3.interval ?
+
5375 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5376 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5377 check11(
+
5378 text + this->part1.interval.start, this->part1.interval.size(),
+
5379 text + this->part2.interval.start, this->part2.interval.size()) :
+
5380 this->part2.interval ?
+
5381 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5382 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5383 check11(
+
5384 text + this->part1.interval.start, this->part1.interval.size(),
+
5385 text + this->part2.interval.start, this->part2.interval.size()) :
+
5386 this->part1.interval ?
+
5387 this->part1.interval.size() <= 12 &&
+
5388 check11(text + this->part1.interval.start, this->part1.interval.size()) :
+
5389 false;
+
5390 else if (this->model[0] == '1' && this->model[1] == '0')
+
5391 is_valid =
+
5392 this->part3.interval ?
+
5393 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5394 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5395 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
+
5396 check11(
+
5397 text + this->part2.interval.start, this->part2.interval.size(),
+
5398 text + this->part3.interval.start, this->part3.interval.size()) :
+
5399 this->part2.interval ?
+
5400 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5401 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5402 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
+
5403 check11(text + this->part2.interval.start, this->part2.interval.size()) :
+
5404 false;
+
5405 else if (
+
5406 (this->model[0] == '1' && (this->model[1] == '1' || this->model[1] == '8' || this->model[1] == '9')) ||
+
5407 ((this->model[0] == '2' || this->model[0] == '3') && this->model[1] == '8') ||
+
5408 (this->model[0] == '4' && (this->model[1] == '0' || this->model[1] == '1' || this->model[1] == '8' || this->model[1] == '9')) ||
+
5409 (this->model[0] == '5' && (this->model[1] == '1' || this->model[1] == '8')))
+
5410 is_valid =
+
5411 this->part3.interval ?
+
5412 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
+
5413 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
5414 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
+
5415 check11(text + this->part2.interval.start, this->part2.interval.size()) :
+
5416 this->part2.interval ?
+
5417 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5418 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5419 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
+
5420 check11(text + this->part2.interval.start, this->part2.interval.size()) :
+
5421 false;
+
5422 else if (this->model[0] == '1' && this->model[1] == '2')
+
5423 is_valid =
+
5424 this->part3.interval ? false :
+
5425 this->part2.interval ? false :
+
5426 this->part1.interval ?
+
5427 this->part1.interval.size() <= 13 &&
+
5428 check11(text + this->part1.interval.start, this->part1.interval.size()) :
+
5429 false;
+
5430 else if ((this->model[0] == '2' || this->model[0] == '3') && this->model[1] == '1')
+
5431 is_valid =
+
5432 this->part3.interval ? false :
+
5433 this->part2.interval ?
+
5434 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
+
5435 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
5436 check11(text + this->part1.interval.start, this->part1.interval.size()) :
+
5437 false;
+
5438 else
+
5439 is_valid = true; // Assume models we don't handle as valid
+
5440 return true;
+
5441
+
5442 error:
+
5443 this->model[0] = 0;
+
5444 this->part1.interval.start = (this->part1.interval.end = start) + 1;
+
5445 this->part2.interval.start = (this->part2.interval.end = start) + 1;
+
5446 this->part3.interval.start = (this->part3.interval.end = start) + 1;
+
5447 this->is_valid = false;
+
5448 this->interval.start = (this->interval.end = start) + 1;
+
5449 return false;
+
5450 }
+
5451
+
5452 virtual void invalidate()
+
5453 {
+
5454 this->model[0] = 0;
+
5455 this->part1.invalidate();
+
5456 this->part2.invalidate();
+
5457 this->part3.invalidate();
+
5458 this->is_valid = false;
+ +
5460 }
+
5461
+
5462 protected:
+
5463 static bool check11(
+
5464 _In_count_(num_part1) const T* part1, _In_ size_t num_part1)
+
5465 {
+
5466 assert(part1 && num_part1 >= 1);
+
5467 uint32_t nominator = 0, ponder = 2;
+
5468 for (size_t i = num_part1 - 1; i--; ++ponder)
+
5469 nominator += (part1[i] - '0') * ponder;
+
5470 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
+
5471 if (control >= 10)
+
5472 control = 0;
+
5473 return control == part1[num_part1 - 1] - '0';
+
5474 }
+
5475
+
5476 static bool check11(
+
5477 _In_count_(num_part1) const T* part1, _In_ size_t num_part1,
+
5478 _In_count_(num_part2) const T* part2, _In_ size_t num_part2)
+
5479 {
+
5480 assert(part1 || !num_part1);
+
5481 assert(part2 && num_part2 >= 1);
+
5482 uint32_t nominator = 0, ponder = 2;
+
5483 for (size_t i = num_part2 - 1; i--; ++ponder)
+
5484 nominator += (part2[i] - '0') * ponder;
+
5485 for (size_t i = num_part1; i--; ++ponder)
+
5486 nominator += (part1[i] - '0') * ponder;
+
5487 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
+
5488 if (control == 10)
+
5489 control = 0;
+
5490 return control == part2[num_part2 - 1] - '0';
+
5491 }
+
5492
+
5493 static bool check11(
+
5494 _In_count_(num_part1) const T* part1, _In_ size_t num_part1,
+
5495 _In_count_(num_part2) const T* part2, _In_ size_t num_part2,
+
5496 _In_count_(num_part3) const T* part3, _In_ size_t num_part3)
+
5497 {
+
5498 assert(part1 || !num_part1);
+
5499 assert(part2 || !num_part2);
+
5500 assert(part3 && num_part3 >= 1);
+
5501 uint32_t nominator = 0, ponder = 2;
+
5502 for (size_t i = num_part3 - 1; i--; ++ponder)
+
5503 nominator += (part3[i] - '0') * ponder;
+
5504 for (size_t i = num_part2; i--; ++ponder)
+
5505 nominator += (part2[i] - '0') * ponder;
+
5506 for (size_t i = num_part1; i--; ++ponder)
+
5507 nominator += (part1[i] - '0') * ponder;
+
5508 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
+
5509 if (control == 10)
+
5510 control = 0;
+
5511 return control == part2[num_part3 - 1] - '0';
+
5512 }
+
5513
+
5514 public:
+
5515 T model[3];
+ + + + +
5520
+
5521 protected:
+
5522 std::shared_ptr<basic_parser<T>> m_space;
+ +
5524 };
-
5526
- - -
5529#ifdef _UNICODE
- -
5531#else
- -
5533#endif
- -
5535
-
5539 template <class T>
-
- -
5541 {
-
5542 public:
- -
5544 _In_ const std::shared_ptr<basic_parser<T>>& element,
-
5545 _In_ const std::shared_ptr<basic_parser<T>>& digit,
-
5546 _In_ const std::shared_ptr<basic_parser<T>>& sign,
-
5547 _In_ const std::locale& locale = std::locale()) :
-
5548 basic_parser<T>(locale),
-
5549 m_element(element),
-
5550 m_digit(digit),
-
5551 m_sign(sign),
-
5552 has_digits(false),
-
5553 has_charge(false)
-
5554 {}
-
5555
-
5556 virtual bool match(
-
5557 _In_reads_or_z_(end) const T* text,
-
5558 _In_ size_t start = 0,
-
5559 _In_ size_t end = (size_t)-1,
-
5560 _In_ int flags = match_default)
-
5561 {
-
5562 assert(text || start >= end);
-
5563
-
5564 has_digits = false;
-
5565 has_charge = false;
-
5566 this->interval.end = start;
-
5567
-
5568 const int element_match_flags = flags & ~match_case_insensitive; // Chemical elements are always case-sensitive.
-
5569 for (;;) {
-
5570 if (m_element->match(text, this->interval.end, end, element_match_flags)) {
-
5571 this->interval.end = m_element->interval.end;
-
5572 while (m_digit->match(text, this->interval.end, end, flags)) {
-
5573 this->interval.end = m_digit->interval.end;
-
5574 has_digits = true;
-
5575 }
-
5576 }
-
5577 else if (start < this->interval.end) {
-
5578 if (m_sign->match(text, this->interval.end, end, flags)) {
-
5579 this->interval.end = m_sign->interval.end;
-
5580 has_charge = true;
-
5581 }
-
5582 this->interval.start = start;
-
5583 return true;
-
5584 }
-
5585 else {
-
5586 this->interval.start = (this->interval.end = start) + 1;
-
5587 return false;
-
5588 }
-
5589 }
-
5590 }
-
5591
-
5592 virtual void invalidate()
-
5593 {
-
5594 has_digits = false;
-
5595 has_charge = false;
- -
5597 }
-
5598
-
5599 public:
-
5600 bool has_digits;
-
5601 bool has_charge;
-
5602
-
5603 protected:
-
5604 std::shared_ptr<basic_parser<T>> m_element;
-
5605 std::shared_ptr<basic_parser<T>> m_digit;
-
5606 std::shared_ptr<basic_parser<T>> m_sign;
-
5607 };
+
5525
+ + +
5528#ifdef _UNICODE
+ +
5530#else
+ +
5532#endif
+ +
5534
+
5538 template <class T>
+
+ +
5540 {
+
5541 public:
+ +
5543 _In_ const std::shared_ptr<basic_parser<T>>& element,
+
5544 _In_ const std::shared_ptr<basic_parser<T>>& digit,
+
5545 _In_ const std::shared_ptr<basic_parser<T>>& sign,
+
5546 _In_ const std::locale& locale = std::locale()) :
+
5547 basic_parser<T>(locale),
+
5548 m_element(element),
+
5549 m_digit(digit),
+
5550 m_sign(sign),
+
5551 has_digits(false),
+
5552 has_charge(false)
+
5553 {}
+
5554
+
5555 virtual bool match(
+
5556 _In_reads_or_z_(end) const T* text,
+
5557 _In_ size_t start = 0,
+
5558 _In_ size_t end = (size_t)-1,
+
5559 _In_ int flags = match_default)
+
5560 {
+
5561 assert(text || start >= end);
+
5562
+
5563 has_digits = false;
+
5564 has_charge = false;
+
5565 this->interval.end = start;
+
5566
+
5567 const int element_match_flags = flags & ~match_case_insensitive; // Chemical elements are always case-sensitive.
+
5568 for (;;) {
+
5569 if (m_element->match(text, this->interval.end, end, element_match_flags)) {
+
5570 this->interval.end = m_element->interval.end;
+
5571 while (m_digit->match(text, this->interval.end, end, flags)) {
+
5572 this->interval.end = m_digit->interval.end;
+
5573 has_digits = true;
+
5574 }
+
5575 }
+
5576 else if (start < this->interval.end) {
+
5577 if (m_sign->match(text, this->interval.end, end, flags)) {
+
5578 this->interval.end = m_sign->interval.end;
+
5579 has_charge = true;
+
5580 }
+
5581 this->interval.start = start;
+
5582 return true;
+
5583 }
+
5584 else {
+
5585 this->interval.start = (this->interval.end = start) + 1;
+
5586 return false;
+
5587 }
+
5588 }
+
5589 }
+
5590
+
5591 virtual void invalidate()
+
5592 {
+
5593 has_digits = false;
+
5594 has_charge = false;
+ +
5596 }
+
5597
+
5598 public:
+
5599 bool has_digits;
+
5600 bool has_charge;
+
5601
+
5602 protected:
+
5603 std::shared_ptr<basic_parser<T>> m_element;
+
5604 std::shared_ptr<basic_parser<T>> m_digit;
+
5605 std::shared_ptr<basic_parser<T>> m_sign;
+
5606 };
-
5608
- - -
5611#ifdef _UNICODE
- -
5613#else
- -
5615#endif
- -
5617
-
- -
5622 {
-
5623 public:
-
5624 virtual bool match(
-
5625 _In_reads_or_z_(end) const char* text,
-
5626 _In_ size_t start = 0,
-
5627 _In_ size_t end = (size_t)-1,
-
5628 _In_ int flags = match_default)
-
5629 {
-
5630 assert(text || start >= end);
-
5631 this->interval.end = start;
-
5632
-
5633 assert(text || this->interval.end >= end);
-
5634 if (this->interval.end < end && text[this->interval.end]) {
-
5635 if (text[this->interval.end] == '\r') {
-
5636 this->interval.end++;
-
5637 if (this->interval.end < end && text[this->interval.end] == '\n') {
-
5638 this->interval.start = start;
-
5639 this->interval.end++;
-
5640 return true;
-
5641 }
-
5642 }
-
5643 else if (text[this->interval.end] == '\n') {
-
5644 this->interval.start = start;
-
5645 this->interval.end++;
-
5646 return true;
-
5647 }
-
5648 }
-
5649 this->interval.start = (this->interval.end = start) + 1;
-
5650 return false;
-
5651 }
-
5652 };
+
5607
+ + +
5610#ifdef _UNICODE
+ +
5612#else
+ +
5614#endif
+ +
5616
+
+ +
5621 {
+
5622 public:
+
5623 virtual bool match(
+
5624 _In_reads_or_z_(end) const char* text,
+
5625 _In_ size_t start = 0,
+
5626 _In_ size_t end = (size_t)-1,
+
5627 _In_ int flags = match_default)
+
5628 {
+
5629 assert(text || start >= end);
+
5630 this->interval.end = start;
+
5631
+
5632 assert(text || this->interval.end >= end);
+
5633 if (this->interval.end < end && text[this->interval.end]) {
+
5634 if (text[this->interval.end] == '\r') {
+
5635 this->interval.end++;
+
5636 if (this->interval.end < end && text[this->interval.end] == '\n') {
+
5637 this->interval.start = start;
+
5638 this->interval.end++;
+
5639 return true;
+
5640 }
+
5641 }
+
5642 else if (text[this->interval.end] == '\n') {
+
5643 this->interval.start = start;
+
5644 this->interval.end++;
+
5645 return true;
+
5646 }
+
5647 }
+
5648 this->interval.start = (this->interval.end = start) + 1;
+
5649 return false;
+
5650 }
+
5651 };
-
5653
-
-
5657 class http_space : public parser
-
5658 {
-
5659 public:
-
5660 virtual bool match(
-
5661 _In_reads_or_z_(end) const char* text,
-
5662 _In_ size_t start = 0,
-
5663 _In_ size_t end = (size_t)-1,
-
5664 _In_ int flags = match_default)
-
5665 {
-
5666 assert(text || start >= end);
-
5667 this->interval.end = start;
-
5668 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
5669 this->interval.end = m_line_break.interval.end;
-
5670 if (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) {
-
5671 this->interval.start = start;
-
5672 this->interval.end++;
-
5673 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
5674 return true;
-
5675 }
-
5676 }
-
5677 else if (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) {
-
5678 this->interval.start = start;
-
5679 this->interval.end++;
-
5680 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
5681 return true;
-
5682 }
-
5683 this->interval.start = (this->interval.end = start) + 1;
-
5684 return false;
-
5685 }
-
5686
-
5687 protected:
-
5688 http_line_break m_line_break;
-
5689 };
+
5652
+
+
5656 class http_space : public parser
+
5657 {
+
5658 public:
+
5659 virtual bool match(
+
5660 _In_reads_or_z_(end) const char* text,
+
5661 _In_ size_t start = 0,
+
5662 _In_ size_t end = (size_t)-1,
+
5663 _In_ int flags = match_default)
+
5664 {
+
5665 assert(text || start >= end);
+
5666 this->interval.end = start;
+
5667 if (m_line_break.match(text, this->interval.end, end, flags)) {
+
5668 this->interval.end = m_line_break.interval.end;
+
5669 if (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) {
+
5670 this->interval.start = start;
+
5671 this->interval.end++;
+
5672 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
5673 return true;
+
5674 }
+
5675 }
+
5676 else if (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) {
+
5677 this->interval.start = start;
+
5678 this->interval.end++;
+
5679 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
5680 return true;
+
5681 }
+
5682 this->interval.start = (this->interval.end = start) + 1;
+
5683 return false;
+
5684 }
+
5685
+
5686 protected:
+
5687 http_line_break m_line_break;
+
5688 };
-
5690
-
-
5694 class http_text_char : public parser
-
5695 {
-
5696 public:
-
5697 virtual bool match(
-
5698 _In_reads_or_z_(end) const char* text,
-
5699 _In_ size_t start = 0,
-
5700 _In_ size_t end = (size_t)-1,
-
5701 _In_ int flags = match_default)
-
5702 {
-
5703 assert(text || start >= end);
-
5704 this->interval.end = start;
-
5705
-
5706 assert(text || this->interval.end >= end);
-
5707 if (m_space.match(text, this->interval.end, end, flags)) {
-
5708 this->interval.start = start;
-
5709 this->interval.end = m_space.interval.end;
-
5710 return true;
-
5711 }
-
5712 else if (this->interval.end < end && text[this->interval.end] && text[this->interval.end] >= 0x20) {
-
5713 this->interval.start = start;
-
5714 this->interval.end++;
-
5715 return true;
-
5716 }
-
5717 this->interval.start = (this->interval.end = start) + 1;
-
5718 return false;
-
5719 }
-
5720
-
5721 protected:
-
5722 http_space m_space;
-
5723 };
+
5689
+
+
5693 class http_text_char : public parser
+
5694 {
+
5695 public:
+
5696 virtual bool match(
+
5697 _In_reads_or_z_(end) const char* text,
+
5698 _In_ size_t start = 0,
+
5699 _In_ size_t end = (size_t)-1,
+
5700 _In_ int flags = match_default)
+
5701 {
+
5702 assert(text || start >= end);
+
5703 this->interval.end = start;
+
5704
+
5705 assert(text || this->interval.end >= end);
+
5706 if (m_space.match(text, this->interval.end, end, flags)) {
+
5707 this->interval.start = start;
+
5708 this->interval.end = m_space.interval.end;
+
5709 return true;
+
5710 }
+
5711 else if (this->interval.end < end && text[this->interval.end] && text[this->interval.end] >= 0x20) {
+
5712 this->interval.start = start;
+
5713 this->interval.end++;
+
5714 return true;
+
5715 }
+
5716 this->interval.start = (this->interval.end = start) + 1;
+
5717 return false;
+
5718 }
+
5719
+
5720 protected:
+
5721 http_space m_space;
+
5722 };
-
5724
-
-
5728 class http_token : public parser
-
5729 {
-
5730 public:
-
5731 virtual bool match(
-
5732 _In_reads_or_z_(end) const char* text,
-
5733 _In_ size_t start = 0,
-
5734 _In_ size_t end = (size_t)-1,
-
5735 _In_ int flags = match_default)
-
5736 {
-
5737 assert(text || start >= end);
-
5738 this->interval.end = start;
-
5739 for (;;) {
-
5740 if (this->interval.end < end && text[this->interval.end]) {
-
5741 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
5742 (unsigned int)text[this->interval.end] == 0x7f ||
-
5743 text[this->interval.end] == '(' ||
-
5744 text[this->interval.end] == ')' ||
-
5745 text[this->interval.end] == '<' ||
-
5746 text[this->interval.end] == '>' ||
-
5747 text[this->interval.end] == '@' ||
-
5748 text[this->interval.end] == ',' ||
-
5749 text[this->interval.end] == ';' ||
-
5750 text[this->interval.end] == ':' ||
-
5751 text[this->interval.end] == '\\' ||
-
5752 text[this->interval.end] == '\"' ||
-
5753 text[this->interval.end] == '/' ||
-
5754 text[this->interval.end] == '[' ||
-
5755 text[this->interval.end] == ']' ||
-
5756 text[this->interval.end] == '?' ||
-
5757 text[this->interval.end] == '=' ||
-
5758 text[this->interval.end] == '{' ||
-
5759 text[this->interval.end] == '}' ||
-
5760 isspace(text[this->interval.end]))
-
5761 break;
-
5762 else
-
5763 this->interval.end++;
-
5764 }
-
5765 else
-
5766 break;
-
5767 }
- -
5769 this->interval.start = start;
-
5770 return true;
-
5771 }
-
5772 else {
-
5773 this->interval.start = (this->interval.end = start) + 1;
-
5774 return false;
-
5775 }
-
5776 }
-
5777 };
+
5723
+
+
5727 class http_token : public parser
+
5728 {
+
5729 public:
+
5730 virtual bool match(
+
5731 _In_reads_or_z_(end) const char* text,
+
5732 _In_ size_t start = 0,
+
5733 _In_ size_t end = (size_t)-1,
+
5734 _In_ int flags = match_default)
+
5735 {
+
5736 assert(text || start >= end);
+
5737 this->interval.end = start;
+
5738 for (;;) {
+
5739 if (this->interval.end < end && text[this->interval.end]) {
+
5740 if ((unsigned int)text[this->interval.end] < 0x20 ||
+
5741 (unsigned int)text[this->interval.end] == 0x7f ||
+
5742 text[this->interval.end] == '(' ||
+
5743 text[this->interval.end] == ')' ||
+
5744 text[this->interval.end] == '<' ||
+
5745 text[this->interval.end] == '>' ||
+
5746 text[this->interval.end] == '@' ||
+
5747 text[this->interval.end] == ',' ||
+
5748 text[this->interval.end] == ';' ||
+
5749 text[this->interval.end] == ':' ||
+
5750 text[this->interval.end] == '\\' ||
+
5751 text[this->interval.end] == '\"' ||
+
5752 text[this->interval.end] == '/' ||
+
5753 text[this->interval.end] == '[' ||
+
5754 text[this->interval.end] == ']' ||
+
5755 text[this->interval.end] == '?' ||
+
5756 text[this->interval.end] == '=' ||
+
5757 text[this->interval.end] == '{' ||
+
5758 text[this->interval.end] == '}' ||
+
5759 isspace(text[this->interval.end]))
+
5760 break;
+
5761 else
+
5762 this->interval.end++;
+
5763 }
+
5764 else
+
5765 break;
+
5766 }
+ +
5768 this->interval.start = start;
+
5769 return true;
+
5770 }
+
5771 else {
+
5772 this->interval.start = (this->interval.end = start) + 1;
+
5773 return false;
+
5774 }
+
5775 }
+
5776 };
-
5778
-
- -
5783 {
-
5784 public:
-
5785 virtual bool match(
-
5786 _In_reads_or_z_(end) const char* text,
-
5787 _In_ size_t start = 0,
-
5788 _In_ size_t end = (size_t)-1,
-
5789 _In_ int flags = match_default)
-
5790 {
-
5791 assert(text || start >= end);
-
5792 this->interval.end = start;
-
5793 if (this->interval.end < end && text[this->interval.end] != '"')
-
5794 goto error;
-
5795 this->interval.end++;
-
5796 content.start = this->interval.end;
-
5797 for (;;) {
-
5798 assert(text || this->interval.end >= end);
-
5799 if (this->interval.end < end && text[this->interval.end]) {
-
5800 if (text[this->interval.end] == '"') {
-
5801 content.end = this->interval.end;
-
5802 this->interval.end++;
-
5803 break;
-
5804 }
-
5805 else if (text[this->interval.end] == '\\') {
-
5806 this->interval.end++;
-
5807 if (this->interval.end < end && text[this->interval.end]) {
-
5808 this->interval.end++;
-
5809 }
-
5810 else
-
5811 goto error;
-
5812 }
-
5813 else if (m_chr.match(text, this->interval.end, end, flags))
-
5814 this->interval.end++;
-
5815 else
-
5816 goto error;
-
5817 }
-
5818 else
-
5819 goto error;
-
5820 }
-
5821 this->interval.start = start;
-
5822 return true;
-
5823
-
5824 error:
-
5825 content.start = 1;
-
5826 content.end = 0;
-
5827 this->interval.start = (this->interval.end = start) + 1;
-
5828 return false;
-
5829 }
-
5830
-
5831 virtual void invalidate()
-
5832 {
-
5833 content.start = 1;
-
5834 content.end = 0;
-
5835 parser::invalidate();
-
5836 }
-
5837
-
5838 public:
- -
5840
-
5841 protected:
-
5842 http_text_char m_chr;
-
5843 };
+
5777
+
+ +
5782 {
+
5783 public:
+
5784 virtual bool match(
+
5785 _In_reads_or_z_(end) const char* text,
+
5786 _In_ size_t start = 0,
+
5787 _In_ size_t end = (size_t)-1,
+
5788 _In_ int flags = match_default)
+
5789 {
+
5790 assert(text || start >= end);
+
5791 this->interval.end = start;
+
5792 if (this->interval.end < end && text[this->interval.end] != '"')
+
5793 goto error;
+
5794 this->interval.end++;
+
5795 content.start = this->interval.end;
+
5796 for (;;) {
+
5797 assert(text || this->interval.end >= end);
+
5798 if (this->interval.end < end && text[this->interval.end]) {
+
5799 if (text[this->interval.end] == '"') {
+
5800 content.end = this->interval.end;
+
5801 this->interval.end++;
+
5802 break;
+
5803 }
+
5804 else if (text[this->interval.end] == '\\') {
+
5805 this->interval.end++;
+
5806 if (this->interval.end < end && text[this->interval.end]) {
+
5807 this->interval.end++;
+
5808 }
+
5809 else
+
5810 goto error;
+
5811 }
+
5812 else if (m_chr.match(text, this->interval.end, end, flags))
+
5813 this->interval.end++;
+
5814 else
+
5815 goto error;
+
5816 }
+
5817 else
+
5818 goto error;
+
5819 }
+
5820 this->interval.start = start;
+
5821 return true;
+
5822
+
5823 error:
+
5824 content.start = 1;
+
5825 content.end = 0;
+
5826 this->interval.start = (this->interval.end = start) + 1;
+
5827 return false;
+
5828 }
+
5829
+
5830 virtual void invalidate()
+
5831 {
+
5832 content.start = 1;
+
5833 content.end = 0;
+
5834 parser::invalidate();
+
5835 }
+
5836
+
5837 public:
+ +
5839
+
5840 protected:
+
5841 http_text_char m_chr;
+
5842 };
-
5844
-
-
5848 class http_value : public parser
-
5849 {
-
5850 public:
-
5851 virtual bool match(
-
5852 _In_reads_or_z_(end) const char* text,
-
5853 _In_ size_t start = 0,
-
5854 _In_ size_t end = (size_t)-1,
-
5855 _In_ int flags = match_default)
-
5856 {
-
5857 assert(text || start >= end);
-
5858 this->interval.end = start;
-
5859 if (string.match(text, this->interval.end, end, flags)) {
-
5860 token.invalidate();
-
5861 this->interval.end = string.interval.end;
-
5862 this->interval.start = start;
-
5863 return true;
-
5864 }
-
5865 else if (token.match(text, this->interval.end, end, flags)) {
-
5866 string.invalidate();
-
5867 this->interval.end = token.interval.end;
-
5868 this->interval.start = start;
-
5869 return true;
-
5870 }
-
5871 else {
-
5872 this->interval.start = (this->interval.end = start) + 1;
-
5873 return false;
-
5874 }
-
5875 }
-
5876
-
5877 virtual void invalidate()
-
5878 {
-
5879 string.invalidate();
-
5880 token.invalidate();
-
5881 parser::invalidate();
-
5882 }
-
5883
-
5884 public:
- - -
5887 };
+
5843
+
+
5847 class http_value : public parser
+
5848 {
+
5849 public:
+
5850 virtual bool match(
+
5851 _In_reads_or_z_(end) const char* text,
+
5852 _In_ size_t start = 0,
+
5853 _In_ size_t end = (size_t)-1,
+
5854 _In_ int flags = match_default)
+
5855 {
+
5856 assert(text || start >= end);
+
5857 this->interval.end = start;
+
5858 if (string.match(text, this->interval.end, end, flags)) {
+
5859 token.invalidate();
+
5860 this->interval.end = string.interval.end;
+
5861 this->interval.start = start;
+
5862 return true;
+
5863 }
+
5864 else if (token.match(text, this->interval.end, end, flags)) {
+
5865 string.invalidate();
+
5866 this->interval.end = token.interval.end;
+
5867 this->interval.start = start;
+
5868 return true;
+
5869 }
+
5870 else {
+
5871 this->interval.start = (this->interval.end = start) + 1;
+
5872 return false;
+
5873 }
+
5874 }
+
5875
+
5876 virtual void invalidate()
+
5877 {
+
5878 string.invalidate();
+
5879 token.invalidate();
+
5880 parser::invalidate();
+
5881 }
+
5882
+
5883 public:
+ + +
5886 };
-
5888
-
-
5892 class http_parameter : public parser
-
5893 {
-
5894 public:
-
5895 virtual bool match(
-
5896 _In_reads_or_z_(end) const char* text,
-
5897 _In_ size_t start = 0,
-
5898 _In_ size_t end = (size_t)-1,
-
5899 _In_ int flags = match_default)
-
5900 {
-
5901 assert(text || start >= end);
-
5902 this->interval.end = start;
-
5903 if (name.match(text, this->interval.end, end, flags))
-
5904 this->interval.end = name.interval.end;
-
5905 else
-
5906 goto error;
-
5907 while (m_space.match(text, this->interval.end, end, flags))
-
5908 this->interval.end = m_space.interval.end;
-
5909 assert(text || this->interval.end >= end);
-
5910 if (this->interval.end < end && text[this->interval.end] == '=')
-
5911 this->interval.end++;
-
5912 else
-
5913 while (m_space.match(text, this->interval.end, end, flags))
-
5914 this->interval.end = m_space.interval.end;
-
5915 if (value.match(text, this->interval.end, end, flags))
-
5916 this->interval.end = value.interval.end;
-
5917 else
-
5918 goto error;
-
5919 this->interval.start = start;
-
5920 return true;
-
5921
-
5922 error:
-
5923 name.invalidate();
-
5924 value.invalidate();
-
5925 this->interval.start = (this->interval.end = start) + 1;
-
5926 return false;
-
5927 }
-
5928
-
5929 virtual void invalidate()
-
5930 {
-
5931 name.invalidate();
-
5932 value.invalidate();
-
5933 parser::invalidate();
-
5934 }
-
5935
-
5936 public:
- - -
5939
-
5940 protected:
-
5941 http_space m_space;
-
5942 };
+
5887
+
+
5891 class http_parameter : public parser
+
5892 {
+
5893 public:
+
5894 virtual bool match(
+
5895 _In_reads_or_z_(end) const char* text,
+
5896 _In_ size_t start = 0,
+
5897 _In_ size_t end = (size_t)-1,
+
5898 _In_ int flags = match_default)
+
5899 {
+
5900 assert(text || start >= end);
+
5901 this->interval.end = start;
+
5902 if (name.match(text, this->interval.end, end, flags))
+
5903 this->interval.end = name.interval.end;
+
5904 else
+
5905 goto error;
+
5906 while (m_space.match(text, this->interval.end, end, flags))
+
5907 this->interval.end = m_space.interval.end;
+
5908 assert(text || this->interval.end >= end);
+
5909 if (this->interval.end < end && text[this->interval.end] == '=')
+
5910 this->interval.end++;
+
5911 else
+
5912 while (m_space.match(text, this->interval.end, end, flags))
+
5913 this->interval.end = m_space.interval.end;
+
5914 if (value.match(text, this->interval.end, end, flags))
+
5915 this->interval.end = value.interval.end;
+
5916 else
+
5917 goto error;
+
5918 this->interval.start = start;
+
5919 return true;
+
5920
+
5921 error:
+
5922 name.invalidate();
+
5923 value.invalidate();
+
5924 this->interval.start = (this->interval.end = start) + 1;
+
5925 return false;
+
5926 }
+
5927
+
5928 virtual void invalidate()
+
5929 {
+
5930 name.invalidate();
+
5931 value.invalidate();
+
5932 parser::invalidate();
+
5933 }
+
5934
+
5935 public:
+ + +
5938
+
5939 protected:
+
5940 http_space m_space;
+
5941 };
-
5943
-
-
5947 class http_any_type : public parser
-
5948 {
-
5949 public:
-
5950 virtual bool match(
-
5951 _In_reads_or_z_(end) const char* text,
-
5952 _In_ size_t start = 0,
-
5953 _In_ size_t end = (size_t)-1,
-
5954 _In_ int flags = match_default)
-
5955 {
-
5956 assert(text || start >= end);
-
5957 if (start + 2 < end &&
-
5958 text[start] == '*' &&
-
5959 text[start + 1] == '/' &&
-
5960 text[start + 2] == '*')
-
5961 {
-
5962 this->interval.end = (this->interval.start = start) + 3;
-
5963 return true;
-
5964 }
-
5965 else if (start < end && text[start] == '*') {
-
5966 this->interval.end = (this->interval.start = start) + 1;
-
5967 return true;
-
5968 }
-
5969 else {
-
5970 this->interval.start = (this->interval.end = start) + 1;
-
5971 return false;
-
5972 }
-
5973 }
-
5974 };
+
5942
+
+
5946 class http_any_type : public parser
+
5947 {
+
5948 public:
+
5949 virtual bool match(
+
5950 _In_reads_or_z_(end) const char* text,
+
5951 _In_ size_t start = 0,
+
5952 _In_ size_t end = (size_t)-1,
+
5953 _In_ int flags = match_default)
+
5954 {
+
5955 assert(text || start >= end);
+
5956 if (start + 2 < end &&
+
5957 text[start] == '*' &&
+
5958 text[start + 1] == '/' &&
+
5959 text[start + 2] == '*')
+
5960 {
+
5961 this->interval.end = (this->interval.start = start) + 3;
+
5962 return true;
+
5963 }
+
5964 else if (start < end && text[start] == '*') {
+
5965 this->interval.end = (this->interval.start = start) + 1;
+
5966 return true;
+
5967 }
+
5968 else {
+
5969 this->interval.start = (this->interval.end = start) + 1;
+
5970 return false;
+
5971 }
+
5972 }
+
5973 };
-
5975
-
- -
5980 {
-
5981 public:
-
5982 virtual bool match(
-
5983 _In_reads_or_z_(end) const char* text,
-
5984 _In_ size_t start = 0,
-
5985 _In_ size_t end = (size_t)-1,
-
5986 _In_ int flags = match_default)
-
5987 {
-
5988 assert(text || start >= end);
-
5989 this->interval.end = start;
-
5990 if (type.match(text, this->interval.end, end, flags))
-
5991 this->interval.end = type.interval.end;
-
5992 else
-
5993 goto error;
-
5994 while (m_space.match(text, this->interval.end, end, flags))
-
5995 this->interval.end = m_space.interval.end;
-
5996 if (this->interval.end < end && text[this->interval.end] == '/')
-
5997 this->interval.end++;
-
5998 else
-
5999 goto error;
-
6000 while (m_space.match(text, this->interval.end, end, flags))
-
6001 this->interval.end = m_space.interval.end;
-
6002 if (subtype.match(text, this->interval.end, end, flags))
-
6003 this->interval.end = subtype.interval.end;
-
6004 else
-
6005 goto error;
-
6006 this->interval.start = start;
-
6007 return true;
-
6008
-
6009 error:
-
6010 type.invalidate();
-
6011 subtype.invalidate();
-
6012 this->interval.start = (this->interval.end = start) + 1;
-
6013 return false;
-
6014 }
-
6015
-
6016 virtual void invalidate()
-
6017 {
-
6018 type.invalidate();
-
6019 subtype.invalidate();
-
6020 parser::invalidate();
-
6021 }
-
6022
-
6023 public:
-
6024 http_token type;
-
6025 http_token subtype;
-
6026
-
6027 protected:
-
6028 http_space m_space;
-
6029 };
+
5974
+
+ +
5979 {
+
5980 public:
+
5981 virtual bool match(
+
5982 _In_reads_or_z_(end) const char* text,
+
5983 _In_ size_t start = 0,
+
5984 _In_ size_t end = (size_t)-1,
+
5985 _In_ int flags = match_default)
+
5986 {
+
5987 assert(text || start >= end);
+
5988 this->interval.end = start;
+
5989 if (type.match(text, this->interval.end, end, flags))
+
5990 this->interval.end = type.interval.end;
+
5991 else
+
5992 goto error;
+
5993 while (m_space.match(text, this->interval.end, end, flags))
+
5994 this->interval.end = m_space.interval.end;
+
5995 if (this->interval.end < end && text[this->interval.end] == '/')
+
5996 this->interval.end++;
+
5997 else
+
5998 goto error;
+
5999 while (m_space.match(text, this->interval.end, end, flags))
+
6000 this->interval.end = m_space.interval.end;
+
6001 if (subtype.match(text, this->interval.end, end, flags))
+
6002 this->interval.end = subtype.interval.end;
+
6003 else
+
6004 goto error;
+
6005 this->interval.start = start;
+
6006 return true;
+
6007
+
6008 error:
+
6009 type.invalidate();
+
6010 subtype.invalidate();
+
6011 this->interval.start = (this->interval.end = start) + 1;
+
6012 return false;
+
6013 }
+
6014
+
6015 virtual void invalidate()
+
6016 {
+
6017 type.invalidate();
+
6018 subtype.invalidate();
+
6019 parser::invalidate();
+
6020 }
+
6021
+
6022 public:
+
6023 http_token type;
+
6024 http_token subtype;
+
6025
+
6026 protected:
+
6027 http_space m_space;
+
6028 };
-
6030
-
- -
6035 {
-
6036 public:
-
6037 virtual bool match(
-
6038 _In_reads_or_z_(end) const char* text,
-
6039 _In_ size_t start = 0,
-
6040 _In_ size_t end = (size_t)-1,
-
6041 _In_ int flags = match_default)
-
6042 {
-
6043 assert(text || start >= end);
-
6044 if (!http_media_range::match(text, start, end, flags))
-
6045 goto error;
-
6046 params.clear();
-
6047 for (;;) {
-
6048 if (this->interval.end < end && text[this->interval.end]) {
-
6049 if (m_space.match(text, this->interval.end, end, flags))
-
6050 this->interval.end = m_space.interval.end;
-
6051 else if (text[this->interval.end] == ';') {
-
6052 this->interval.end++;
-
6053 while (m_space.match(text, this->interval.end, end, flags))
-
6054 this->interval.end = m_space.interval.end;
- -
6056 if (param.match(text, this->interval.end, end, flags)) {
-
6057 this->interval.end = param.interval.end;
-
6058 params.push_back(std::move(param));
-
6059 }
-
6060 else
-
6061 break;
-
6062 }
-
6063 else
-
6064 break;
-
6065 }
-
6066 else
-
6067 break;
-
6068 }
-
6069 this->interval.end = params.empty() ? subtype.interval.end : params.back().interval.end;
-
6070 return true;
-
6071
-
6072 error:
-
6073 http_media_range::invalidate();
-
6074 params.clear();
-
6075 this->interval.start = (this->interval.end = start) + 1;
-
6076 return false;
-
6077 }
-
6078
-
6079 virtual void invalidate()
-
6080 {
-
6081 params.clear();
-
6082 http_media_range::invalidate();
-
6083 }
-
6084
-
6085 public:
-
6086 std::list<http_parameter> params;
-
6087 };
+
6029
+
+ +
6034 {
+
6035 public:
+
6036 virtual bool match(
+
6037 _In_reads_or_z_(end) const char* text,
+
6038 _In_ size_t start = 0,
+
6039 _In_ size_t end = (size_t)-1,
+
6040 _In_ int flags = match_default)
+
6041 {
+
6042 assert(text || start >= end);
+
6043 if (!http_media_range::match(text, start, end, flags))
+
6044 goto error;
+
6045 params.clear();
+
6046 for (;;) {
+
6047 if (this->interval.end < end && text[this->interval.end]) {
+
6048 if (m_space.match(text, this->interval.end, end, flags))
+
6049 this->interval.end = m_space.interval.end;
+
6050 else if (text[this->interval.end] == ';') {
+
6051 this->interval.end++;
+
6052 while (m_space.match(text, this->interval.end, end, flags))
+
6053 this->interval.end = m_space.interval.end;
+ +
6055 if (param.match(text, this->interval.end, end, flags)) {
+
6056 this->interval.end = param.interval.end;
+
6057 params.push_back(std::move(param));
+
6058 }
+
6059 else
+
6060 break;
+
6061 }
+
6062 else
+
6063 break;
+
6064 }
+
6065 else
+
6066 break;
+
6067 }
+
6068 this->interval.end = params.empty() ? subtype.interval.end : params.back().interval.end;
+
6069 return true;
+
6070
+
6071 error:
+
6072 http_media_range::invalidate();
+
6073 params.clear();
+
6074 this->interval.start = (this->interval.end = start) + 1;
+
6075 return false;
+
6076 }
+
6077
+
6078 virtual void invalidate()
+
6079 {
+
6080 params.clear();
+
6081 http_media_range::invalidate();
+
6082 }
+
6083
+
6084 public:
+
6085 std::list<http_parameter> params;
+
6086 };
-
6088
-
- -
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 this->interval.end = start;
-
6103 for (;;) {
-
6104 if (this->interval.end < end && text[this->interval.end]) {
-
6105 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6106 (unsigned int)text[this->interval.end] == 0x7f ||
-
6107 text[this->interval.end] == ':' ||
-
6108 text[this->interval.end] == '/' ||
-
6109 isspace(text[this->interval.end]))
-
6110 break;
-
6111 else
-
6112 this->interval.end++;
-
6113 }
-
6114 else
-
6115 break;
-
6116 }
- -
6118 this->interval.start = start;
-
6119 return true;
-
6120 }
-
6121 this->interval.start = (this->interval.end = start) + 1;
-
6122 return false;
-
6123 }
-
6124 };
+
6087
+
+ +
6092 {
+
6093 public:
+
6094 virtual bool match(
+
6095 _In_reads_or_z_(end) const char* text,
+
6096 _In_ size_t start = 0,
+
6097 _In_ size_t end = (size_t)-1,
+
6098 _In_ int flags = match_default)
+
6099 {
+
6100 assert(text || start >= end);
+
6101 this->interval.end = start;
+
6102 for (;;) {
+
6103 if (this->interval.end < end && text[this->interval.end]) {
+
6104 if ((unsigned int)text[this->interval.end] < 0x20 ||
+
6105 (unsigned int)text[this->interval.end] == 0x7f ||
+
6106 text[this->interval.end] == ':' ||
+
6107 text[this->interval.end] == '/' ||
+
6108 isspace(text[this->interval.end]))
+
6109 break;
+
6110 else
+
6111 this->interval.end++;
+
6112 }
+
6113 else
+
6114 break;
+
6115 }
+ +
6117 this->interval.start = start;
+
6118 return true;
+
6119 }
+
6120 this->interval.start = (this->interval.end = start) + 1;
+
6121 return false;
+
6122 }
+
6123 };
-
6125
-
-
6129 class http_url_port : public parser
-
6130 {
-
6131 public:
-
6132 http_url_port(_In_ const std::locale& locale = std::locale()) :
-
6133 parser(locale),
-
6134 value(0)
-
6135 {}
-
6136
-
6137 virtual bool match(
-
6138 _In_reads_or_z_(end) const char* text,
-
6139 _In_ size_t start = 0,
-
6140 _In_ size_t end = (size_t)-1,
-
6141 _In_ int flags = match_default)
-
6142 {
-
6143 assert(text || start >= end);
-
6144 value = 0;
-
6145 this->interval.end = start;
-
6146 for (;;) {
-
6147 if (this->interval.end < end && text[this->interval.end]) {
-
6148 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
-
6149 size_t _value = (size_t)value * 10 + text[this->interval.end] - '0';
-
6150 if (_value > (uint16_t)-1) {
-
6151 value = 0;
-
6152 this->interval.start = (this->interval.end = start) + 1;
-
6153 return false;
-
6154 }
-
6155 value = (uint16_t)_value;
-
6156 this->interval.end++;
-
6157 }
-
6158 else
-
6159 break;
-
6160 }
-
6161 else
-
6162 break;
-
6163 }
- -
6165 this->interval.start = start;
-
6166 return true;
-
6167 }
-
6168 this->interval.start = (this->interval.end = start) + 1;
-
6169 return false;
-
6170 }
-
6171
-
6172 virtual void invalidate()
-
6173 {
-
6174 value = 0;
-
6175 parser::invalidate();
-
6176 }
-
6177
-
6178 public:
-
6179 uint16_t value;
-
6180 };
+
6124
+
+
6128 class http_url_port : public parser
+
6129 {
+
6130 public:
+
6131 http_url_port(_In_ const std::locale& locale = std::locale()) :
+
6132 parser(locale),
+
6133 value(0)
+
6134 {}
+
6135
+
6136 virtual bool match(
+
6137 _In_reads_or_z_(end) const char* text,
+
6138 _In_ size_t start = 0,
+
6139 _In_ size_t end = (size_t)-1,
+
6140 _In_ int flags = match_default)
+
6141 {
+
6142 assert(text || start >= end);
+
6143 value = 0;
+
6144 this->interval.end = start;
+
6145 for (;;) {
+
6146 if (this->interval.end < end && text[this->interval.end]) {
+
6147 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
+
6148 size_t _value = (size_t)value * 10 + text[this->interval.end] - '0';
+
6149 if (_value > (uint16_t)-1) {
+
6150 value = 0;
+
6151 this->interval.start = (this->interval.end = start) + 1;
+
6152 return false;
+
6153 }
+
6154 value = (uint16_t)_value;
+
6155 this->interval.end++;
+
6156 }
+
6157 else
+
6158 break;
+
6159 }
+
6160 else
+
6161 break;
+
6162 }
+ +
6164 this->interval.start = start;
+
6165 return true;
+
6166 }
+
6167 this->interval.start = (this->interval.end = start) + 1;
+
6168 return false;
+
6169 }
+
6170
+
6171 virtual void invalidate()
+
6172 {
+
6173 value = 0;
+
6174 parser::invalidate();
+
6175 }
+
6176
+
6177 public:
+
6178 uint16_t value;
+
6179 };
-
6181
-
- -
6186 {
-
6187 public:
-
6188 virtual bool match(
-
6189 _In_reads_or_z_(end) const char* text,
-
6190 _In_ size_t start = 0,
-
6191 _In_ size_t end = (size_t)-1,
-
6192 _In_ int flags = match_default)
-
6193 {
-
6194 assert(text || start >= end);
-
6195 this->interval.end = start;
-
6196 for (;;) {
-
6197 if (this->interval.end < end && text[this->interval.end]) {
-
6198 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6199 (unsigned int)text[this->interval.end] == 0x7f ||
-
6200 text[this->interval.end] == '?' ||
-
6201 text[this->interval.end] == '/' ||
-
6202 isspace(text[this->interval.end]))
-
6203 break;
-
6204 else
-
6205 this->interval.end++;
-
6206 }
-
6207 else
-
6208 break;
-
6209 }
-
6210 this->interval.start = start;
-
6211 return true;
-
6212 }
-
6213 };
+
6180
+
+ +
6185 {
+
6186 public:
+
6187 virtual bool match(
+
6188 _In_reads_or_z_(end) const char* text,
+
6189 _In_ size_t start = 0,
+
6190 _In_ size_t end = (size_t)-1,
+
6191 _In_ int flags = match_default)
+
6192 {
+
6193 assert(text || start >= end);
+
6194 this->interval.end = start;
+
6195 for (;;) {
+
6196 if (this->interval.end < end && text[this->interval.end]) {
+
6197 if ((unsigned int)text[this->interval.end] < 0x20 ||
+
6198 (unsigned int)text[this->interval.end] == 0x7f ||
+
6199 text[this->interval.end] == '?' ||
+
6200 text[this->interval.end] == '/' ||
+
6201 isspace(text[this->interval.end]))
+
6202 break;
+
6203 else
+
6204 this->interval.end++;
+
6205 }
+
6206 else
+
6207 break;
+
6208 }
+
6209 this->interval.start = start;
+
6210 return true;
+
6211 }
+
6212 };
-
6214
-
-
6218 class http_url_path : public parser
-
6219 {
-
6220 public:
-
6221 virtual bool match(
-
6222 _In_reads_or_z_(end) const char* text,
-
6223 _In_ size_t start = 0,
-
6224 _In_ size_t end = (size_t)-1,
-
6225 _In_ int flags = match_default)
-
6226 {
-
6227 assert(text || start >= end);
- -
6229 this->interval.end = start;
-
6230 segments.clear();
-
6231 assert(text || this->interval.end >= end);
-
6232 if (this->interval.end < end && text[this->interval.end] != '/')
-
6233 goto error;
-
6234 this->interval.end++;
-
6235 s.match(text, this->interval.end, end, flags);
-
6236 segments.push_back(s);
-
6237 this->interval.end = s.interval.end;
-
6238 for (;;) {
-
6239 if (this->interval.end < end && text[this->interval.end]) {
-
6240 if (text[this->interval.end] == '/') {
-
6241 this->interval.end++;
-
6242 s.match(text, this->interval.end, end, flags);
-
6243 segments.push_back(s);
-
6244 this->interval.end = s.interval.end;
-
6245 }
-
6246 else
-
6247 break;
-
6248 }
-
6249 else
-
6250 break;
-
6251 }
-
6252 this->interval.start = start;
-
6253 return true;
-
6254
-
6255 error:
-
6256 segments.clear();
-
6257 this->interval.start = (this->interval.end = start) + 1;
-
6258 return false;
-
6259 }
-
6260
-
6261 virtual void invalidate()
-
6262 {
-
6263 segments.clear();
-
6264 parser::invalidate();
-
6265 }
-
6266
-
6267 public:
-
6268 std::vector<http_url_path_segment> segments;
-
6269 };
+
6213
+
+
6217 class http_url_path : public parser
+
6218 {
+
6219 public:
+
6220 virtual bool match(
+
6221 _In_reads_or_z_(end) const char* text,
+
6222 _In_ size_t start = 0,
+
6223 _In_ size_t end = (size_t)-1,
+
6224 _In_ int flags = match_default)
+
6225 {
+
6226 assert(text || start >= end);
+ +
6228 this->interval.end = start;
+
6229 segments.clear();
+
6230 assert(text || this->interval.end >= end);
+
6231 if (this->interval.end < end && text[this->interval.end] != '/')
+
6232 goto error;
+
6233 this->interval.end++;
+
6234 s.match(text, this->interval.end, end, flags);
+
6235 segments.push_back(s);
+
6236 this->interval.end = s.interval.end;
+
6237 for (;;) {
+
6238 if (this->interval.end < end && text[this->interval.end]) {
+
6239 if (text[this->interval.end] == '/') {
+
6240 this->interval.end++;
+
6241 s.match(text, this->interval.end, end, flags);
+
6242 segments.push_back(s);
+
6243 this->interval.end = s.interval.end;
+
6244 }
+
6245 else
+
6246 break;
+
6247 }
+
6248 else
+
6249 break;
+
6250 }
+
6251 this->interval.start = start;
+
6252 return true;
+
6253
+
6254 error:
+
6255 segments.clear();
+
6256 this->interval.start = (this->interval.end = start) + 1;
+
6257 return false;
+
6258 }
+
6259
+
6260 virtual void invalidate()
+
6261 {
+
6262 segments.clear();
+
6263 parser::invalidate();
+
6264 }
+
6265
+
6266 public:
+
6267 std::vector<http_url_path_segment> segments;
+
6268 };
-
6270
-
- -
6275 {
-
6276 public:
-
6277 virtual bool match(
-
6278 _In_reads_or_z_(end) const char* text,
-
6279 _In_ size_t start = 0,
-
6280 _In_ size_t end = (size_t)-1,
-
6281 _In_ int flags = match_default)
-
6282 {
-
6283 assert(text || start >= end);
-
6284 this->interval.end = start;
-
6285 name.start = this->interval.end;
-
6286 for (;;) {
-
6287 if (this->interval.end < end && text[this->interval.end]) {
-
6288 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6289 (unsigned int)text[this->interval.end] == 0x7f ||
-
6290 text[this->interval.end] == '&' ||
-
6291 text[this->interval.end] == '=' ||
-
6292 isspace(text[this->interval.end]))
-
6293 break;
-
6294 else
-
6295 this->interval.end++;
-
6296 }
-
6297 else
-
6298 break;
-
6299 }
- -
6301 name.end = this->interval.end;
-
6302 else
-
6303 goto error;
-
6304 if (text[this->interval.end] == '=') {
-
6305 this->interval.end++;
-
6306 value.start = this->interval.end;
-
6307 for (;;) {
-
6308 if (this->interval.end < end && text[this->interval.end]) {
-
6309 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6310 (unsigned int)text[this->interval.end] == 0x7f ||
-
6311 text[this->interval.end] == '&' ||
-
6312 isspace(text[this->interval.end]))
-
6313 break;
-
6314 else
-
6315 this->interval.end++;
-
6316 }
-
6317 else
-
6318 break;
-
6319 }
-
6320 value.end = this->interval.end;
-
6321 }
-
6322 else {
-
6323 value.start = 1;
-
6324 value.end = 0;
-
6325 }
-
6326 this->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 this->interval.start = (this->interval.end = start) + 1;
-
6335 return false;
-
6336 }
-
6337
-
6338 virtual void invalidate()
-
6339 {
-
6340 name.start = 1;
-
6341 name.end = 0;
-
6342 value.start = 1;
-
6343 value.end = 0;
-
6344 parser::invalidate();
-
6345 }
-
6346
-
6347 public:
- - -
6350 };
+
6269
+
+ +
6274 {
+
6275 public:
+
6276 virtual bool match(
+
6277 _In_reads_or_z_(end) const char* text,
+
6278 _In_ size_t start = 0,
+
6279 _In_ size_t end = (size_t)-1,
+
6280 _In_ int flags = match_default)
+
6281 {
+
6282 assert(text || start >= end);
+
6283 this->interval.end = start;
+
6284 name.start = this->interval.end;
+
6285 for (;;) {
+
6286 if (this->interval.end < end && text[this->interval.end]) {
+
6287 if ((unsigned int)text[this->interval.end] < 0x20 ||
+
6288 (unsigned int)text[this->interval.end] == 0x7f ||
+
6289 text[this->interval.end] == '&' ||
+
6290 text[this->interval.end] == '=' ||
+
6291 isspace(text[this->interval.end]))
+
6292 break;
+
6293 else
+
6294 this->interval.end++;
+
6295 }
+
6296 else
+
6297 break;
+
6298 }
+ +
6300 name.end = this->interval.end;
+
6301 else
+
6302 goto error;
+
6303 if (text[this->interval.end] == '=') {
+
6304 this->interval.end++;
+
6305 value.start = this->interval.end;
+
6306 for (;;) {
+
6307 if (this->interval.end < end && text[this->interval.end]) {
+
6308 if ((unsigned int)text[this->interval.end] < 0x20 ||
+
6309 (unsigned int)text[this->interval.end] == 0x7f ||
+
6310 text[this->interval.end] == '&' ||
+
6311 isspace(text[this->interval.end]))
+
6312 break;
+
6313 else
+
6314 this->interval.end++;
+
6315 }
+
6316 else
+
6317 break;
+
6318 }
+
6319 value.end = this->interval.end;
+
6320 }
+
6321 else {
+
6322 value.start = 1;
+
6323 value.end = 0;
+
6324 }
+
6325 this->interval.start = start;
+
6326 return true;
+
6327
+
6328 error:
+
6329 name.start = 1;
+
6330 name.end = 0;
+
6331 value.start = 1;
+
6332 value.end = 0;
+
6333 this->interval.start = (this->interval.end = start) + 1;
+
6334 return false;
+
6335 }
+
6336
+
6337 virtual void invalidate()
+
6338 {
+
6339 name.start = 1;
+
6340 name.end = 0;
+
6341 value.start = 1;
+
6342 value.end = 0;
+
6343 parser::invalidate();
+
6344 }
+
6345
+
6346 public:
+ + +
6349 };
-
6351
-
-
6355 class http_url : public parser
-
6356 {
-
6357 public:
-
6358 http_url(_In_ const std::locale& locale = std::locale()) :
-
6359 parser(locale),
-
6360 port(locale)
-
6361 {}
-
6362
-
6363 virtual bool match(
-
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 assert(text || start >= end);
-
6370 this->interval.end = start;
-
6371
-
6372 if (this->interval.end + 7 <= end && stdex::strnicmp(text + this->interval.end, 7, "http://", (size_t)-1, m_locale) == 0) {
-
6373 this->interval.end += 7;
-
6374 if (server.match(text, this->interval.end, end, flags))
-
6375 this->interval.end = server.interval.end;
-
6376 else
-
6377 goto error;
-
6378 if (this->interval.end < end && text[this->interval.end] == ':') {
-
6379 this->interval.end++;
-
6380 if (port.match(text, this->interval.end, end, flags))
-
6381 this->interval.end = port.interval.end;
-
6382 }
-
6383 else {
-
6384 port.invalidate();
-
6385 port.value = 80;
-
6386 }
-
6387 }
-
6388 else {
-
6389 server.invalidate();
-
6390 port.invalidate();
-
6391 port.value = 80;
-
6392 }
-
6393
-
6394 if (path.match(text, this->interval.end, end, flags))
-
6395 this->interval.end = path.interval.end;
-
6396 else
-
6397 goto error;
-
6398
-
6399 params.clear();
-
6400
-
6401 if (this->interval.end < end && text[this->interval.end] == '?') {
-
6402 this->interval.end++;
-
6403 for (;;) {
-
6404 if (this->interval.end < end && text[this->interval.end]) {
-
6405 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6406 (unsigned int)text[this->interval.end] == 0x7f ||
-
6407 isspace(text[this->interval.end]))
-
6408 break;
-
6409 else if (text[this->interval.end] == '&')
-
6410 this->interval.end++;
-
6411 else {
- -
6413 if (param.match(text, this->interval.end, end, flags)) {
-
6414 this->interval.end = param.interval.end;
-
6415 params.push_back(std::move(param));
-
6416 }
-
6417 else
-
6418 break;
-
6419 }
-
6420 }
-
6421 else
-
6422 break;
-
6423 }
-
6424 }
-
6425
-
6426 this->interval.start = start;
-
6427 return true;
-
6428
-
6429 error:
-
6430 server.invalidate();
-
6431 port.invalidate();
-
6432 path.invalidate();
-
6433 params.clear();
-
6434 this->interval.start = (this->interval.end = start) + 1;
-
6435 return false;
-
6436 }
-
6437
-
6438 virtual void invalidate()
-
6439 {
-
6440 server.invalidate();
-
6441 port.invalidate();
-
6442 path.invalidate();
-
6443 params.clear();
-
6444 parser::invalidate();
-
6445 }
-
6446
-
6447 public:
-
6448 http_url_server server;
-
6449 http_url_port port;
-
6450 http_url_path path;
-
6451 std::list<http_url_parameter> params;
-
6452 };
+
6350
+
+
6354 class http_url : public parser
+
6355 {
+
6356 public:
+
6357 http_url(_In_ const std::locale& locale = std::locale()) :
+
6358 parser(locale),
+
6359 port(locale)
+
6360 {}
+
6361
+
6362 virtual bool match(
+
6363 _In_reads_or_z_(end) const char* text,
+
6364 _In_ size_t start = 0,
+
6365 _In_ size_t end = (size_t)-1,
+
6366 _In_ int flags = match_default)
+
6367 {
+
6368 assert(text || start >= end);
+
6369 this->interval.end = start;
+
6370
+
6371 if (this->interval.end + 7 <= end && stdex::strnicmp(text + this->interval.end, 7, "http://", (size_t)-1, m_locale) == 0) {
+
6372 this->interval.end += 7;
+
6373 if (server.match(text, this->interval.end, end, flags))
+
6374 this->interval.end = server.interval.end;
+
6375 else
+
6376 goto error;
+
6377 if (this->interval.end < end && text[this->interval.end] == ':') {
+
6378 this->interval.end++;
+
6379 if (port.match(text, this->interval.end, end, flags))
+
6380 this->interval.end = port.interval.end;
+
6381 }
+
6382 else {
+
6383 port.invalidate();
+
6384 port.value = 80;
+
6385 }
+
6386 }
+
6387 else {
+
6388 server.invalidate();
+
6389 port.invalidate();
+
6390 port.value = 80;
+
6391 }
+
6392
+
6393 if (path.match(text, this->interval.end, end, flags))
+
6394 this->interval.end = path.interval.end;
+
6395 else
+
6396 goto error;
+
6397
+
6398 params.clear();
+
6399
+
6400 if (this->interval.end < end && text[this->interval.end] == '?') {
+
6401 this->interval.end++;
+
6402 for (;;) {
+
6403 if (this->interval.end < end && text[this->interval.end]) {
+
6404 if ((unsigned int)text[this->interval.end] < 0x20 ||
+
6405 (unsigned int)text[this->interval.end] == 0x7f ||
+
6406 isspace(text[this->interval.end]))
+
6407 break;
+
6408 else if (text[this->interval.end] == '&')
+
6409 this->interval.end++;
+
6410 else {
+ +
6412 if (param.match(text, this->interval.end, end, flags)) {
+
6413 this->interval.end = param.interval.end;
+
6414 params.push_back(std::move(param));
+
6415 }
+
6416 else
+
6417 break;
+
6418 }
+
6419 }
+
6420 else
+
6421 break;
+
6422 }
+
6423 }
+
6424
+
6425 this->interval.start = start;
+
6426 return true;
+
6427
+
6428 error:
+
6429 server.invalidate();
+
6430 port.invalidate();
+
6431 path.invalidate();
+
6432 params.clear();
+
6433 this->interval.start = (this->interval.end = start) + 1;
+
6434 return false;
+
6435 }
+
6436
+
6437 virtual void invalidate()
+
6438 {
+
6439 server.invalidate();
+
6440 port.invalidate();
+
6441 path.invalidate();
+
6442 params.clear();
+
6443 parser::invalidate();
+
6444 }
+
6445
+
6446 public:
+
6447 http_url_server server;
+
6448 http_url_port port;
+
6449 http_url_path path;
+
6450 std::list<http_url_parameter> params;
+
6451 };
-
6453
-
-
6457 class http_language : public parser
-
6458 {
-
6459 public:
-
6460 virtual bool match(
-
6461 _In_reads_or_z_(end) const char* text,
-
6462 _In_ size_t start = 0,
-
6463 _In_ size_t end = (size_t)-1,
-
6464 _In_ int flags = match_default)
-
6465 {
-
6466 assert(text || start >= end);
-
6467 this->interval.end = start;
-
6468 components.clear();
-
6469 for (;;) {
-
6470 if (this->interval.end < end && text[this->interval.end]) {
- -
6472 k.end = this->interval.end;
-
6473 for (;;) {
-
6474 if (k.end < end && text[k.end]) {
-
6475 if (isalpha(text[k.end]))
-
6476 k.end++;
-
6477 else
-
6478 break;
-
6479 }
-
6480 else
-
6481 break;
-
6482 }
-
6483 if (this->interval.end < k.end) {
-
6484 k.start = this->interval.end;
-
6485 this->interval.end = k.end;
-
6486 components.push_back(k);
-
6487 }
-
6488 else
-
6489 break;
-
6490 if (this->interval.end < end && text[this->interval.end] == '-')
-
6491 this->interval.end++;
-
6492 else
-
6493 break;
-
6494 }
-
6495 else
-
6496 break;
-
6497 }
-
6498 if (!components.empty()) {
-
6499 this->interval.start = start;
-
6500 this->interval.end = components.back().end;
-
6501 return true;
-
6502 }
-
6503 this->interval.start = (this->interval.end = start) + 1;
-
6504 return false;
-
6505 }
-
6506
-
6507 virtual void invalidate()
-
6508 {
-
6509 components.clear();
-
6510 parser::invalidate();
-
6511 }
-
6512
-
6513 public:
-
6514 std::vector<stdex::interval<size_t>> components;
-
6515 };
+
6452
+
+
6456 class http_language : public parser
+
6457 {
+
6458 public:
+
6459 virtual bool match(
+
6460 _In_reads_or_z_(end) const char* text,
+
6461 _In_ size_t start = 0,
+
6462 _In_ size_t end = (size_t)-1,
+
6463 _In_ int flags = match_default)
+
6464 {
+
6465 assert(text || start >= end);
+
6466 this->interval.end = start;
+
6467 components.clear();
+
6468 for (;;) {
+
6469 if (this->interval.end < end && text[this->interval.end]) {
+ +
6471 k.end = this->interval.end;
+
6472 for (;;) {
+
6473 if (k.end < end && text[k.end]) {
+
6474 if (isalpha(text[k.end]))
+
6475 k.end++;
+
6476 else
+
6477 break;
+
6478 }
+
6479 else
+
6480 break;
+
6481 }
+
6482 if (this->interval.end < k.end) {
+
6483 k.start = this->interval.end;
+
6484 this->interval.end = k.end;
+
6485 components.push_back(k);
+
6486 }
+
6487 else
+
6488 break;
+
6489 if (this->interval.end < end && text[this->interval.end] == '-')
+
6490 this->interval.end++;
+
6491 else
+
6492 break;
+
6493 }
+
6494 else
+
6495 break;
+
6496 }
+
6497 if (!components.empty()) {
+
6498 this->interval.start = start;
+
6499 this->interval.end = components.back().end;
+
6500 return true;
+
6501 }
+
6502 this->interval.start = (this->interval.end = start) + 1;
+
6503 return false;
+
6504 }
+
6505
+
6506 virtual void invalidate()
+
6507 {
+
6508 components.clear();
+
6509 parser::invalidate();
+
6510 }
+
6511
+
6512 public:
+
6513 std::vector<stdex::interval<size_t>> components;
+
6514 };
-
6516
-
-
6520 class http_weight : public parser
-
6521 {
-
6522 public:
-
6523 http_weight(_In_ const std::locale& locale = std::locale()) :
-
6524 parser(locale),
-
6525 value(1.0f)
-
6526 {}
-
6527
-
6528 virtual bool match(
-
6529 _In_reads_or_z_(end) const char* text,
-
6530 _In_ size_t start = 0,
-
6531 _In_ size_t end = (size_t)-1,
-
6532 _In_ int flags = match_default)
-
6533 {
-
6534 assert(text || start >= end);
-
6535 size_t celi_del = 0, decimalni_del = 0, decimalni_del_n = 1;
-
6536 this->interval.end = start;
-
6537 for (;;) {
-
6538 if (this->interval.end < end && text[this->interval.end]) {
-
6539 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
-
6540 celi_del = celi_del * 10 + text[this->interval.end] - '0';
-
6541 this->interval.end++;
-
6542 }
-
6543 else if (text[this->interval.end] == '.') {
-
6544 this->interval.end++;
-
6545 for (;;) {
-
6546 if (this->interval.end < end && text[this->interval.end]) {
-
6547 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
-
6548 decimalni_del = decimalni_del * 10 + text[this->interval.end] - '0';
-
6549 decimalni_del_n *= 10;
-
6550 this->interval.end++;
-
6551 }
-
6552 else
-
6553 break;
-
6554 }
-
6555 else
-
6556 break;
-
6557 }
-
6558 break;
-
6559 }
-
6560 else
-
6561 break;
-
6562 }
-
6563 else
-
6564 break;
-
6565 }
- - -
6568 this->interval.start = start;
-
6569 return true;
-
6570 }
-
6571 value = 1.0f;
-
6572 this->interval.start = (this->interval.end = start) + 1;
-
6573 return false;
-
6574 }
-
6575
-
6576 virtual void invalidate()
-
6577 {
-
6578 value = 1.0f;
-
6579 parser::invalidate();
-
6580 }
-
6581
-
6582 public:
-
6583 float value;
-
6584 };
+
6515
+
+
6519 class http_weight : public parser
+
6520 {
+
6521 public:
+
6522 http_weight(_In_ const std::locale& locale = std::locale()) :
+
6523 parser(locale),
+
6524 value(1.0f)
+
6525 {}
+
6526
+
6527 virtual bool match(
+
6528 _In_reads_or_z_(end) const char* text,
+
6529 _In_ size_t start = 0,
+
6530 _In_ size_t end = (size_t)-1,
+
6531 _In_ int flags = match_default)
+
6532 {
+
6533 assert(text || start >= end);
+
6534 size_t celi_del = 0, decimalni_del = 0, decimalni_del_n = 1;
+
6535 this->interval.end = start;
+
6536 for (;;) {
+
6537 if (this->interval.end < end && text[this->interval.end]) {
+
6538 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
+
6539 celi_del = celi_del * 10 + text[this->interval.end] - '0';
+
6540 this->interval.end++;
+
6541 }
+
6542 else if (text[this->interval.end] == '.') {
+
6543 this->interval.end++;
+
6544 for (;;) {
+
6545 if (this->interval.end < end && text[this->interval.end]) {
+
6546 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
+
6547 decimalni_del = decimalni_del * 10 + text[this->interval.end] - '0';
+
6548 decimalni_del_n *= 10;
+
6549 this->interval.end++;
+
6550 }
+
6551 else
+
6552 break;
+
6553 }
+
6554 else
+
6555 break;
+
6556 }
+
6557 break;
+
6558 }
+
6559 else
+
6560 break;
+
6561 }
+
6562 else
+
6563 break;
+
6564 }
+ + +
6567 this->interval.start = start;
+
6568 return true;
+
6569 }
+
6570 value = 1.0f;
+
6571 this->interval.start = (this->interval.end = start) + 1;
+
6572 return false;
+
6573 }
+
6574
+
6575 virtual void invalidate()
+
6576 {
+
6577 value = 1.0f;
+
6578 parser::invalidate();
+
6579 }
+
6580
+
6581 public:
+
6582 float value;
+
6583 };
-
6585
-
-
6589 class http_asterisk : public parser
-
6590 {
-
6591 public:
-
6592 virtual bool match(
-
6593 _In_reads_or_z_(end) const char* text,
-
6594 _In_ size_t start = 0,
-
6595 _In_ size_t end = (size_t)-1,
-
6596 _In_ int flags = match_default)
-
6597 {
-
6598 assert(text || end <= start);
-
6599 if (start < end && text[start] == '*') {
-
6600 this->interval.end = (this->interval.start = start) + 1;
-
6601 return true;
-
6602 }
-
6603 this->interval.start = (this->interval.end = start) + 1;
-
6604 return false;
-
6605 }
-
6606 };
+
6584
+
+
6588 class http_asterisk : public parser
+
6589 {
+
6590 public:
+
6591 virtual bool match(
+
6592 _In_reads_or_z_(end) const char* text,
+
6593 _In_ size_t start = 0,
+
6594 _In_ size_t end = (size_t)-1,
+
6595 _In_ int flags = match_default)
+
6596 {
+
6597 assert(text || end <= start);
+
6598 if (start < end && text[start] == '*') {
+
6599 this->interval.end = (this->interval.start = start) + 1;
+
6600 return true;
+
6601 }
+
6602 this->interval.start = (this->interval.end = start) + 1;
+
6603 return false;
+
6604 }
+
6605 };
-
6607
-
6611 template <class T, class T_asterisk = http_asterisk>
-
- -
6613 {
-
6614 public:
-
6615 http_weighted_value(_In_ const std::locale& locale = std::locale()) :
-
6616 parser(locale),
-
6617 factor(locale)
-
6618 {}
-
6619
-
6620 virtual bool match(
-
6621 _In_reads_or_z_(end) const char* text,
-
6622 _In_ size_t start = 0,
-
6623 _In_ size_t end = (size_t)-1,
-
6624 _In_ int flags = match_default)
-
6625 {
-
6626 assert(text || start >= end);
-
6627 size_t konec_vrednosti;
-
6628 this->interval.end = start;
-
6629 if (asterisk.match(text, this->interval.end, end, flags)) {
-
6630 this->interval.end = konec_vrednosti = asterisk.interval.end;
-
6631 value.invalidate();
-
6632 }
-
6633 else if (value.match(text, this->interval.end, end, flags)) {
-
6634 this->interval.end = konec_vrednosti = value.interval.end;
-
6635 asterisk.invalidate();
-
6636 }
-
6637 else {
-
6638 asterisk.invalidate();
-
6639 value.invalidate();
-
6640 this->interval.start = (this->interval.end = start) + 1;
-
6641 return false;
-
6642 }
-
6643
-
6644 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6645 if (this->interval.end < end && text[this->interval.end] == ';') {
-
6646 this->interval.end++;
-
6647 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6648 if (this->interval.end < end && (text[this->interval.end] == 'q' || text[this->interval.end] == 'Q')) {
-
6649 this->interval.end++;
-
6650 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6651 if (this->interval.end < end && text[this->interval.end] == '=') {
-
6652 this->interval.end++;
-
6653 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6654 if (factor.match(text, this->interval.end, end, flags))
-
6655 this->interval.end = factor.interval.end;
-
6656 }
-
6657 }
-
6658 }
-
6659 if (!factor.interval) {
-
6660 factor.invalidate();
- -
6662 }
-
6663 this->interval.start = start;
-
6664 return true;
-
6665 }
-
6666
-
6667 virtual void invalidate()
-
6668 {
-
6669 asterisk.invalidate();
-
6670 value.invalidate();
-
6671 factor.invalidate();
-
6672 parser::invalidate();
-
6673 }
-
6674
-
6675 public:
-
6676 T_asterisk asterisk;
-
6677 T value;
-
6678 http_weight factor;
-
6679 };
+
6606
+
6610 template <class T, class T_asterisk = http_asterisk>
+
+ +
6612 {
+
6613 public:
+
6614 http_weighted_value(_In_ const std::locale& locale = std::locale()) :
+
6615 parser(locale),
+
6616 factor(locale)
+
6617 {}
+
6618
+
6619 virtual bool match(
+
6620 _In_reads_or_z_(end) const char* text,
+
6621 _In_ size_t start = 0,
+
6622 _In_ size_t end = (size_t)-1,
+
6623 _In_ int flags = match_default)
+
6624 {
+
6625 assert(text || start >= end);
+
6626 size_t konec_vrednosti;
+
6627 this->interval.end = start;
+
6628 if (asterisk.match(text, this->interval.end, end, flags)) {
+
6629 this->interval.end = konec_vrednosti = asterisk.interval.end;
+
6630 value.invalidate();
+
6631 }
+
6632 else if (value.match(text, this->interval.end, end, flags)) {
+
6633 this->interval.end = konec_vrednosti = value.interval.end;
+
6634 asterisk.invalidate();
+
6635 }
+
6636 else {
+
6637 asterisk.invalidate();
+
6638 value.invalidate();
+
6639 this->interval.start = (this->interval.end = start) + 1;
+
6640 return false;
+
6641 }
+
6642
+
6643 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6644 if (this->interval.end < end && text[this->interval.end] == ';') {
+
6645 this->interval.end++;
+
6646 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6647 if (this->interval.end < end && (text[this->interval.end] == 'q' || text[this->interval.end] == 'Q')) {
+
6648 this->interval.end++;
+
6649 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6650 if (this->interval.end < end && text[this->interval.end] == '=') {
+
6651 this->interval.end++;
+
6652 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6653 if (factor.match(text, this->interval.end, end, flags))
+
6654 this->interval.end = factor.interval.end;
+
6655 }
+
6656 }
+
6657 }
+
6658 if (!factor.interval) {
+
6659 factor.invalidate();
+ +
6661 }
+
6662 this->interval.start = start;
+
6663 return true;
+
6664 }
+
6665
+
6666 virtual void invalidate()
+
6667 {
+
6668 asterisk.invalidate();
+
6669 value.invalidate();
+
6670 factor.invalidate();
+
6671 parser::invalidate();
+
6672 }
+
6673
+
6674 public:
+
6675 T_asterisk asterisk;
+
6676 T value;
+
6677 http_weight factor;
+
6678 };
-
6680
-
- -
6685 {
-
6686 public:
-
6687 virtual bool match(
-
6688 _In_reads_or_z_(end) const char* text,
-
6689 _In_ size_t start = 0,
-
6690 _In_ size_t end = (size_t)-1,
-
6691 _In_ int flags = match_default)
-
6692 {
-
6693 assert(text || start >= end);
-
6694 this->interval.end = start;
-
6695 if (this->interval.end < end && text[this->interval.end] == '$')
-
6696 this->interval.end++;
-
6697 else
-
6698 goto error;
-
6699 if (name.match(text, this->interval.end, end, flags))
-
6700 this->interval.end = name.interval.end;
-
6701 else
-
6702 goto error;
-
6703 while (m_space.match(text, this->interval.end, end, flags))
-
6704 this->interval.end = m_space.interval.end;
-
6705 if (this->interval.end < end && text[this->interval.end] == '=')
-
6706 this->interval.end++;
-
6707 else
-
6708 goto error;
-
6709 while (m_space.match(text, this->interval.end, end, flags))
-
6710 this->interval.end = m_space.interval.end;
-
6711 if (value.match(text, this->interval.end, end, flags))
-
6712 this->interval.end = value.interval.end;
-
6713 else
-
6714 goto error;
-
6715 this->interval.start = start;
-
6716 return true;
-
6717
-
6718 error:
-
6719 name.invalidate();
-
6720 value.invalidate();
-
6721 this->interval.start = (this->interval.end = start) + 1;
-
6722 return false;
-
6723 }
-
6724
-
6725 virtual void invalidate()
-
6726 {
-
6727 name.invalidate();
-
6728 value.invalidate();
-
6729 parser::invalidate();
-
6730 }
-
6731
-
6732 public:
-
6733 http_token name;
-
6734 http_value value;
-
6735
-
6736 protected:
-
6737 http_space m_space;
-
6738 };
+
6679
+
+ +
6684 {
+
6685 public:
+
6686 virtual bool match(
+
6687 _In_reads_or_z_(end) const char* text,
+
6688 _In_ size_t start = 0,
+
6689 _In_ size_t end = (size_t)-1,
+
6690 _In_ int flags = match_default)
+
6691 {
+
6692 assert(text || start >= end);
+
6693 this->interval.end = start;
+
6694 if (this->interval.end < end && text[this->interval.end] == '$')
+
6695 this->interval.end++;
+
6696 else
+
6697 goto error;
+
6698 if (name.match(text, this->interval.end, end, flags))
+
6699 this->interval.end = name.interval.end;
+
6700 else
+
6701 goto error;
+
6702 while (m_space.match(text, this->interval.end, end, flags))
+
6703 this->interval.end = m_space.interval.end;
+
6704 if (this->interval.end < end && text[this->interval.end] == '=')
+
6705 this->interval.end++;
+
6706 else
+
6707 goto error;
+
6708 while (m_space.match(text, this->interval.end, end, flags))
+
6709 this->interval.end = m_space.interval.end;
+
6710 if (value.match(text, this->interval.end, end, flags))
+
6711 this->interval.end = value.interval.end;
+
6712 else
+
6713 goto error;
+
6714 this->interval.start = start;
+
6715 return true;
+
6716
+
6717 error:
+
6718 name.invalidate();
+
6719 value.invalidate();
+
6720 this->interval.start = (this->interval.end = start) + 1;
+
6721 return false;
+
6722 }
+
6723
+
6724 virtual void invalidate()
+
6725 {
+
6726 name.invalidate();
+
6727 value.invalidate();
+
6728 parser::invalidate();
+
6729 }
+
6730
+
6731 public:
+
6732 http_token name;
+
6733 http_value value;
+
6734
+
6735 protected:
+
6736 http_space m_space;
+
6737 };
-
6739
-
-
6743 class http_cookie : public parser
-
6744 {
-
6745 public:
-
6746 virtual bool match(
-
6747 _In_reads_or_z_(end) const char* text,
-
6748 _In_ size_t start = 0,
-
6749 _In_ size_t end = (size_t)-1,
-
6750 _In_ int flags = match_default)
-
6751 {
-
6752 assert(text || start >= end);
-
6753 this->interval.end = start;
-
6754 if (name.match(text, this->interval.end, end, flags))
-
6755 this->interval.end = name.interval.end;
-
6756 else
-
6757 goto error;
-
6758 while (m_space.match(text, this->interval.end, end, flags))
-
6759 this->interval.end = m_space.interval.end;
-
6760 if (this->interval.end < end && text[this->interval.end] == '=')
-
6761 this->interval.end++;
-
6762 else
-
6763 goto error;
-
6764 while (m_space.match(text, this->interval.end, end, flags))
-
6765 this->interval.end = m_space.interval.end;
-
6766 if (value.match(text, this->interval.end, end, flags))
-
6767 this->interval.end = value.interval.end;
-
6768 else
-
6769 goto error;
-
6770 params.clear();
-
6771 for (;;) {
-
6772 if (this->interval.end < end && text[this->interval.end]) {
-
6773 if (m_space.match(text, this->interval.end, end, flags))
-
6774 this->interval.end = m_space.interval.end;
-
6775 else if (text[this->interval.end] == ';') {
-
6776 this->interval.end++;
-
6777 while (m_space.match(text, this->interval.end, end, flags))
-
6778 this->interval.end = m_space.interval.end;
- -
6780 if (param.match(text, this->interval.end, end, flags)) {
-
6781 this->interval.end = param.interval.end;
-
6782 params.push_back(std::move(param));
-
6783 }
-
6784 else
-
6785 break;
-
6786 }
-
6787 else
-
6788 break;
-
6789 }
-
6790 else
-
6791 break;
-
6792 }
-
6793 this->interval.start = start;
-
6794 this->interval.end = params.empty() ? value.interval.end : params.back().interval.end;
-
6795 return true;
-
6796
-
6797 error:
-
6798 name.invalidate();
-
6799 value.invalidate();
-
6800 params.clear();
-
6801 this->interval.start = (this->interval.end = start) + 1;
-
6802 return false;
-
6803 }
-
6804
-
6805 virtual void invalidate()
-
6806 {
-
6807 name.invalidate();
-
6808 value.invalidate();
-
6809 params.clear();
-
6810 parser::invalidate();
-
6811 }
-
6812
-
6813 public:
- - -
6816 std::list<http_cookie_parameter> params;
-
6817
-
6818 protected:
-
6819 http_space m_space;
-
6820 };
+
6738
+
+
6742 class http_cookie : public parser
+
6743 {
+
6744 public:
+
6745 virtual bool match(
+
6746 _In_reads_or_z_(end) const char* text,
+
6747 _In_ size_t start = 0,
+
6748 _In_ size_t end = (size_t)-1,
+
6749 _In_ int flags = match_default)
+
6750 {
+
6751 assert(text || start >= end);
+
6752 this->interval.end = start;
+
6753 if (name.match(text, this->interval.end, end, flags))
+
6754 this->interval.end = name.interval.end;
+
6755 else
+
6756 goto error;
+
6757 while (m_space.match(text, this->interval.end, end, flags))
+
6758 this->interval.end = m_space.interval.end;
+
6759 if (this->interval.end < end && text[this->interval.end] == '=')
+
6760 this->interval.end++;
+
6761 else
+
6762 goto error;
+
6763 while (m_space.match(text, this->interval.end, end, flags))
+
6764 this->interval.end = m_space.interval.end;
+
6765 if (value.match(text, this->interval.end, end, flags))
+
6766 this->interval.end = value.interval.end;
+
6767 else
+
6768 goto error;
+
6769 params.clear();
+
6770 for (;;) {
+
6771 if (this->interval.end < end && text[this->interval.end]) {
+
6772 if (m_space.match(text, this->interval.end, end, flags))
+
6773 this->interval.end = m_space.interval.end;
+
6774 else if (text[this->interval.end] == ';') {
+
6775 this->interval.end++;
+
6776 while (m_space.match(text, this->interval.end, end, flags))
+
6777 this->interval.end = m_space.interval.end;
+ +
6779 if (param.match(text, this->interval.end, end, flags)) {
+
6780 this->interval.end = param.interval.end;
+
6781 params.push_back(std::move(param));
+
6782 }
+
6783 else
+
6784 break;
+
6785 }
+
6786 else
+
6787 break;
+
6788 }
+
6789 else
+
6790 break;
+
6791 }
+
6792 this->interval.start = start;
+
6793 this->interval.end = params.empty() ? value.interval.end : params.back().interval.end;
+
6794 return true;
+
6795
+
6796 error:
+
6797 name.invalidate();
+
6798 value.invalidate();
+
6799 params.clear();
+
6800 this->interval.start = (this->interval.end = start) + 1;
+
6801 return false;
+
6802 }
+
6803
+
6804 virtual void invalidate()
+
6805 {
+
6806 name.invalidate();
+
6807 value.invalidate();
+
6808 params.clear();
+
6809 parser::invalidate();
+
6810 }
+
6811
+
6812 public:
+ + +
6815 std::list<http_cookie_parameter> params;
+
6816
+
6817 protected:
+
6818 http_space m_space;
+
6819 };
-
6821
-
-
6825 class http_agent : public parser
-
6826 {
-
6827 public:
-
6828 virtual bool match(
-
6829 _In_reads_or_z_(end) const char* text,
-
6830 _In_ size_t start = 0,
-
6831 _In_ size_t end = (size_t)-1,
-
6832 _In_ int flags = match_default)
-
6833 {
-
6834 assert(text || start >= end);
-
6835 this->interval.end = start;
-
6836 type.start = this->interval.end;
-
6837 for (;;) {
-
6838 if (this->interval.end < end && text[this->interval.end]) {
-
6839 if (text[this->interval.end] == '/') {
-
6840 type.end = this->interval.end;
-
6841 this->interval.end++;
-
6842 version.start = this->interval.end;
-
6843 for (;;) {
-
6844 if (this->interval.end < end && text[this->interval.end]) {
-
6845 if (isspace(text[this->interval.end])) {
-
6846 version.end = this->interval.end;
-
6847 break;
-
6848 }
-
6849 else
-
6850 this->interval.end++;
-
6851 }
-
6852 else {
-
6853 version.end = this->interval.end;
-
6854 break;
-
6855 }
-
6856 }
-
6857 break;
-
6858 }
-
6859 else if (isspace(text[this->interval.end])) {
-
6860 type.end = this->interval.end;
-
6861 break;
-
6862 }
-
6863 else
-
6864 this->interval.end++;
-
6865 }
-
6866 else {
-
6867 type.end = this->interval.end;
-
6868 break;
-
6869 }
-
6870 }
- -
6872 this->interval.start = start;
-
6873 return true;
-
6874 }
-
6875 type.start = 1;
-
6876 type.end = 0;
-
6877 version.start = 1;
-
6878 version.end = 0;
-
6879 this->interval.start = 1;
-
6880 this->interval.end = 0;
-
6881 return false;
-
6882 }
-
6883
-
6884 virtual void invalidate()
-
6885 {
-
6886 type.start = 1;
-
6887 type.end = 0;
-
6888 version.start = 1;
-
6889 version.end = 0;
-
6890 parser::invalidate();
-
6891 }
-
6892
-
6893 public:
- - -
6896 };
+
6820
+
+
6824 class http_agent : public parser
+
6825 {
+
6826 public:
+
6827 virtual bool match(
+
6828 _In_reads_or_z_(end) const char* text,
+
6829 _In_ size_t start = 0,
+
6830 _In_ size_t end = (size_t)-1,
+
6831 _In_ int flags = match_default)
+
6832 {
+
6833 assert(text || start >= end);
+
6834 this->interval.end = start;
+
6835 type.start = this->interval.end;
+
6836 for (;;) {
+
6837 if (this->interval.end < end && text[this->interval.end]) {
+
6838 if (text[this->interval.end] == '/') {
+
6839 type.end = this->interval.end;
+
6840 this->interval.end++;
+
6841 version.start = this->interval.end;
+
6842 for (;;) {
+
6843 if (this->interval.end < end && text[this->interval.end]) {
+
6844 if (isspace(text[this->interval.end])) {
+
6845 version.end = this->interval.end;
+
6846 break;
+
6847 }
+
6848 else
+
6849 this->interval.end++;
+
6850 }
+
6851 else {
+
6852 version.end = this->interval.end;
+
6853 break;
+
6854 }
+
6855 }
+
6856 break;
+
6857 }
+
6858 else if (isspace(text[this->interval.end])) {
+
6859 type.end = this->interval.end;
+
6860 break;
+
6861 }
+
6862 else
+
6863 this->interval.end++;
+
6864 }
+
6865 else {
+
6866 type.end = this->interval.end;
+
6867 break;
+
6868 }
+
6869 }
+ +
6871 this->interval.start = start;
+
6872 return true;
+
6873 }
+
6874 type.start = 1;
+
6875 type.end = 0;
+
6876 version.start = 1;
+
6877 version.end = 0;
+
6878 this->interval.start = 1;
+
6879 this->interval.end = 0;
+
6880 return false;
+
6881 }
+
6882
+
6883 virtual void invalidate()
+
6884 {
+
6885 type.start = 1;
+
6886 type.end = 0;
+
6887 version.start = 1;
+
6888 version.end = 0;
+
6889 parser::invalidate();
+
6890 }
+
6891
+
6892 public:
+ + +
6895 };
-
6897
-
-
6901 class http_protocol : public parser
-
6902 {
-
6903 public:
-
6904 http_protocol(_In_ const std::locale& locale = std::locale()) :
-
6905 parser(locale),
-
6906 version(0x009)
-
6907 {}
-
6908
-
6909 virtual bool match(
-
6910 _In_reads_or_z_(end) const char* text,
-
6911 _In_ size_t start = 0,
-
6912 _In_ size_t end = (size_t)-1,
-
6913 _In_ int flags = match_default)
-
6914 {
-
6915 assert(text || start >= end);
-
6916 this->interval.end = start;
-
6917 type.start = this->interval.end;
-
6918 for (;;) {
-
6919 if (this->interval.end < end && text[this->interval.end]) {
-
6920 if (text[this->interval.end] == '/') {
-
6921 type.end = this->interval.end;
-
6922 this->interval.end++;
-
6923 break;
-
6924 }
-
6925 else if (isspace(text[this->interval.end]))
-
6926 goto error;
-
6927 else
-
6928 this->interval.end++;
-
6929 }
-
6930 else {
-
6931 type.end = this->interval.end;
-
6932 goto error;
-
6933 }
-
6934 }
-
6935 version_maj.start = this->interval.end;
-
6936 for (;;) {
-
6937 if (this->interval.end < end && text[this->interval.end]) {
-
6938 if (text[this->interval.end] == '.') {
-
6939 version_maj.end = this->interval.end;
-
6940 this->interval.end++;
-
6941 version_min.start = this->interval.end;
-
6942 for (;;) {
-
6943 if (this->interval.end < end && text[this->interval.end]) {
-
6944 if (isspace(text[this->interval.end])) {
-
6945 version_min.end = this->interval.end;
-
6946 version =
-
6947 (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100 +
-
6948 (uint16_t)strtoui(text + version_min.start, version_min.size(), nullptr, 10);
-
6949 break;
-
6950 }
-
6951 else
-
6952 this->interval.end++;
-
6953 }
-
6954 else
-
6955 goto error;
-
6956 }
-
6957 break;
-
6958 }
-
6959 else if (isspace(text[this->interval.end])) {
-
6960 version_maj.end = this->interval.end;
-
6961 version_min.start = 1;
-
6962 version_min.end = 0;
-
6963 version = (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100;
-
6964 break;
-
6965 }
-
6966 else
-
6967 this->interval.end++;
-
6968 }
-
6969 else
-
6970 goto error;
-
6971 }
-
6972 this->interval.start = start;
-
6973 return true;
-
6974
-
6975 error:
-
6976 type.start = 1;
-
6977 type.end = 0;
-
6978 version_maj.start = 1;
-
6979 version_maj.end = 0;
-
6980 version_min.start = 1;
-
6981 version_min.end = 0;
-
6982 version = 0x009;
-
6983 this->interval.start = 1;
-
6984 this->interval.end = 0;
-
6985 return false;
-
6986 }
-
6987
-
6988 virtual void invalidate()
-
6989 {
-
6990 type.start = 1;
-
6991 type.end = 0;
-
6992 version_maj.start = 1;
-
6993 version_maj.end = 0;
-
6994 version_min.start = 1;
-
6995 version_min.end = 0;
-
6996 version = 0x009;
-
6997 parser::invalidate();
-
6998 }
-
6999
-
7000 public:
- -
7002 stdex::interval<size_t> version_maj;
-
7003 stdex::interval<size_t> version_min;
- -
7005 };
+
6896
+
+
6900 class http_protocol : public parser
+
6901 {
+
6902 public:
+
6903 http_protocol(_In_ const std::locale& locale = std::locale()) :
+
6904 parser(locale),
+
6905 version(0x009)
+
6906 {}
+
6907
+
6908 virtual bool match(
+
6909 _In_reads_or_z_(end) const char* text,
+
6910 _In_ size_t start = 0,
+
6911 _In_ size_t end = (size_t)-1,
+
6912 _In_ int flags = match_default)
+
6913 {
+
6914 assert(text || start >= end);
+
6915 this->interval.end = start;
+
6916 type.start = this->interval.end;
+
6917 for (;;) {
+
6918 if (this->interval.end < end && text[this->interval.end]) {
+
6919 if (text[this->interval.end] == '/') {
+
6920 type.end = this->interval.end;
+
6921 this->interval.end++;
+
6922 break;
+
6923 }
+
6924 else if (isspace(text[this->interval.end]))
+
6925 goto error;
+
6926 else
+
6927 this->interval.end++;
+
6928 }
+
6929 else {
+
6930 type.end = this->interval.end;
+
6931 goto error;
+
6932 }
+
6933 }
+
6934 version_maj.start = this->interval.end;
+
6935 for (;;) {
+
6936 if (this->interval.end < end && text[this->interval.end]) {
+
6937 if (text[this->interval.end] == '.') {
+
6938 version_maj.end = this->interval.end;
+
6939 this->interval.end++;
+
6940 version_min.start = this->interval.end;
+
6941 for (;;) {
+
6942 if (this->interval.end < end && text[this->interval.end]) {
+
6943 if (isspace(text[this->interval.end])) {
+
6944 version_min.end = this->interval.end;
+
6945 version =
+
6946 (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100 +
+
6947 (uint16_t)strtoui(text + version_min.start, version_min.size(), nullptr, 10);
+
6948 break;
+
6949 }
+
6950 else
+
6951 this->interval.end++;
+
6952 }
+
6953 else
+
6954 goto error;
+
6955 }
+
6956 break;
+
6957 }
+
6958 else if (isspace(text[this->interval.end])) {
+
6959 version_maj.end = this->interval.end;
+
6960 version_min.start = 1;
+
6961 version_min.end = 0;
+
6962 version = (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100;
+
6963 break;
+
6964 }
+
6965 else
+
6966 this->interval.end++;
+
6967 }
+
6968 else
+
6969 goto error;
+
6970 }
+
6971 this->interval.start = start;
+
6972 return true;
+
6973
+
6974 error:
+
6975 type.start = 1;
+
6976 type.end = 0;
+
6977 version_maj.start = 1;
+
6978 version_maj.end = 0;
+
6979 version_min.start = 1;
+
6980 version_min.end = 0;
+
6981 version = 0x009;
+
6982 this->interval.start = 1;
+
6983 this->interval.end = 0;
+
6984 return false;
+
6985 }
+
6986
+
6987 virtual void invalidate()
+
6988 {
+
6989 type.start = 1;
+
6990 type.end = 0;
+
6991 version_maj.start = 1;
+
6992 version_maj.end = 0;
+
6993 version_min.start = 1;
+
6994 version_min.end = 0;
+
6995 version = 0x009;
+
6996 parser::invalidate();
+
6997 }
+
6998
+
6999 public:
+ +
7001 stdex::interval<size_t> version_maj;
+
7002 stdex::interval<size_t> version_min;
+ +
7004 };
-
7006
-
-
7010 class http_request : public parser
-
7011 {
-
7012 public:
-
7013 http_request(_In_ const std::locale& locale = std::locale()) :
-
7014 parser(locale),
-
7015 url(locale),
-
7016 protocol(locale)
-
7017 {}
-
7018
-
7019 virtual bool match(
-
7020 _In_reads_or_z_(end) const char* text,
-
7021 _In_ size_t start = 0,
-
7022 _In_ size_t end = (size_t)-1,
-
7023 _In_ int flags = match_default)
-
7024 {
-
7025 assert(text || start >= end);
-
7026 this->interval.end = start;
-
7027
-
7028 for (;;) {
-
7029 if (m_line_break.match(text, this->interval.end, end, flags))
-
7030 goto error;
-
7031 else if (this->interval.end < end && text[this->interval.end]) {
-
7032 if (isspace(text[this->interval.end]))
-
7033 this->interval.end++;
-
7034 else
-
7035 break;
-
7036 }
-
7037 else
-
7038 goto error;
-
7039 }
-
7040 verb.start = this->interval.end;
-
7041 for (;;) {
-
7042 if (m_line_break.match(text, this->interval.end, end, flags))
-
7043 goto error;
-
7044 else if (this->interval.end < end && text[this->interval.end]) {
-
7045 if (isspace(text[this->interval.end])) {
-
7046 verb.end = this->interval.end;
-
7047 this->interval.end++;
-
7048 break;
-
7049 }
-
7050 else
-
7051 this->interval.end++;
-
7052 }
-
7053 else
-
7054 goto error;
-
7055 }
-
7056
-
7057 for (;;) {
-
7058 if (m_line_break.match(text, this->interval.end, end, flags))
-
7059 goto error;
-
7060 else if (this->interval.end < end && text[this->interval.end]) {
-
7061 if (isspace(text[this->interval.end]))
-
7062 this->interval.end++;
-
7063 else
-
7064 break;
-
7065 }
-
7066 else
-
7067 goto error;
-
7068 }
-
7069 if (url.match(text, this->interval.end, end, flags))
-
7070 this->interval.end = url.interval.end;
-
7071 else
-
7072 goto error;
-
7073
-
7074 protocol.invalidate();
-
7075 for (;;) {
-
7076 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7077 this->interval.end = m_line_break.interval.end;
-
7078 goto end;
-
7079 }
-
7080 else if (this->interval.end < end && text[this->interval.end]) {
-
7081 if (isspace(text[this->interval.end]))
-
7082 this->interval.end++;
-
7083 else
-
7084 break;
-
7085 }
-
7086 else
-
7087 goto end;
-
7088 }
-
7089 for (;;) {
-
7090 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7091 this->interval.end = m_line_break.interval.end;
-
7092 goto end;
-
7093 }
-
7094 else if (protocol.match(text, this->interval.end, end, flags)) {
-
7095 this->interval.end = protocol.interval.end;
-
7096 break;
-
7097 }
-
7098 else
-
7099 goto end;
-
7100 }
-
7101
-
7102 for (;;) {
-
7103 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7104 this->interval.end = m_line_break.interval.end;
-
7105 break;
-
7106 }
-
7107 else if (this->interval.end < end && text[this->interval.end])
-
7108 this->interval.end++;
-
7109 else
-
7110 goto end;
-
7111 }
-
7112
-
7113 end:
-
7114 this->interval.start = start;
-
7115 return true;
-
7116
-
7117 error:
-
7118 verb.start = 1;
-
7119 verb.end = 0;
-
7120 url.invalidate();
-
7121 protocol.invalidate();
-
7122 this->interval.start = 1;
-
7123 this->interval.end = 0;
-
7124 return false;
-
7125 }
-
7126
-
7127 virtual void invalidate()
-
7128 {
-
7129 verb.start = 1;
-
7130 verb.end = 0;
-
7131 url.invalidate();
-
7132 protocol.invalidate();
-
7133 parser::invalidate();
-
7134 }
-
7135
-
7136 public:
- -
7138 http_url url;
-
7139 http_protocol protocol;
-
7140
-
7141 protected:
-
7142 http_line_break m_line_break;
-
7143 };
+
7005
+
+
7009 class http_request : public parser
+
7010 {
+
7011 public:
+
7012 http_request(_In_ const std::locale& locale = std::locale()) :
+
7013 parser(locale),
+
7014 url(locale),
+
7015 protocol(locale)
+
7016 {}
+
7017
+
7018 virtual bool match(
+
7019 _In_reads_or_z_(end) const char* text,
+
7020 _In_ size_t start = 0,
+
7021 _In_ size_t end = (size_t)-1,
+
7022 _In_ int flags = match_default)
+
7023 {
+
7024 assert(text || start >= end);
+
7025 this->interval.end = start;
+
7026
+
7027 for (;;) {
+
7028 if (m_line_break.match(text, this->interval.end, end, flags))
+
7029 goto error;
+
7030 else if (this->interval.end < end && text[this->interval.end]) {
+
7031 if (isspace(text[this->interval.end]))
+
7032 this->interval.end++;
+
7033 else
+
7034 break;
+
7035 }
+
7036 else
+
7037 goto error;
+
7038 }
+
7039 verb.start = this->interval.end;
+
7040 for (;;) {
+
7041 if (m_line_break.match(text, this->interval.end, end, flags))
+
7042 goto error;
+
7043 else if (this->interval.end < end && text[this->interval.end]) {
+
7044 if (isspace(text[this->interval.end])) {
+
7045 verb.end = this->interval.end;
+
7046 this->interval.end++;
+
7047 break;
+
7048 }
+
7049 else
+
7050 this->interval.end++;
+
7051 }
+
7052 else
+
7053 goto error;
+
7054 }
+
7055
+
7056 for (;;) {
+
7057 if (m_line_break.match(text, this->interval.end, end, flags))
+
7058 goto error;
+
7059 else if (this->interval.end < end && text[this->interval.end]) {
+
7060 if (isspace(text[this->interval.end]))
+
7061 this->interval.end++;
+
7062 else
+
7063 break;
+
7064 }
+
7065 else
+
7066 goto error;
+
7067 }
+
7068 if (url.match(text, this->interval.end, end, flags))
+
7069 this->interval.end = url.interval.end;
+
7070 else
+
7071 goto error;
+
7072
+
7073 protocol.invalidate();
+
7074 for (;;) {
+
7075 if (m_line_break.match(text, this->interval.end, end, flags)) {
+
7076 this->interval.end = m_line_break.interval.end;
+
7077 goto end;
+
7078 }
+
7079 else if (this->interval.end < end && text[this->interval.end]) {
+
7080 if (isspace(text[this->interval.end]))
+
7081 this->interval.end++;
+
7082 else
+
7083 break;
+
7084 }
+
7085 else
+
7086 goto end;
+
7087 }
+
7088 for (;;) {
+
7089 if (m_line_break.match(text, this->interval.end, end, flags)) {
+
7090 this->interval.end = m_line_break.interval.end;
+
7091 goto end;
+
7092 }
+
7093 else if (protocol.match(text, this->interval.end, end, flags)) {
+
7094 this->interval.end = protocol.interval.end;
+
7095 break;
+
7096 }
+
7097 else
+
7098 goto end;
+
7099 }
+
7100
+
7101 for (;;) {
+
7102 if (m_line_break.match(text, this->interval.end, end, flags)) {
+
7103 this->interval.end = m_line_break.interval.end;
+
7104 break;
+
7105 }
+
7106 else if (this->interval.end < end && text[this->interval.end])
+
7107 this->interval.end++;
+
7108 else
+
7109 goto end;
+
7110 }
+
7111
+
7112 end:
+
7113 this->interval.start = start;
+
7114 return true;
+
7115
+
7116 error:
+
7117 verb.start = 1;
+
7118 verb.end = 0;
+
7119 url.invalidate();
+
7120 protocol.invalidate();
+
7121 this->interval.start = 1;
+
7122 this->interval.end = 0;
+
7123 return false;
+
7124 }
+
7125
+
7126 virtual void invalidate()
+
7127 {
+
7128 verb.start = 1;
+
7129 verb.end = 0;
+
7130 url.invalidate();
+
7131 protocol.invalidate();
+
7132 parser::invalidate();
+
7133 }
+
7134
+
7135 public:
+ +
7137 http_url url;
+
7138 http_protocol protocol;
+
7139
+
7140 protected:
+
7141 http_line_break m_line_break;
+
7142 };
-
7144
-
-
7148 class http_header : public parser
-
7149 {
-
7150 public:
-
7151 virtual bool match(
-
7152 _In_reads_or_z_(end) const char* text,
-
7153 _In_ size_t start = 0,
-
7154 _In_ size_t end = (size_t)-1,
-
7155 _In_ int flags = match_default)
-
7156 {
-
7157 assert(text || start >= end);
-
7158 this->interval.end = start;
-
7159
-
7160 if (m_line_break.match(text, this->interval.end, end, flags) ||
-
7161 (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])))
-
7162 goto error;
-
7163 name.start = this->interval.end;
-
7164 for (;;) {
-
7165 if (m_line_break.match(text, this->interval.end, end, flags))
-
7166 goto error;
-
7167 else if (this->interval.end < end && text[this->interval.end]) {
-
7168 if (isspace(text[this->interval.end])) {
-
7169 name.end = this->interval.end;
-
7170 this->interval.end++;
-
7171 for (;;) {
-
7172 if (m_line_break.match(text, this->interval.end, end, flags))
-
7173 goto error;
-
7174 else if (this->interval.end < end && text[this->interval.end]) {
-
7175 if (isspace(text[this->interval.end]))
-
7176 this->interval.end++;
-
7177 else
-
7178 break;
-
7179 }
-
7180 else
-
7181 goto error;
-
7182 }
-
7183 if (this->interval.end < end && text[this->interval.end] == ':') {
-
7184 this->interval.end++;
-
7185 break;
-
7186 }
-
7187 else
-
7188 goto error;
-
7189 break;
-
7190 }
-
7191 else if (text[this->interval.end] == ':') {
-
7192 name.end = this->interval.end;
-
7193 this->interval.end++;
-
7194 break;
-
7195 }
-
7196 else
-
7197 this->interval.end++;
-
7198 }
-
7199 else
-
7200 goto error;
-
7201 }
-
7202 value.start = (size_t)-1;
-
7203 value.end = 0;
-
7204 for (;;) {
-
7205 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7206 this->interval.end = m_line_break.interval.end;
-
7207 if (!m_line_break.match(text, this->interval.end, end, flags) &&
-
7208 this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end]))
-
7209 this->interval.end++;
-
7210 else
-
7211 break;
-
7212 }
-
7213 else if (this->interval.end < end && text[this->interval.end]) {
-
7214 if (isspace(text[this->interval.end]))
-
7215 this->interval.end++;
-
7216 else {
-
7217 if (value.start == (size_t)-1) value.start = this->interval.end;
-
7218 value.end = ++this->interval.end;
-
7219 }
-
7220 }
-
7221 else
-
7222 break;
-
7223 }
-
7224 this->interval.start = start;
-
7225 return true;
-
7226
-
7227 error:
-
7228 name.start = 1;
-
7229 name.end = 0;
-
7230 value.start = 1;
-
7231 value.end = 0;
-
7232 this->interval.start = 1;
-
7233 this->interval.end = 0;
-
7234 return false;
-
7235 }
-
7236
-
7237 virtual void invalidate()
-
7238 {
-
7239 name.start = 1;
-
7240 name.end = 0;
-
7241 value.start = 1;
-
7242 value.end = 0;
-
7243 parser::invalidate();
-
7244 }
-
7245
-
7246 public:
- - -
7249
-
7250 protected:
-
7251 http_line_break m_line_break;
-
7252 };
+
7143
+
+
7147 class http_header : public parser
+
7148 {
+
7149 public:
+
7150 virtual bool match(
+
7151 _In_reads_or_z_(end) const char* text,
+
7152 _In_ size_t start = 0,
+
7153 _In_ size_t end = (size_t)-1,
+
7154 _In_ int flags = match_default)
+
7155 {
+
7156 assert(text || start >= end);
+
7157 this->interval.end = start;
+
7158
+
7159 if (m_line_break.match(text, this->interval.end, end, flags) ||
+
7160 (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])))
+
7161 goto error;
+
7162 name.start = this->interval.end;
+
7163 for (;;) {
+
7164 if (m_line_break.match(text, this->interval.end, end, flags))
+
7165 goto error;
+
7166 else if (this->interval.end < end && text[this->interval.end]) {
+
7167 if (isspace(text[this->interval.end])) {
+
7168 name.end = this->interval.end;
+
7169 this->interval.end++;
+
7170 for (;;) {
+
7171 if (m_line_break.match(text, this->interval.end, end, flags))
+
7172 goto error;
+
7173 else if (this->interval.end < end && text[this->interval.end]) {
+
7174 if (isspace(text[this->interval.end]))
+
7175 this->interval.end++;
+
7176 else
+
7177 break;
+
7178 }
+
7179 else
+
7180 goto error;
+
7181 }
+
7182 if (this->interval.end < end && text[this->interval.end] == ':') {
+
7183 this->interval.end++;
+
7184 break;
+
7185 }
+
7186 else
+
7187 goto error;
+
7188 break;
+
7189 }
+
7190 else if (text[this->interval.end] == ':') {
+
7191 name.end = this->interval.end;
+
7192 this->interval.end++;
+
7193 break;
+
7194 }
+
7195 else
+
7196 this->interval.end++;
+
7197 }
+
7198 else
+
7199 goto error;
+
7200 }
+
7201 value.start = (size_t)-1;
+
7202 value.end = 0;
+
7203 for (;;) {
+
7204 if (m_line_break.match(text, this->interval.end, end, flags)) {
+
7205 this->interval.end = m_line_break.interval.end;
+
7206 if (!m_line_break.match(text, this->interval.end, end, flags) &&
+
7207 this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end]))
+
7208 this->interval.end++;
+
7209 else
+
7210 break;
+
7211 }
+
7212 else if (this->interval.end < end && text[this->interval.end]) {
+
7213 if (isspace(text[this->interval.end]))
+
7214 this->interval.end++;
+
7215 else {
+
7216 if (value.start == (size_t)-1) value.start = this->interval.end;
+
7217 value.end = ++this->interval.end;
+
7218 }
+
7219 }
+
7220 else
+
7221 break;
+
7222 }
+
7223 this->interval.start = start;
+
7224 return true;
+
7225
+
7226 error:
+
7227 name.start = 1;
+
7228 name.end = 0;
+
7229 value.start = 1;
+
7230 value.end = 0;
+
7231 this->interval.start = 1;
+
7232 this->interval.end = 0;
+
7233 return false;
+
7234 }
+
7235
+
7236 virtual void invalidate()
+
7237 {
+
7238 name.start = 1;
+
7239 name.end = 0;
+
7240 value.start = 1;
+
7241 value.end = 0;
+
7242 parser::invalidate();
+
7243 }
+
7244
+
7245 public:
+ + +
7248
+
7249 protected:
+
7250 http_line_break m_line_break;
+
7251 };
-
7253
-
7257 template <class _Key, class T>
-
-
7258 class http_value_collection : public T
-
7259 {
-
7260 public:
-
7261 void insert(
-
7262 _In_reads_or_z_(end) const char* text,
-
7263 _In_ size_t start = 0,
-
7264 _In_ size_t end = (size_t)-1,
-
7265 _In_ int flags = match_default)
-
7266 {
-
7267 while (start < end) {
-
7268 while (start < end && text[start] && isspace(text[start])) start++;
-
7269 if (start < end && text[start] == ',') {
-
7270 start++;
-
7271 while (start < end&& text[start] && isspace(text[start])) start++;
-
7272 }
-
7273 _Key el;
-
7274 if (el.match(text, start, end, flags)) {
-
7275 start = el.interval.end;
-
7276 T::insert(std::move(el));
-
7277 }
-
7278 else
-
7279 break;
-
7280 }
-
7281 }
-
7282 };
+
7252
+
7256 template <class _Key, class T>
+
+
7257 class http_value_collection : public T
+
7258 {
+
7259 public:
+
7260 void insert(
+
7261 _In_reads_or_z_(end) const char* text,
+
7262 _In_ size_t start = 0,
+
7263 _In_ size_t end = (size_t)-1,
+
7264 _In_ int flags = match_default)
+
7265 {
+
7266 while (start < end) {
+
7267 while (start < end && text[start] && isspace(text[start])) start++;
+
7268 if (start < end && text[start] == ',') {
+
7269 start++;
+
7270 while (start < end&& text[start] && isspace(text[start])) start++;
+
7271 }
+
7272 _Key el;
+
7273 if (el.match(text, start, end, flags)) {
+
7274 start = el.interval.end;
+
7275 T::insert(std::move(el));
+
7276 }
+
7277 else
+
7278 break;
+
7279 }
+
7280 }
+
7281 };
-
7283
-
7284 template <class T>
-
- -
7286 constexpr bool operator()(const T& a, const T& b) const noexcept
-
7287 {
-
7288 return a.factor.value > b.factor.value;
-
7289 }
-
7290 };
+
7282
+
7283 template <class T>
+
+ +
7285 constexpr bool operator()(const T& a, const T& b) const noexcept
+
7286 {
+
7287 return a.factor.value > b.factor.value;
+
7288 }
+
7289 };
-
7291
-
7295 template <class T, class _Alloc = std::allocator<T>>
- -
7297
-
7301 template <class T>
-
- -
7303 {
-
7304 public:
- -
7306 _In_ const std::shared_ptr<basic_parser<T>>& quote,
-
7307 _In_ const std::shared_ptr<basic_parser<T>>& chr,
-
7308 _In_ const std::shared_ptr<basic_parser<T>>& escape,
-
7309 _In_ const std::shared_ptr<basic_parser<T>>& sol,
-
7310 _In_ const std::shared_ptr<basic_parser<T>>& bs,
-
7311 _In_ const std::shared_ptr<basic_parser<T>>& ff,
-
7312 _In_ const std::shared_ptr<basic_parser<T>>& lf,
-
7313 _In_ const std::shared_ptr<basic_parser<T>>& cr,
-
7314 _In_ const std::shared_ptr<basic_parser<T>>& htab,
-
7315 _In_ const std::shared_ptr<basic_parser<T>>& uni,
-
7316 _In_ const std::shared_ptr<basic_integer16<T>>& hex,
-
7317 _In_ const std::locale& locale = std::locale()) :
-
7318 basic_parser<T>(locale),
-
7319 m_quote(quote),
-
7320 m_chr(chr),
-
7321 m_escape(escape),
-
7322 m_sol(sol),
-
7323 m_bs(bs),
-
7324 m_ff(ff),
-
7325 m_lf(lf),
-
7326 m_cr(cr),
-
7327 m_htab(htab),
-
7328 m_uni(uni),
-
7329 m_hex(hex)
-
7330 {}
-
7331
-
7332 virtual bool match(
-
7333 _In_reads_or_z_(end) const T* text,
-
7334 _In_ size_t start = 0,
-
7335 _In_ size_t end = (size_t)-1,
-
7336 _In_ int flags = match_default)
-
7337 {
-
7338 assert(text || start >= end);
-
7339 this->interval.end = start;
-
7340 if (m_quote->match(text, this->interval.end, end, flags)) {
-
7341 this->interval.end = m_quote->interval.end;
-
7342 value.clear();
-
7343 for (;;) {
-
7344 if (m_quote->match(text, this->interval.end, end, flags)) {
-
7345 this->interval.start = start;
-
7346 this->interval.end = m_quote->interval.end;
-
7347 return true;
-
7348 }
-
7349 if (m_escape->match(text, this->interval.end, end, flags)) {
-
7350 if (m_quote->match(text, m_escape->interval.end, end, flags)) {
-
7351 value += '"'; this->interval.end = m_quote->interval.end;
-
7352 continue;
-
7353 }
-
7354 if (m_sol->match(text, m_escape->interval.end, end, flags)) {
-
7355 value += '/'; this->interval.end = m_sol->interval.end;
-
7356 continue;
-
7357 }
-
7358 if (m_bs->match(text, m_escape->interval.end, end, flags)) {
-
7359 value += '\b'; this->interval.end = m_bs->interval.end;
-
7360 continue;
-
7361 }
-
7362 if (m_ff->match(text, m_escape->interval.end, end, flags)) {
-
7363 value += '\f'; this->interval.end = m_ff->interval.end;
-
7364 continue;
-
7365 }
-
7366 if (m_lf->match(text, m_escape->interval.end, end, flags)) {
-
7367 value += '\n'; this->interval.end = m_lf->interval.end;
-
7368 continue;
-
7369 }
-
7370 if (m_cr->match(text, m_escape->interval.end, end, flags)) {
-
7371 value += '\r'; this->interval.end = m_cr->interval.end;
-
7372 continue;
-
7373 }
-
7374 if (m_htab->match(text, m_escape->interval.end, end, flags)) {
-
7375 value += '\t'; this->interval.end = m_htab->interval.end;
-
7376 continue;
-
7377 }
-
7378 if (
-
7379 m_uni->match(text, m_escape->interval.end, end, flags) &&
-
7380 m_hex->match(text, m_uni->interval.end, std::min(m_uni->interval.end + 4, end), flags | match_case_insensitive) &&
-
7381 m_hex->interval.size() == 4 /* JSON requests 4-digit Unicode sequneces: \u.... */)
-
7382 {
-
7383 assert(m_hex->value <= 0xffff);
-
7384 if (sizeof(T) == 1) {
-
7385 if (m_hex->value > 0x7ff) {
-
7386 value += (T)(0xe0 | ((m_hex->value >> 12) & 0x0f));
-
7387 value += (T)(0x80 | ((m_hex->value >> 6) & 0x3f));
-
7388 value += (T)(0x80 | (m_hex->value & 0x3f));
-
7389 }
-
7390 else if (m_hex->value > 0x7f) {
-
7391 value += (T)(0xc0 | ((m_hex->value >> 6) & 0x1f));
-
7392 value += (T)(0x80 | (m_hex->value & 0x3f));
-
7393 }
-
7394 else
-
7395 value += (T)(m_hex->value & 0x7f);
-
7396 }
-
7397 else
-
7398 value += (T)m_hex->value;
-
7399 this->interval.end = m_hex->interval.end;
-
7400 continue;
-
7401 }
-
7402 if (m_escape->match(text, m_escape->interval.end, end, flags)) {
-
7403 value += '\\'; this->interval.end = m_escape->interval.end;
-
7404 continue;
-
7405 }
-
7406 }
-
7407 if (m_chr->match(text, this->interval.end, end, flags)) {
-
7408 value.Prilepi(text + m_chr->interval.start, m_chr->interval.size());
-
7409 this->interval.end = m_chr->interval.end;
-
7410 continue;
-
7411 }
-
7412 break;
-
7413 }
-
7414 }
-
7415 value.clear();
-
7416 this->interval.start = (this->interval.end = start) + 1;
-
7417 return false;
-
7418 }
-
7419
-
7420 virtual void invalidate()
-
7421 {
-
7422 value.clear();
- -
7424 }
-
7425
-
7426 public:
-
7427 std::basic_string<T> value;
-
7428
-
7429 protected:
-
7430 std::shared_ptr<basic_parser<T>> m_quote;
-
7431 std::shared_ptr<basic_parser<T>> m_chr;
-
7432 std::shared_ptr<basic_parser<T>> m_escape;
-
7433 std::shared_ptr<basic_parser<T>> m_sol;
-
7434 std::shared_ptr<basic_parser<T>> m_bs;
-
7435 std::shared_ptr<basic_parser<T>> m_ff;
-
7436 std::shared_ptr<basic_parser<T>> m_lf;
-
7437 std::shared_ptr<basic_parser<T>> m_cr;
-
7438 std::shared_ptr<basic_parser<T>> m_htab;
-
7439 std::shared_ptr<basic_parser<T>> m_uni;
-
7440 std::shared_ptr<basic_integer16<T>> m_hex;
-
7441 };
+
7290
+
7294 template <class T, class _Alloc = std::allocator<T>>
+ +
7296
+
7300 template <class T>
+
+ +
7302 {
+
7303 public:
+ +
7305 _In_ const std::shared_ptr<basic_parser<T>>& quote,
+
7306 _In_ const std::shared_ptr<basic_parser<T>>& chr,
+
7307 _In_ const std::shared_ptr<basic_parser<T>>& escape,
+
7308 _In_ const std::shared_ptr<basic_parser<T>>& sol,
+
7309 _In_ const std::shared_ptr<basic_parser<T>>& bs,
+
7310 _In_ const std::shared_ptr<basic_parser<T>>& ff,
+
7311 _In_ const std::shared_ptr<basic_parser<T>>& lf,
+
7312 _In_ const std::shared_ptr<basic_parser<T>>& cr,
+
7313 _In_ const std::shared_ptr<basic_parser<T>>& htab,
+
7314 _In_ const std::shared_ptr<basic_parser<T>>& uni,
+
7315 _In_ const std::shared_ptr<basic_integer16<T>>& hex,
+
7316 _In_ const std::locale& locale = std::locale()) :
+
7317 basic_parser<T>(locale),
+
7318 m_quote(quote),
+
7319 m_chr(chr),
+
7320 m_escape(escape),
+
7321 m_sol(sol),
+
7322 m_bs(bs),
+
7323 m_ff(ff),
+
7324 m_lf(lf),
+
7325 m_cr(cr),
+
7326 m_htab(htab),
+
7327 m_uni(uni),
+
7328 m_hex(hex)
+
7329 {}
+
7330
+
7331 virtual bool match(
+
7332 _In_reads_or_z_(end) const T* text,
+
7333 _In_ size_t start = 0,
+
7334 _In_ size_t end = (size_t)-1,
+
7335 _In_ int flags = match_default)
+
7336 {
+
7337 assert(text || start >= end);
+
7338 this->interval.end = start;
+
7339 if (m_quote->match(text, this->interval.end, end, flags)) {
+
7340 this->interval.end = m_quote->interval.end;
+
7341 value.clear();
+
7342 for (;;) {
+
7343 if (m_quote->match(text, this->interval.end, end, flags)) {
+
7344 this->interval.start = start;
+
7345 this->interval.end = m_quote->interval.end;
+
7346 return true;
+
7347 }
+
7348 if (m_escape->match(text, this->interval.end, end, flags)) {
+
7349 if (m_quote->match(text, m_escape->interval.end, end, flags)) {
+
7350 value += '"'; this->interval.end = m_quote->interval.end;
+
7351 continue;
+
7352 }
+
7353 if (m_sol->match(text, m_escape->interval.end, end, flags)) {
+
7354 value += '/'; this->interval.end = m_sol->interval.end;
+
7355 continue;
+
7356 }
+
7357 if (m_bs->match(text, m_escape->interval.end, end, flags)) {
+
7358 value += '\b'; this->interval.end = m_bs->interval.end;
+
7359 continue;
+
7360 }
+
7361 if (m_ff->match(text, m_escape->interval.end, end, flags)) {
+
7362 value += '\f'; this->interval.end = m_ff->interval.end;
+
7363 continue;
+
7364 }
+
7365 if (m_lf->match(text, m_escape->interval.end, end, flags)) {
+
7366 value += '\n'; this->interval.end = m_lf->interval.end;
+
7367 continue;
+
7368 }
+
7369 if (m_cr->match(text, m_escape->interval.end, end, flags)) {
+
7370 value += '\r'; this->interval.end = m_cr->interval.end;
+
7371 continue;
+
7372 }
+
7373 if (m_htab->match(text, m_escape->interval.end, end, flags)) {
+
7374 value += '\t'; this->interval.end = m_htab->interval.end;
+
7375 continue;
+
7376 }
+
7377 if (
+
7378 m_uni->match(text, m_escape->interval.end, end, flags) &&
+
7379 m_hex->match(text, m_uni->interval.end, std::min(m_uni->interval.end + 4, end), flags | match_case_insensitive) &&
+
7380 m_hex->interval.size() == 4 /* JSON requests 4-digit Unicode sequneces: \u.... */)
+
7381 {
+
7382 assert(m_hex->value <= 0xffff);
+
7383 if (sizeof(T) == 1) {
+
7384 if (m_hex->value > 0x7ff) {
+
7385 value += (T)(0xe0 | ((m_hex->value >> 12) & 0x0f));
+
7386 value += (T)(0x80 | ((m_hex->value >> 6) & 0x3f));
+
7387 value += (T)(0x80 | (m_hex->value & 0x3f));
+
7388 }
+
7389 else if (m_hex->value > 0x7f) {
+
7390 value += (T)(0xc0 | ((m_hex->value >> 6) & 0x1f));
+
7391 value += (T)(0x80 | (m_hex->value & 0x3f));
+
7392 }
+
7393 else
+
7394 value += (T)(m_hex->value & 0x7f);
+
7395 }
+
7396 else
+
7397 value += (T)m_hex->value;
+
7398 this->interval.end = m_hex->interval.end;
+
7399 continue;
+
7400 }
+
7401 if (m_escape->match(text, m_escape->interval.end, end, flags)) {
+
7402 value += '\\'; this->interval.end = m_escape->interval.end;
+
7403 continue;
+
7404 }
+
7405 }
+
7406 if (m_chr->match(text, this->interval.end, end, flags)) {
+
7407 value.Prilepi(text + m_chr->interval.start, m_chr->interval.size());
+
7408 this->interval.end = m_chr->interval.end;
+
7409 continue;
+
7410 }
+
7411 break;
+
7412 }
+
7413 }
+
7414 value.clear();
+
7415 this->interval.start = (this->interval.end = start) + 1;
+
7416 return false;
+
7417 }
+
7418
+
7419 virtual void invalidate()
+
7420 {
+
7421 value.clear();
+ +
7423 }
+
7424
+
7425 public:
+
7426 std::basic_string<T> value;
+
7427
+
7428 protected:
+
7429 std::shared_ptr<basic_parser<T>> m_quote;
+
7430 std::shared_ptr<basic_parser<T>> m_chr;
+
7431 std::shared_ptr<basic_parser<T>> m_escape;
+
7432 std::shared_ptr<basic_parser<T>> m_sol;
+
7433 std::shared_ptr<basic_parser<T>> m_bs;
+
7434 std::shared_ptr<basic_parser<T>> m_ff;
+
7435 std::shared_ptr<basic_parser<T>> m_lf;
+
7436 std::shared_ptr<basic_parser<T>> m_cr;
+
7437 std::shared_ptr<basic_parser<T>> m_htab;
+
7438 std::shared_ptr<basic_parser<T>> m_uni;
+
7439 std::shared_ptr<basic_integer16<T>> m_hex;
+
7440 };
-
7442
- - -
7445#ifdef _UNICODE
-
7446 using tjson_string = wjson_string;
-
7447#else
-
7448 using tjson_string = json_string;
-
7449#endif
-
7450 }
-
7451}
-
7452
-
7453#undef ENUM_FLAG_OPERATOR
-
7454#undef ENUM_FLAGS
-
7455
-
7456#ifdef _MSC_VER
-
7457#pragma warning(pop)
-
7458#endif
+
7441
+ + +
7444#ifdef _UNICODE
+
7445 using tjson_string = wjson_string;
+
7446#else
+
7447 using tjson_string = json_string;
+
7448#endif
+
7449 }
+
7450}
+
7451
+
7452#undef ENUM_FLAG_OPERATOR
+
7453#undef ENUM_FLAGS
+
7454
+
7455#ifdef _MSC_VER
+
7456#pragma warning(pop)
+
7457#endif
Test for angle in d°mm'ss.dddd form.
Definition parser.hpp:4396
Test for any code unit.
Definition parser.hpp:222
Test for beginning of line.
Definition parser.hpp:616
Test for any.
Definition parser.hpp:1058
-
Test for chemical formula.
Definition parser.hpp:5541
-
Test for Creditor Reference.
Definition parser.hpp:4967
-
T reference[22]
Normalized national reference number.
Definition parser.hpp:5096
-
T check_digits[3]
Two check digits.
Definition parser.hpp:5095
-
bool is_valid
Is reference valid per ISO 7064.
Definition parser.hpp:5097
+
Test for chemical formula.
Definition parser.hpp:5540
+
Test for Creditor Reference.
Definition parser.hpp:4966
+
T reference[22]
Normalized national reference number.
Definition parser.hpp:5095
+
T check_digits[3]
Two check digits.
Definition parser.hpp:5094
+
bool is_valid
Is reference valid per ISO 7064.
Definition parser.hpp:5096
Test for any code unit from a given string of code units.
Definition parser.hpp:721
Test for specific code unit.
Definition parser.hpp:292
Test for date.
Definition parser.hpp:4026
@@ -7457,10 +7456,10 @@ $(document).ready(function() { init_codefold(0); });
Test for end of line.
Definition parser.hpp:654
Test for fraction.
Definition parser.hpp:1687
Test for International Bank Account Number.
Definition parser.hpp:4672
-
T bban[31]
Normalized Basic Bank Account Number.
Definition parser.hpp:4944
-
T country[3]
ISO 3166-1 alpha-2 country code.
Definition parser.hpp:4942
-
T check_digits[3]
Two check digits.
Definition parser.hpp:4943
-
bool is_valid
Is IBAN valid per ISO 7064.
Definition parser.hpp:4945
+
T bban[31]
Normalized Basic Bank Account Number.
Definition parser.hpp:4943
+
T country[3]
ISO 3166-1 alpha-2 country code.
Definition parser.hpp:4941
+
T check_digits[3]
Two check digits.
Definition parser.hpp:4942
+
bool is_valid
Is IBAN valid per ISO 7064.
Definition parser.hpp:4944
Test for decimal integer.
Definition parser.hpp:1296
Test for decimal integer possibly containing thousand separators.
Definition parser.hpp:1381
bool has_separators
Did integer have any separators?
Definition parser.hpp:1441
@@ -7481,7 +7480,7 @@ $(document).ready(function() { init_codefold(0); });
std::shared_ptr< basic_parser< T > > m_el
repeating element
Definition parser.hpp:947
size_t m_min_iterations
minimum number of iterations
Definition parser.hpp:948
size_t m_max_iterations
maximum number of iterations
Definition parser.hpp:949
-
Test for JSON string.
Definition parser.hpp:7303
+
Test for JSON string.
Definition parser.hpp:7302
Test for mixed numeral.
Definition parser.hpp:1923
std::shared_ptr< basic_parser< T > > fraction
fraction
Definition parser.hpp:2029
std::shared_ptr< basic_parser< T > > special_sign
Special sign (e.g. plus-minus '±')
Definition parser.hpp:2027
@@ -7519,14 +7518,14 @@ $(document).ready(function() { init_codefold(0); });
Test for match score.
Definition parser.hpp:1750
Test for sequence.
Definition parser.hpp:1007
Definition parser.hpp:689
-
Test for SI Reference delimiter.
Definition parser.hpp:5164
-
Test for SI Reference part.
Definition parser.hpp:5119
-
Test for SI Reference.
Definition parser.hpp:5202
-
basic_si_reference_part< T > part3
Reference data part 3 (P3)
Definition parser.hpp:5519
-
basic_si_reference_part< T > part1
Reference data part 1 (P1)
Definition parser.hpp:5517
-
bool is_valid
Is reference valid.
Definition parser.hpp:5520
-
T model[3]
Reference model.
Definition parser.hpp:5516
-
basic_si_reference_part< T > part2
Reference data part 2 (P2)
Definition parser.hpp:5518
+
Test for SI Reference delimiter.
Definition parser.hpp:5163
+
Test for SI Reference part.
Definition parser.hpp:5118
+
Test for SI Reference.
Definition parser.hpp:5201
+
basic_si_reference_part< T > part3
Reference data part 3 (P3)
Definition parser.hpp:5518
+
basic_si_reference_part< T > part1
Reference data part 1 (P1)
Definition parser.hpp:5516
+
bool is_valid
Is reference valid.
Definition parser.hpp:5519
+
T model[3]
Reference model.
Definition parser.hpp:5515
+
basic_si_reference_part< T > part2
Reference data part 2 (P2)
Definition parser.hpp:5517
Test for signed numeral.
Definition parser.hpp:1837
std::shared_ptr< basic_parser< T > > special_sign
Special sign (e.g. plus-minus '±')
Definition parser.hpp:1905
std::shared_ptr< basic_parser< T > > negative_sign
Negative sign.
Definition parser.hpp:1904
@@ -7542,44 +7541,44 @@ $(document).ready(function() { init_codefold(0); });
Test for URL path.
Definition parser.hpp:3297
Test for valid URL username character.
Definition parser.hpp:2990
Test for URL.
Definition parser.hpp:3438
-
Test for HTTP agent.
Definition parser.hpp:6826
-
Test for HTTP any type.
Definition parser.hpp:5948
-
Test for HTTP asterisk.
Definition parser.hpp:6590
- - - - - -
Test for HTTP header.
Definition parser.hpp:7149
-
Test for HTTP language (RFC1766)
Definition parser.hpp:6458
-
Test for HTTP line break (RFC2616: CRLF | LF)
Definition parser.hpp:5622
-
Test for HTTP media range (RFC2616: media-range)
Definition parser.hpp:5980
-
Test for HTTP media type (RFC2616: media-type)
Definition parser.hpp:6035
-
Test for HTTP parameter (RFC2616: parameter)
Definition parser.hpp:5893
-
http_token name
Parameter name.
Definition parser.hpp:5937
-
http_value value
Parameter value.
Definition parser.hpp:5938
-
Test for HTTP protocol.
Definition parser.hpp:6902
-
uint16_t version
HTTP protocol version: 0x100 = 1.0, 0x101 = 1.1...
Definition parser.hpp:7004
-
Test for HTTP quoted string (RFC2616: quoted-string)
Definition parser.hpp:5783
-
stdex::interval< size_t > content
String content (without quotes)
Definition parser.hpp:5839
-
Test for HTTP request.
Definition parser.hpp:7011
-
Test for HTTP space (RFC2616: LWS)
Definition parser.hpp:5658
-
Test for HTTP text character (RFC2616: TEXT)
Definition parser.hpp:5695
-
Test for HTTP token (RFC2616: token - tolerates non-ASCII)
Definition parser.hpp:5729
-
Test for HTTP URL parameter.
Definition parser.hpp:6275
-
Test for HTTP URL path segment.
Definition parser.hpp:6186
-
Test for HTTP URL path segment.
Definition parser.hpp:6219
-
std::vector< http_url_path_segment > segments
Path segments.
Definition parser.hpp:6268
-
Test for HTTP URL port.
Definition parser.hpp:6130
-
Test for HTTP URL server.
Definition parser.hpp:6093
-
Test for HTTP URL.
Definition parser.hpp:6356
-
Collection of HTTP values.
Definition parser.hpp:7259
-
Test for HTTP value (RFC2616: value)
Definition parser.hpp:5849
-
http_quoted_string string
Value when matched as quoted string.
Definition parser.hpp:5885
-
http_token token
Value when matched as token.
Definition parser.hpp:5886
-
Test for HTTP weight factor.
Definition parser.hpp:6521
-
float value
Calculated value of the weight factor.
Definition parser.hpp:6583
-
Test for HTTP weighted value.
Definition parser.hpp:6613
+
Test for HTTP agent.
Definition parser.hpp:6825
+
Test for HTTP any type.
Definition parser.hpp:5947
+
Test for HTTP asterisk.
Definition parser.hpp:6589
+ + + + + +
Test for HTTP header.
Definition parser.hpp:7148
+
Test for HTTP language (RFC1766)
Definition parser.hpp:6457
+
Test for HTTP line break (RFC2616: CRLF | LF)
Definition parser.hpp:5621
+
Test for HTTP media range (RFC2616: media-range)
Definition parser.hpp:5979
+
Test for HTTP media type (RFC2616: media-type)
Definition parser.hpp:6034
+
Test for HTTP parameter (RFC2616: parameter)
Definition parser.hpp:5892
+
http_token name
Parameter name.
Definition parser.hpp:5936
+
http_value value
Parameter value.
Definition parser.hpp:5937
+
Test for HTTP protocol.
Definition parser.hpp:6901
+
uint16_t version
HTTP protocol version: 0x100 = 1.0, 0x101 = 1.1...
Definition parser.hpp:7003
+
Test for HTTP quoted string (RFC2616: quoted-string)
Definition parser.hpp:5782
+
stdex::interval< size_t > content
String content (without quotes)
Definition parser.hpp:5838
+
Test for HTTP request.
Definition parser.hpp:7010
+
Test for HTTP space (RFC2616: LWS)
Definition parser.hpp:5657
+
Test for HTTP text character (RFC2616: TEXT)
Definition parser.hpp:5694
+
Test for HTTP token (RFC2616: token - tolerates non-ASCII)
Definition parser.hpp:5728
+
Test for HTTP URL parameter.
Definition parser.hpp:6274
+
Test for HTTP URL path segment.
Definition parser.hpp:6185
+
Test for HTTP URL path segment.
Definition parser.hpp:6218
+
std::vector< http_url_path_segment > segments
Path segments.
Definition parser.hpp:6267
+
Test for HTTP URL port.
Definition parser.hpp:6129
+
Test for HTTP URL server.
Definition parser.hpp:6092
+
Test for HTTP URL.
Definition parser.hpp:6355
+
Collection of HTTP values.
Definition parser.hpp:7258
+
Test for HTTP value (RFC2616: value)
Definition parser.hpp:5848
+
http_quoted_string string
Value when matched as quoted string.
Definition parser.hpp:5884
+
http_token token
Value when matched as token.
Definition parser.hpp:5885
+
Test for HTTP weight factor.
Definition parser.hpp:6520
+
float value
Calculated value of the weight factor.
Definition parser.hpp:6582
+
Test for HTTP weighted value.
Definition parser.hpp:6612
Base template for collection-holding parsers.
Definition parser.hpp:967
Test for any SGML code point.
Definition parser.hpp:254
Test for any SGML code point from a given string of SGML code points.
Definition parser.hpp:773
@@ -7598,11 +7597,11 @@ $(document).ready(function() { init_codefold(0); });
T end
interval end
Definition interval.hpp:20
interval() noexcept
Constructs an invalid interval.
Definition interval.hpp:25
T start
interval start
Definition interval.hpp:19
-
Definition parser.hpp:7285
+
Definition parser.hpp:7284
diff --git a/pch_8h_source.html b/pch_8h_source.html index aec60e99f..4fbf5c23b 100644 --- a/pch_8h_source.html +++ b/pch_8h_source.html @@ -116,7 +116,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/progress_8hpp_source.html b/progress_8hpp_source.html index 470a89465..aa4ae39c8 100644 --- a/progress_8hpp_source.html +++ b/progress_8hpp_source.html @@ -331,7 +331,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/ring_8cpp_source.html b/ring_8cpp_source.html index c0e81c90c..64d26c683 100644 --- a/ring_8cpp_source.html +++ b/ring_8cpp_source.html @@ -144,7 +144,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/ring_8hpp_source.html b/ring_8hpp_source.html index 3aade907e..3d3b0c8eb 100644 --- a/ring_8hpp_source.html +++ b/ring_8hpp_source.html @@ -224,7 +224,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/sgml_8cpp_source.html b/sgml_8cpp_source.html index 58264f5b8..f0adf9dd6 100644 --- a/sgml_8cpp_source.html +++ b/sgml_8cpp_source.html @@ -153,7 +153,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/sgml_8hpp_source.html b/sgml_8hpp_source.html index 2fdbe0d5e..719504398 100644 --- a/sgml_8hpp_source.html +++ b/sgml_8hpp_source.html @@ -773,7 +773,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/sgml__unicode_8hpp_source.html b/sgml__unicode_8hpp_source.html index f649690c9..1c4ecaa7b 100644 --- a/sgml__unicode_8hpp_source.html +++ b/sgml__unicode_8hpp_source.html @@ -3175,7 +3175,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/stream_8cpp_source.html b/stream_8cpp_source.html index e2f5bd0a2..4ce8088f9 100644 --- a/stream_8cpp_source.html +++ b/stream_8cpp_source.html @@ -248,7 +248,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/stream_8hpp_source.html b/stream_8hpp_source.html index 4ab94de95..9bb8de6d1 100644 --- a/stream_8hpp_source.html +++ b/stream_8hpp_source.html @@ -3867,7 +3867,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/string_8hpp_source.html b/string_8hpp_source.html index 784c21d8a..4fc978189 100644 --- a/string_8hpp_source.html +++ b/string_8hpp_source.html @@ -961,7 +961,7 @@ $(document).ready(function() { init_codefold(0); });
diff --git a/structstdex_1_1chrono_1_1aosn__date-members.html b/structstdex_1_1chrono_1_1aosn__date-members.html index 27b155594..f5404cb9f 100644 --- a/structstdex_1_1chrono_1_1aosn__date-members.html +++ b/structstdex_1_1chrono_1_1aosn__date-members.html @@ -96,7 +96,7 @@ $(function() {
diff --git a/structstdex_1_1chrono_1_1aosn__date.html b/structstdex_1_1chrono_1_1aosn__date.html index f5406ffb2..c461d8df0 100644 --- a/structstdex_1_1chrono_1_1aosn__date.html +++ b/structstdex_1_1chrono_1_1aosn__date.html @@ -152,7 +152,7 @@ static constexpr bool is_s
diff --git a/structstdex_1_1chrono_1_1aosn__timestamp-members.html b/structstdex_1_1chrono_1_1aosn__timestamp-members.html index 8ecc6f539..f496288da 100644 --- a/structstdex_1_1chrono_1_1aosn__timestamp-members.html +++ b/structstdex_1_1chrono_1_1aosn__timestamp-members.html @@ -110,7 +110,7 @@ $(function() {
diff --git a/structstdex_1_1chrono_1_1aosn__timestamp.html b/structstdex_1_1chrono_1_1aosn__timestamp.html index d6ed86cf0..7ef39dcaa 100644 --- a/structstdex_1_1chrono_1_1aosn__timestamp.html +++ b/structstdex_1_1chrono_1_1aosn__timestamp.html @@ -197,7 +197,7 @@ static constexpr rep p_wee
diff --git a/structstdex_1_1free__locale__delete-members.html b/structstdex_1_1free__locale__delete-members.html index cff7e946a..6a5b862be 100644 --- a/structstdex_1_1free__locale__delete-members.html +++ b/structstdex_1_1free__locale__delete-members.html @@ -84,7 +84,7 @@ $(function() {
diff --git a/structstdex_1_1free__locale__delete.html b/structstdex_1_1free__locale__delete.html index ed436e6f2..55972054f 100644 --- a/structstdex_1_1free__locale__delete.html +++ b/structstdex_1_1free__locale__delete.html @@ -101,7 +101,7 @@ void operator() (local
diff --git a/structstdex_1_1interval-members.html b/structstdex_1_1interval-members.html index cf3ce5fcb..32b25b004 100644 --- a/structstdex_1_1interval-members.html +++ b/structstdex_1_1interval-members.html @@ -92,7 +92,7 @@ $(function() {
diff --git a/structstdex_1_1interval.html b/structstdex_1_1interval.html index 0b1b87dc6..22092a851 100644 --- a/structstdex_1_1interval.html +++ b/structstdex_1_1interval.html @@ -344,7 +344,7 @@ template<class T >
diff --git a/structstdex_1_1mapping-members.html b/structstdex_1_1mapping-members.html index 99af82ae3..1e47dcc04 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 88941e269..266e6621e 100644 --- a/structstdex_1_1mapping.html +++ b/structstdex_1_1mapping.html @@ -283,7 +283,7 @@ template<class T >
diff --git a/structstdex_1_1no__delete-members.html b/structstdex_1_1no__delete-members.html index 0d0a5e114..3d6b3d835 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 23b350b47..bd1c6ee40 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 6c2c8a3d0..cb9d63fe8 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 b9a56b46b..82ab5c282 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 85a3959c5..210b18a62 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 1d0934201..cd23d14d8 100644 --- a/structstdex_1_1parser_1_1http__factor__more.html +++ b/structstdex_1_1parser_1_1http__factor__more.html @@ -93,7 +93,7 @@ Public Member Functions diff --git a/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html b/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html index 938a9c9e6..43af4c542 100644 --- a/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html +++ b/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/structstdex_1_1stream_1_1buffer_1_1buffer__t.html b/structstdex_1_1stream_1_1buffer_1_1buffer__t.html index 7d135c23d..348b38a48 100644 --- a/structstdex_1_1stream_1_1buffer_1_1buffer__t.html +++ b/structstdex_1_1stream_1_1buffer_1_1buffer__t.html @@ -109,7 +109,7 @@ size_t capacity diff --git a/structstdex_1_1stream_1_1cache_1_1cache__t-members.html b/structstdex_1_1stream_1_1cache_1_1cache__t-members.html index 1a233b135..bc050d5a1 100644 --- a/structstdex_1_1stream_1_1cache_1_1cache__t-members.html +++ b/structstdex_1_1stream_1_1cache_1_1cache__t-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/structstdex_1_1stream_1_1cache_1_1cache__t.html b/structstdex_1_1stream_1_1cache_1_1cache__t.html index 26ea0b1b5..158577994 100644 --- a/structstdex_1_1stream_1_1cache_1_1cache__t.html +++ b/structstdex_1_1stream_1_1cache_1_1cache__t.html @@ -119,7 +119,7 @@ enum stdex::stream::cache::cache_t::status_t  diff --git a/structstdex_1_1stream_1_1fifo_1_1node__t-members.html b/structstdex_1_1stream_1_1fifo_1_1node__t-members.html index 27f76ec71..0b13c27c7 100644 --- a/structstdex_1_1stream_1_1fifo_1_1node__t-members.html +++ b/structstdex_1_1stream_1_1fifo_1_1node__t-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/structstdex_1_1stream_1_1fifo_1_1node__t.html b/structstdex_1_1stream_1_1fifo_1_1node__t.html index 571972eb1..b6db61b21 100644 --- a/structstdex_1_1stream_1_1fifo_1_1node__t.html +++ b/structstdex_1_1stream_1_1fifo_1_1node__t.html @@ -99,7 +99,7 @@ uint8_t data [0]< diff --git a/system_8hpp_source.html b/system_8hpp_source.html index 4cf5cea7a..6d150f270 100644 --- a/system_8hpp_source.html +++ b/system_8hpp_source.html @@ -286,7 +286,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/unicode_8cpp_source.html b/unicode_8cpp_source.html index 3f8565e9a..e22e7fa9d 100644 --- a/unicode_8cpp_source.html +++ b/unicode_8cpp_source.html @@ -174,7 +174,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/unicode_8hpp_source.html b/unicode_8hpp_source.html index ecf6bc651..b77f61b7b 100644 --- a/unicode_8hpp_source.html +++ b/unicode_8hpp_source.html @@ -607,7 +607,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/vector__queue_8hpp_source.html b/vector__queue_8hpp_source.html index 1a2af0fa5..837c3c95f 100644 --- a/vector__queue_8hpp_source.html +++ b/vector__queue_8hpp_source.html @@ -451,7 +451,7 @@ $(document).ready(function() { init_codefold(0); });