diff --git a/_unit_tests_2compat_8hpp_source.html b/_unit_tests_2compat_8hpp_source.html index 93cabd28a..e73b11612 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 d260635ce..ff5b79b1a 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 61bcc35fe..8cc02e528 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 f9d0e7ba6..11078fb0d 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 45356f675..539784b42 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 16a381425..86c77dc30 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 45172a8e5..330f6c14c 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 d739c2ab0..e10e42b5a 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 c95c15d08..e6fb91ec0 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 0fe0bf116..2b00facfc 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 ded249a12..a4b9f2a0c 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 4b08c38bd..d2a9d945c 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 a2b9bd054..7c53d4b49 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 da904558c..df6c9a3f7 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 3a1d47e5d..47a39e276 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 7638eb6d1..fba8758db 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 b29e4df03..4071ee6a5 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 dff2a721d..fe84a0ee9 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 5a8db092f..03b16ff47 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 da382f386..8e83cb4ac 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 6db134a72..b8b6d4fdf 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 b5e321cd0..be3d19521 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 0347462c9..64f93ba03 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 e552bdd3e..a4d6cf2ba 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 e36edd398..cfd0560c8 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 53c8801b5..0e2cde198 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 d6291f8da..06b9fb2b6 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 ef5df4eb6..72a444c3a 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 096ad9c83..d719b0ded 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 4d736e068..a004e0053 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 d099848aa..5ff003b21 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 aff6ed823..76e8b001a 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 f72f57f3d..24b3002bf 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 192201692..10a272c02 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 609b0712e..c3e362538 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 f4dae879c..38578efe2 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 cce88b86e..4ebf6e9ad 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 cff1a40d7..31e1abd7b 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 d907a2302..94f6998ca 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 4bc7e2e67..e42ff7d4a 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 1ae788c6c..c6556031c 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 fa40beaff..29e1943b6 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 c11e29401..7eb8355f5 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 901d08388..82a44987a 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 de54c2eaa..07369800e 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 a55b844c9..10363e610 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 e346f5566..15a2d0198 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 44e855136..99bfd9eca 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 cb228fe68..acd385065 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 6cf50ef8a..d50f64a20 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 1bffb2b7c..872444720 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 8869494e2..76ae1b35e 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 2cf7c09a4..b7eed05f6 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 53a4291c7..9dc372207 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 7fe03e033..44b62fd73 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 87f7f0367..53762b676 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 1e41f15a7..e7c19defd 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 8cb3dcbed..68db2c5af 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 af089543c..e9a131a66 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 84d849276..14ecbd10a 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 8cc8b5485..f3982c7be 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 a1bbeea2b..c8b992799 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 2e4d18b40..bd4c5206f 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 4ccaa98aa..3eddde23d 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 36a314329..e58b1042b 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 062b594a3..8444b839f 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 2a19f4607..308b3a9bd 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 1380a4ddb..651c167de 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 9f687cecb..f8604f315 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 e9d5d25a2..418665cb6 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 d15c88c0b..523cf0756 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 6bd33b974..5834a0b89 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 df4b3fb25..4bd382ee6 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 d8657ada1..120d6a208 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 5f177b194..f80638da9 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 9104b3895..5a66b9d15 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 8df78f525..e773e347a 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 7369ec102..423fc0f5a 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 0572c2acc..341ebe188 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 3c1335d90..3c62adc1b 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 ae743adb3..2a99256a7 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 7fbd84460..a9109512c 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 0d64e44cc..4acef5d51 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 47c34a200..279378ff7 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 d90b58797..8e21a0cd5 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 0b808c68e..a213965af 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 cc829901b..99f827e7f 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 2fdb229a1..16b471bcf 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 df75a06c2..748a75b85 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 d0c48333d..b4137f8e5 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 cc5c71f75..12a01a186 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 5f996cad0..7f67f343d 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 a081aa189..860480d58 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 1239e6242..78e028f22 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 be3801074..d8e618e26 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 c205d591b..786be2abc 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 8caf19e2d..86d9e523d 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 11343b139..ddf475e52 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 7bf98cc5a..41aaaf759 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 af8771f1f..8829585ea 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 16beb760f..30e997efe 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 8bb500ac9..6e822cfc4 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 3661d4f87..e7e63dbb4 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 653d04a95..a635ac716 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 294c83fd2..e40d8b2e0 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 846d12c66..203c79838 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 eae5a1587..0aa3fa38b 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 a8617a592..2a93bd56a 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 465d9f393..eda4e6eb2 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 ff8bb99da..4e640a9e8 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 b33595ef7..6e9abc735 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 12d9b1730..70396cba9 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 7f5339c0e..e6070fe96 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 7dbada0ac..ef067519a 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 9f573c350..d3c4d8c36 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 658798790..22b9e2836 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 3595b9a2d..cf9f04db5 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 ebb82bd00..961264877 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 b7f7e85a7..73cf6df5c 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 c6db9135d..3292bf5e9 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 039ad6c90..aa0927e85 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 c6914a887..40e9352eb 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 3573d0d01..768a77996 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 55a6cc846..11e5306af 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 f775b07e2..c879b91c6 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 025942dfe..fa0fec563 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 130a9a1c2..4358f87d5 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 bcf1ff587..5dfe31870 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 df67ab0c4..dde461b1f 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 4bfc7edf9..af8bf0235 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 6315c4729..cf31c9647 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 fe69208a3..d02e2b92f 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 089c96970..685c5d345 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 fdd5e64d2..5c8dccc7e 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 2a3388ded..50e40c103 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 cdf1f15d1..13c4ec96f 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 6c6852c80..c210c479e 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 56ab959cf..c2b70e2a2 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 6706ef659..664a9d634 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 2c69370d2..ace5ede6e 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 ec30e55ed..03a4a95fb 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 bf34443b2..6d36f1774 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 c7e727c75..ddab50f7d 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 3fc20509e..33eb121e7 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 fc5cfb8cd..ca80d9879 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 5ba9c0424..f7ec6f506 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 62fc2dd54..5953a2756 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 b334383f7..7a774a4a1 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 15631c187..06b5aab56 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 e1e2dedc7..529676473 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 1bafd78d6..863923bfa 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 ae5557a3f..94ab6b440 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 68419fe47..d993bd80f 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 c1e42c570..da2a11304 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 189c9b921..afb767bfe 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 807216695..a22109b3f 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 8cffb24ce..e826e21a6 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 77decfd43..b797da3ef 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 cf272f145..5f6913597 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 41279054c..ece2c94cb 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 4904a4f82..cde034032 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 d5d11729c..dc5151e88 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 eb13898ea..56abb52c8 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 76c45edbf..6a725d525 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 81233b0a6..326ce24f8 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 3c8a760dc..0d484f01b 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 91fd74feb..bce333187 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 b29f28cc5..b90b0ede4 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 ca49ca5e8..43106b7df 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 19aaa5415..28ecd3641 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 9ab6fb7ed..156cf6976 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 e2db3ad3c..4b11e60d9 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 6b42ff62b..61e827503 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 d0ef9c786..2371a020e 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 cb21d54db..d2a8ab712 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 f340dc73e..e4c088eca 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 7f01f115f..2693caa50 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 e0582d359..ee16d4167 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 ff944f443..2b1eeb83d 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 f6448667d..8439a6c82 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 6e9ebe891..ce527579f 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 7f160530b..c17f0e820 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 8f71d1788..9fe3aa7e5 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 5639620cd..c77f0867b 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 9673cc776..3244a9e82 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 38892f3c2..a42b69199 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 94585e5a0..f4928e2c3 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 1f69e7291..5763314fb 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 2526cd4b8..d87d3ee21 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 35312faaf..d35fdec09 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 a0c2f15f6..0f8ffc810 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 0ecdb7aed..3b85a8e06 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 984484c03..05862051f 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 02a700d6c..9eee413b3 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 71a8a7775..c22b7dc2b 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 bf9071b50..5b9f5a258 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 46b50c351..bbe268d85 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 cf9202290..749b878b5 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 1fdd07f3c..de83203b4 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 9dd874e2c..669725140 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 25dce941f..40d271653 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 f005223b3..cfa5d14c0 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 c38ab48ea..7e21ffd2c 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 f5f758ba3..b4e55afcb 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 e072c130d..5e66f39bd 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 db58e942f..dcc356248 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 cf5c9da19..002096709 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 0c589711d..86ebd233f 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 9d69f6b87..8dd610b6c 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 58d64aa54..257b59188 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 ed34c2f6a..285b77d0e 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 3bad7b316..d70524399 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 e95fd7ba5..0d4e11972 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 c7e5bc620..a7f6b83f3 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 7cba2f47c..36671900c 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 8a1c6ae8f..fc35b497e 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 c406e8f45..e4edd0fb7 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 fffe10a45..c5c2f10a8 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 d0a4d4827..4e7dc7464 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 319edb658..b433575ad 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 f20325ec3..dc1f199f5 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 5a54a2f04..16d343e9e 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 0beee3442..be48ebcd9 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 290b11241..ceafc47a3 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 d5ffe0f39..2ce21a3ea 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 82e743b83..519adea54 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 3347e26e2..69d12ef45 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 18e352887..a9a1b6c0d 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 b96d20bbd..68a6e85a5 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 0051de3e1..f98efee2e 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 daee4f8f1..9d96068f0 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 00b5a8cbe..61cae9364 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 07db6275e..67750321b 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 7a696b9f8..c7fb7ae53 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 0bcfd7f60..963d78dc5 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 b0d80e042..5186d7fe2 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 72f63477c..19d6cdf79 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 d5d86e99b..a86d10adc 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 df813ec5d..a7e41321e 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 714a203b8..342b3ba9c 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 abefcff61..5a43d897d 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 637fce8b9..97733cba8 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 18fedefc8..8810ca1c5 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 a03520ae1..2e58fca26 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 d05dc4c8b..b67403141 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 291733731..dee1a7975 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 4a54a9198..f42ee041c 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 24d143ec8..857271388 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 3d5d0c666..6bbbd3d4d 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 3cab1f3fa..b0918355f 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 dbdb94c91..7c41cdad4 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 4c17df50d..5945c2ef1 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 287a1b794..bddf9001f 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 ba8699ec7..2aad42379 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 e8352dd2c..35dc81ebe 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 127bb5bc1..ddab2d79e 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 93f571d8e..d50bb08e0 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 0bb14ec85..2e439a1d5 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 c2b79fced..85b94b19b 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 1907dd21c..964234bc0 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 bf501449e..d1a249e74 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 2bea67d28..2af4360d9 100644 --- a/files.html +++ b/files.html @@ -113,7 +113,7 @@ $(function() { diff --git a/functions.html b/functions.html index 637b891cb..75ef02375 100644 --- a/functions.html +++ b/functions.html @@ -84,7 +84,7 @@ $(function() { diff --git a/functions_b.html b/functions_b.html index 224c7d1c2..6fa980c17 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 76830c1f4..fafcaa2d4 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 04fcb39e6..f9f5ec06c 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 d80b7ccac..01eb58ec2 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 ee2254875..96bee6f68 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 ed4d5ebb1..4536cef6e 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 68ad38472..eafcc12b5 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 c9610e4c8..f0d353af5 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 02f8391fa..96489d624 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 8230797d1..2efd2ccff 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 abcaba02b..fc13d0512 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 8376f1e27..66540acb8 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 76693f78a..d025e72f4 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 b3b7bd9c4..acde441cf 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 749880f99..7710a4b49 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 29c51a8ef..fcf497b83 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 57fe168fa..199d07152 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 7a3b0446e..9a2ee8913 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 8d92ab63a..f9054dcd2 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 e1b131cad..bcd3e4742 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 cdc2d050c..fa19a1d4e 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 9c1b504fd..2982d0c50 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 445a21ed6..ede0ea3d7 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 17df26294..d020b003f 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 7e82bfa08..9d963b137 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 ad24dcc5e..9af96fc92 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 ab63af77e..53e80e628 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 8ced6cedb..793bb5082 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 04770af85..2564687ac 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 775707bb6..5fa2bef06 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 8b2a370bc..24142173f 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 8ef49f145..ed5b0394b 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 ea20d6937..359a9efa3 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 e4dc3b1ce..3887b27f8 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 c6420686b..80326e740 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 f5c8d635b..ba31a544f 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 c2483d0ce..b34f39b9a 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 32882368e..4335a3a85 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 872a8765d..9581b22fd 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 671a46c44..6266d1fd2 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 3366b3199..e4d047c02 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 8b413d6bc..e64fea59f 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 1ae61696e..e6634494e 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 f2fcb3574..4f7ba0192 100644 --- a/functions_w.html +++ b/functions_w.html @@ -88,7 +88,7 @@ $(function() { diff --git a/functions_~.html b/functions_~.html index 1a6220785..7af5d50a7 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 aa6284b22..c512f0d14 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 24abe5931..698c2eea0 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 8a1fc9462..f5d2ffe8e 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 28cf516cc..5c1b052ee 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 fb71e9a02..668737121 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 5c8cd4191..d551dc590 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 04b0ef181..c0734e7b1 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 b56bc4f60..035be17b1 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 592a1ea3d..a184e45ae 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 f2c146c71..5a9689f14 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 0d7ffef61..157beda5f 100644 --- a/parser_8cpp_source.html +++ b/parser_8cpp_source.html @@ -289,271 +289,308 @@ $(document).ready(function() { init_codefold(0); });
205 Assert::IsTrue(p.match(L"si56 0231 2001 5226 972", 0, SIZE_MAX, match_case_insensitive));
206 Assert::IsTrue(p.is_valid);
207 Assert::IsTrue(p.match(L"SI56 0231 2001 5226 9720", 0, SIZE_MAX));
-
208 Assert::IsFalse(p.is_valid);
-
209 Assert::IsTrue(p.match(L"...SI56 0231 2001 5226 972...", 3, SIZE_MAX));
-
210 Assert::IsTrue(p.is_valid);
-
211 Assert::IsTrue(p.match(L"SI56 0231 2001 5226 972", 0, SIZE_MAX)); // no-break space
-
212 Assert::IsTrue(p.is_valid);
-
213 }
+
208 Assert::AreEqual(stdex::interval<size_t>(0, 23), p.interval);
+
209 Assert::IsTrue(p.is_valid);
+
210 Assert::IsTrue(p.match(L"...SI56 0231 2001 5226 972...", 3, SIZE_MAX));
+
211 Assert::IsTrue(p.is_valid);
+
212 Assert::IsTrue(p.match(L"SI56 0231 2001 5226 972", 0, SIZE_MAX)); // no-break space
+
213 Assert::IsTrue(p.is_valid);
214
-
215 {
-
216 std::locale locale_slSI("sl_SI");
-
217 wspace_cu space(false, locale_slSI);
-
218 wcreditor_reference p(make_shared_no_delete(&space), locale_slSI);
-
219 Assert::IsTrue(p.match(L"RF18539007547034", 0, SIZE_MAX));
-
220 Assert::IsTrue(p.is_valid);
-
221 Assert::AreEqual(L"18", p.check_digits);
-
222 Assert::AreEqual(L"000000000539007547034", p.reference);
-
223 Assert::IsTrue(p.match(L"RF18 5390 0754 7034", 0, SIZE_MAX));
-
224 Assert::IsTrue(p.is_valid);
-
225 Assert::AreEqual(L"18", p.check_digits);
-
226 Assert::AreEqual(L"000000000539007547034", p.reference);
-
227 Assert::IsFalse(p.match(L"rf18 5390 0754 7034", 0, SIZE_MAX));
-
228 Assert::IsFalse(p.is_valid);
-
229 Assert::IsTrue(p.match(L"rf18 5390 0754 7034", 0, SIZE_MAX, match_case_insensitive));
+
215 Assert::IsTrue(p.match(L"BE71 0961 2345 6769", 0, SIZE_MAX));
+
216 Assert::IsTrue(p.is_valid);
+
217 Assert::IsTrue(p.match(L"BR15 0000 0000 0000 1093 2840 814 P2", 0, SIZE_MAX));
+
218 Assert::IsTrue(p.is_valid);
+
219 Assert::IsTrue(p.match(L"CR99 0000 0000 0000 8888 88", 0, SIZE_MAX));
+
220 Assert::IsFalse(p.is_valid);
+
221 Assert::IsTrue(p.match(L"FR76 3000 6000 0112 3456 7890 189", 0, SIZE_MAX));
+
222 Assert::IsTrue(p.is_valid);
+
223 Assert::IsTrue(p.match(L"IE12 BOFI 9000 0112 3456 78", 0, SIZE_MAX));
+
224 Assert::IsFalse(p.is_valid);
+
225 Assert::IsTrue(p.match(L"DE91 1000 0000 0123 4567 89", 0, SIZE_MAX));
+
226 Assert::IsTrue(p.is_valid);
+
227 Assert::IsTrue(p.match(L"GR96 0810 0010 0000 0123 4567 890", 0, SIZE_MAX));
+
228 Assert::IsTrue(p.is_valid);
+
229 Assert::IsTrue(p.match(L"MU43 BOMM 0101 1234 5678 9101 000 MUR", 0, SIZE_MAX));
230 Assert::IsTrue(p.is_valid);
-
231 Assert::IsTrue(p.match(L"RF18 5390 0754 70340", 0, SIZE_MAX));
-
232 Assert::IsFalse(p.is_valid);
-
233 Assert::IsTrue(p.match(L"...RF18 5390 0754 7034...", 3, SIZE_MAX));
+
231 Assert::IsTrue(p.match(L"PK70 BANK 0000 1234 5678 9000", 0, SIZE_MAX));
+
232 Assert::IsTrue(p.is_valid);
+
233 Assert::IsTrue(p.match(L"PL10 1050 0099 7603 1234 5678 9123", 0, SIZE_MAX));
234 Assert::IsTrue(p.is_valid);
-
235 Assert::IsTrue(p.match(L"RF18 5390 0754 7034", 0, SIZE_MAX)); // no-break space
+
235 Assert::IsTrue(p.match(L"RO09 BCYP 0000 0012 3456 7890", 0, SIZE_MAX));
236 Assert::IsTrue(p.is_valid);
-
237 }
-
238
-
239 {
-
240 std::locale locale_slSI("sl_SI");
-
241 wspace_cu space(false, locale_slSI);
-
242 wsi_reference p(make_shared_no_delete(&space), locale_slSI);
-
243 Assert::IsTrue(p.match(L"SI121234567890120", 0, SIZE_MAX));
-
244 Assert::IsTrue(p.is_valid);
-
245 Assert::AreEqual(L"12", p.model);
-
246 Assert::AreEqual(stdex::interval<size_t>(4, 17), p.part1.interval);
-
247 Assert::IsTrue(p.match(L"SI12 1234567890120", 0, SIZE_MAX));
+
237 Assert::IsTrue(p.match(L"LC14 BOSL 1234 5678 9012 3456 7890 1234", 0, SIZE_MAX));
+
238 Assert::IsTrue(p.is_valid);
+
239 Assert::IsTrue(p.match(L"SA44 2000 0001 2345 6789 1234", 0, SIZE_MAX));
+
240 Assert::IsTrue(p.is_valid);
+
241 Assert::IsTrue(p.match(L"ES79 2100 0813 6101 2345 6789", 0, SIZE_MAX));
+
242 Assert::IsTrue(p.is_valid);
+
243 Assert::IsTrue(p.match(L"SE87 3000 0000 0101 2345 6789", 0, SIZE_MAX));
+
244 Assert::IsFalse(p.is_valid);
+
245 Assert::IsTrue(p.match(L"CH56 0483 5012 3456 7800 9", 0, SIZE_MAX));
+
246 Assert::IsTrue(p.is_valid);
+
247 Assert::IsTrue(p.match(L"GB98 MIDL 0700 9312 3456 78", 0, SIZE_MAX));
248 Assert::IsTrue(p.is_valid);
-
249 Assert::AreEqual(L"12", p.model);
-
250 Assert::AreEqual(stdex::interval<size_t>(5, 18), p.part1.interval);
-
251 Assert::IsFalse(p.match(L"si12 1234567890120", 0, SIZE_MAX));
-
252 Assert::IsTrue(p.match(L"si12 1234567890120", 0, SIZE_MAX, match_case_insensitive));
-
253 Assert::IsTrue(p.match(L"...SI12 1234567890120...", 3, SIZE_MAX));
-
254 Assert::IsTrue(p.match(L"SI12 1234567890120", 0, SIZE_MAX)); // no-break space
-
255 }
-
256 }
-
257
-
258 TEST_METHOD(sgml_test)
-
259 {
-
260 std::locale locale_slSI("sl_SI");
-
261 static const char text[] = "V ko&zcaron;u&scaron;&ccaron;ku zlobnega mizarja stopiclja fant\nin kli&ccaron;e&nbsp;1234567890.";
-
262
-
263 {
-
264 sgml_noop p;
-
265 Assert::IsTrue(p.match(text));
-
266 Assert::AreEqual((size_t)0, p.interval.start);
-
267 Assert::AreEqual((size_t)0, p.interval.end);
-
268 }
-
269
-
270 {
-
271 sgml_cp p("v");
-
272 Assert::IsFalse(p.match(text));
-
273 Assert::IsTrue(p.match(text, 0, _countof(text), match_case_insensitive));
-
274 Assert::AreEqual((size_t)0, p.interval.start);
-
275 Assert::AreEqual((size_t)1, p.interval.end);
-
276 }
-
277
-
278 {
-
279 sgml_cp p("&Zcaron;", SIZE_MAX, false, locale_slSI);
-
280 Assert::IsFalse(p.match(text, 4));
-
281 Assert::IsTrue(p.match(text, 4, _countof(text), match_case_insensitive));
-
282 Assert::AreEqual((size_t)4, p.interval.start);
-
283 Assert::AreEqual((size_t)12, p.interval.end);
-
284 }
-
285
-
286 {
-
287 sgml_space_cp p(false, locale_slSI);
-
288 Assert::IsFalse(p.match(text));
-
289 Assert::IsTrue(p.match(text, 1));
-
290 Assert::AreEqual((size_t)1, p.interval.start);
-
291 Assert::AreEqual((size_t)2, p.interval.end);
-
292 Assert::IsTrue(p.match(text, 79));
-
293 Assert::AreEqual((size_t)79, p.interval.start);
-
294 Assert::AreEqual((size_t)85, p.interval.end);
-
295 }
-
296
-
297 {
-
298 sgml_string_branch p(locale_slSI, "apple", "orange", "Ko&Zcaron;u&Scaron;&ccaron;Ku", nullptr);
-
299 Assert::IsFalse(p.match(text, 2));
-
300 Assert::IsTrue(p.match(text, 2, _countof(text), match_case_insensitive));
-
301 Assert::AreEqual((size_t)2, p.hit_offset);
-
302 Assert::AreEqual((size_t)2, p.interval.start);
-
303 Assert::AreEqual((size_t)31, p.interval.end);
+
249 }
+
250
+
251 {
+
252 std::locale locale_slSI("sl_SI");
+
253 wspace_cu space(false, locale_slSI);
+
254 wcreditor_reference p(make_shared_no_delete(&space), locale_slSI);
+
255 Assert::IsTrue(p.match(L"RF18539007547034", 0, SIZE_MAX));
+
256 Assert::IsTrue(p.is_valid);
+
257 Assert::AreEqual(L"18", p.check_digits);
+
258 Assert::AreEqual(L"000000000539007547034", p.reference);
+
259 Assert::IsTrue(p.match(L"RF18 5390 0754 7034", 0, SIZE_MAX));
+
260 Assert::IsTrue(p.is_valid);
+
261 Assert::AreEqual(L"18", p.check_digits);
+
262 Assert::AreEqual(L"000000000539007547034", p.reference);
+
263 Assert::IsFalse(p.match(L"rf18 5390 0754 7034", 0, SIZE_MAX));
+
264 Assert::IsFalse(p.is_valid);
+
265 Assert::IsTrue(p.match(L"rf18 5390 0754 7034", 0, SIZE_MAX, match_case_insensitive));
+
266 Assert::IsTrue(p.is_valid);
+
267 Assert::IsTrue(p.match(L"RF18 5390 0754 70340", 0, SIZE_MAX));
+
268 Assert::IsFalse(p.is_valid);
+
269 Assert::IsTrue(p.match(L"...RF18 5390 0754 7034...", 3, SIZE_MAX));
+
270 Assert::IsTrue(p.is_valid);
+
271 Assert::IsTrue(p.match(L"RF18 5390 0754 7034", 0, SIZE_MAX)); // no-break space
+
272 Assert::IsTrue(p.is_valid);
+
273 }
+
274
+
275 {
+
276 std::locale locale_slSI("sl_SI");
+
277 wspace_cu space(false, locale_slSI);
+
278 wsi_reference p(make_shared_no_delete(&space), locale_slSI);
+
279 Assert::IsTrue(p.match(L"SI121234567890120", 0, SIZE_MAX));
+
280 Assert::IsTrue(p.is_valid);
+
281 Assert::AreEqual(L"12", p.model);
+
282 Assert::AreEqual(stdex::interval<size_t>(4, 17), p.part1.interval);
+
283 Assert::IsTrue(p.match(L"SI12 1234567890120", 0, SIZE_MAX));
+
284 Assert::IsTrue(p.is_valid);
+
285 Assert::AreEqual(L"12", p.model);
+
286 Assert::AreEqual(stdex::interval<size_t>(5, 18), p.part1.interval);
+
287 Assert::IsFalse(p.match(L"si12 1234567890120", 0, SIZE_MAX));
+
288 Assert::IsTrue(p.match(L"si12 1234567890120", 0, SIZE_MAX, match_case_insensitive));
+
289 Assert::IsTrue(p.match(L"...SI12 1234567890120...", 3, SIZE_MAX));
+
290 Assert::IsTrue(p.match(L"SI12 1234567890120", 0, SIZE_MAX)); // no-break space
+
291 }
+
292 }
+
293
+
294 TEST_METHOD(sgml_test)
+
295 {
+
296 std::locale locale_slSI("sl_SI");
+
297 static const char text[] = "V ko&zcaron;u&scaron;&ccaron;ku zlobnega mizarja stopiclja fant\nin kli&ccaron;e&nbsp;1234567890.";
+
298
+
299 {
+
300 sgml_noop p;
+
301 Assert::IsTrue(p.match(text));
+
302 Assert::AreEqual((size_t)0, p.interval.start);
+
303 Assert::AreEqual((size_t)0, p.interval.end);
304 }
305
306 {
-
307 std::locale locale_slSI("sl_SI");
-
308 sgml_space_cp space(false, locale_slSI);
-
309 sgml_iban p(make_shared_no_delete(&space), locale_slSI);
-
310 Assert::IsTrue(p.match("SI56023120015226972", 0, SIZE_MAX));
-
311 Assert::IsTrue(p.is_valid);
-
312 Assert::AreEqual("SI", p.country);
-
313 Assert::AreEqual("56", p.check_digits);
-
314 Assert::AreEqual("023120015226972", p.bban);
-
315 Assert::IsTrue(p.match("SI56 0231 2001 5226 972", 0, SIZE_MAX));
-
316 Assert::IsTrue(p.is_valid);
-
317 Assert::AreEqual("SI", p.country);
-
318 Assert::AreEqual("56", p.check_digits);
-
319 Assert::AreEqual("023120015226972", p.bban);
-
320 Assert::IsFalse(p.match("si56 0231 2001 5226 972", 0, SIZE_MAX));
-
321 Assert::IsFalse(p.is_valid);
-
322 Assert::IsTrue(p.match("si56 0231 2001 5226 972", 0, SIZE_MAX, match_case_insensitive));
-
323 Assert::IsTrue(p.is_valid);
-
324 Assert::IsTrue(p.match("SI56 0231 2001 5226 9720", 0, SIZE_MAX));
-
325 Assert::IsFalse(p.is_valid);
-
326 Assert::IsTrue(p.match("...SI56 0231 2001 5226 972...", 3, SIZE_MAX));
-
327 Assert::IsTrue(p.is_valid);
-
328 Assert::IsTrue(p.match("SI56&nbsp;0231&nbsp;2001&nbsp;5226&nbsp;972", 0, SIZE_MAX));
-
329 Assert::IsTrue(p.is_valid);
-
330 }
-
331
-
332 {
-
333 std::locale locale_slSI("sl_SI");
-
334 sgml_space_cp space(false, locale_slSI);
-
335 sgml_creditor_reference p(make_shared_no_delete(&space), locale_slSI);
-
336 Assert::IsTrue(p.match("RF18539007547034", 0, SIZE_MAX));
-
337 Assert::IsTrue(p.is_valid);
-
338 Assert::AreEqual("18", p.check_digits);
-
339 Assert::AreEqual("000000000539007547034", p.reference);
-
340 Assert::IsTrue(p.match("RF18 5390 0754 7034", 0, SIZE_MAX));
-
341 Assert::IsTrue(p.is_valid);
-
342 Assert::AreEqual("18", p.check_digits);
-
343 Assert::AreEqual("000000000539007547034", p.reference);
-
344 Assert::IsFalse(p.match("rf18 5390 0754 7034", 0, SIZE_MAX));
-
345 Assert::IsFalse(p.is_valid);
-
346 Assert::IsTrue(p.match("rf18 5390 0754 7034", 0, SIZE_MAX, match_case_insensitive));
+
307 sgml_cp p("v");
+
308 Assert::IsFalse(p.match(text));
+
309 Assert::IsTrue(p.match(text, 0, _countof(text), match_case_insensitive));
+
310 Assert::AreEqual((size_t)0, p.interval.start);
+
311 Assert::AreEqual((size_t)1, p.interval.end);
+
312 }
+
313
+
314 {
+
315 sgml_cp p("&Zcaron;", SIZE_MAX, false, locale_slSI);
+
316 Assert::IsFalse(p.match(text, 4));
+
317 Assert::IsTrue(p.match(text, 4, _countof(text), match_case_insensitive));
+
318 Assert::AreEqual((size_t)4, p.interval.start);
+
319 Assert::AreEqual((size_t)12, p.interval.end);
+
320 }
+
321
+
322 {
+
323 sgml_space_cp p(false, locale_slSI);
+
324 Assert::IsFalse(p.match(text));
+
325 Assert::IsTrue(p.match(text, 1));
+
326 Assert::AreEqual((size_t)1, p.interval.start);
+
327 Assert::AreEqual((size_t)2, p.interval.end);
+
328 Assert::IsTrue(p.match(text, 79));
+
329 Assert::AreEqual((size_t)79, p.interval.start);
+
330 Assert::AreEqual((size_t)85, p.interval.end);
+
331 }
+
332
+
333 {
+
334 sgml_string_branch p(locale_slSI, "apple", "orange", "Ko&Zcaron;u&Scaron;&ccaron;Ku", nullptr);
+
335 Assert::IsFalse(p.match(text, 2));
+
336 Assert::IsTrue(p.match(text, 2, _countof(text), match_case_insensitive));
+
337 Assert::AreEqual((size_t)2, p.hit_offset);
+
338 Assert::AreEqual((size_t)2, p.interval.start);
+
339 Assert::AreEqual((size_t)31, p.interval.end);
+
340 }
+
341
+
342 {
+
343 std::locale locale_slSI("sl_SI");
+
344 sgml_space_cp space(false, locale_slSI);
+
345 sgml_iban p(make_shared_no_delete(&space), locale_slSI);
+
346 Assert::IsTrue(p.match("SI56023120015226972", 0, SIZE_MAX));
347 Assert::IsTrue(p.is_valid);
-
348 Assert::IsTrue(p.match("RF18 5390 0754 70340", 0, SIZE_MAX));
-
349 Assert::IsFalse(p.is_valid);
-
350 Assert::IsTrue(p.match("...RF18 5390 0754 7034...", 3, SIZE_MAX));
-
351 Assert::IsTrue(p.is_valid);
-
352 Assert::IsTrue(p.match("RF18&nbsp;5390&nbsp;0754&nbsp;7034", 0, SIZE_MAX));
-
353 Assert::IsTrue(p.is_valid);
-
354 }
-
355
-
356 {
-
357 std::locale locale_slSI("sl_SI");
-
358 sgml_space_cp space(false, locale_slSI);
-
359 sgml_si_reference p(make_shared_no_delete(&space), locale_slSI);
-
360 Assert::IsTrue(p.match("SI121234567890120", 0, SIZE_MAX));
-
361 Assert::IsTrue(p.is_valid);
-
362 Assert::AreEqual("12", p.model);
-
363 Assert::AreEqual(stdex::interval<size_t>(4, 17), p.part1.interval);
-
364 Assert::IsTrue(p.match("SI12 1234567890120", 0, SIZE_MAX));
-
365 Assert::IsTrue(p.is_valid);
-
366 Assert::AreEqual("12", p.model);
-
367 Assert::AreEqual(stdex::interval<size_t>(5, 18), p.part1.interval);
-
368 Assert::IsFalse(p.match("si12 1234567890120", 0, SIZE_MAX));
-
369 Assert::IsTrue(p.match("si12 1234567890120", 0, SIZE_MAX, match_case_insensitive));
-
370 Assert::IsTrue(p.match("...SI12 1234567890120...", 3, SIZE_MAX));
-
371 Assert::IsTrue(p.match("SI12&nbsp;1234567890120", 0, SIZE_MAX));
-
372 }
-
373 }
-
374
-
375 TEST_METHOD(http_test)
-
376 {
-
377 static const std::locale locale("en_US.UTF-8");
-
378 static const char request[] =
-
379 "GET / HTTP/2\r\n"
-
380 "Host: stackoverflow.com\r\n"
-
381 "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0\r\n"
-
382 "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\n"
-
383 "Accept-Language: sl,en-US;q=0.8,en;q=0.6,de-DE;q=0.4,de;q=0.2\r\n"
-
384 "Accept-Encoding: gzip, deflate, br\r\n"
-
385 "DNT: 1\r\n"
-
386 "Connection: keep-alive\r\n"
-
387 "Cookie: prov=00000000-0000-0000-0000-000000000000; acct=t=00000000000000000%2f%2f0000%2b0000%2b000&s=00000000000000000000000000000000; OptanonConsent=isGpcEnabled=0&datestamp=Fri+Feb+03+2023+11%3A11%3A08+GMT%2B0100+(Srednjeevropski+standardni+%C4%8Das)&version=6.37.0&isIABGlobal=false&hosts=&consentId=00000000-0000-0000-0000-000000000000&interactionCount=1&landingPath=NotLandingPage&groups=00000%3A0%2C00000%3A0%2C00000%3A0%2C00000%3A0; OptanonAlertBoxClosed=2023-02-03T10:11:08.683Z\r\n"
-
388 "Upgrade-Insecure-Requests: 1\r\n"
-
389 "Sec-Fetch-Dest: document\r\n"
-
390 "Sec-Fetch-Mode: navigate\r\n"
-
391 "Sec-Fetch-Site: none\r\n"
-
392 "Sec-Fetch-User: ?1\r\n"
-
393 "Pragma: no-cache\r\n"
-
394 "Cache-Control: no-cache\r\n"
-
395 "\r\n";
-
396
-
397 {
-
398 http_request p(locale);
-
399 Assert::IsTrue(p.match(request));
-
400 Assert::AreEqual((size_t)0, p.interval.start);
-
401 Assert::AreEqual((size_t)14, p.interval.end);
-
402 Assert::AreEqual((size_t)0, p.verb.start);
-
403 Assert::AreEqual((size_t)3, p.verb.end);
-
404 Assert::AreEqual((size_t)4, p.url.interval.start);
-
405 Assert::AreEqual((size_t)5, p.url.interval.end);
-
406 Assert::AreEqual((size_t)6, p.protocol.interval.start);
-
407 Assert::AreEqual((size_t)12, p.protocol.interval.end);
-
408 Assert::AreEqual((uint16_t)0x200, p.protocol.version);
+
348 Assert::AreEqual("SI", p.country);
+
349 Assert::AreEqual("56", p.check_digits);
+
350 Assert::AreEqual("023120015226972", p.bban);
+
351 Assert::IsTrue(p.match("SI56 0231 2001 5226 972", 0, SIZE_MAX));
+
352 Assert::IsTrue(p.is_valid);
+
353 Assert::AreEqual("SI", p.country);
+
354 Assert::AreEqual("56", p.check_digits);
+
355 Assert::AreEqual("023120015226972", p.bban);
+
356 Assert::IsFalse(p.match("si56 0231 2001 5226 972", 0, SIZE_MAX));
+
357 Assert::IsFalse(p.is_valid);
+
358 Assert::IsTrue(p.match("si56 0231 2001 5226 972", 0, SIZE_MAX, match_case_insensitive));
+
359 Assert::IsTrue(p.is_valid);
+
360 Assert::IsTrue(p.match("SI56 0231 2001 5226 9720", 0, SIZE_MAX));
+
361 Assert::AreEqual(stdex::interval<size_t>(0, 23), p.interval);
+
362 Assert::IsTrue(p.is_valid);
+
363 Assert::IsTrue(p.match("...SI56 0231 2001 5226 972...", 3, SIZE_MAX));
+
364 Assert::IsTrue(p.is_valid);
+
365 Assert::IsTrue(p.match("SI56&nbsp;0231&nbsp;2001&nbsp;5226&nbsp;972", 0, SIZE_MAX));
+
366 Assert::IsTrue(p.is_valid);
+
367 }
+
368
+
369 {
+
370 std::locale locale_slSI("sl_SI");
+
371 sgml_space_cp space(false, locale_slSI);
+
372 sgml_creditor_reference p(make_shared_no_delete(&space), locale_slSI);
+
373 Assert::IsTrue(p.match("RF18539007547034", 0, SIZE_MAX));
+
374 Assert::IsTrue(p.is_valid);
+
375 Assert::AreEqual("18", p.check_digits);
+
376 Assert::AreEqual("000000000539007547034", p.reference);
+
377 Assert::IsTrue(p.match("RF18 5390 0754 7034", 0, SIZE_MAX));
+
378 Assert::IsTrue(p.is_valid);
+
379 Assert::AreEqual("18", p.check_digits);
+
380 Assert::AreEqual("000000000539007547034", p.reference);
+
381 Assert::IsFalse(p.match("rf18 5390 0754 7034", 0, SIZE_MAX));
+
382 Assert::IsFalse(p.is_valid);
+
383 Assert::IsTrue(p.match("rf18 5390 0754 7034", 0, SIZE_MAX, match_case_insensitive));
+
384 Assert::IsTrue(p.is_valid);
+
385 Assert::IsTrue(p.match("RF18 5390 0754 70340", 0, SIZE_MAX));
+
386 Assert::IsFalse(p.is_valid);
+
387 Assert::IsTrue(p.match("...RF18 5390 0754 7034...", 3, SIZE_MAX));
+
388 Assert::IsTrue(p.is_valid);
+
389 Assert::IsTrue(p.match("RF18&nbsp;5390&nbsp;0754&nbsp;7034", 0, SIZE_MAX));
+
390 Assert::IsTrue(p.is_valid);
+
391 }
+
392
+
393 {
+
394 std::locale locale_slSI("sl_SI");
+
395 sgml_space_cp space(false, locale_slSI);
+
396 sgml_si_reference p(make_shared_no_delete(&space), locale_slSI);
+
397 Assert::IsTrue(p.match("SI121234567890120", 0, SIZE_MAX));
+
398 Assert::IsTrue(p.is_valid);
+
399 Assert::AreEqual("12", p.model);
+
400 Assert::AreEqual(stdex::interval<size_t>(4, 17), p.part1.interval);
+
401 Assert::IsTrue(p.match("SI12 1234567890120", 0, SIZE_MAX));
+
402 Assert::IsTrue(p.is_valid);
+
403 Assert::AreEqual("12", p.model);
+
404 Assert::AreEqual(stdex::interval<size_t>(5, 18), p.part1.interval);
+
405 Assert::IsFalse(p.match("si12 1234567890120", 0, SIZE_MAX));
+
406 Assert::IsTrue(p.match("si12 1234567890120", 0, SIZE_MAX, match_case_insensitive));
+
407 Assert::IsTrue(p.match("...SI12 1234567890120...", 3, SIZE_MAX));
+
408 Assert::IsTrue(p.match("SI12&nbsp;1234567890120", 0, SIZE_MAX));
409 }
-
410
-
411 {
-
412 std::list<http_header> hdrs;
-
413 size_t offset = 14;
-
414 for (;;) {
-
415 http_header h;
-
416 if (h.match(request, offset)) {
-
417 offset = h.interval.end;
-
418 hdrs.push_back(std::move(h));
-
419 }
-
420 else
-
421 break;
-
422 }
-
423 Assert::AreEqual((size_t)15, hdrs.size());
-
424 http_weighted_collection<http_weighted_value<http_language>> langs;
-
425 for (const auto& h : hdrs)
-
426 if (strnicmp(request + h.name.start, h.name.size(), "Accept-Language", (size_t)-1, locale) == 0)
-
427 langs.insert(request, h.value.start, h.value.end);
-
428 Assert::IsTrue(!langs.empty());
-
429 {
-
430 const vector<std::string> control = {
-
431 "sl", "en-US", "en", "de-DE", "de"
-
432 };
-
433 auto c = control.cbegin();
-
434 auto l = langs.cbegin();
-
435 for (; c != control.cend() && l != langs.cend(); ++c, ++l)
-
436 Assert::IsTrue(strnicmp(request + l->value.interval.start, l->value.interval.size(), c->c_str(), c->size(), locale) == 0);
-
437 Assert::IsTrue(c == control.cend());
-
438 Assert::IsTrue(l == langs.cend());
-
439 }
-
440 }
-
441
-
442 //static const char response[] =
-
443 // "HTTP/2 200 OK\r\n"
-
444 // "cache-control: private\r\n"
-
445 // "content-type: text/html; charset=utf-8\r\n"
-
446 // "content-encoding: gzip\r\n"
-
447 // "strict-transport-security: max-age=15552000\r\n"
-
448 // "x-frame-options: SAMEORIGIN\r\n"
-
449 // "set-cookie: acct=t=00000000000000000%2f%2f0000%2b0000%2b000&s=00000000000000000000000000000000; expires=Sat, 16 Sep 2023 10:23:00 GMT; domain=.stackoverflow.com; path=/; secure; samesite=none; httponly\r\n"
-
450 // "set-cookie: prov_tgt=; expires=Tue, 14 Mar 2023 10:23:00 GMT; domain=.stackoverflow.com; path=/; secure; samesite=none; httponly\r\n"
-
451 // "x-request-guid: a6536a49-b473-4c6f-b313-c1e7c0d8f600\r\n"
-
452 // "feature-policy: microphone 'none'; speaker 'none'\r\n"
-
453 // "content-security-policy: upgrade-insecure-requests; frame-ancestors 'self' https://stackexchange.com\r\n"
-
454 // "accept-ranges: bytes\r\n"
-
455 // "date: Thu, 16 Mar 2023 10:23:00 GMT\r\n"
-
456 // "via: 1.1 varnish\r\n"
-
457 // "x-served-by: cache-vie6354-VIE\r\n"
-
458 // "x-cache: MISS\r\n"
-
459 // "x-cache-hits: 0\r\n"
-
460 // "x-timer: S1678962181.533907,VS0,VE144\r\n"
-
461 // "vary: Accept-Encoding,Fastly-SSL\r\n"
-
462 // "x-dns-prefetch-control: off\r\n"
-
463 // "X-Firefox-Spdy: h2\r\n"
-
464 // "\r\n";
-
465 }
-
466 };
-
467}
+
410 }
+
411
+
412 TEST_METHOD(http_test)
+
413 {
+
414 static const std::locale locale("en_US.UTF-8");
+
415 static const char request[] =
+
416 "GET / HTTP/2\r\n"
+
417 "Host: stackoverflow.com\r\n"
+
418 "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0\r\n"
+
419 "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8\r\n"
+
420 "Accept-Language: sl,en-US;q=0.8,en;q=0.6,de-DE;q=0.4,de;q=0.2\r\n"
+
421 "Accept-Encoding: gzip, deflate, br\r\n"
+
422 "DNT: 1\r\n"
+
423 "Connection: keep-alive\r\n"
+
424 "Cookie: prov=00000000-0000-0000-0000-000000000000; acct=t=00000000000000000%2f%2f0000%2b0000%2b000&s=00000000000000000000000000000000; OptanonConsent=isGpcEnabled=0&datestamp=Fri+Feb+03+2023+11%3A11%3A08+GMT%2B0100+(Srednjeevropski+standardni+%C4%8Das)&version=6.37.0&isIABGlobal=false&hosts=&consentId=00000000-0000-0000-0000-000000000000&interactionCount=1&landingPath=NotLandingPage&groups=00000%3A0%2C00000%3A0%2C00000%3A0%2C00000%3A0; OptanonAlertBoxClosed=2023-02-03T10:11:08.683Z\r\n"
+
425 "Upgrade-Insecure-Requests: 1\r\n"
+
426 "Sec-Fetch-Dest: document\r\n"
+
427 "Sec-Fetch-Mode: navigate\r\n"
+
428 "Sec-Fetch-Site: none\r\n"
+
429 "Sec-Fetch-User: ?1\r\n"
+
430 "Pragma: no-cache\r\n"
+
431 "Cache-Control: no-cache\r\n"
+
432 "\r\n";
+
433
+
434 {
+
435 http_request p(locale);
+
436 Assert::IsTrue(p.match(request));
+
437 Assert::AreEqual((size_t)0, p.interval.start);
+
438 Assert::AreEqual((size_t)14, p.interval.end);
+
439 Assert::AreEqual((size_t)0, p.verb.start);
+
440 Assert::AreEqual((size_t)3, p.verb.end);
+
441 Assert::AreEqual((size_t)4, p.url.interval.start);
+
442 Assert::AreEqual((size_t)5, p.url.interval.end);
+
443 Assert::AreEqual((size_t)6, p.protocol.interval.start);
+
444 Assert::AreEqual((size_t)12, p.protocol.interval.end);
+
445 Assert::AreEqual((uint16_t)0x200, p.protocol.version);
+
446 }
+
447
+
448 {
+
449 std::list<http_header> hdrs;
+
450 size_t offset = 14;
+
451 for (;;) {
+
452 http_header h;
+
453 if (h.match(request, offset)) {
+
454 offset = h.interval.end;
+
455 hdrs.push_back(std::move(h));
+
456 }
+
457 else
+
458 break;
+
459 }
+
460 Assert::AreEqual((size_t)15, hdrs.size());
+
461 http_weighted_collection<http_weighted_value<http_language>> langs;
+
462 for (const auto& h : hdrs)
+
463 if (strnicmp(request + h.name.start, h.name.size(), "Accept-Language", (size_t)-1, locale) == 0)
+
464 langs.insert(request, h.value.start, h.value.end);
+
465 Assert::IsTrue(!langs.empty());
+
466 {
+
467 const vector<std::string> control = {
+
468 "sl", "en-US", "en", "de-DE", "de"
+
469 };
+
470 auto c = control.cbegin();
+
471 auto l = langs.cbegin();
+
472 for (; c != control.cend() && l != langs.cend(); ++c, ++l)
+
473 Assert::IsTrue(strnicmp(request + l->value.interval.start, l->value.interval.size(), c->c_str(), c->size(), locale) == 0);
+
474 Assert::IsTrue(c == control.cend());
+
475 Assert::IsTrue(l == langs.cend());
+
476 }
+
477 }
+
478
+
479 //static const char response[] =
+
480 // "HTTP/2 200 OK\r\n"
+
481 // "cache-control: private\r\n"
+
482 // "content-type: text/html; charset=utf-8\r\n"
+
483 // "content-encoding: gzip\r\n"
+
484 // "strict-transport-security: max-age=15552000\r\n"
+
485 // "x-frame-options: SAMEORIGIN\r\n"
+
486 // "set-cookie: acct=t=00000000000000000%2f%2f0000%2b0000%2b000&s=00000000000000000000000000000000; expires=Sat, 16 Sep 2023 10:23:00 GMT; domain=.stackoverflow.com; path=/; secure; samesite=none; httponly\r\n"
+
487 // "set-cookie: prov_tgt=; expires=Tue, 14 Mar 2023 10:23:00 GMT; domain=.stackoverflow.com; path=/; secure; samesite=none; httponly\r\n"
+
488 // "x-request-guid: a6536a49-b473-4c6f-b313-c1e7c0d8f600\r\n"
+
489 // "feature-policy: microphone 'none'; speaker 'none'\r\n"
+
490 // "content-security-policy: upgrade-insecure-requests; frame-ancestors 'self' https://stackexchange.com\r\n"
+
491 // "accept-ranges: bytes\r\n"
+
492 // "date: Thu, 16 Mar 2023 10:23:00 GMT\r\n"
+
493 // "via: 1.1 varnish\r\n"
+
494 // "x-served-by: cache-vie6354-VIE\r\n"
+
495 // "x-cache: MISS\r\n"
+
496 // "x-cache-hits: 0\r\n"
+
497 // "x-timer: S1678962181.533907,VS0,VE144\r\n"
+
498 // "vary: Accept-Encoding,Fastly-SSL\r\n"
+
499 // "x-dns-prefetch-control: off\r\n"
+
500 // "X-Firefox-Spdy: h2\r\n"
+
501 // "\r\n";
+
502 }
+
503 };
+
504}
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:7156
-
stdex::parser::http_request
Test for HTTP request.
Definition parser.hpp:7018
+
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::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
@@ -563,7 +600,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/parser_8hpp_source.html b/parser_8hpp_source.html index ec18ce4d8..aa8006a24 100644 --- a/parser_8hpp_source.html +++ b/parser_8hpp_source.html @@ -4824,2629 +4824,2622 @@ $(document).ready(function() { init_codefold(0); });
4806 { { 'X', 'K' }, {}, 20 }, // Kosovo
4807 };
4808 const country_t* country_desc = nullptr;
-
4809 size_t n;
-
4810
-
4811 this->interval.end = start;
-
4812 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
-
4813 if (this->interval.end >= end || !text[this->interval.end])
-
4814 goto error; // incomplete country code
-
4815 T chr = case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end];
-
4816 if (chr < 'A' || 'Z' < chr)
-
4817 goto error; // invalid country code
-
4818 this->country[i] = chr;
-
4819 }
-
4820 for (size_t l = 0, r = _countof(s_countries);;) {
-
4821 if (l >= r)
-
4822 goto error; // unknown country
-
4823 size_t m = (l + r) / 2;
-
4824 const country_t& c = s_countries[m];
-
4825 if (c.country[0] < this->country[0] || (c.country[0] == this->country[0] && c.country[1] < this->country[1]))
-
4826 l = m + 1;
-
4827 else if (this->country[0] < c.country[0] || (this->country[0] == c.country[0] && this->country[1] < c.country[1]))
-
4828 r = m;
-
4829 else {
-
4830 country_desc = &c;
-
4831 break;
-
4832 }
-
4833 }
-
4834 this->country[2] = 0;
-
4835
-
4836 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
-
4837 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
-
4838 goto error; // incomplete or invalid check digits
-
4839 this->check_digits[i] = text[this->interval.end];
-
4840 }
-
4841 this->check_digits[2] = 0;
-
4842
-
4843 if ((country_desc->check_digits[0] && this->check_digits[0] != country_desc->check_digits[0]) ||
-
4844 (country_desc->check_digits[1] && this->check_digits[1] != country_desc->check_digits[1]))
-
4845 goto error; // unexpected check digits
-
4846
-
4847 for (n = 0; ;) {
-
4848 if (m_space && m_space->match(text, this->interval.end, end, flags))
-
4849 this->interval.end = m_space->interval.end;
-
4850 for (size_t j = 0; j < 4; ++j) {
-
4851 if (this->interval.end >= end || !text[this->interval.end])
-
4852 goto out;
-
4853 T chr = case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end];
-
4854 if (('0' <= chr && chr <= '9') || ('A' <= chr && chr <= 'Z')) {
-
4855 if (n >= _countof(this->bban) - 1)
-
4856 goto error; // bban overflow
-
4857 this->bban[n++] = chr;
-
4858 this->interval.end++;
-
4859 }
-
4860 else
-
4861 goto out;
-
4862 }
+
4809 size_t n, available, next, bban_length;
+
4810 uint32_t nominator;
+
4811
+
4812 this->interval.end = start;
+
4813 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
+
4814 if (this->interval.end >= end || !text[this->interval.end])
+
4815 goto error; // incomplete country code
+
4816 T chr = case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end];
+
4817 if (chr < 'A' || 'Z' < chr)
+
4818 goto error; // invalid country code
+
4819 this->country[i] = chr;
+
4820 }
+
4821 for (size_t l = 0, r = _countof(s_countries);;) {
+
4822 if (l >= r)
+
4823 goto error; // unknown country
+
4824 size_t m = (l + r) / 2;
+
4825 const country_t& c = s_countries[m];
+
4826 if (c.country[0] < this->country[0] || (c.country[0] == this->country[0] && c.country[1] < this->country[1]))
+
4827 l = m + 1;
+
4828 else if (this->country[0] < c.country[0] || (this->country[0] == c.country[0] && this->country[1] < c.country[1]))
+
4829 r = m;
+
4830 else {
+
4831 country_desc = &c;
+
4832 break;
+
4833 }
+
4834 }
+
4835 this->country[2] = 0;
+
4836
+
4837 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
+
4838 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
+
4839 goto error; // incomplete or invalid check digits
+
4840 this->check_digits[i] = text[this->interval.end];
+
4841 }
+
4842 this->check_digits[2] = 0;
+
4843
+
4844 if ((country_desc->check_digits[0] && this->check_digits[0] != country_desc->check_digits[0]) ||
+
4845 (country_desc->check_digits[1] && this->check_digits[1] != country_desc->check_digits[1]))
+
4846 goto error; // unexpected check digits
+
4847
+
4848 bban_length = country_desc->length - 4;
+
4849 for (n = 0; n < bban_length;) {
+
4850 if (this->interval.end >= end || !text[this->interval.end])
+
4851 goto error; // bban too short
+
4852 if (m_space && m_space->match(text, this->interval.end, end, flags)) {
+
4853 this->interval.end = m_space->interval.end;
+
4854 continue;
+
4855 }
+
4856 T chr = case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end];
+
4857 if (('0' <= chr && chr <= '9') || ('A' <= chr && chr <= 'Z')) {
+
4858 this->bban[n++] = chr;
+
4859 this->interval.end++;
+
4860 }
+
4861 else
+
4862 goto error; // invalid bban
4863 }
4864 out:
-
4865 if (n < 11)
-
4866 goto error; // bban too short (shorter than Norwegian)
-
4867 this->bban[n] = 0;
-
4868
-
4869 if (n + 4 == country_desc->length) {
-
4870 // Normalize IBAN.
-
4871 T normalized[69];
-
4872 size_t available = 0;
-
4873 for (size_t i = 0; ; ++i) {
-
4874 if (!this->bban[i]) {
-
4875 for (i = 0; i < 2; ++i) {
-
4876 if ('A' <= this->country[i] && this->country[i] <= 'J') {
-
4877 normalized[available++] = '1';
-
4878 normalized[available++] = '0' + this->country[i] - 'A';
-
4879 }
-
4880 else if ('K' <= this->country[i] && this->country[i] <= 'T') {
-
4881 normalized[available++] = '2';
-
4882 normalized[available++] = '0' + this->country[i] - 'K';
-
4883 }
-
4884 else if ('U' <= this->country[i] && this->country[i] <= 'Z') {
-
4885 normalized[available++] = '3';
-
4886 normalized[available++] = '0' + this->country[i] - 'U';
-
4887 }
-
4888 }
-
4889 normalized[available++] = this->check_digits[0];
-
4890 normalized[available++] = this->check_digits[1];
-
4891 normalized[available] = 0;
-
4892 break;
-
4893 }
-
4894 if ('0' <= this->bban[i] && this->bban[i] <= '9')
-
4895 normalized[available++] = this->bban[i];
-
4896 else if ('A' <= this->bban[i] && this->bban[i] <= 'J') {
-
4897 normalized[available++] = '1';
-
4898 normalized[available++] = '0' + this->bban[i] - 'A';
-
4899 }
-
4900 else if ('K' <= this->bban[i] && this->bban[i] <= 'T') {
-
4901 normalized[available++] = '2';
-
4902 normalized[available++] = '0' + this->bban[i] - 'K';
-
4903 }
-
4904 else if ('U' <= this->bban[i] && this->bban[i] <= 'Z') {
-
4905 normalized[available++] = '3';
-
4906 normalized[available++] = '0' + this->bban[i] - 'U';
-
4907 }
-
4908 }
-
4909
-
4910 // Calculate modulo 97.
-
4911 size_t next;
-
4912 uint32_t nominator = stdex::strtou32(normalized, 9, &next, 10);
-
4913 for (;;) {
-
4914 nominator %= 97;
-
4915 if (!normalized[next]) {
-
4916 this->is_valid = nominator == 1;
-
4917 break;
-
4918 }
-
4919 size_t digit_count = nominator < 10 ? 1 : 2;
-
4920 for (; digit_count < 9 && normalized[next]; ++next, ++digit_count)
-
4921 nominator = nominator * 10 + (normalized[next] - '0');
-
4922 }
-
4923 }
-
4924 else
-
4925 this->is_valid = false;
-
4926
-
4927 this->interval.start = start;
-
4928 return true;
-
4929
-
4930 error:
-
4931 this->country[0] = 0;
-
4932 this->check_digits[0] = 0;
-
4933 this->bban[0] = 0;
-
4934 this->is_valid = false;
-
4935 this->interval.start = (this->interval.end = start) + 1;
-
4936 return false;
-
4937 }
-
4938
-
4939 virtual void invalidate()
-
4940 {
-
4941 this->country[0] = 0;
-
4942 this->check_digits[0] = 0;
-
4943 this->bban[0] = 0;
-
4944 this->is_valid = false;
-
4945 basic_parser<T>::invalidate();
-
4946 }
-
4947
-
4948 public:
-
4949 T country[3];
-
4950 T check_digits[3];
-
4951 T bban[31];
-
4952 bool is_valid;
-
4953
-
4954 protected:
-
4955 std::shared_ptr<basic_parser<T>> m_space;
-
4956 };
+
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 };
-
4957
-
4958 using iban = basic_iban<char>;
-
4959 using wiban = basic_iban<wchar_t>;
-
4960#ifdef _UNICODE
-
4961 using tiban = wiban;
-
4962#else
-
4963 using tiban = iban;
-
4964#endif
-
4965 using sgml_iban = basic_iban<char>;
-
4966
-
4972 template <class T>
-
-
4973 class basic_creditor_reference : public basic_parser<T>
-
4974 {
-
4975 public:
-
4976 basic_creditor_reference(
-
4977 _In_ const std::shared_ptr<basic_parser<T>>& space,
-
4978 _In_ const std::locale& locale = std::locale()) :
-
4979 basic_parser<T>(locale),
-
4980 m_space(space)
-
4981 {
-
4982 this->check_digits[0] = 0;
-
4983 this->reference[0] = 0;
-
4984 this->is_valid = false;
-
4985 }
-
4986
-
4987 virtual bool match(
-
4988 _In_reads_or_z_(end) const T* text,
-
4989 _In_ size_t start = 0,
-
4990 _In_ size_t end = (size_t)-1,
-
4991 _In_ int flags = match_default)
-
4992 {
-
4993 assert(text || start >= end);
-
4994 const auto& ctype = std::use_facet<std::ctype<T>>(this->m_locale);
-
4995 const bool case_insensitive = flags & match_case_insensitive ? true : false;
-
4996 size_t n, available, next;
-
4997 uint32_t nominator;
+
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>
+
+ +
4967 {
+
4968 public:
+ +
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;
+ +
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 this->interval.end = start;
-
5000 if (this->interval.end + 1 >= end ||
-
5001 (case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end]) != 'R' ||
-
5002 (case_insensitive ? ctype.toupper(text[this->interval.end + 1]) : text[this->interval.end + 1]) != 'F')
-
5003 goto error; // incomplete or wrong reference ID
-
5004 this->interval.end += 2;
+
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 (size_t i = 0; i < 2; ++i, ++this->interval.end) {
-
5007 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
-
5008 goto error; // incomplete or invalid check digits
-
5009 this->check_digits[i] = text[this->interval.end];
-
5010 }
-
5011 this->check_digits[2] = 0;
-
5012
-
5013 for (n = 0;;) {
-
5014 if (m_space && m_space->match(text, this->interval.end, end, flags))
-
5015 this->interval.end = m_space->interval.end;
-
5016 for (size_t j = 0; j < 4; ++j) {
-
5017 if (this->interval.end >= end || !text[this->interval.end])
-
5018 goto out;
-
5019 T chr = case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end];
-
5020 if (('0' <= chr && chr <= '9') || ('A' <= chr && chr <= 'Z')) {
-
5021 if (n >= _countof(reference) - 1)
-
5022 goto error; // reference overflow
-
5023 this->reference[n++] = chr;
-
5024 this->interval.end++;
-
5025 }
-
5026 else
-
5027 goto out;
-
5028 }
-
5029 }
-
5030 out:
-
5031 if (!n)
-
5032 goto error; // reference too short
-
5033 this->reference[_countof(this->reference) - 1] = 0;
-
5034 for (size_t i = n, j = _countof(this->reference) - 1; i;)
-
5035 this->reference[--j] = this->reference[--i];
-
5036 for (size_t j = _countof(this->reference) - 1 - n; j;)
-
5037 this->reference[--j] = '0';
-
5038
-
5039 // Normalize creditor reference.
-
5040 T normalized[47];
-
5041 available = 0;
-
5042 for (size_t i = 0; ; ++i) {
-
5043 if (!this->reference[i]) {
-
5044 normalized[available++] = '2'; // R
-
5045 normalized[available++] = '7';
-
5046 normalized[available++] = '1'; // F
-
5047 normalized[available++] = '5';
-
5048 normalized[available++] = this->check_digits[0];
-
5049 normalized[available++] = this->check_digits[1];
-
5050 normalized[available] = 0;
-
5051 break;
-
5052 }
-
5053 if ('0' <= this->reference[i] && this->reference[i] <= '9')
-
5054 normalized[available++] = this->reference[i];
-
5055 else if ('A' <= this->reference[i] && this->reference[i] <= 'J') {
-
5056 normalized[available++] = '1';
-
5057 normalized[available++] = '0' + this->reference[i] - 'A';
-
5058 }
-
5059 else if ('K' <= this->reference[i] && this->reference[i] <= 'T') {
-
5060 normalized[available++] = '2';
-
5061 normalized[available++] = '0' + this->reference[i] - 'K';
-
5062 }
-
5063 else if ('U' <= this->reference[i] && this->reference[i] <= 'Z') {
-
5064 normalized[available++] = '3';
-
5065 normalized[available++] = '0' + this->reference[i] - 'U';
-
5066 }
-
5067 }
-
5068
-
5069 // Calculate modulo 97.
-
5070 nominator = stdex::strtou32(normalized, 9, &next, 10);
-
5071 for (;;) {
-
5072 nominator %= 97;
-
5073 if (!normalized[next]) {
-
5074 this->is_valid = nominator == 1;
-
5075 break;
-
5076 }
-
5077 size_t digit_count = nominator < 10 ? 1 : 2;
-
5078 for (; digit_count < 9 && normalized[next]; ++next, ++digit_count)
-
5079 nominator = nominator * 10 + (normalized[next] - '0');
-
5080 }
-
5081
-
5082 this->interval.start = start;
-
5083 return true;
-
5084
-
5085 error:
-
5086 this->check_digits[0] = 0;
-
5087 this->reference[0] = 0;
-
5088 this->is_valid = false;
-
5089 this->interval.start = (this->interval.end = start) + 1;
-
5090 return false;
-
5091 }
-
5092
-
5093 virtual void invalidate()
-
5094 {
-
5095 this->check_digits[0] = 0;
-
5096 this->reference[0] = 0;
-
5097 this->is_valid = false;
- -
5099 }
-
5100
-
5101 public:
- - - -
5105
-
5106 protected:
-
5107 std::shared_ptr<basic_parser<T>> m_space;
-
5108 };
+
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;
+ +
5092 }
+
5093
+
5094 public:
+ + + +
5098
+
5099 protected:
+
5100 std::shared_ptr<basic_parser<T>> m_space;
+
5101 };
-
5109
-
5110 using creditor_reference = basic_creditor_reference<char>;
-
5111 using wcreditor_reference = basic_creditor_reference<wchar_t>;
-
5112#ifdef _UNICODE
-
5113 using tcreditor_reference = wcreditor_reference;
-
5114#else
-
5115 using tcreditor_reference = creditor_reference;
-
5116#endif
-
5117 using sgml_creditor_reference = basic_creditor_reference<char>;
-
5118
-
5124 template <class T>
-
- -
5126 {
-
5127 public:
-
5128 basic_si_reference_part(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
-
5129
-
5130 virtual bool match(
-
5131 _In_reads_or_z_(end) const T* text,
-
5132 _In_ size_t start = 0,
-
5133 _In_ size_t end = (size_t)-1,
-
5134 _In_ int flags = match_default)
-
5135 {
-
5136 assert(text || start >= end);
-
5137 this->interval.end = start;
-
5138 for (;;) {
-
5139 if (this->interval.end >= end || !text[this->interval.end])
-
5140 break;
-
5141 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9')
-
5142 this->interval.end++;
-
5143 else
-
5144 break;
-
5145 }
- -
5147 this->interval.start = start;
-
5148 return true;
-
5149 }
-
5150 this->interval.start = (this->interval.end = start) + 1;
-
5151 return false;
-
5152 }
-
5153 };
+
5102
+ + +
5105#ifdef _UNICODE
+ +
5107#else
+ +
5109#endif
+ +
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 };
-
5154
- - -
5157#ifdef _UNICODE
- -
5159#else
- -
5161#endif
- -
5163
-
5169 template <class T>
-
- -
5171 {
-
5172 public:
-
5173 basic_si_reference_delimiter(_In_ const std::locale& locale = std::locale()) : basic_parser<T>(locale) {}
-
5174
-
5175 virtual bool match(
-
5176 _In_reads_or_z_(end) const T* text,
-
5177 _In_ size_t start = 0,
-
5178 _In_ size_t end = (size_t)-1,
-
5179 _In_ int flags = match_default)
-
5180 {
-
5181 assert(text || start >= end);
-
5182 if (start < end && text[start] == '-') {
-
5183 this->interval.end = (this->interval.start = start) + 1;
-
5184 return true;
-
5185 }
-
5186 this->interval.start = (this->interval.end = start) + 1;
-
5187 return false;
-
5188 }
-
5189 };
+
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 };
-
5190
- - -
5193#ifdef _UNICODE
- -
5195#else
- -
5197#endif
- -
5199
-
5207 template <class T>
-
- -
5209 {
-
5210 public:
- -
5212 _In_ const std::shared_ptr<basic_parser<T>>& space,
-
5213 _In_ const std::locale& locale = std::locale()) :
-
5214 basic_parser<T>(locale),
-
5215 part1(locale),
-
5216 part2(locale),
-
5217 part3(locale),
-
5218 is_valid(false),
-
5219 m_space(space),
-
5220 m_delimiter(locale)
-
5221 {
-
5222 this->model[0] = 0;
-
5223 }
-
5224
-
5225 virtual bool match(
-
5226 _In_reads_or_z_(end) const T* text,
-
5227 _In_ size_t start = 0,
-
5228 _In_ size_t end = (size_t)-1,
-
5229 _In_ int flags = match_default)
-
5230 {
-
5231 assert(text || start >= end);
-
5232 const auto& ctype = std::use_facet<std::ctype<T>>(this->m_locale);
-
5233 const bool case_insensitive = flags & match_case_insensitive ? true : false;
+
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 this->interval.end = start;
-
5236 if (this->interval.end + 1 >= end ||
-
5237 (case_insensitive ? ctype.toupper(text[this->interval.end]) : text[this->interval.end]) != 'S' ||
-
5238 (case_insensitive ? ctype.toupper(text[this->interval.end + 1]) : text[this->interval.end + 1]) != 'I')
-
5239 goto error; // incomplete or wrong reference ID
-
5240 this->interval.end += 2;
+
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 for (size_t i = 0; i < 2; ++i, ++this->interval.end) {
-
5243 if (this->interval.end >= end || text[this->interval.end] < '0' || '9' < text[this->interval.end])
-
5244 goto error; // incomplete or invalid model
-
5245 this->model[i] = text[this->interval.end];
-
5246 }
-
5247 this->model[2] = 0;
-
5248
-
5249 this->part1.invalidate();
-
5250 this->part2.invalidate();
-
5251 this->part3.invalidate();
-
5252 if (this->model[0] == '9' && this->model[1] == '9') {
-
5253 is_valid = true;
-
5254 this->interval.start = start;
-
5255 return true;
-
5256 }
-
5257
-
5258 if (m_space && m_space->match(text, this->interval.end, end, flags))
-
5259 this->interval.end = m_space->interval.end;
-
5260
-
5261 this->part1.match(text, this->interval.end, end, flags) &&
-
5262 this->m_delimiter.match(text, this->part1.interval.end, end, flags) &&
-
5263 this->part2.match(text, this->m_delimiter.interval.end, end, flags) &&
-
5264 this->m_delimiter.match(text, this->part2.interval.end, end, flags) &&
-
5265 this->part3.match(text, this->m_delimiter.interval.end, end, flags);
-
5266
-
5267 this->interval.start = start;
-
5268 if (this->part3.interval)
-
5269 this->interval.end = this->part3.interval.end;
-
5270 else if (this->part2.interval)
-
5271 this->interval.end = this->part2.interval.end;
-
5272 else if (this->part1.interval)
-
5273 this->interval.end = this->part1.interval.end;
-
5274 else
-
5275 this->interval.end = start + 4;
-
5276
-
5277 if (this->model[0] == '0' && this->model[1] == '0')
-
5278 is_valid =
-
5279 this->part3.interval ?
-
5280 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5281 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 :
-
5282 this->part2.interval ?
-
5283 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5284 this->part1.interval.size() + this->part2.interval.size() <= 20 :
-
5285 this->part1.interval ?
-
5286 this->part1.interval.size() <= 12 :
-
5287 false;
-
5288 else if (this->model[0] == '0' && this->model[1] == '1')
-
5289 is_valid =
-
5290 this->part3.interval ?
-
5291 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5292 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
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 text + this->part3.interval.start, this->part3.interval.size()) :
-
5297 this->part2.interval ?
-
5298 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5299 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5300 check11(
-
5301 text + this->part1.interval.start, this->part1.interval.size(),
-
5302 text + this->part2.interval.start, this->part2.interval.size()) :
-
5303 this->part1.interval ?
-
5304 this->part1.interval.size() <= 12 &&
-
5305 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5306 false;
-
5307 else if (this->model[0] == '0' && this->model[1] == '2')
-
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->part2.interval.start, this->part2.interval.size()) &&
-
5313 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5314 false;
-
5315 else if (this->model[0] == '0' && this->model[1] == '3')
-
5316 is_valid =
-
5317 this->part3.interval ?
-
5318 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5319 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5320 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5321 check11(text + this->part2.interval.start, this->part2.interval.size()) &&
-
5322 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5323 false;
-
5324 else if (this->model[0] == '0' && this->model[1] == '4')
-
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 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5331 false;
-
5332 else if ((this->model[0] == '0' || this->model[0] == '5') && this->model[1] == '5')
-
5333 is_valid =
-
5334 this->part3.interval ?
-
5335 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5336 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
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 this->part2.interval ?
-
5339 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5340 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5341 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5342 this->part1.interval ?
-
5343 this->part1.interval.size() <= 12 &&
-
5344 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5345 false;
-
5346 else if (this->model[0] == '0' && this->model[1] == '6')
-
5347 is_valid =
-
5348 this->part3.interval ?
-
5349 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5350 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5351 check11(
-
5352 text + this->part2.interval.start, this->part2.interval.size(),
-
5353 text + this->part3.interval.start, this->part3.interval.size()) :
-
5354 this->part2.interval ?
-
5355 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5356 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
+
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 false;
-
5359 else if (this->model[0] == '0' && this->model[1] == '7')
-
5360 is_valid =
-
5361 this->part3.interval ?
-
5362 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5363 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5364 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5365 this->part2.interval ?
-
5366 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5367 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5368 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5369 false;
-
5370 else if (this->model[0] == '0' && this->model[1] == '8')
-
5371 is_valid =
-
5372 this->part3.interval ?
-
5373 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5374 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5375 check11(
-
5376 text + this->part1.interval.start, this->part1.interval.size(),
-
5377 text + this->part2.interval.start, this->part2.interval.size()) &&
-
5378 check11(text + this->part3.interval.start, this->part3.interval.size()) :
-
5379 false;
-
5380 else if (this->model[0] == '0' && this->model[1] == '9')
-
5381 is_valid =
-
5382 this->part3.interval ?
-
5383 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5384 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5385 check11(
-
5386 text + this->part1.interval.start, this->part1.interval.size(),
-
5387 text + this->part2.interval.start, this->part2.interval.size()) :
-
5388 this->part2.interval ?
-
5389 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5390 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5391 check11(
-
5392 text + this->part1.interval.start, this->part1.interval.size(),
-
5393 text + this->part2.interval.start, this->part2.interval.size()) :
-
5394 this->part1.interval ?
-
5395 this->part1.interval.size() <= 12 &&
-
5396 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5397 false;
-
5398 else if (this->model[0] == '1' && this->model[1] == '0')
-
5399 is_valid =
-
5400 this->part3.interval ?
-
5401 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5402 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
+
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(
-
5405 text + this->part2.interval.start, this->part2.interval.size(),
-
5406 text + this->part3.interval.start, this->part3.interval.size()) :
-
5407 this->part2.interval ?
-
5408 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5409 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5410 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5411 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5412 false;
-
5413 else if (
-
5414 (this->model[0] == '1' && (this->model[1] == '1' || this->model[1] == '8' || this->model[1] == '9')) ||
-
5415 ((this->model[0] == '2' || this->model[0] == '3') && this->model[1] == '8') ||
-
5416 (this->model[0] == '4' && (this->model[1] == '0' || this->model[1] == '1' || this->model[1] == '8' || this->model[1] == '9')) ||
-
5417 (this->model[0] == '5' && (this->model[1] == '1' || this->model[1] == '8')))
-
5418 is_valid =
-
5419 this->part3.interval ?
-
5420 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 && this->part3.interval.size() <= 12 &&
-
5421 this->part1.interval.size() + this->part2.interval.size() + this->part3.interval.size() <= 20 &&
-
5422 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5423 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5424 this->part2.interval ?
-
5425 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5426 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5427 check11(text + this->part1.interval.start, this->part1.interval.size()) &&
-
5428 check11(text + this->part2.interval.start, this->part2.interval.size()) :
-
5429 false;
-
5430 else if (this->model[0] == '1' && this->model[1] == '2')
-
5431 is_valid =
-
5432 this->part3.interval ? false :
-
5433 this->part2.interval ? false :
-
5434 this->part1.interval ?
-
5435 this->part1.interval.size() <= 13 &&
-
5436 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5437 false;
-
5438 else if ((this->model[0] == '2' || this->model[0] == '3') && this->model[1] == '1')
-
5439 is_valid =
-
5440 this->part3.interval ? false :
-
5441 this->part2.interval ?
-
5442 this->part1.interval.size() <= 12 && this->part2.interval.size() <= 12 &&
-
5443 this->part1.interval.size() + this->part2.interval.size() <= 20 &&
-
5444 check11(text + this->part1.interval.start, this->part1.interval.size()) :
-
5445 false;
-
5446 else
-
5447 is_valid = true; // Assume models we don't handle as valid
-
5448 return true;
-
5449
-
5450 error:
-
5451 this->model[0] = 0;
-
5452 this->part1.interval.start = (this->part1.interval.end = start) + 1;
-
5453 this->part2.interval.start = (this->part2.interval.end = start) + 1;
-
5454 this->part3.interval.start = (this->part3.interval.end = start) + 1;
-
5455 this->is_valid = false;
-
5456 this->interval.start = (this->interval.end = start) + 1;
-
5457 return false;
-
5458 }
-
5459
-
5460 virtual void invalidate()
-
5461 {
-
5462 this->model[0] = 0;
-
5463 this->part1.invalidate();
-
5464 this->part2.invalidate();
-
5465 this->part3.invalidate();
-
5466 this->is_valid = false;
- -
5468 }
-
5469
-
5470 protected:
-
5471 static bool check11(
-
5472 _In_count_(num_part1) const T* part1, _In_ size_t num_part1)
-
5473 {
-
5474 assert(part1 && num_part1 >= 1);
-
5475 uint32_t nominator = 0, ponder = 2;
-
5476 for (size_t i = num_part1 - 1; i--; ++ponder)
-
5477 nominator += (part1[i] - '0') * ponder;
-
5478 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
-
5479 if (control >= 10)
-
5480 control = 0;
-
5481 return control == part1[num_part1 - 1] - '0';
-
5482 }
-
5483
-
5484 static bool check11(
-
5485 _In_count_(num_part1) const T* part1, _In_ size_t num_part1,
-
5486 _In_count_(num_part2) const T* part2, _In_ size_t num_part2)
-
5487 {
-
5488 assert(part1 || !num_part1);
-
5489 assert(part2 && num_part2 >= 1);
-
5490 uint32_t nominator = 0, ponder = 2;
-
5491 for (size_t i = num_part2 - 1; i--; ++ponder)
-
5492 nominator += (part2[i] - '0') * ponder;
-
5493 for (size_t i = num_part1; i--; ++ponder)
-
5494 nominator += (part1[i] - '0') * ponder;
-
5495 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
-
5496 if (control == 10)
-
5497 control = 0;
-
5498 return control == part2[num_part2 - 1] - '0';
-
5499 }
-
5500
-
5501 static bool check11(
-
5502 _In_count_(num_part1) const T* part1, _In_ size_t num_part1,
-
5503 _In_count_(num_part2) const T* part2, _In_ size_t num_part2,
-
5504 _In_count_(num_part3) const T* part3, _In_ size_t num_part3)
-
5505 {
-
5506 assert(part1 || !num_part1);
-
5507 assert(part2 || !num_part2);
-
5508 assert(part3 && num_part3 >= 1);
-
5509 uint32_t nominator = 0, ponder = 2;
-
5510 for (size_t i = num_part3 - 1; i--; ++ponder)
-
5511 nominator += (part3[i] - '0') * ponder;
-
5512 for (size_t i = num_part2; i--; ++ponder)
-
5513 nominator += (part2[i] - '0') * ponder;
-
5514 for (size_t i = num_part1; i--; ++ponder)
-
5515 nominator += (part1[i] - '0') * ponder;
-
5516 uint8_t control = 11 - static_cast<uint8_t>(nominator % 11);
-
5517 if (control == 10)
-
5518 control = 0;
-
5519 return control == part2[num_part3 - 1] - '0';
-
5520 }
+
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 public:
-
5523 T model[3];
- - - - -
5528
-
5529 protected:
-
5530 std::shared_ptr<basic_parser<T>> m_space;
- -
5532 };
+
5522 protected:
+
5523 std::shared_ptr<basic_parser<T>> m_space;
+ +
5525 };
-
5533
- - -
5536#ifdef _UNICODE
- -
5538#else
- -
5540#endif
- -
5542
-
5546 template <class T>
-
- -
5548 {
-
5549 public:
- -
5551 _In_ const std::shared_ptr<basic_parser<T>>& element,
-
5552 _In_ const std::shared_ptr<basic_parser<T>>& digit,
-
5553 _In_ const std::shared_ptr<basic_parser<T>>& sign,
-
5554 _In_ const std::locale& locale = std::locale()) :
-
5555 basic_parser<T>(locale),
-
5556 m_element(element),
-
5557 m_digit(digit),
-
5558 m_sign(sign),
-
5559 has_digits(false),
-
5560 has_charge(false)
-
5561 {}
-
5562
-
5563 virtual bool match(
-
5564 _In_reads_or_z_(end) const T* text,
-
5565 _In_ size_t start = 0,
-
5566 _In_ size_t end = (size_t)-1,
-
5567 _In_ int flags = match_default)
-
5568 {
-
5569 assert(text || start >= end);
-
5570
-
5571 has_digits = false;
-
5572 has_charge = false;
-
5573 this->interval.end = start;
-
5574
-
5575 const int element_match_flags = flags & ~match_case_insensitive; // Chemical elements are always case-sensitive.
-
5576 for (;;) {
-
5577 if (m_element->match(text, this->interval.end, end, element_match_flags)) {
-
5578 this->interval.end = m_element->interval.end;
-
5579 while (m_digit->match(text, this->interval.end, end, flags)) {
-
5580 this->interval.end = m_digit->interval.end;
-
5581 has_digits = true;
-
5582 }
-
5583 }
-
5584 else if (start < this->interval.end) {
-
5585 if (m_sign->match(text, this->interval.end, end, flags)) {
-
5586 this->interval.end = m_sign->interval.end;
-
5587 has_charge = true;
-
5588 }
-
5589 this->interval.start = start;
-
5590 return true;
-
5591 }
-
5592 else {
-
5593 this->interval.start = (this->interval.end = start) + 1;
-
5594 return false;
-
5595 }
-
5596 }
+
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 virtual void invalidate()
-
5600 {
-
5601 has_digits = false;
-
5602 has_charge = false;
- -
5604 }
-
5605
-
5606 public:
-
5607 bool has_digits;
-
5608 bool has_charge;
-
5609
-
5610 protected:
-
5611 std::shared_ptr<basic_parser<T>> m_element;
-
5612 std::shared_ptr<basic_parser<T>> m_digit;
-
5613 std::shared_ptr<basic_parser<T>> m_sign;
-
5614 };
+
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 };
-
5615
- - -
5618#ifdef _UNICODE
- -
5620#else
- -
5622#endif
- -
5624
-
- -
5629 {
-
5630 public:
-
5631 virtual bool match(
-
5632 _In_reads_or_z_(end) const char* text,
-
5633 _In_ size_t start = 0,
-
5634 _In_ size_t end = (size_t)-1,
-
5635 _In_ int flags = match_default)
-
5636 {
-
5637 assert(text || start >= end);
-
5638 this->interval.end = start;
-
5639
-
5640 assert(text || this->interval.end >= end);
-
5641 if (this->interval.end < end && text[this->interval.end]) {
-
5642 if (text[this->interval.end] == '\r') {
-
5643 this->interval.end++;
-
5644 if (this->interval.end < end && text[this->interval.end] == '\n') {
-
5645 this->interval.start = start;
-
5646 this->interval.end++;
-
5647 return true;
-
5648 }
-
5649 }
-
5650 else if (text[this->interval.end] == '\n') {
-
5651 this->interval.start = start;
-
5652 this->interval.end++;
-
5653 return true;
-
5654 }
-
5655 }
-
5656 this->interval.start = (this->interval.end = start) + 1;
-
5657 return false;
-
5658 }
-
5659 };
+
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 };
-
5660
-
-
5664 class http_space : public parser
-
5665 {
-
5666 public:
-
5667 virtual bool match(
-
5668 _In_reads_or_z_(end) const char* text,
-
5669 _In_ size_t start = 0,
-
5670 _In_ size_t end = (size_t)-1,
-
5671 _In_ int flags = match_default)
-
5672 {
-
5673 assert(text || start >= end);
-
5674 this->interval.end = start;
-
5675 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
5676 this->interval.end = m_line_break.interval.end;
-
5677 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 }
-
5684 else if (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) {
-
5685 this->interval.start = start;
-
5686 this->interval.end++;
-
5687 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
5688 return true;
-
5689 }
-
5690 this->interval.start = (this->interval.end = start) + 1;
-
5691 return false;
-
5692 }
-
5693
-
5694 protected:
-
5695 http_line_break m_line_break;
-
5696 };
+
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 };
-
5697
-
-
5701 class http_text_char : public parser
-
5702 {
-
5703 public:
-
5704 virtual bool match(
-
5705 _In_reads_or_z_(end) const char* text,
-
5706 _In_ size_t start = 0,
-
5707 _In_ size_t end = (size_t)-1,
-
5708 _In_ int flags = match_default)
-
5709 {
-
5710 assert(text || start >= end);
-
5711 this->interval.end = start;
-
5712
-
5713 assert(text || this->interval.end >= end);
-
5714 if (m_space.match(text, this->interval.end, end, flags)) {
-
5715 this->interval.start = start;
-
5716 this->interval.end = m_space.interval.end;
-
5717 return true;
-
5718 }
-
5719 else if (this->interval.end < end && text[this->interval.end] && text[this->interval.end] >= 0x20) {
-
5720 this->interval.start = start;
-
5721 this->interval.end++;
-
5722 return true;
-
5723 }
-
5724 this->interval.start = (this->interval.end = start) + 1;
-
5725 return false;
-
5726 }
-
5727
-
5728 protected:
-
5729 http_space m_space;
-
5730 };
+
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 };
-
5731
-
-
5735 class http_token : public parser
-
5736 {
-
5737 public:
-
5738 virtual bool match(
-
5739 _In_reads_or_z_(end) const char* text,
-
5740 _In_ size_t start = 0,
-
5741 _In_ size_t end = (size_t)-1,
-
5742 _In_ int flags = match_default)
-
5743 {
-
5744 assert(text || start >= end);
-
5745 this->interval.end = start;
-
5746 for (;;) {
-
5747 if (this->interval.end < end && text[this->interval.end]) {
-
5748 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
5749 (unsigned int)text[this->interval.end] == 0x7f ||
-
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 text[this->interval.end] == '/' ||
-
5761 text[this->interval.end] == '[' ||
-
5762 text[this->interval.end] == ']' ||
-
5763 text[this->interval.end] == '?' ||
-
5764 text[this->interval.end] == '=' ||
-
5765 text[this->interval.end] == '{' ||
-
5766 text[this->interval.end] == '}' ||
-
5767 isspace(text[this->interval.end]))
-
5768 break;
-
5769 else
-
5770 this->interval.end++;
-
5771 }
-
5772 else
-
5773 break;
-
5774 }
- -
5776 this->interval.start = start;
-
5777 return true;
-
5778 }
-
5779 else {
-
5780 this->interval.start = (this->interval.end = start) + 1;
-
5781 return false;
-
5782 }
-
5783 }
-
5784 };
+
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 };
-
5785
-
- -
5790 {
-
5791 public:
-
5792 virtual bool match(
-
5793 _In_reads_or_z_(end) const char* text,
-
5794 _In_ size_t start = 0,
-
5795 _In_ size_t end = (size_t)-1,
-
5796 _In_ int flags = match_default)
-
5797 {
-
5798 assert(text || start >= end);
-
5799 this->interval.end = start;
-
5800 if (this->interval.end < end && text[this->interval.end] != '"')
-
5801 goto error;
-
5802 this->interval.end++;
-
5803 content.start = this->interval.end;
-
5804 for (;;) {
-
5805 assert(text || this->interval.end >= end);
-
5806 if (this->interval.end < end && text[this->interval.end]) {
-
5807 if (text[this->interval.end] == '"') {
-
5808 content.end = this->interval.end;
-
5809 this->interval.end++;
-
5810 break;
-
5811 }
-
5812 else if (text[this->interval.end] == '\\') {
-
5813 this->interval.end++;
-
5814 if (this->interval.end < end && text[this->interval.end]) {
-
5815 this->interval.end++;
-
5816 }
-
5817 else
-
5818 goto error;
-
5819 }
-
5820 else if (m_chr.match(text, this->interval.end, end, flags))
-
5821 this->interval.end++;
-
5822 else
-
5823 goto error;
-
5824 }
-
5825 else
-
5826 goto error;
-
5827 }
-
5828 this->interval.start = start;
-
5829 return true;
+
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 error:
-
5832 content.start = 1;
-
5833 content.end = 0;
-
5834 this->interval.start = (this->interval.end = start) + 1;
-
5835 return false;
+
5831 virtual void invalidate()
+
5832 {
+
5833 content.start = 1;
+
5834 content.end = 0;
+
5835 parser::invalidate();
5836 }
5837
-
5838 virtual void invalidate()
-
5839 {
-
5840 content.start = 1;
-
5841 content.end = 0;
-
5842 parser::invalidate();
-
5843 }
-
5844
-
5845 public:
- -
5847
-
5848 protected:
-
5849 http_text_char m_chr;
-
5850 };
+
5838 public:
+ +
5840
+
5841 protected:
+
5842 http_text_char m_chr;
+
5843 };
-
5851
-
-
5855 class http_value : public parser
-
5856 {
-
5857 public:
-
5858 virtual bool match(
-
5859 _In_reads_or_z_(end) const char* text,
-
5860 _In_ size_t start = 0,
-
5861 _In_ size_t end = (size_t)-1,
-
5862 _In_ int flags = match_default)
-
5863 {
-
5864 assert(text || start >= end);
-
5865 this->interval.end = start;
-
5866 if (string.match(text, this->interval.end, end, flags)) {
-
5867 token.invalidate();
-
5868 this->interval.end = string.interval.end;
-
5869 this->interval.start = start;
-
5870 return true;
-
5871 }
-
5872 else if (token.match(text, this->interval.end, end, flags)) {
-
5873 string.invalidate();
-
5874 this->interval.end = token.interval.end;
-
5875 this->interval.start = start;
-
5876 return true;
-
5877 }
-
5878 else {
-
5879 this->interval.start = (this->interval.end = start) + 1;
-
5880 return false;
-
5881 }
+
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 virtual void invalidate()
-
5885 {
-
5886 string.invalidate();
-
5887 token.invalidate();
-
5888 parser::invalidate();
-
5889 }
-
5890
-
5891 public:
- - -
5894 };
+
5884 public:
+ + +
5887 };
-
5895
-
-
5899 class http_parameter : public parser
-
5900 {
-
5901 public:
-
5902 virtual bool match(
-
5903 _In_reads_or_z_(end) const char* text,
-
5904 _In_ size_t start = 0,
-
5905 _In_ size_t end = (size_t)-1,
-
5906 _In_ int flags = match_default)
-
5907 {
-
5908 assert(text || start >= end);
-
5909 this->interval.end = start;
-
5910 if (name.match(text, this->interval.end, end, flags))
-
5911 this->interval.end = name.interval.end;
+
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 goto error;
-
5914 while (m_space.match(text, this->interval.end, end, flags))
-
5915 this->interval.end = m_space.interval.end;
-
5916 assert(text || this->interval.end >= end);
-
5917 if (this->interval.end < end && text[this->interval.end] == '=')
-
5918 this->interval.end++;
-
5919 else
-
5920 while (m_space.match(text, this->interval.end, end, flags))
-
5921 this->interval.end = m_space.interval.end;
-
5922 if (value.match(text, this->interval.end, end, flags))
-
5923 this->interval.end = value.interval.end;
-
5924 else
-
5925 goto error;
-
5926 this->interval.start = start;
-
5927 return true;
+
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 error:
-
5930 name.invalidate();
-
5931 value.invalidate();
-
5932 this->interval.start = (this->interval.end = start) + 1;
-
5933 return false;
+
5929 virtual void invalidate()
+
5930 {
+
5931 name.invalidate();
+
5932 value.invalidate();
+
5933 parser::invalidate();
5934 }
5935
-
5936 virtual void invalidate()
-
5937 {
-
5938 name.invalidate();
-
5939 value.invalidate();
-
5940 parser::invalidate();
-
5941 }
-
5942
-
5943 public:
- - -
5946
-
5947 protected:
-
5948 http_space m_space;
-
5949 };
+
5936 public:
+ + +
5939
+
5940 protected:
+
5941 http_space m_space;
+
5942 };
-
5950
-
-
5954 class http_any_type : public parser
-
5955 {
-
5956 public:
-
5957 virtual bool match(
-
5958 _In_reads_or_z_(end) const char* text,
-
5959 _In_ size_t start = 0,
-
5960 _In_ size_t end = (size_t)-1,
-
5961 _In_ int flags = match_default)
-
5962 {
-
5963 assert(text || start >= end);
-
5964 if (start + 2 < end &&
-
5965 text[start] == '*' &&
-
5966 text[start + 1] == '/' &&
-
5967 text[start + 2] == '*')
-
5968 {
-
5969 this->interval.end = (this->interval.start = start) + 3;
-
5970 return true;
-
5971 }
-
5972 else if (start < end && text[start] == '*') {
-
5973 this->interval.end = (this->interval.start = start) + 1;
-
5974 return true;
-
5975 }
-
5976 else {
-
5977 this->interval.start = (this->interval.end = start) + 1;
-
5978 return false;
-
5979 }
-
5980 }
-
5981 };
+
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 };
-
5982
-
- -
5987 {
-
5988 public:
-
5989 virtual bool match(
-
5990 _In_reads_or_z_(end) const char* text,
-
5991 _In_ size_t start = 0,
-
5992 _In_ size_t end = (size_t)-1,
-
5993 _In_ int flags = match_default)
-
5994 {
-
5995 assert(text || start >= end);
-
5996 this->interval.end = start;
-
5997 if (type.match(text, this->interval.end, end, flags))
-
5998 this->interval.end = type.interval.end;
-
5999 else
-
6000 goto error;
-
6001 while (m_space.match(text, this->interval.end, end, flags))
-
6002 this->interval.end = m_space.interval.end;
-
6003 if (this->interval.end < end && text[this->interval.end] == '/')
-
6004 this->interval.end++;
-
6005 else
-
6006 goto error;
-
6007 while (m_space.match(text, this->interval.end, end, flags))
-
6008 this->interval.end = m_space.interval.end;
-
6009 if (subtype.match(text, this->interval.end, end, flags))
-
6010 this->interval.end = subtype.interval.end;
-
6011 else
-
6012 goto error;
-
6013 this->interval.start = start;
-
6014 return true;
+
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 error:
-
6017 type.invalidate();
-
6018 subtype.invalidate();
-
6019 this->interval.start = (this->interval.end = start) + 1;
-
6020 return false;
+
6016 virtual void invalidate()
+
6017 {
+
6018 type.invalidate();
+
6019 subtype.invalidate();
+
6020 parser::invalidate();
6021 }
6022
-
6023 virtual void invalidate()
-
6024 {
-
6025 type.invalidate();
-
6026 subtype.invalidate();
-
6027 parser::invalidate();
-
6028 }
-
6029
-
6030 public:
-
6031 http_token type;
-
6032 http_token subtype;
-
6033
-
6034 protected:
-
6035 http_space m_space;
-
6036 };
+
6023 public:
+
6024 http_token type;
+
6025 http_token subtype;
+
6026
+
6027 protected:
+
6028 http_space m_space;
+
6029 };
-
6037
-
- -
6042 {
-
6043 public:
-
6044 virtual bool match(
-
6045 _In_reads_or_z_(end) const char* text,
-
6046 _In_ size_t start = 0,
-
6047 _In_ size_t end = (size_t)-1,
-
6048 _In_ int flags = match_default)
-
6049 {
-
6050 assert(text || start >= end);
-
6051 if (!http_media_range::match(text, start, end, flags))
-
6052 goto error;
-
6053 params.clear();
-
6054 for (;;) {
-
6055 if (this->interval.end < end && text[this->interval.end]) {
-
6056 if (m_space.match(text, this->interval.end, end, flags))
-
6057 this->interval.end = m_space.interval.end;
-
6058 else if (text[this->interval.end] == ';') {
-
6059 this->interval.end++;
-
6060 while (m_space.match(text, this->interval.end, end, flags))
-
6061 this->interval.end = m_space.interval.end;
- -
6063 if (param.match(text, this->interval.end, end, flags)) {
-
6064 this->interval.end = param.interval.end;
-
6065 params.push_back(std::move(param));
-
6066 }
-
6067 else
-
6068 break;
-
6069 }
-
6070 else
-
6071 break;
-
6072 }
-
6073 else
-
6074 break;
-
6075 }
-
6076 this->interval.end = params.empty() ? subtype.interval.end : params.back().interval.end;
-
6077 return true;
+
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 error:
-
6080 http_media_range::invalidate();
+
6079 virtual void invalidate()
+
6080 {
6081 params.clear();
-
6082 this->interval.start = (this->interval.end = start) + 1;
-
6083 return false;
-
6084 }
-
6085
-
6086 virtual void invalidate()
-
6087 {
-
6088 params.clear();
-
6089 http_media_range::invalidate();
-
6090 }
-
6091
-
6092 public:
-
6093 std::list<http_parameter> params;
-
6094 };
+
6082 http_media_range::invalidate();
+
6083 }
+
6084
+
6085 public:
+
6086 std::list<http_parameter> params;
+
6087 };
-
6095
-
- -
6100 {
-
6101 public:
-
6102 virtual bool match(
-
6103 _In_reads_or_z_(end) const char* text,
-
6104 _In_ size_t start = 0,
-
6105 _In_ size_t end = (size_t)-1,
-
6106 _In_ int flags = match_default)
-
6107 {
-
6108 assert(text || start >= end);
-
6109 this->interval.end = start;
-
6110 for (;;) {
-
6111 if (this->interval.end < end && text[this->interval.end]) {
-
6112 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6113 (unsigned int)text[this->interval.end] == 0x7f ||
-
6114 text[this->interval.end] == ':' ||
-
6115 text[this->interval.end] == '/' ||
-
6116 isspace(text[this->interval.end]))
-
6117 break;
-
6118 else
-
6119 this->interval.end++;
-
6120 }
-
6121 else
-
6122 break;
-
6123 }
- -
6125 this->interval.start = start;
-
6126 return true;
-
6127 }
-
6128 this->interval.start = (this->interval.end = start) + 1;
-
6129 return false;
-
6130 }
-
6131 };
+
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 };
-
6132
-
-
6136 class http_url_port : public parser
-
6137 {
-
6138 public:
-
6139 http_url_port(_In_ const std::locale& locale = std::locale()) :
-
6140 parser(locale),
-
6141 value(0)
-
6142 {}
-
6143
-
6144 virtual bool match(
-
6145 _In_reads_or_z_(end) const char* text,
-
6146 _In_ size_t start = 0,
-
6147 _In_ size_t end = (size_t)-1,
-
6148 _In_ int flags = match_default)
-
6149 {
-
6150 assert(text || start >= end);
-
6151 value = 0;
-
6152 this->interval.end = start;
-
6153 for (;;) {
-
6154 if (this->interval.end < end && text[this->interval.end]) {
-
6155 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
-
6156 size_t _value = (size_t)value * 10 + text[this->interval.end] - '0';
-
6157 if (_value > (uint16_t)-1) {
-
6158 value = 0;
-
6159 this->interval.start = (this->interval.end = start) + 1;
-
6160 return false;
-
6161 }
-
6162 value = (uint16_t)_value;
-
6163 this->interval.end++;
-
6164 }
-
6165 else
-
6166 break;
-
6167 }
-
6168 else
-
6169 break;
-
6170 }
- -
6172 this->interval.start = start;
-
6173 return true;
-
6174 }
-
6175 this->interval.start = (this->interval.end = start) + 1;
-
6176 return false;
-
6177 }
-
6178
-
6179 virtual void invalidate()
-
6180 {
-
6181 value = 0;
-
6182 parser::invalidate();
-
6183 }
-
6184
-
6185 public:
-
6186 uint16_t value;
-
6187 };
+
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 };
-
6188
-
- -
6193 {
-
6194 public:
-
6195 virtual bool match(
-
6196 _In_reads_or_z_(end) const char* text,
-
6197 _In_ size_t start = 0,
-
6198 _In_ size_t end = (size_t)-1,
-
6199 _In_ int flags = match_default)
-
6200 {
-
6201 assert(text || start >= end);
-
6202 this->interval.end = start;
-
6203 for (;;) {
-
6204 if (this->interval.end < end && text[this->interval.end]) {
-
6205 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6206 (unsigned int)text[this->interval.end] == 0x7f ||
-
6207 text[this->interval.end] == '?' ||
-
6208 text[this->interval.end] == '/' ||
-
6209 isspace(text[this->interval.end]))
-
6210 break;
-
6211 else
-
6212 this->interval.end++;
-
6213 }
-
6214 else
-
6215 break;
-
6216 }
-
6217 this->interval.start = start;
-
6218 return true;
-
6219 }
-
6220 };
+
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 };
-
6221
-
-
6225 class http_url_path : public parser
-
6226 {
-
6227 public:
-
6228 virtual bool match(
-
6229 _In_reads_or_z_(end) const char* text,
-
6230 _In_ size_t start = 0,
-
6231 _In_ size_t end = (size_t)-1,
-
6232 _In_ int flags = match_default)
-
6233 {
-
6234 assert(text || start >= end);
- -
6236 this->interval.end = start;
-
6237 segments.clear();
-
6238 assert(text || this->interval.end >= end);
-
6239 if (this->interval.end < end && text[this->interval.end] != '/')
-
6240 goto error;
-
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 for (;;) {
-
6246 if (this->interval.end < end && text[this->interval.end]) {
-
6247 if (text[this->interval.end] == '/') {
-
6248 this->interval.end++;
-
6249 s.match(text, this->interval.end, end, flags);
-
6250 segments.push_back(s);
-
6251 this->interval.end = s.interval.end;
-
6252 }
-
6253 else
-
6254 break;
-
6255 }
-
6256 else
-
6257 break;
-
6258 }
-
6259 this->interval.start = start;
-
6260 return true;
-
6261
-
6262 error:
+
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 this->interval.start = (this->interval.end = start) + 1;
-
6265 return false;
-
6266 }
-
6267
-
6268 virtual void invalidate()
-
6269 {
-
6270 segments.clear();
-
6271 parser::invalidate();
-
6272 }
-
6273
-
6274 public:
-
6275 std::vector<http_url_path_segment> segments;
-
6276 };
+
6264 parser::invalidate();
+
6265 }
+
6266
+
6267 public:
+
6268 std::vector<http_url_path_segment> segments;
+
6269 };
-
6277
-
- -
6282 {
-
6283 public:
-
6284 virtual bool match(
-
6285 _In_reads_or_z_(end) const char* text,
-
6286 _In_ size_t start = 0,
-
6287 _In_ size_t end = (size_t)-1,
-
6288 _In_ int flags = match_default)
-
6289 {
-
6290 assert(text || start >= end);
-
6291 this->interval.end = start;
-
6292 name.start = this->interval.end;
-
6293 for (;;) {
-
6294 if (this->interval.end < end && text[this->interval.end]) {
-
6295 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6296 (unsigned int)text[this->interval.end] == 0x7f ||
-
6297 text[this->interval.end] == '&' ||
-
6298 text[this->interval.end] == '=' ||
-
6299 isspace(text[this->interval.end]))
-
6300 break;
-
6301 else
-
6302 this->interval.end++;
-
6303 }
-
6304 else
-
6305 break;
-
6306 }
- -
6308 name.end = this->interval.end;
-
6309 else
-
6310 goto error;
-
6311 if (text[this->interval.end] == '=') {
-
6312 this->interval.end++;
-
6313 value.start = this->interval.end;
-
6314 for (;;) {
-
6315 if (this->interval.end < end && text[this->interval.end]) {
-
6316 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6317 (unsigned int)text[this->interval.end] == 0x7f ||
-
6318 text[this->interval.end] == '&' ||
-
6319 isspace(text[this->interval.end]))
-
6320 break;
-
6321 else
-
6322 this->interval.end++;
-
6323 }
-
6324 else
-
6325 break;
-
6326 }
-
6327 value.end = this->interval.end;
-
6328 }
-
6329 else {
-
6330 value.start = 1;
-
6331 value.end = 0;
-
6332 }
-
6333 this->interval.start = start;
-
6334 return true;
-
6335
-
6336 error:
-
6337 name.start = 1;
-
6338 name.end = 0;
-
6339 value.start = 1;
-
6340 value.end = 0;
-
6341 this->interval.start = (this->interval.end = start) + 1;
-
6342 return false;
-
6343 }
-
6344
-
6345 virtual void invalidate()
-
6346 {
-
6347 name.start = 1;
-
6348 name.end = 0;
-
6349 value.start = 1;
-
6350 value.end = 0;
-
6351 parser::invalidate();
-
6352 }
-
6353
-
6354 public:
- - -
6357 };
+
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 };
-
6358
-
-
6362 class http_url : public parser
-
6363 {
-
6364 public:
-
6365 http_url(_In_ const std::locale& locale = std::locale()) :
-
6366 parser(locale),
-
6367 port(locale)
-
6368 {}
-
6369
-
6370 virtual bool match(
-
6371 _In_reads_or_z_(end) const char* text,
-
6372 _In_ size_t start = 0,
-
6373 _In_ size_t end = (size_t)-1,
-
6374 _In_ int flags = match_default)
-
6375 {
-
6376 assert(text || start >= end);
-
6377 this->interval.end = start;
-
6378
-
6379 if (this->interval.end + 7 <= end && stdex::strnicmp(text + this->interval.end, 7, "http://", (size_t)-1, m_locale) == 0) {
-
6380 this->interval.end += 7;
-
6381 if (server.match(text, this->interval.end, end, flags))
-
6382 this->interval.end = server.interval.end;
-
6383 else
-
6384 goto error;
-
6385 if (this->interval.end < end && text[this->interval.end] == ':') {
-
6386 this->interval.end++;
-
6387 if (port.match(text, this->interval.end, end, flags))
-
6388 this->interval.end = port.interval.end;
-
6389 }
-
6390 else {
-
6391 port.invalidate();
-
6392 port.value = 80;
-
6393 }
-
6394 }
-
6395 else {
-
6396 server.invalidate();
-
6397 port.invalidate();
-
6398 port.value = 80;
-
6399 }
+
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 (path.match(text, this->interval.end, end, flags))
-
6402 this->interval.end = path.interval.end;
-
6403 else
-
6404 goto error;
-
6405
-
6406 params.clear();
-
6407
-
6408 if (this->interval.end < end && text[this->interval.end] == '?') {
-
6409 this->interval.end++;
-
6410 for (;;) {
-
6411 if (this->interval.end < end && text[this->interval.end]) {
-
6412 if ((unsigned int)text[this->interval.end] < 0x20 ||
-
6413 (unsigned int)text[this->interval.end] == 0x7f ||
-
6414 isspace(text[this->interval.end]))
-
6415 break;
-
6416 else if (text[this->interval.end] == '&')
-
6417 this->interval.end++;
-
6418 else {
- -
6420 if (param.match(text, this->interval.end, end, flags)) {
-
6421 this->interval.end = param.interval.end;
-
6422 params.push_back(std::move(param));
-
6423 }
-
6424 else
-
6425 break;
-
6426 }
-
6427 }
-
6428 else
-
6429 break;
-
6430 }
-
6431 }
-
6432
-
6433 this->interval.start = start;
-
6434 return true;
-
6435
-
6436 error:
-
6437 server.invalidate();
-
6438 port.invalidate();
-
6439 path.invalidate();
-
6440 params.clear();
-
6441 this->interval.start = (this->interval.end = start) + 1;
-
6442 return false;
-
6443 }
-
6444
-
6445 virtual void invalidate()
-
6446 {
-
6447 server.invalidate();
-
6448 port.invalidate();
-
6449 path.invalidate();
-
6450 params.clear();
-
6451 parser::invalidate();
-
6452 }
+
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 };
+
6453
-
6454 public:
-
6455 http_url_server server;
-
6456 http_url_port port;
-
6457 http_url_path path;
-
6458 std::list<http_url_parameter> params;
-
6459 };
+
+
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 };
-
6460
-
-
6464 class http_language : public parser
-
6465 {
-
6466 public:
-
6467 virtual bool match(
-
6468 _In_reads_or_z_(end) const char* text,
-
6469 _In_ size_t start = 0,
-
6470 _In_ size_t end = (size_t)-1,
-
6471 _In_ int flags = match_default)
-
6472 {
-
6473 assert(text || start >= end);
-
6474 this->interval.end = start;
-
6475 components.clear();
-
6476 for (;;) {
-
6477 if (this->interval.end < end && text[this->interval.end]) {
- -
6479 k.end = this->interval.end;
-
6480 for (;;) {
-
6481 if (k.end < end && text[k.end]) {
-
6482 if (isalpha(text[k.end]))
-
6483 k.end++;
-
6484 else
-
6485 break;
-
6486 }
-
6487 else
-
6488 break;
-
6489 }
-
6490 if (this->interval.end < k.end) {
-
6491 k.start = this->interval.end;
-
6492 this->interval.end = k.end;
-
6493 components.push_back(k);
-
6494 }
-
6495 else
-
6496 break;
-
6497 if (this->interval.end < end && text[this->interval.end] == '-')
-
6498 this->interval.end++;
-
6499 else
-
6500 break;
-
6501 }
-
6502 else
-
6503 break;
-
6504 }
-
6505 if (!components.empty()) {
-
6506 this->interval.start = start;
-
6507 this->interval.end = components.back().end;
-
6508 return true;
-
6509 }
-
6510 this->interval.start = (this->interval.end = start) + 1;
-
6511 return false;
-
6512 }
-
6513
-
6514 virtual void invalidate()
-
6515 {
-
6516 components.clear();
-
6517 parser::invalidate();
-
6518 }
-
6519
-
6520 public:
-
6521 std::vector<stdex::interval<size_t>> components;
-
6522 };
-
-
6523
-
-
6527 class http_weight : public parser
-
6528 {
-
6529 public:
-
6530 http_weight(_In_ const std::locale& locale = std::locale()) :
-
6531 parser(locale),
-
6532 value(1.0f)
-
6533 {}
-
6534
-
6535 virtual bool match(
-
6536 _In_reads_or_z_(end) const char* text,
-
6537 _In_ size_t start = 0,
-
6538 _In_ size_t end = (size_t)-1,
-
6539 _In_ int flags = match_default)
-
6540 {
-
6541 assert(text || start >= end);
-
6542 size_t celi_del = 0, decimalni_del = 0, decimalni_del_n = 1;
-
6543 this->interval.end = start;
-
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 celi_del = celi_del * 10 + text[this->interval.end] - '0';
-
6548 this->interval.end++;
-
6549 }
-
6550 else if (text[this->interval.end] == '.') {
-
6551 this->interval.end++;
-
6552 for (;;) {
-
6553 if (this->interval.end < end && text[this->interval.end]) {
-
6554 if ('0' <= text[this->interval.end] && text[this->interval.end] <= '9') {
-
6555 decimalni_del = decimalni_del * 10 + text[this->interval.end] - '0';
-
6556 decimalni_del_n *= 10;
-
6557 this->interval.end++;
-
6558 }
-
6559 else
-
6560 break;
-
6561 }
-
6562 else
-
6563 break;
-
6564 }
-
6565 break;
-
6566 }
-
6567 else
-
6568 break;
-
6569 }
-
6570 else
-
6571 break;
-
6572 }
- - -
6575 this->interval.start = start;
-
6576 return true;
-
6577 }
+
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 this->interval.start = (this->interval.end = start) + 1;
-
6580 return false;
-
6581 }
-
6582
-
6583 virtual void invalidate()
-
6584 {
-
6585 value = 1.0f;
-
6586 parser::invalidate();
-
6587 }
-
6588
-
6589 public:
-
6590 float value;
-
6591 };
+
6579 parser::invalidate();
+
6580 }
+
6581
+
6582 public:
+
6583 float value;
+
6584 };
-
6592
-
-
6596 class http_asterisk : public parser
-
6597 {
-
6598 public:
-
6599 virtual bool match(
-
6600 _In_reads_or_z_(end) const char* text,
-
6601 _In_ size_t start = 0,
-
6602 _In_ size_t end = (size_t)-1,
-
6603 _In_ int flags = match_default)
-
6604 {
-
6605 assert(text || end <= start);
-
6606 if (start < end && text[start] == '*') {
-
6607 this->interval.end = (this->interval.start = start) + 1;
-
6608 return true;
-
6609 }
-
6610 this->interval.start = (this->interval.end = start) + 1;
-
6611 return false;
-
6612 }
-
6613 };
+
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 };
-
6614
-
6618 template <class T, class T_asterisk = http_asterisk>
-
- -
6620 {
-
6621 public:
-
6622 http_weighted_value(_In_ const std::locale& locale = std::locale()) :
-
6623 parser(locale),
-
6624 factor(locale)
-
6625 {}
-
6626
-
6627 virtual bool match(
-
6628 _In_reads_or_z_(end) const char* text,
-
6629 _In_ size_t start = 0,
-
6630 _In_ size_t end = (size_t)-1,
-
6631 _In_ int flags = match_default)
-
6632 {
-
6633 assert(text || start >= end);
-
6634 size_t konec_vrednosti;
-
6635 this->interval.end = start;
-
6636 if (asterisk.match(text, this->interval.end, end, flags)) {
-
6637 this->interval.end = konec_vrednosti = asterisk.interval.end;
-
6638 value.invalidate();
-
6639 }
-
6640 else if (value.match(text, this->interval.end, end, flags)) {
-
6641 this->interval.end = konec_vrednosti = value.interval.end;
-
6642 asterisk.invalidate();
-
6643 }
-
6644 else {
-
6645 asterisk.invalidate();
-
6646 value.invalidate();
-
6647 this->interval.start = (this->interval.end = start) + 1;
-
6648 return false;
-
6649 }
-
6650
-
6651 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6652 if (this->interval.end < end && text[this->interval.end] == ';') {
-
6653 this->interval.end++;
-
6654 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6655 if (this->interval.end < end && (text[this->interval.end] == 'q' || text[this->interval.end] == 'Q')) {
-
6656 this->interval.end++;
-
6657 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6658 if (this->interval.end < end && text[this->interval.end] == '=') {
-
6659 this->interval.end++;
-
6660 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
-
6661 if (factor.match(text, this->interval.end, end, flags))
-
6662 this->interval.end = factor.interval.end;
-
6663 }
-
6664 }
-
6665 }
-
6666 if (!factor.interval) {
-
6667 factor.invalidate();
- -
6669 }
-
6670 this->interval.start = start;
-
6671 return true;
-
6672 }
-
6673
-
6674 virtual void invalidate()
-
6675 {
-
6676 asterisk.invalidate();
-
6677 value.invalidate();
-
6678 factor.invalidate();
-
6679 parser::invalidate();
-
6680 }
-
6681
-
6682 public:
-
6683 T_asterisk asterisk;
-
6684 T value;
-
6685 http_weight factor;
-
6686 };
+
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 };
-
6687
-
- -
6692 {
-
6693 public:
-
6694 virtual bool match(
-
6695 _In_reads_or_z_(end) const char* text,
-
6696 _In_ size_t start = 0,
-
6697 _In_ size_t end = (size_t)-1,
-
6698 _In_ int flags = match_default)
-
6699 {
-
6700 assert(text || start >= end);
-
6701 this->interval.end = start;
-
6702 if (this->interval.end < end && text[this->interval.end] == '$')
-
6703 this->interval.end++;
-
6704 else
-
6705 goto error;
-
6706 if (name.match(text, this->interval.end, end, flags))
-
6707 this->interval.end = name.interval.end;
-
6708 else
-
6709 goto error;
-
6710 while (m_space.match(text, this->interval.end, end, flags))
-
6711 this->interval.end = m_space.interval.end;
-
6712 if (this->interval.end < end && text[this->interval.end] == '=')
-
6713 this->interval.end++;
-
6714 else
-
6715 goto error;
-
6716 while (m_space.match(text, this->interval.end, end, flags))
-
6717 this->interval.end = m_space.interval.end;
-
6718 if (value.match(text, this->interval.end, end, flags))
-
6719 this->interval.end = value.interval.end;
-
6720 else
-
6721 goto error;
-
6722 this->interval.start = start;
-
6723 return true;
+
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 error:
-
6726 name.invalidate();
-
6727 value.invalidate();
-
6728 this->interval.start = (this->interval.end = start) + 1;
-
6729 return false;
+
6725 virtual void invalidate()
+
6726 {
+
6727 name.invalidate();
+
6728 value.invalidate();
+
6729 parser::invalidate();
6730 }
6731
-
6732 virtual void invalidate()
-
6733 {
-
6734 name.invalidate();
-
6735 value.invalidate();
-
6736 parser::invalidate();
-
6737 }
-
6738
-
6739 public:
-
6740 http_token name;
-
6741 http_value value;
-
6742
-
6743 protected:
-
6744 http_space m_space;
-
6745 };
+
6732 public:
+
6733 http_token name;
+
6734 http_value value;
+
6735
+
6736 protected:
+
6737 http_space m_space;
+
6738 };
-
6746
-
-
6750 class http_cookie : public parser
-
6751 {
-
6752 public:
-
6753 virtual bool match(
-
6754 _In_reads_or_z_(end) const char* text,
-
6755 _In_ size_t start = 0,
-
6756 _In_ size_t end = (size_t)-1,
-
6757 _In_ int flags = match_default)
-
6758 {
-
6759 assert(text || start >= end);
-
6760 this->interval.end = start;
-
6761 if (name.match(text, this->interval.end, end, flags))
-
6762 this->interval.end = name.interval.end;
-
6763 else
-
6764 goto error;
-
6765 while (m_space.match(text, this->interval.end, end, flags))
-
6766 this->interval.end = m_space.interval.end;
-
6767 if (this->interval.end < end && text[this->interval.end] == '=')
-
6768 this->interval.end++;
-
6769 else
-
6770 goto error;
-
6771 while (m_space.match(text, this->interval.end, end, flags))
-
6772 this->interval.end = m_space.interval.end;
-
6773 if (value.match(text, this->interval.end, end, flags))
-
6774 this->interval.end = value.interval.end;
-
6775 else
-
6776 goto error;
-
6777 params.clear();
-
6778 for (;;) {
-
6779 if (this->interval.end < end && text[this->interval.end]) {
-
6780 if (m_space.match(text, this->interval.end, end, flags))
-
6781 this->interval.end = m_space.interval.end;
-
6782 else if (text[this->interval.end] == ';') {
-
6783 this->interval.end++;
-
6784 while (m_space.match(text, this->interval.end, end, flags))
-
6785 this->interval.end = m_space.interval.end;
- -
6787 if (param.match(text, this->interval.end, end, flags)) {
-
6788 this->interval.end = param.interval.end;
-
6789 params.push_back(std::move(param));
-
6790 }
-
6791 else
-
6792 break;
-
6793 }
-
6794 else
-
6795 break;
-
6796 }
-
6797 else
-
6798 break;
-
6799 }
-
6800 this->interval.start = start;
-
6801 this->interval.end = params.empty() ? value.interval.end : params.back().interval.end;
-
6802 return true;
-
6803
-
6804 error:
-
6805 name.invalidate();
-
6806 value.invalidate();
-
6807 params.clear();
-
6808 this->interval.start = (this->interval.end = start) + 1;
-
6809 return false;
-
6810 }
-
6811
-
6812 virtual void invalidate()
-
6813 {
-
6814 name.invalidate();
-
6815 value.invalidate();
-
6816 params.clear();
-
6817 parser::invalidate();
-
6818 }
-
6819
-
6820 public:
- - -
6823 std::list<http_cookie_parameter> params;
-
6824
-
6825 protected:
-
6826 http_space m_space;
-
6827 };
+
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 };
-
6828
-
-
6832 class http_agent : public parser
-
6833 {
-
6834 public:
-
6835 virtual bool match(
-
6836 _In_reads_or_z_(end) const char* text,
-
6837 _In_ size_t start = 0,
-
6838 _In_ size_t end = (size_t)-1,
-
6839 _In_ int flags = match_default)
-
6840 {
-
6841 assert(text || start >= end);
-
6842 this->interval.end = start;
-
6843 type.start = this->interval.end;
-
6844 for (;;) {
-
6845 if (this->interval.end < end && text[this->interval.end]) {
-
6846 if (text[this->interval.end] == '/') {
-
6847 type.end = this->interval.end;
-
6848 this->interval.end++;
-
6849 version.start = this->interval.end;
-
6850 for (;;) {
-
6851 if (this->interval.end < end && text[this->interval.end]) {
-
6852 if (isspace(text[this->interval.end])) {
-
6853 version.end = this->interval.end;
-
6854 break;
-
6855 }
-
6856 else
-
6857 this->interval.end++;
-
6858 }
-
6859 else {
-
6860 version.end = this->interval.end;
-
6861 break;
-
6862 }
-
6863 }
-
6864 break;
-
6865 }
-
6866 else if (isspace(text[this->interval.end])) {
-
6867 type.end = this->interval.end;
-
6868 break;
-
6869 }
-
6870 else
-
6871 this->interval.end++;
-
6872 }
-
6873 else {
-
6874 type.end = this->interval.end;
-
6875 break;
-
6876 }
-
6877 }
- -
6879 this->interval.start = start;
-
6880 return true;
-
6881 }
-
6882 type.start = 1;
-
6883 type.end = 0;
-
6884 version.start = 1;
-
6885 version.end = 0;
-
6886 this->interval.start = 1;
-
6887 this->interval.end = 0;
-
6888 return false;
-
6889 }
-
6890
-
6891 virtual void invalidate()
-
6892 {
-
6893 type.start = 1;
-
6894 type.end = 0;
-
6895 version.start = 1;
-
6896 version.end = 0;
-
6897 parser::invalidate();
-
6898 }
-
6899
-
6900 public:
- - -
6903 };
+
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 };
-
6904
-
-
6908 class http_protocol : public parser
-
6909 {
-
6910 public:
-
6911 http_protocol(_In_ const std::locale& locale = std::locale()) :
-
6912 parser(locale),
-
6913 version(0x009)
-
6914 {}
-
6915
-
6916 virtual bool match(
-
6917 _In_reads_or_z_(end) const char* text,
-
6918 _In_ size_t start = 0,
-
6919 _In_ size_t end = (size_t)-1,
-
6920 _In_ int flags = match_default)
-
6921 {
-
6922 assert(text || start >= end);
-
6923 this->interval.end = start;
-
6924 type.start = this->interval.end;
-
6925 for (;;) {
-
6926 if (this->interval.end < end && text[this->interval.end]) {
-
6927 if (text[this->interval.end] == '/') {
-
6928 type.end = this->interval.end;
-
6929 this->interval.end++;
-
6930 break;
-
6931 }
-
6932 else if (isspace(text[this->interval.end]))
-
6933 goto error;
-
6934 else
-
6935 this->interval.end++;
-
6936 }
-
6937 else {
-
6938 type.end = this->interval.end;
-
6939 goto error;
-
6940 }
-
6941 }
-
6942 version_maj.start = this->interval.end;
-
6943 for (;;) {
-
6944 if (this->interval.end < end && text[this->interval.end]) {
-
6945 if (text[this->interval.end] == '.') {
-
6946 version_maj.end = this->interval.end;
-
6947 this->interval.end++;
-
6948 version_min.start = this->interval.end;
-
6949 for (;;) {
-
6950 if (this->interval.end < end && text[this->interval.end]) {
-
6951 if (isspace(text[this->interval.end])) {
-
6952 version_min.end = this->interval.end;
-
6953 version =
-
6954 (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100 +
-
6955 (uint16_t)strtoui(text + version_min.start, version_min.size(), nullptr, 10);
-
6956 break;
-
6957 }
-
6958 else
-
6959 this->interval.end++;
-
6960 }
-
6961 else
-
6962 goto error;
-
6963 }
+
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 if (isspace(text[this->interval.end])) {
-
6967 version_maj.end = this->interval.end;
-
6968 version_min.start = 1;
-
6969 version_min.end = 0;
-
6970 version = (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100;
-
6971 break;
-
6972 }
-
6973 else
-
6974 this->interval.end++;
-
6975 }
-
6976 else
-
6977 goto error;
-
6978 }
-
6979 this->interval.start = start;
-
6980 return true;
-
6981
-
6982 error:
-
6983 type.start = 1;
-
6984 type.end = 0;
-
6985 version_maj.start = 1;
-
6986 version_maj.end = 0;
-
6987 version_min.start = 1;
-
6988 version_min.end = 0;
-
6989 version = 0x009;
-
6990 this->interval.start = 1;
-
6991 this->interval.end = 0;
-
6992 return false;
-
6993 }
-
6994
-
6995 virtual void invalidate()
-
6996 {
-
6997 type.start = 1;
-
6998 type.end = 0;
-
6999 version_maj.start = 1;
-
7000 version_maj.end = 0;
-
7001 version_min.start = 1;
-
7002 version_min.end = 0;
-
7003 version = 0x009;
-
7004 parser::invalidate();
-
7005 }
+
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 };
+
7006
-
7007 public:
- -
7009 stdex::interval<size_t> version_maj;
-
7010 stdex::interval<size_t> version_min;
- -
7012 };
-
-
7013
-
-
7017 class http_request : public parser
-
7018 {
-
7019 public:
-
7020 http_request(_In_ const std::locale& locale = std::locale()) :
-
7021 parser(locale),
-
7022 url(locale),
-
7023 protocol(locale)
-
7024 {}
-
7025
-
7026 virtual bool match(
-
7027 _In_reads_or_z_(end) const char* text,
-
7028 _In_ size_t start = 0,
-
7029 _In_ size_t end = (size_t)-1,
-
7030 _In_ int flags = match_default)
-
7031 {
-
7032 assert(text || start >= end);
-
7033 this->interval.end = start;
-
7034
-
7035 for (;;) {
-
7036 if (m_line_break.match(text, this->interval.end, end, flags))
-
7037 goto error;
-
7038 else if (this->interval.end < end && text[this->interval.end]) {
-
7039 if (isspace(text[this->interval.end]))
-
7040 this->interval.end++;
-
7041 else
-
7042 break;
-
7043 }
-
7044 else
-
7045 goto error;
-
7046 }
-
7047 verb.start = this->interval.end;
-
7048 for (;;) {
-
7049 if (m_line_break.match(text, this->interval.end, end, flags))
-
7050 goto error;
-
7051 else if (this->interval.end < end && text[this->interval.end]) {
-
7052 if (isspace(text[this->interval.end])) {
-
7053 verb.end = this->interval.end;
-
7054 this->interval.end++;
-
7055 break;
-
7056 }
-
7057 else
-
7058 this->interval.end++;
-
7059 }
-
7060 else
-
7061 goto error;
-
7062 }
-
7063
-
7064 for (;;) {
-
7065 if (m_line_break.match(text, this->interval.end, end, flags))
-
7066 goto error;
-
7067 else if (this->interval.end < end && text[this->interval.end]) {
-
7068 if (isspace(text[this->interval.end]))
-
7069 this->interval.end++;
-
7070 else
-
7071 break;
-
7072 }
-
7073 else
-
7074 goto error;
-
7075 }
-
7076 if (url.match(text, this->interval.end, end, flags))
-
7077 this->interval.end = url.interval.end;
-
7078 else
-
7079 goto error;
-
7080
-
7081 protocol.invalidate();
-
7082 for (;;) {
-
7083 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7084 this->interval.end = m_line_break.interval.end;
-
7085 goto end;
-
7086 }
-
7087 else if (this->interval.end < end && text[this->interval.end]) {
-
7088 if (isspace(text[this->interval.end]))
-
7089 this->interval.end++;
-
7090 else
-
7091 break;
-
7092 }
-
7093 else
-
7094 goto end;
-
7095 }
-
7096 for (;;) {
-
7097 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7098 this->interval.end = m_line_break.interval.end;
+
+
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 else if (protocol.match(text, this->interval.end, end, flags)) {
-
7102 this->interval.end = protocol.interval.end;
-
7103 break;
-
7104 }
-
7105 else
-
7106 goto end;
-
7107 }
-
7108
-
7109 for (;;) {
-
7110 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7111 this->interval.end = m_line_break.interval.end;
-
7112 break;
-
7113 }
-
7114 else if (this->interval.end < end && text[this->interval.end])
-
7115 this->interval.end++;
-
7116 else
-
7117 goto end;
-
7118 }
-
7119
-
7120 end:
-
7121 this->interval.start = start;
-
7122 return true;
-
7123
-
7124 error:
-
7125 verb.start = 1;
-
7126 verb.end = 0;
-
7127 url.invalidate();
-
7128 protocol.invalidate();
-
7129 this->interval.start = 1;
-
7130 this->interval.end = 0;
-
7131 return false;
-
7132 }
-
7133
-
7134 virtual void invalidate()
-
7135 {
-
7136 verb.start = 1;
-
7137 verb.end = 0;
-
7138 url.invalidate();
-
7139 protocol.invalidate();
-
7140 parser::invalidate();
-
7141 }
-
7142
-
7143 public:
- -
7145 http_url url;
-
7146 http_protocol protocol;
-
7147
-
7148 protected:
-
7149 http_line_break m_line_break;
-
7150 };
+
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 };
-
7151
-
-
7155 class http_header : public parser
-
7156 {
-
7157 public:
-
7158 virtual bool match(
-
7159 _In_reads_or_z_(end) const char* text,
-
7160 _In_ size_t start = 0,
-
7161 _In_ size_t end = (size_t)-1,
-
7162 _In_ int flags = match_default)
-
7163 {
-
7164 assert(text || start >= end);
-
7165 this->interval.end = start;
-
7166
-
7167 if (m_line_break.match(text, this->interval.end, end, flags) ||
-
7168 (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])))
-
7169 goto error;
-
7170 name.start = 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 name.end = this->interval.end;
-
7177 this->interval.end++;
-
7178 for (;;) {
-
7179 if (m_line_break.match(text, this->interval.end, end, flags))
-
7180 goto error;
-
7181 else if (this->interval.end < end && text[this->interval.end]) {
-
7182 if (isspace(text[this->interval.end]))
-
7183 this->interval.end++;
-
7184 else
-
7185 break;
-
7186 }
-
7187 else
-
7188 goto error;
-
7189 }
-
7190 if (this->interval.end < end && text[this->interval.end] == ':') {
-
7191 this->interval.end++;
-
7192 break;
-
7193 }
-
7194 else
-
7195 goto error;
-
7196 break;
-
7197 }
-
7198 else if (text[this->interval.end] == ':') {
-
7199 name.end = this->interval.end;
-
7200 this->interval.end++;
-
7201 break;
-
7202 }
-
7203 else
-
7204 this->interval.end++;
-
7205 }
-
7206 else
-
7207 goto error;
-
7208 }
-
7209 value.start = (size_t)-1;
-
7210 value.end = 0;
-
7211 for (;;) {
-
7212 if (m_line_break.match(text, this->interval.end, end, flags)) {
-
7213 this->interval.end = m_line_break.interval.end;
-
7214 if (!m_line_break.match(text, this->interval.end, end, flags) &&
-
7215 this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end]))
-
7216 this->interval.end++;
-
7217 else
-
7218 break;
-
7219 }
-
7220 else if (this->interval.end < end && text[this->interval.end]) {
-
7221 if (isspace(text[this->interval.end]))
-
7222 this->interval.end++;
-
7223 else {
-
7224 if (value.start == (size_t)-1) value.start = this->interval.end;
-
7225 value.end = ++this->interval.end;
-
7226 }
-
7227 }
-
7228 else
-
7229 break;
-
7230 }
-
7231 this->interval.start = start;
-
7232 return true;
-
7233
-
7234 error:
-
7235 name.start = 1;
-
7236 name.end = 0;
-
7237 value.start = 1;
-
7238 value.end = 0;
-
7239 this->interval.start = 1;
-
7240 this->interval.end = 0;
-
7241 return false;
-
7242 }
-
7243
-
7244 virtual void invalidate()
-
7245 {
-
7246 name.start = 1;
-
7247 name.end = 0;
-
7248 value.start = 1;
-
7249 value.end = 0;
-
7250 parser::invalidate();
-
7251 }
-
7252
-
7253 public:
- - -
7256
-
7257 protected:
-
7258 http_line_break m_line_break;
-
7259 };
+
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 };
-
7260
-
7264 template <class _Key, class T>
-
-
7265 class http_value_collection : public T
-
7266 {
-
7267 public:
-
7268 void insert(
-
7269 _In_reads_or_z_(end) const char* text,
-
7270 _In_ size_t start = 0,
-
7271 _In_ size_t end = (size_t)-1,
-
7272 _In_ int flags = match_default)
-
7273 {
-
7274 while (start < end) {
-
7275 while (start < end && text[start] && isspace(text[start])) start++;
-
7276 if (start < end && text[start] == ',') {
-
7277 start++;
-
7278 while (start < end&& text[start] && isspace(text[start])) start++;
-
7279 }
-
7280 _Key el;
-
7281 if (el.match(text, start, end, flags)) {
-
7282 start = el.interval.end;
-
7283 T::insert(std::move(el));
-
7284 }
-
7285 else
-
7286 break;
-
7287 }
-
7288 }
-
7289 };
+
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 };
-
7290
-
7291 template <class T>
-
- -
7293 constexpr bool operator()(const T& a, const T& b) const noexcept
-
7294 {
-
7295 return a.factor.value > b.factor.value;
-
7296 }
-
7297 };
+
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 };
-
7298
-
7302 template <class T, class _Alloc = std::allocator<T>>
- -
7304
-
7308 template <class T>
-
- -
7310 {
-
7311 public:
- -
7313 _In_ const std::shared_ptr<basic_parser<T>>& quote,
-
7314 _In_ const std::shared_ptr<basic_parser<T>>& chr,
-
7315 _In_ const std::shared_ptr<basic_parser<T>>& escape,
-
7316 _In_ const std::shared_ptr<basic_parser<T>>& sol,
-
7317 _In_ const std::shared_ptr<basic_parser<T>>& bs,
-
7318 _In_ const std::shared_ptr<basic_parser<T>>& ff,
-
7319 _In_ const std::shared_ptr<basic_parser<T>>& lf,
-
7320 _In_ const std::shared_ptr<basic_parser<T>>& cr,
-
7321 _In_ const std::shared_ptr<basic_parser<T>>& htab,
-
7322 _In_ const std::shared_ptr<basic_parser<T>>& uni,
-
7323 _In_ const std::shared_ptr<basic_integer16<T>>& hex,
-
7324 _In_ const std::locale& locale = std::locale()) :
-
7325 basic_parser<T>(locale),
-
7326 m_quote(quote),
-
7327 m_chr(chr),
-
7328 m_escape(escape),
-
7329 m_sol(sol),
-
7330 m_bs(bs),
-
7331 m_ff(ff),
-
7332 m_lf(lf),
-
7333 m_cr(cr),
-
7334 m_htab(htab),
-
7335 m_uni(uni),
-
7336 m_hex(hex)
-
7337 {}
-
7338
-
7339 virtual bool match(
-
7340 _In_reads_or_z_(end) const T* text,
-
7341 _In_ size_t start = 0,
-
7342 _In_ size_t end = (size_t)-1,
-
7343 _In_ int flags = match_default)
-
7344 {
-
7345 assert(text || start >= end);
-
7346 this->interval.end = start;
-
7347 if (m_quote->match(text, this->interval.end, end, flags)) {
-
7348 this->interval.end = m_quote->interval.end;
-
7349 value.clear();
-
7350 for (;;) {
-
7351 if (m_quote->match(text, this->interval.end, end, flags)) {
-
7352 this->interval.start = start;
-
7353 this->interval.end = m_quote->interval.end;
-
7354 return true;
-
7355 }
-
7356 if (m_escape->match(text, this->interval.end, end, flags)) {
-
7357 if (m_quote->match(text, m_escape->interval.end, end, flags)) {
-
7358 value += '"'; this->interval.end = m_quote->interval.end;
-
7359 continue;
-
7360 }
-
7361 if (m_sol->match(text, m_escape->interval.end, end, flags)) {
-
7362 value += '/'; this->interval.end = m_sol->interval.end;
-
7363 continue;
-
7364 }
-
7365 if (m_bs->match(text, m_escape->interval.end, end, flags)) {
-
7366 value += '\b'; this->interval.end = m_bs->interval.end;
-
7367 continue;
-
7368 }
-
7369 if (m_ff->match(text, m_escape->interval.end, end, flags)) {
-
7370 value += '\f'; this->interval.end = m_ff->interval.end;
-
7371 continue;
-
7372 }
-
7373 if (m_lf->match(text, m_escape->interval.end, end, flags)) {
-
7374 value += '\n'; this->interval.end = m_lf->interval.end;
-
7375 continue;
-
7376 }
-
7377 if (m_cr->match(text, m_escape->interval.end, end, flags)) {
-
7378 value += '\r'; this->interval.end = m_cr->interval.end;
-
7379 continue;
-
7380 }
-
7381 if (m_htab->match(text, m_escape->interval.end, end, flags)) {
-
7382 value += '\t'; this->interval.end = m_htab->interval.end;
-
7383 continue;
-
7384 }
-
7385 if (
-
7386 m_uni->match(text, m_escape->interval.end, end, flags) &&
-
7387 m_hex->match(text, m_uni->interval.end, std::min(m_uni->interval.end + 4, end), flags | match_case_insensitive) &&
-
7388 m_hex->interval.size() == 4 /* JSON requests 4-digit Unicode sequneces: \u.... */)
-
7389 {
-
7390 assert(m_hex->value <= 0xffff);
-
7391 if (sizeof(T) == 1) {
-
7392 if (m_hex->value > 0x7ff) {
-
7393 value += (T)(0xe0 | ((m_hex->value >> 12) & 0x0f));
-
7394 value += (T)(0x80 | ((m_hex->value >> 6) & 0x3f));
-
7395 value += (T)(0x80 | (m_hex->value & 0x3f));
-
7396 }
-
7397 else if (m_hex->value > 0x7f) {
-
7398 value += (T)(0xc0 | ((m_hex->value >> 6) & 0x1f));
-
7399 value += (T)(0x80 | (m_hex->value & 0x3f));
-
7400 }
-
7401 else
-
7402 value += (T)(m_hex->value & 0x7f);
-
7403 }
-
7404 else
-
7405 value += (T)m_hex->value;
-
7406 this->interval.end = m_hex->interval.end;
-
7407 continue;
-
7408 }
-
7409 if (m_escape->match(text, m_escape->interval.end, end, flags)) {
-
7410 value += '\\'; this->interval.end = m_escape->interval.end;
-
7411 continue;
-
7412 }
-
7413 }
-
7414 if (m_chr->match(text, this->interval.end, end, flags)) {
-
7415 value.Prilepi(text + m_chr->interval.start, m_chr->interval.size());
-
7416 this->interval.end = m_chr->interval.end;
-
7417 continue;
-
7418 }
-
7419 break;
-
7420 }
-
7421 }
+
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();
-
7423 this->interval.start = (this->interval.end = start) + 1;
-
7424 return false;
-
7425 }
-
7426
-
7427 virtual void invalidate()
-
7428 {
-
7429 value.clear();
- -
7431 }
-
7432
-
7433 public:
-
7434 std::basic_string<T> value;
-
7435
-
7436 protected:
-
7437 std::shared_ptr<basic_parser<T>> m_quote;
-
7438 std::shared_ptr<basic_parser<T>> m_chr;
-
7439 std::shared_ptr<basic_parser<T>> m_escape;
-
7440 std::shared_ptr<basic_parser<T>> m_sol;
-
7441 std::shared_ptr<basic_parser<T>> m_bs;
-
7442 std::shared_ptr<basic_parser<T>> m_ff;
-
7443 std::shared_ptr<basic_parser<T>> m_lf;
-
7444 std::shared_ptr<basic_parser<T>> m_cr;
-
7445 std::shared_ptr<basic_parser<T>> m_htab;
-
7446 std::shared_ptr<basic_parser<T>> m_uni;
-
7447 std::shared_ptr<basic_integer16<T>> m_hex;
-
7448 };
+ +
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 };
-
7449
- - -
7452#ifdef _UNICODE
-
7453 using tjson_string = wjson_string;
-
7454#else
-
7455 using tjson_string = json_string;
-
7456#endif
-
7457 }
-
7458}
-
7459
-
7460#undef ENUM_FLAG_OPERATOR
-
7461#undef ENUM_FLAGS
-
7462
-
7463#ifdef _MSC_VER
-
7464#pragma warning(pop)
-
7465#endif
+
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
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:5548
-
Test for Creditor Reference.
Definition parser.hpp:4974
-
T reference[22]
Normalized national reference number.
Definition parser.hpp:5103
-
T check_digits[3]
Two check digits.
Definition parser.hpp:5102
-
bool is_valid
Is reference valid per ISO 7064.
Definition parser.hpp:5104
+
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 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
@@ -7464,10 +7457,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:4951
-
T country[3]
ISO 3166-1 alpha-2 country code.
Definition parser.hpp:4949
-
T check_digits[3]
Two check digits.
Definition parser.hpp:4950
-
bool is_valid
Is IBAN valid per ISO 7064.
Definition parser.hpp:4952
+
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
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
@@ -7488,7 +7481,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:7310
+
Test for JSON string.
Definition parser.hpp:7303
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
@@ -7526,14 +7519,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:5171
-
Test for SI Reference part.
Definition parser.hpp:5126
-
Test for SI Reference.
Definition parser.hpp:5209
-
basic_si_reference_part< T > part3
Reference data part 3 (P3)
Definition parser.hpp:5526
-
basic_si_reference_part< T > part1
Reference data part 1 (P1)
Definition parser.hpp:5524
-
bool is_valid
Is reference valid.
Definition parser.hpp:5527
-
T model[3]
Reference model.
Definition parser.hpp:5523
-
basic_si_reference_part< T > part2
Reference data part 2 (P2)
Definition parser.hpp:5525
+
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 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
@@ -7549,44 +7542,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:6833
-
Test for HTTP any type.
Definition parser.hpp:5955
-
Test for HTTP asterisk.
Definition parser.hpp:6597
- - - - - -
Test for HTTP header.
Definition parser.hpp:7156
-
Test for HTTP language (RFC1766)
Definition parser.hpp:6465
-
Test for HTTP line break (RFC2616: CRLF | LF)
Definition parser.hpp:5629
-
Test for HTTP media range (RFC2616: media-range)
Definition parser.hpp:5987
-
Test for HTTP media type (RFC2616: media-type)
Definition parser.hpp:6042
-
Test for HTTP parameter (RFC2616: parameter)
Definition parser.hpp:5900
-
http_token name
Parameter name.
Definition parser.hpp:5944
-
http_value value
Parameter value.
Definition parser.hpp:5945
-
Test for HTTP protocol.
Definition parser.hpp:6909
-
uint16_t version
HTTP protocol version: 0x100 = 1.0, 0x101 = 1.1...
Definition parser.hpp:7011
-
Test for HTTP quoted string (RFC2616: quoted-string)
Definition parser.hpp:5790
-
stdex::interval< size_t > content
String content (without quotes)
Definition parser.hpp:5846
-
Test for HTTP request.
Definition parser.hpp:7018
-
Test for HTTP space (RFC2616: LWS)
Definition parser.hpp:5665
-
Test for HTTP text character (RFC2616: TEXT)
Definition parser.hpp:5702
-
Test for HTTP token (RFC2616: token - tolerates non-ASCII)
Definition parser.hpp:5736
-
Test for HTTP URL parameter.
Definition parser.hpp:6282
-
Test for HTTP URL path segment.
Definition parser.hpp:6193
-
Test for HTTP URL path segment.
Definition parser.hpp:6226
-
std::vector< http_url_path_segment > segments
Path segments.
Definition parser.hpp:6275
-
Test for HTTP URL port.
Definition parser.hpp:6137
-
Test for HTTP URL server.
Definition parser.hpp:6100
-
Test for HTTP URL.
Definition parser.hpp:6363
-
Collection of HTTP values.
Definition parser.hpp:7266
-
Test for HTTP value (RFC2616: value)
Definition parser.hpp:5856
-
http_quoted_string string
Value when matched as quoted string.
Definition parser.hpp:5892
-
http_token token
Value when matched as token.
Definition parser.hpp:5893
-
Test for HTTP weight factor.
Definition parser.hpp:6528
-
float value
Calculated value of the weight factor.
Definition parser.hpp:6590
-
Test for HTTP weighted value.
Definition parser.hpp:6620
+
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
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
@@ -7605,11 +7598,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:7292
+
Definition parser.hpp:7285
diff --git a/pch_8h_source.html b/pch_8h_source.html index dcacf9c02..aec60e99f 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 6464fbc29..470a89465 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 02f464d7a..c0e81c90c 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 3b0efa2d2..3aade907e 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 f23b7c455..58264f5b8 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 faf8caeef..2fdbe0d5e 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 703001d73..f649690c9 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 05b6a0df4..e2f5bd0a2 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 26b6a505d..4ab94de95 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 2f38be4b5..784c21d8a 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 3accc0462..27b155594 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 f21deefd3..f5406ffb2 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 0a322d088..8ecc6f539 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 8a08ae6da..d6ed86cf0 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 2b582e8fb..cff7e946a 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 b20f0ceb1..ed436e6f2 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 9e419145b..cf3ce5fcb 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 ee447e6c4..0b1b87dc6 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 99ad59e64..99af82ae3 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 f0c3d59d9..88941e269 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 1100f1e62..0d0a5e114 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 bfd6dda4c..23b350b47 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 da948c011..6c2c8a3d0 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 1d348e5dd..b9a56b46b 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 3e6de53a9..85a3959c5 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 9f90447b2..1d0934201 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 486673916..938a9c9e6 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 46caeebcc..7d135c23d 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 9220e1245..1a233b135 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 1a365a1de..26ea0b1b5 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 52a2a6a16..27f76ec71 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 eead32452..571972eb1 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 ed187fc41..4cf5cea7a 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 03b3a7f1c..3f8565e9a 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 ed44c7e55..ecf6bc651 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 5a42eabb9..1a2af0fa5 100644 --- a/vector__queue_8hpp_source.html +++ b/vector__queue_8hpp_source.html @@ -451,7 +451,7 @@ $(document).ready(function() { init_codefold(0); });