diff --git a/annotated.html b/annotated.html index efe0d19b1..d69380edd 100644 --- a/annotated.html +++ b/annotated.html @@ -186,7 +186,7 @@ $(function() { diff --git a/base64_8hpp_source.html b/base64_8hpp_source.html index 600ba87c9..f55e36f94 100644 --- a/base64_8hpp_source.html +++ b/base64_8hpp_source.html @@ -318,7 +318,7 @@ $(function() { diff --git a/classes.html b/classes.html index 9d6115fe9..da6e56da3 100644 --- a/classes.html +++ b/classes.html @@ -118,7 +118,7 @@ $(function() { diff --git a/classstdex_1_1base64__dec-members.html b/classstdex_1_1base64__dec-members.html index 3365a9d2f..06e2cfecf 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 9846c8318..db9ad02dd 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 ea6f2bcb8..73ad7074c 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 fe192b755..ff31d8162 100644 --- a/classstdex_1_1base64__enc.html +++ b/classstdex_1_1base64__enc.html @@ -235,7 +235,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classstdex_1_1errno__error-members.html b/classstdex_1_1errno__error-members.html index 1e40a4c06..67116d551 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 5bbc635a6..f1fd9f911 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 c6da817a5..ea193836f 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 956f0c099..91ea50126 100644 --- a/classstdex_1_1global__progress.html +++ b/classstdex_1_1global__progress.html @@ -562,7 +562,7 @@ template<class T > diff --git a/classstdex_1_1hex__dec-members.html b/classstdex_1_1hex__dec-members.html index 185bfe1a2..a9cb278ff 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 28eaa71a0..f17a5bb50 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 7bbb2471f..41de56a53 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 980f0661d..6cc28c80c 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 4bbea548f..55a61100f 100644 --- a/classstdex_1_1idrec_1_1record-members.html +++ b/classstdex_1_1idrec_1_1record-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1idrec_1_1record.html b/classstdex_1_1idrec_1_1record.html index 62b8d3f62..9c0275547 100644 --- a/classstdex_1_1idrec_1_1record.html +++ b/classstdex_1_1idrec_1_1record.html @@ -380,7 +380,7 @@ template<class T , class T_ID , const T_ID ID, class T_SIZE , unsigned int AL diff --git a/classstdex_1_1lazy__progress-members.html b/classstdex_1_1lazy__progress-members.html index 81015e0b9..4a7cf7fdc 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 f0c475e79..32dc1e3b3 100644 --- a/classstdex_1_1lazy__progress.html +++ b/classstdex_1_1lazy__progress.html @@ -285,7 +285,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__angle-members.html b/classstdex_1_1parser_1_1basic__angle-members.html index c6dba0172..09ea480d9 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 7e9250c61..eb5980af0 100644 --- a/classstdex_1_1parser_1_1basic__angle.html +++ b/classstdex_1_1parser_1_1basic__angle.html @@ -250,7 +250,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__any__cu-members.html b/classstdex_1_1parser_1_1basic__any__cu-members.html index 2db74dcbe..177a18da7 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 c0b1c4eb1..3dee25359 100644 --- a/classstdex_1_1parser_1_1basic__any__cu.html +++ b/classstdex_1_1parser_1_1basic__any__cu.html @@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__bol-members.html b/classstdex_1_1parser_1_1basic__bol-members.html index 799a8897b..8b48fdbbf 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 3c650280e..ecb6d8b00 100644 --- a/classstdex_1_1parser_1_1basic__bol.html +++ b/classstdex_1_1parser_1_1basic__bol.html @@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__branch-members.html b/classstdex_1_1parser_1_1basic__branch-members.html index 1aedbead4..a9daeacfd 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 fef900128..17c690dbe 100644 --- a/classstdex_1_1parser_1_1basic__branch.html +++ b/classstdex_1_1parser_1_1basic__branch.html @@ -261,7 +261,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__chemical__formula-members.html b/classstdex_1_1parser_1_1basic__chemical__formula-members.html index 4901a62e1..2fc8a26f6 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 2804638e9..c22b35afa 100644 --- a/classstdex_1_1parser_1_1basic__chemical__formula.html +++ b/classstdex_1_1parser_1_1basic__chemical__formula.html @@ -245,7 +245,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__cu-members.html b/classstdex_1_1parser_1_1basic__cu-members.html index bbf168c70..8361b7e9b 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 ce186b7e9..bd7f8e027 100644 --- a/classstdex_1_1parser_1_1basic__cu.html +++ b/classstdex_1_1parser_1_1basic__cu.html @@ -204,7 +204,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__cu__set-members.html b/classstdex_1_1parser_1_1basic__cu__set-members.html index bdb0e42a6..35c8ea15c 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 bd4819705..8498a6edf 100644 --- a/classstdex_1_1parser_1_1basic__cu__set.html +++ b/classstdex_1_1parser_1_1basic__cu__set.html @@ -218,7 +218,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__date-members.html b/classstdex_1_1parser_1_1basic__date-members.html index aca4c587c..49cd839d2 100644 --- a/classstdex_1_1parser_1_1basic__date-members.html +++ b/classstdex_1_1parser_1_1basic__date-members.html @@ -101,7 +101,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__date.html b/classstdex_1_1parser_1_1basic__date.html index 6333aab67..ef6282b87 100644 --- a/classstdex_1_1parser_1_1basic__date.html +++ b/classstdex_1_1parser_1_1basic__date.html @@ -274,7 +274,7 @@ template<class T > 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 0297d41d5..fe8c28647 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 1a5c41287..6d16d19b9 100644 --- a/classstdex_1_1parser_1_1basic__dns__domain__char.html +++ b/classstdex_1_1parser_1_1basic__dns__domain__char.html @@ -206,7 +206,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__dns__name-members.html b/classstdex_1_1parser_1_1basic__dns__name-members.html index b43118030..3fe7b0300 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 c0a26b6f9..b0a3ae146 100644 --- a/classstdex_1_1parser_1_1basic__dns__name.html +++ b/classstdex_1_1parser_1_1basic__dns__name.html @@ -208,7 +208,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__email__address-members.html b/classstdex_1_1parser_1_1basic__email__address-members.html index c4d142fb1..9bda44036 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 78ad6d9c5..0eac8fa48 100644 --- a/classstdex_1_1parser_1_1basic__email__address.html +++ b/classstdex_1_1parser_1_1basic__email__address.html @@ -251,7 +251,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__emoticon-members.html b/classstdex_1_1parser_1_1basic__emoticon-members.html index 72b012183..913c928cf 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 d06f05148..1db70fe51 100644 --- a/classstdex_1_1parser_1_1basic__emoticon.html +++ b/classstdex_1_1parser_1_1basic__emoticon.html @@ -249,7 +249,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__eol-members.html b/classstdex_1_1parser_1_1basic__eol-members.html index bd9f9a746..52bbf08bd 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 1b128b02e..b82a602b6 100644 --- a/classstdex_1_1parser_1_1basic__eol.html +++ b/classstdex_1_1parser_1_1basic__eol.html @@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__fraction-members.html b/classstdex_1_1parser_1_1basic__fraction-members.html index 68c918d33..0f349a01f 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 6fa57d5af..3cbb24153 100644 --- a/classstdex_1_1parser_1_1basic__fraction.html +++ b/classstdex_1_1parser_1_1basic__fraction.html @@ -238,7 +238,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer-members.html b/classstdex_1_1parser_1_1basic__integer-members.html index 2ca4f2275..700b087d8 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 f0bc29932..5e26d35c3 100644 --- a/classstdex_1_1parser_1_1basic__integer.html +++ b/classstdex_1_1parser_1_1basic__integer.html @@ -183,7 +183,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer10-members.html b/classstdex_1_1parser_1_1basic__integer10-members.html index de5f12caa..2ca3d8499 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 ee838ae2f..489ec49c2 100644 --- a/classstdex_1_1parser_1_1basic__integer10.html +++ b/classstdex_1_1parser_1_1basic__integer10.html @@ -240,7 +240,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer10ts-members.html b/classstdex_1_1parser_1_1basic__integer10ts-members.html index 9e360d023..73e9823de 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 8c18b73f6..364b72274 100644 --- a/classstdex_1_1parser_1_1basic__integer10ts.html +++ b/classstdex_1_1parser_1_1basic__integer10ts.html @@ -256,7 +256,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__integer16-members.html b/classstdex_1_1parser_1_1basic__integer16-members.html index b05cb83af..aa24eb273 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 0953facb9..60bbde394 100644 --- a/classstdex_1_1parser_1_1basic__integer16.html +++ b/classstdex_1_1parser_1_1basic__integer16.html @@ -258,7 +258,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__ipv4__address-members.html b/classstdex_1_1parser_1_1basic__ipv4__address-members.html index b23dbecf7..dd6a236b8 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 b3e215c2a..6dbb6a606 100644 --- a/classstdex_1_1parser_1_1basic__ipv4__address.html +++ b/classstdex_1_1parser_1_1basic__ipv4__address.html @@ -271,7 +271,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__ipv6__address-members.html b/classstdex_1_1parser_1_1basic__ipv6__address-members.html index bdd977e68..9357c6027 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 233bb4359..149abe724 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__address.html +++ b/classstdex_1_1parser_1_1basic__ipv6__address.html @@ -296,7 +296,7 @@ template<class T > 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 449f6d420..679392a9c 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 d3c46976e..33a91198c 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html @@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__iterations-members.html b/classstdex_1_1parser_1_1basic__iterations-members.html index 68cf2dfc7..5dc87f01b 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 3420cbaf7..3f3aabc03 100644 --- a/classstdex_1_1parser_1_1basic__iterations.html +++ b/classstdex_1_1parser_1_1basic__iterations.html @@ -214,7 +214,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__json__string-members.html b/classstdex_1_1parser_1_1basic__json__string-members.html index f94ac5db2..c720e4132 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 4b29bb672..cf0fbfd6a 100644 --- a/classstdex_1_1parser_1_1basic__json__string.html +++ b/classstdex_1_1parser_1_1basic__json__string.html @@ -266,7 +266,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__mixed__numeral-members.html b/classstdex_1_1parser_1_1basic__mixed__numeral-members.html index e13ea2303..d6ba53324 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 d66d73f0f..dde7cadd0 100644 --- a/classstdex_1_1parser_1_1basic__mixed__numeral.html +++ b/classstdex_1_1parser_1_1basic__mixed__numeral.html @@ -253,7 +253,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__monetary__numeral-members.html b/classstdex_1_1parser_1_1basic__monetary__numeral-members.html index a6b1cc5c3..14f245699 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 7e575c1d0..08b3a6125 100644 --- a/classstdex_1_1parser_1_1basic__monetary__numeral.html +++ b/classstdex_1_1parser_1_1basic__monetary__numeral.html @@ -257,7 +257,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__noop-members.html b/classstdex_1_1parser_1_1basic__noop-members.html index aca14561a..3c6dcfda7 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 b30111845..5c15a8313 100644 --- a/classstdex_1_1parser_1_1basic__noop.html +++ b/classstdex_1_1parser_1_1basic__noop.html @@ -191,7 +191,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__parser-members.html b/classstdex_1_1parser_1_1basic__parser-members.html index 91dc50f0a..6f179526c 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 7e1905e87..12387061e 100644 --- a/classstdex_1_1parser_1_1basic__parser.html +++ b/classstdex_1_1parser_1_1basic__parser.html @@ -183,7 +183,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 13493a747..a92b8fb48 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 bc8240f11..67cd4d655 100644 --- a/classstdex_1_1parser_1_1basic__permutation.html +++ b/classstdex_1_1parser_1_1basic__permutation.html @@ -222,7 +222,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__phone__number-members.html b/classstdex_1_1parser_1_1basic__phone__number-members.html index 0061df4d3..7adc4b9e7 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 be2544eb7..4b2c59c44 100644 --- a/classstdex_1_1parser_1_1basic__phone__number.html +++ b/classstdex_1_1parser_1_1basic__phone__number.html @@ -252,7 +252,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__punct__cu-members.html b/classstdex_1_1parser_1_1basic__punct__cu-members.html index 02add69c6..0506af160 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 a4fd917f1..93e647cc4 100644 --- a/classstdex_1_1parser_1_1basic__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__punct__cu.html @@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__roman__numeral-members.html b/classstdex_1_1parser_1_1basic__roman__numeral-members.html index c21f229f7..d558e8a78 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 a4bb2535a..2605bd285 100644 --- a/classstdex_1_1parser_1_1basic__roman__numeral.html +++ b/classstdex_1_1parser_1_1basic__roman__numeral.html @@ -237,7 +237,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__scientific__numeral-members.html b/classstdex_1_1parser_1_1basic__scientific__numeral-members.html index dbed8e78d..a354ec371 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 390e6a271..afcb00e91 100644 --- a/classstdex_1_1parser_1_1basic__scientific__numeral.html +++ b/classstdex_1_1parser_1_1basic__scientific__numeral.html @@ -273,7 +273,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__score-members.html b/classstdex_1_1parser_1_1basic__score-members.html index b00c49c92..609a74678 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 3b8878377..b04503b14 100644 --- a/classstdex_1_1parser_1_1basic__score.html +++ b/classstdex_1_1parser_1_1basic__score.html @@ -242,7 +242,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__sequence-members.html b/classstdex_1_1parser_1_1basic__sequence-members.html index ec9e8a32f..9788f6aa1 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 d4fb88ee1..38a4df46a 100644 --- a/classstdex_1_1parser_1_1basic__sequence.html +++ b/classstdex_1_1parser_1_1basic__sequence.html @@ -215,7 +215,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__set-members.html b/classstdex_1_1parser_1_1basic__set-members.html index 2e75121ff..2fe41fda8 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 e8ac61156..77fda7ea1 100644 --- a/classstdex_1_1parser_1_1basic__set.html +++ b/classstdex_1_1parser_1_1basic__set.html @@ -229,7 +229,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__signed__numeral-members.html b/classstdex_1_1parser_1_1basic__signed__numeral-members.html index 6bca274e6..08aa089c1 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 7983d5367..d9d2ccb2d 100644 --- a/classstdex_1_1parser_1_1basic__signed__numeral.html +++ b/classstdex_1_1parser_1_1basic__signed__numeral.html @@ -245,7 +245,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__space__cu-members.html b/classstdex_1_1parser_1_1basic__space__cu-members.html index 757f536cc..84ae69416 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 44c4bdfe4..631dfabb3 100644 --- a/classstdex_1_1parser_1_1basic__space__cu.html +++ b/classstdex_1_1parser_1_1basic__space__cu.html @@ -201,7 +201,7 @@ template<class T > 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 c69cd87e1..ca64190f7 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 49e02efcb..48ca5e862 100644 --- a/classstdex_1_1parser_1_1basic__space__or__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__space__or__punct__cu.html @@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__string-members.html b/classstdex_1_1parser_1_1basic__string-members.html index cdc57f5e4..736ac5324 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 bb97608b0..cd8ad579d 100644 --- a/classstdex_1_1parser_1_1basic__string.html +++ b/classstdex_1_1parser_1_1basic__string.html @@ -201,7 +201,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__string__branch-members.html b/classstdex_1_1parser_1_1basic__string__branch-members.html index 6955bbf03..ea1ca4fd2 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 005f56085..a05b6f566 100644 --- a/classstdex_1_1parser_1_1basic__string__branch.html +++ b/classstdex_1_1parser_1_1basic__string__branch.html @@ -193,7 +193,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 a9c0c4b79..02345ccd3 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 2307f0ada..053406544 100644 --- a/classstdex_1_1parser_1_1basic__time.html +++ b/classstdex_1_1parser_1_1basic__time.html @@ -248,7 +248,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__url-members.html b/classstdex_1_1parser_1_1basic__url-members.html index b241c8e68..1a7957e7a 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 8c67e100a..931189952 100644 --- a/classstdex_1_1parser_1_1basic__url.html +++ b/classstdex_1_1parser_1_1basic__url.html @@ -278,7 +278,7 @@ template<class T > 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 b8a93d1ba..6842a49cf 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 76eb00501..5cb5b2762 100644 --- a/classstdex_1_1parser_1_1basic__url__password__char.html +++ b/classstdex_1_1parser_1_1basic__url__password__char.html @@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1basic__url__path-members.html b/classstdex_1_1parser_1_1basic__url__path-members.html index 425bbbf3e..6e1dd194b 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 f90a0cf67..5f7d19133 100644 --- a/classstdex_1_1parser_1_1basic__url__path.html +++ b/classstdex_1_1parser_1_1basic__url__path.html @@ -248,7 +248,7 @@ template<class T > 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 a9d55156c..a4b85b0e3 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 fa8043780..1cb2ec119 100644 --- a/classstdex_1_1parser_1_1basic__url__path__char.html +++ b/classstdex_1_1parser_1_1basic__url__path__char.html @@ -194,7 +194,7 @@ template<class T > 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 9346f18d9..b761073e4 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 035d18efb..2b1c22b0c 100644 --- a/classstdex_1_1parser_1_1basic__url__username__char.html +++ b/classstdex_1_1parser_1_1basic__url__username__char.html @@ -194,7 +194,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1http__agent-members.html b/classstdex_1_1parser_1_1http__agent-members.html index c65b3e8ab..c19e98b31 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 a05908a67..f4748f4b1 100644 --- a/classstdex_1_1parser_1_1http__agent.html +++ b/classstdex_1_1parser_1_1http__agent.html @@ -226,7 +226,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 8752bbcf4..a714f2e09 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 f9426af4a..5ef2896db 100644 --- a/classstdex_1_1parser_1_1http__any__type.html +++ b/classstdex_1_1parser_1_1http__any__type.html @@ -187,7 +187,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 5a5ed5deb..42c512a57 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 5cf0ed35e..0a8f0186b 100644 --- a/classstdex_1_1parser_1_1http__asterisk.html +++ b/classstdex_1_1parser_1_1http__asterisk.html @@ -187,7 +187,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 676e5df5c..e59e208b4 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 fba7a4c91..3688dc1c2 100644 --- a/classstdex_1_1parser_1_1http__cookie.html +++ b/classstdex_1_1parser_1_1http__cookie.html @@ -236,7 +236,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 a4f4e8964..cf9d8880f 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 ae8295d28..559e23443 100644 --- a/classstdex_1_1parser_1_1http__cookie__parameter.html +++ b/classstdex_1_1parser_1_1http__cookie__parameter.html @@ -230,7 +230,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 06e3b3551..491a93071 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 ec1f9b036..8e8e74511 100644 --- a/classstdex_1_1parser_1_1http__header.html +++ b/classstdex_1_1parser_1_1http__header.html @@ -230,7 +230,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 520837c3e..503a27c24 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 124bd80f9..6e4a8184b 100644 --- a/classstdex_1_1parser_1_1http__language.html +++ b/classstdex_1_1parser_1_1http__language.html @@ -223,7 +223,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 63494a7a7..4587cd9f7 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 59941aa50..9eb9737de 100644 --- a/classstdex_1_1parser_1_1http__line__break.html +++ b/classstdex_1_1parser_1_1http__line__break.html @@ -187,7 +187,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 dbb7663c4..aa8c1d78a 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 29ac8e783..e29188697 100644 --- a/classstdex_1_1parser_1_1http__media__range.html +++ b/classstdex_1_1parser_1_1http__media__range.html @@ -231,7 +231,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 d8c63e71e..4269d898f 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 e806e136a..9e8ff0bee 100644 --- a/classstdex_1_1parser_1_1http__media__type.html +++ b/classstdex_1_1parser_1_1http__media__type.html @@ -239,7 +239,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 b4fd923d1..526294ddc 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 4c872dd91..1db80782b 100644 --- a/classstdex_1_1parser_1_1http__parameter.html +++ b/classstdex_1_1parser_1_1http__parameter.html @@ -232,7 +232,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 ead4dcbe5..f6358b42c 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 d31f3d506..612a90559 100644 --- a/classstdex_1_1parser_1_1http__protocol.html +++ b/classstdex_1_1parser_1_1http__protocol.html @@ -236,7 +236,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 d34e11108..8e0660793 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 ab39270ab..5285bb458 100644 --- a/classstdex_1_1parser_1_1http__quoted__string.html +++ b/classstdex_1_1parser_1_1http__quoted__string.html @@ -228,7 +228,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 b4104b6aa..ddd3c3148 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 025e82278..4d08a4762 100644 --- a/classstdex_1_1parser_1_1http__request.html +++ b/classstdex_1_1parser_1_1http__request.html @@ -236,7 +236,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 94dacd77c..fafa10ea0 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 1a6dccabc..d582dfabe 100644 --- a/classstdex_1_1parser_1_1http__space.html +++ b/classstdex_1_1parser_1_1http__space.html @@ -194,7 +194,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 20c88e304..bf4923517 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 69b4b4038..416f4663f 100644 --- a/classstdex_1_1parser_1_1http__text__char.html +++ b/classstdex_1_1parser_1_1http__text__char.html @@ -194,7 +194,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 d7b4d5237..26b9161c4 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 bdd110976..f1704ae99 100644 --- a/classstdex_1_1parser_1_1http__token.html +++ b/classstdex_1_1parser_1_1http__token.html @@ -187,7 +187,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 367cfbaa5..5e6e738a2 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 ae45e6b35..156f6ac24 100644 --- a/classstdex_1_1parser_1_1http__url.html +++ b/classstdex_1_1parser_1_1http__url.html @@ -235,7 +235,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 4c5d0ddc2..336577d18 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 62ba36c5d..bb1d61df3 100644 --- a/classstdex_1_1parser_1_1http__url__parameter.html +++ b/classstdex_1_1parser_1_1http__url__parameter.html @@ -226,7 +226,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 3c01995ae..28e682826 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 a347f743c..b6e1066d6 100644 --- a/classstdex_1_1parser_1_1http__url__path.html +++ b/classstdex_1_1parser_1_1http__url__path.html @@ -224,7 +224,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 6ae2b584d..ec1a1cb6a 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 33c43e02d..f6d7261e9 100644 --- a/classstdex_1_1parser_1_1http__url__path__segment.html +++ b/classstdex_1_1parser_1_1http__url__path__segment.html @@ -187,7 +187,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 000c49cb3..f9484ed7e 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 1b2324d87..afbd8de7f 100644 --- a/classstdex_1_1parser_1_1http__url__port.html +++ b/classstdex_1_1parser_1_1http__url__port.html @@ -226,7 +226,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 1d1fe1aa9..c7fde2566 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 b7afd4839..91ec35958 100644 --- a/classstdex_1_1parser_1_1http__url__server.html +++ b/classstdex_1_1parser_1_1http__url__server.html @@ -187,7 +187,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 ba4491b6c..835dcced0 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 df0187168..85ca37fb6 100644 --- a/classstdex_1_1parser_1_1http__value.html +++ b/classstdex_1_1parser_1_1http__value.html @@ -228,7 +228,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 43384e598..eed40649d 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 b78bb4f55..bcb4f96bf 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< T >

Collection of HTTP

diff --git a/classstdex_1_1parser_1_1http__weight-members.html b/classstdex_1_1parser_1_1http__weight-members.html index 913e71cae..c1643a456 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 9464af75e..a26cc32ab 100644 --- a/classstdex_1_1parser_1_1http__weight.html +++ b/classstdex_1_1parser_1_1http__weight.html @@ -227,7 +227,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 a8124d265..c848208f8 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 c72266bd6..2cbc295d3 100644 --- a/classstdex_1_1parser_1_1http__weighted__value.html +++ b/classstdex_1_1parser_1_1http__weighted__value.html @@ -237,7 +237,7 @@ template<class T , class T_asterisk = http_asterisk> diff --git a/classstdex_1_1parser_1_1parser__collection-members.html b/classstdex_1_1parser_1_1parser__collection-members.html index 190ca49ea..a6f97d886 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 de8efe463..78a3a8a15 100644 --- a/classstdex_1_1parser_1_1parser__collection.html +++ b/classstdex_1_1parser_1_1parser__collection.html @@ -192,7 +192,7 @@ template<class T > diff --git a/classstdex_1_1parser_1_1sgml__any__cp-members.html b/classstdex_1_1parser_1_1sgml__any__cp-members.html index 8b8720f98..74e08308e 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 4a7c9f6e7..ef54efb04 100644 --- a/classstdex_1_1parser_1_1sgml__any__cp.html +++ b/classstdex_1_1parser_1_1sgml__any__cp.html @@ -199,7 +199,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 1c6a38eb8..0d9870e6f 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 b32b4c72a..c52205f90 100644 --- a/classstdex_1_1parser_1_1sgml__cp.html +++ b/classstdex_1_1parser_1_1sgml__cp.html @@ -200,7 +200,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 2b6d5c6a5..5df00907e 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 1bbdfbc1c..efec80ff4 100644 --- a/classstdex_1_1parser_1_1sgml__cp__set.html +++ b/classstdex_1_1parser_1_1sgml__cp__set.html @@ -216,7 +216,7 @@ size_t hit_offset 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 dcf55bf1d..c610cd12c 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 de8051afb..a98af8e50 100644 --- a/classstdex_1_1parser_1_1sgml__dns__domain__char.html +++ b/classstdex_1_1parser_1_1sgml__dns__domain__char.html @@ -208,7 +208,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 ab607e650..de31fae62 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 428eaa14d..fc4c1c9cc 100644 --- a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html @@ -190,7 +190,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 36c32a20c..7596fe01a 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 be7585bf5..46dafa0df 100644 --- a/classstdex_1_1parser_1_1sgml__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__punct__cp.html @@ -203,7 +203,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 6c903fc47..836d8e200 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 43e5fa3f4..98720d17e 100644 --- a/classstdex_1_1parser_1_1sgml__space__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__cp.html @@ -203,7 +203,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 018b2646b..006c8251b 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 4cf738d7d..0e8a9a93a 100644 --- a/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html @@ -203,7 +203,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 29fdd5103..818903f0f 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 5c787d19d..13dfb735a 100644 --- a/classstdex_1_1parser_1_1sgml__string.html +++ b/classstdex_1_1parser_1_1sgml__string.html @@ -197,7 +197,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 50a541da6..a8e8820f3 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 2227614f8..dbf63a8e0 100644 --- a/classstdex_1_1parser_1_1sgml__url__password__char.html +++ b/classstdex_1_1parser_1_1sgml__url__password__char.html @@ -199,7 +199,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 10c9ac05a..8a4968801 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 61ad9253a..9e61f2016 100644 --- a/classstdex_1_1parser_1_1sgml__url__path__char.html +++ b/classstdex_1_1parser_1_1sgml__url__path__char.html @@ -199,7 +199,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 ef8217131..f9fadeef6 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 9e0bc2196..638b766db 100644 --- a/classstdex_1_1parser_1_1sgml__url__username__char.html +++ b/classstdex_1_1parser_1_1sgml__url__username__char.html @@ -199,7 +199,7 @@ std::locale m_locale diff --git a/classstdex_1_1progress-members.html b/classstdex_1_1progress-members.html index b1039acb6..04e3b4d60 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 840603941..fc99b599d 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 75cbb7b60..ff15098d6 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 ea6d69fb5..af34e73d9 100644 --- a/classstdex_1_1progress__switcher.html +++ b/classstdex_1_1progress__switcher.html @@ -178,7 +178,7 @@ class stdex::progress_switcher< T >

Progress indicator switcher. <

diff --git a/classstdex_1_1user__cancelled-members.html b/classstdex_1_1user__cancelled-members.html index adf7b67c7..ed6ef852f 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 cc316fe0a..51ec889ef 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 de4c67e33..191042999 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 14b33a35e..e80d63b1e 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 29dcb2bd3..9d68e523f 100644 --- a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html +++ b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html @@ -86,7 +86,7 @@ Files diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index a5290662a..c9f7926fb 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 7df568b7e..0edfa0c36 100644 --- a/dir_fca3c47b2ea228727bd6729832f89576.html +++ b/dir_fca3c47b2ea228727bd6729832f89576.html @@ -108,13 +108,15 @@ Files    string.hpp   + unicode.hpp vector_queue.hpp   diff --git a/errno_8hpp_source.html b/errno_8hpp_source.html index 81f6adeca..81bf945a2 100644 --- a/errno_8hpp_source.html +++ b/errno_8hpp_source.html @@ -136,7 +136,7 @@ $(function() { diff --git a/exception_8hpp_source.html b/exception_8hpp_source.html index e1a4bccbd..c2b4991b6 100644 --- a/exception_8hpp_source.html +++ b/exception_8hpp_source.html @@ -102,7 +102,7 @@ $(function() { diff --git a/files.html b/files.html index 51f5e0041..1540c7262 100644 --- a/files.html +++ b/files.html @@ -91,15 +91,16 @@ $(function() {  sgml.hpp  sgml_unicode.hpp  string.hpp - vector_queue.hpp -  UnitTests - pch.h + unicode.hpp + vector_queue.hpp +  UnitTests + pch.h diff --git a/functions.html b/functions.html index 7f2965fad..c01162d7f 100644 --- a/functions.html +++ b/functions.html @@ -256,7 +256,7 @@ $(function() { diff --git a/functions_func.html b/functions_func.html index 4739d60af..166158b80 100644 --- a/functions_func.html +++ b/functions_func.html @@ -205,7 +205,7 @@ $(function() { diff --git a/functions_type.html b/functions_type.html index 5a06a5c34..ccc25bd7b 100644 --- a/functions_type.html +++ b/functions_type.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_vars.html b/functions_vars.html index 8dfa73950..5e60c1942 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -176,7 +176,7 @@ $(function() { diff --git a/hex_8hpp_source.html b/hex_8hpp_source.html index 7b913e8cd..0b4f96626 100644 --- a/hex_8hpp_source.html +++ b/hex_8hpp_source.html @@ -209,7 +209,7 @@ $(function() { diff --git a/hierarchy.html b/hierarchy.html index c2c968d9c..0a6a7ed9e 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -197,7 +197,7 @@ $(function() { diff --git a/idrec_8hpp_source.html b/idrec_8hpp_source.html index 243976ee9..55fe48878 100644 --- a/idrec_8hpp_source.html +++ b/idrec_8hpp_source.html @@ -275,7 +275,7 @@ $(function() { diff --git a/index.html b/index.html index fa0465756..80e752e3b 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 0f80e11d0..d06c10df5 100644 --- a/interval_8hpp_source.html +++ b/interval_8hpp_source.html @@ -128,7 +128,7 @@ $(function() { diff --git a/mapping_8hpp_source.html b/mapping_8hpp_source.html index 3f7f69a4e..35dec7393 100644 --- a/mapping_8hpp_source.html +++ b/mapping_8hpp_source.html @@ -117,7 +117,7 @@ $(function() { diff --git a/memory_8hpp_source.html b/memory_8hpp_source.html index dc93be85d..ce7d4064c 100644 --- a/memory_8hpp_source.html +++ b/memory_8hpp_source.html @@ -119,7 +119,7 @@ $(function() { diff --git a/parser_8hpp_source.html b/parser_8hpp_source.html index 59e7cfa76..7f421a6ef 100644 --- a/parser_8hpp_source.html +++ b/parser_8hpp_source.html @@ -747,11 +747,11 @@ $(function() {
718 assert(text || start >= end);
719 if (start < end && text[start]) {
720 const T* set = m_set.c_str();
-
721 const T* r = (flags & match_case_insensitive) ?
-
722 stdex::strnichr(set, text[start], m_set.size(), m_locale) :
-
723 stdex::strnchr(set, text[start], m_set.size());
-
724 if (r && !m_invert || !r && m_invert) {
-
725 hit_offset = r ? r - set : (size_t)-1;
+
721 size_t r = (flags & match_case_insensitive) ?
+
722 stdex::strnichr(set, m_set.size(), text[start], m_locale) :
+
723 stdex::strnchr(set, m_set.size(), text[start]);
+
724 if (r != stdex::npos && !m_invert || r == stdex::npos && m_invert) {
+
725 hit_offset = r;
726 interval.end = (interval.start = start) + 1;
727 return true;
728 }
@@ -780,7 +780,7 @@ $(function() {
754 basic_set<char>(invert, locale)
755 {
756 if (set)
-
757 m_set = sgml2str(set, count);
+
757 m_set = sgml2wstr(set, count);
758 }
759
760 virtual bool match(
@@ -794,11 +794,11 @@ $(function() {
768 wchar_t buf[3];
769 const wchar_t* chr = next_sgml_cp(text, start, end, interval.end, buf);
770 const wchar_t* set = m_set.c_str();
-
771 const wchar_t* r = (flags & match_case_insensitive) ?
-
772 stdex::strnistr(set, chr, m_set.size(), m_locale) :
-
773 stdex::strnstr(set, chr, m_set.size());
-
774 if (r && !m_invert || !r && m_invert) {
-
775 hit_offset = r ? r - set : (size_t)-1;
+
771 size_t r = (flags & match_case_insensitive) ?
+
772 stdex::strnistr(set, m_set.size(), chr, m_locale) :
+
773 stdex::strnstr(set, m_set.size(), chr);
+
774 if (r != stdex::npos && !m_invert || r == stdex::npos && m_invert) {
+
775 hit_offset = r;
776 interval.start = start;
777 return true;
778 }
@@ -862,7 +862,7 @@ $(function() {
842 public:
843 sgml_string(const char* str, size_t count = (size_t)-1, _In_ const std::locale& locale = std::locale()) :
844 sgml_parser(locale),
-
845 m_str(sgml2str(str, count))
+
845 m_str(sgml2wstr(str, count))
846 {}
847
848 virtual bool match(
@@ -6525,7 +6525,7 @@ $(function() { diff --git a/pch_8h_source.html b/pch_8h_source.html index bc016ab5c..fb8de7aae 100644 --- a/pch_8h_source.html +++ b/pch_8h_source.html @@ -105,7 +105,7 @@ $(function() { diff --git a/progress_8hpp_source.html b/progress_8hpp_source.html index 1ddb683fe..b3966f9eb 100644 --- a/progress_8hpp_source.html +++ b/progress_8hpp_source.html @@ -282,7 +282,7 @@ $(function() { diff --git a/sal_8hpp_source.html b/sal_8hpp_source.html index a4eb5f822..f67102373 100644 --- a/sal_8hpp_source.html +++ b/sal_8hpp_source.html @@ -143,7 +143,7 @@ $(function() { diff --git a/sgml_8hpp_source.html b/sgml_8hpp_source.html index ab5eb0a7c..d6f58a414 100644 --- a/sgml_8hpp_source.html +++ b/sgml_8hpp_source.html @@ -89,340 +89,341 @@ $(function() {
10#include "sgml_unicode.hpp"
11#include "string.hpp"
12#include <assert.h>
-
13
-
14namespace stdex
-
15{
-
17 template <class T>
-
18 inline const wchar_t* sgml2uni(_In_reads_or_z_(count) const T* entity, _In_ size_t count)
-
19 {
-
20 assert(entity && count);
-
21 assert(count < 2 || entity[0] != '#'); // No numeric entities
-
22
-
23 for (size_t i = 0, j = _countof(sgml_unicode); i < j; ) {
-
24 size_t m = (i + j) / 2;
-
25 if (sgml_unicode[m].sgml[0] < entity[0])
-
26 i = m + 1;
-
27 else if (sgml_unicode[m].sgml[0] > entity[0])
-
28 j = m;
-
29 else {
-
30 auto r = strncmp<char, T>(sgml_unicode[m].sgml + 1, _countof(sgml_unicode[0].sgml) - 1, entity + 1, count - 1);
-
31 if (r < 0)
-
32 i = m + 1;
-
33 else if (r > 0)
-
34 j = m;
-
35 else {
-
36 for (; i < m && strncmp<char, T>(sgml_unicode[m - 1].sgml, _countof(sgml_unicode[0].sgml), entity, count) == 0; m--);
-
37 return sgml_unicode[m].unicode;
-
38 }
-
39 }
-
40 }
-
41 return nullptr;
-
42 }
-
43
-
44 template <class T>
-
45 inline const T* sgmlend(
-
46 _In_reads_or_z_opt_(count) const T* str,
-
47 _In_ size_t count)
-
48 {
-
49 assert(str || !count);
-
50 for (size_t i = 0; i < count; i++) {
-
51 if (str[i] == ';')
-
52 return str + i;
-
53 if (!str[i] || str[i] == '&' || isspace(str[i]))
-
54 break;
-
55 }
-
56 return nullptr;
-
57 }
-
59
-
60 constexpr int sgml_full = 0x80000000;
-
61 constexpr int sgml_quot = 0x00000001;
-
62 constexpr int sgml_apos = 0x00000002;
-
63 constexpr int sgml_quot_apos = sgml_quot | sgml_apos;
-
64 constexpr int sgml_amp = 0x00000004;
-
65 constexpr int sgml_lt_gt = 0x00000008;
-
66 constexpr int sgml_bsol = 0x00000010;
-
67 constexpr int sgml_dollar = 0x00000020;
-
68 constexpr int sgml_percnt = 0x00000040;
-
69 constexpr int sgml_commat = 0x00000080;
-
70 constexpr int sgml_num = 0x00000100;
-
71 constexpr int sgml_lpar_rpar = 0x00000200;
-
72 constexpr int sgml_lcub_rcub = 0x00000400;
-
73 constexpr int sgml_lsqb_rsqb = 0x00000800;
-
74 constexpr int sgml_sgml = sgml_amp | sgml_lt_gt;
-
75 constexpr int sgml_ml_attrib = sgml_amp | sgml_quot_apos;
-
76 constexpr int sgml_c = sgml_amp | sgml_bsol | sgml_quot_apos;
-
77 // constexpr int sgml_ajt_lemma = sgml_amp | sgml_quot | sgml_dollar | sgml_percnt;
-
78 // constexpr int sgml_ajt_form = sgml_ajt_lemma;
-
79 // constexpr int sgml_kolos = sgml_amp | sgml_quot | sgml_dollar | sgml_percnt | sgml_lt_gt | sgml_bsol/* | sgml_commat | sgml_num*/ | sgml_lpar_rpar | sgml_lcub_rcub | sgml_lsqb_rsqb;
-
80
-
93 template <class T>
-
94 inline void sgml2str(
-
95 _Inout_ std::wstring& dst,
-
96 _In_reads_or_z_opt_(count_src) const T* src, _In_ size_t count_src,
-
97 _In_ int skip = 0,
-
98 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
-
99 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
-
100 {
-
101 assert(src || !count_src);
-
102
-
103 const bool
-
104 skip_quot = (skip & sgml_quot) == 0,
-
105 skip_apos = (skip & sgml_apos) == 0,
-
106 skip_amp = (skip & sgml_amp) == 0,
-
107 skip_lt_gt = (skip & sgml_lt_gt) == 0,
-
108 skip_bsol = (skip & sgml_bsol) == 0,
-
109 skip_dollar = (skip & sgml_dollar) == 0,
-
110 skip_percnt = (skip & sgml_percnt) == 0,
-
111 skip_commat = (skip & sgml_commat) == 0,
-
112 skip_num = (skip & sgml_num) == 0,
-
113 skip_lpar_rpar = (skip & sgml_lpar_rpar) == 0,
-
114 skip_lcub_rcub = (skip & sgml_lcub_rcub) == 0,
-
115 skip_lsqb_rsqb = (skip & sgml_lsqb_rsqb) == 0;
-
116
-
117 count_src = strnlen(src, count_src);
-
118 dst.reserve(dst.size() + count_src);
-
119 for (size_t i = 0; i < count_src;) {
-
120 if (src[i] == '&') {
-
121 auto end = sgmlend(src + i + 1, count_src - i - 1);
-
122 if (end) {
-
123 const wchar_t* entity_w;
-
124 wchar_t chr[3];
-
125 size_t n = end - src - i - 1;
-
126 if (n >= 2 && src[i + 1] == '#') {
-
127 uint32_t unicode;
-
128 if (src[i + 2] == 'x' || src[i + 2] == 'X')
-
129 unicode = strtou32(src + i + 3, n - 2, nullptr, 16);
-
130 else
-
131 unicode = strtou32(src + i + 2, n - 1, nullptr, 10);
-
132#ifdef _WIN32
-
133 if (unicode < 0x10000) {
-
134 chr[0] = (wchar_t)unicode;
-
135 chr[1] = 0;
-
136 }
-
137 else {
-
138 ucs4_to_surrogate_pair(chr, unicode);
-
139 chr[2] = 0;
-
140 }
-
141#else
-
142 chr[0] = (wchar_t)unicode;
-
143 chr[1] = 0;
-
144#endif
-
145 entity_w = chr;
-
146 }
-
147 else
-
148 entity_w = sgml2uni(src + i + 1, n);
-
149
-
150 if (entity_w &&
-
151 (skip_quot || (entity_w[0] != L'"')) &&
-
152 (skip_apos || (entity_w[0] != L'\'')) &&
-
153 (skip_amp || (entity_w[0] != L'&')) &&
-
154 (skip_lt_gt || (entity_w[0] != L'<' && entity_w[0] != L'>')) &&
-
155 (skip_bsol || (entity_w[0] != L'\\')) &&
-
156 (skip_dollar || (entity_w[0] != L'$')) &&
-
157 (skip_percnt || (entity_w[0] != L'%')) &&
-
158 (skip_commat || (entity_w[0] != L'@')) &&
-
159 (skip_num || (entity_w[0] != L'#')) &&
-
160 (skip_lpar_rpar || (entity_w[0] != L'(' && entity_w[0] != L')')) &&
-
161 (skip_lcub_rcub || (entity_w[0] != L'{' && entity_w[0] != L'}')) &&
-
162 (skip_lsqb_rsqb || (entity_w[0] != L'[' && entity_w[0] != L']')))
-
163 {
-
164 if (map) map->push_back(mapping<size_t>(offset.from + i, offset.to + dst.size()));
-
165 dst.append(entity_w);
-
166 i = end - src + 1;
-
167 if (map) map->push_back(mapping<size_t>(offset.from + i, offset.to + dst.size()));
-
168 continue;
-
169 }
-
170 }
-
171 }
-
172 dst.append(1, src[i++]);
-
173 }
-
174 }
-
175
-
187 template <class T>
-
188 inline void sgml2str(
-
189 _Inout_ std::wstring& dst,
-
190 _In_ const std::basic_string<T>& src,
-
191 _In_ int skip = 0,
-
192 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
-
193 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
-
194 {
-
195 sgml2str(dst, src.data(), src.size(), skip, offset, map);
-
196 }
-
197
-
209 template <class T>
-
210 inline std::wstring sgml2str(
-
211 _In_reads_or_z_opt_(count_src) const T* src, _In_ size_t count_src,
-
212 _In_ int skip = 0,
-
213 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
-
214 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
-
215 {
-
216 std::wstring dst;
-
217 sgml2str(dst, src, count_src, skip, offset, map);
-
218 return dst;
-
219 }
-
220
-
231 template <class T>
-
232 inline std::wstring sgml2str(
-
233 _In_ const std::basic_string<T>& src,
-
234 _In_ int skip = 0,
-
235 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
-
236 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
-
237 {
-
238 return sgml2str(src.c_str(), src.size(), skip, offset, map);
-
239 }
-
240
-
242 inline const char* chr2sgml(_In_reads_or_z_(count) const wchar_t* entity, _In_ size_t count)
-
243 {
-
244 assert(entity && count);
-
245
-
246 const wchar_t e2 = entity[0];
-
247 for (size_t i = 0, j = _countof(unicode_sgml); i < j; ) {
-
248 size_t m = (i + j) / 2;
-
249 wchar_t e1 = sgml_unicode[unicode_sgml[m]].unicode[0];
-
250 if (e1 < e2)
-
251 i = m + 1;
-
252 else if (e1 > e2)
-
253 j = m;
-
254 else {
-
255 auto r = strncmp(sgml_unicode[unicode_sgml[m]].unicode + 1, _countof(sgml_unicode[0].unicode) - 1, entity + 1, count - 1);
-
256 if (r < 0)
-
257 i = m + 1;
-
258 else if (r > 0)
-
259 j = m;
-
260 else {
-
261 for (; i < m && sgml_unicode[unicode_sgml[m - 1]].unicode[0] == e2 && strncmp(sgml_unicode[unicode_sgml[m - 1]].unicode + 1, _countof(sgml_unicode[0].unicode) - 1, entity + 1, count - 1) == 0; m--);
-
262 return sgml_unicode[unicode_sgml[m]].sgml;
-
263 }
-
264 }
-
265 }
-
266 return nullptr;
-
267 }
-
269
-
278 inline void str2sgml(
-
279 _Inout_ std::string& dst,
-
280 _In_reads_or_z_opt_(count_src) const wchar_t* src,
-
281 _In_ size_t count_src,
-
282 _In_ size_t what = 0)
-
283 {
-
284 assert(src || !count_src);
-
285
-
286 const bool
-
287 do_ascii = (what & sgml_full) == 0,
-
288 do_quot = (what & sgml_quot) == 0,
-
289 do_apos = (what & sgml_apos) == 0,
-
290 do_lt_gt = (what & sgml_lt_gt) == 0,
-
291 do_bsol = (what & sgml_bsol) == 0,
-
292 do_dollar = (what & sgml_dollar) == 0,
-
293 do_percnt = (what & sgml_percnt) == 0,
-
294 do_commat = (what & sgml_commat) == 0,
-
295 do_num = (what & sgml_num) == 0,
-
296 do_lpar_rpar = (what & sgml_lpar_rpar) == 0,
-
297 do_lcub_rcub = (what & sgml_lcub_rcub) == 0,
-
298 do_lsqb_rsqb = (what & sgml_lsqb_rsqb) == 0;
-
299
-
300 count_src = wcsnlen(src, count_src);
-
301 dst.reserve(dst.size() + count_src);
-
302 for (size_t i = 0; i < count_src;) {
-
303 size_t n = glyphlen(src + i, count_src - i);
-
304 if (n == 1 &&
-
305 do_ascii && (unsigned int)src[i] < 128 &&
-
306 src[i] != L'&' &&
-
307 (do_quot || (src[i] != L'"')) &&
-
308 (do_apos || (src[i] != L'\'')) &&
-
309 (do_lt_gt || (src[i] != L'<' && src[i] != L'>')) &&
-
310 (do_bsol || (src[i] != L'\\')) &&
-
311 (do_dollar || (src[i] != L'$')) &&
-
312 (do_percnt || (src[i] != L'%')) &&
-
313 (do_commat || (src[i] != L'@')) &&
-
314 (do_num || (src[i] != L'#')) &&
-
315 (do_lpar_rpar || (src[i] != L'(' && src[i] != L')')) &&
-
316 (do_lcub_rcub || (src[i] != L'{' && src[i] != L'}')) &&
-
317 (do_lsqb_rsqb || (src[i] != L'[' && src[i] != L']')))
-
318 {
-
319 // 7-bit ASCII and no desire to encode it as an SGML entity.
-
320 dst.append(1, (char)src[i++]);
-
321 }
-
322 else {
-
323 const char* entity = chr2sgml(src + i, n);
-
324 if (entity) {
-
325 dst.append(1, '&');
-
326 dst.append(entity);
-
327 dst.append(1, ';');
-
328 i += n;
-
329 }
-
330 else if (n == 1) {
-
331 // Trivial character (1 code unit, 1 glyph), no entity available.
-
332 if ((unsigned int)src[i] < 128)
-
333 dst.append(1, (char)src[i++]);
-
334 else {
-
335 char tmp[3 + 8 + 1 + 1];
-
336 snprintf(tmp, _countof(tmp), "&#x%x;", src[i++]);
-
337 dst.append(tmp);
-
338 }
-
339 }
-
340 else {
-
341 // Non-trivial character. Decompose.
-
342 const size_t end = i + n;
-
343 while (i < end) {
-
344 if ((entity = chr2sgml(src + i, 1)) != nullptr) {
-
345 dst.append(1, '&');
-
346 dst.append(entity);
-
347 dst.append(1, ';');
-
348 i++;
-
349 }
-
350 else if ((unsigned int)src[i] < 128)
-
351 dst.append(1, (char)src[i++]);
-
352 else {
-
353 uint32_t unicode;
-
354#ifdef _WIN32
-
355 if (i + 1 < end && is_surrogate_pair(src + i)) {
-
356 unicode = surrogate_pair_to_ucs4(src + i);
-
357 i += 2;
-
358 }
-
359 else
-
360#endif
-
361 {
-
362 unicode = src[i++];
-
363 }
-
364 char tmp[3 + 8 + 1 + 1];
-
365 snprintf(tmp, _countof(tmp), "&#x%x;", unicode);
-
366 dst.append(tmp);
-
367 }
-
368 }
-
369 }
-
370 }
-
371 }
-
372 }
-
373
-
381 inline void str2sgml(
-
382 _Inout_ std::string& dst,
-
383 _In_ const std::wstring& src,
-
384 _In_ size_t what = 0)
-
385 {
-
386 str2sgml(dst, src.c_str(), src.size(), what);
-
387 }
-
388
-
398 inline std::string str2sgml(
-
399 _In_reads_or_z_opt_(count_src) const wchar_t* src,
-
400 _In_ size_t count_src,
-
401 _In_ size_t what = 0)
-
402 {
-
403 std::string dst;
-
404 str2sgml(dst, src, count_src, what);
-
405 return dst;
-
406 }
-
407
-
416 inline std::string str2sgml(
-
417 _In_ const std::wstring& src,
-
418 _In_ size_t what = 0)
-
419 {
-
420 return str2sgml(src.c_str(), src.size(), what);
-
421 }
-
422}
+
13#include <string>
+
14
+
15namespace stdex
+
16{
+
18 template <class T>
+
19 inline const wchar_t* sgml2uni(_In_reads_or_z_(count) const T* entity, _In_ size_t count)
+
20 {
+
21 assert(entity && count);
+
22 assert(count < 2 || entity[0] != '#'); // No numeric entities
+
23
+
24 for (size_t i = 0, j = _countof(sgml_unicode); i < j; ) {
+
25 size_t m = (i + j) / 2;
+
26 if (sgml_unicode[m].sgml[0] < entity[0])
+
27 i = m + 1;
+
28 else if (sgml_unicode[m].sgml[0] > entity[0])
+
29 j = m;
+
30 else {
+
31 auto r = strncmp<char, T>(sgml_unicode[m].sgml + 1, _countof(sgml_unicode[0].sgml) - 1, entity + 1, count - 1);
+
32 if (r < 0)
+
33 i = m + 1;
+
34 else if (r > 0)
+
35 j = m;
+
36 else {
+
37 for (; i < m && strncmp<char, T>(sgml_unicode[m - 1].sgml, _countof(sgml_unicode[0].sgml), entity, count) == 0; m--);
+
38 return sgml_unicode[m].unicode;
+
39 }
+
40 }
+
41 }
+
42 return nullptr;
+
43 }
+
44
+
45 template <class T>
+
46 inline const T* sgmlend(
+
47 _In_reads_or_z_opt_(count) const T* str,
+
48 _In_ size_t count)
+
49 {
+
50 assert(str || !count);
+
51 for (size_t i = 0; i < count; i++) {
+
52 if (str[i] == ';')
+
53 return str + i;
+
54 if (!str[i] || str[i] == '&' || isspace(str[i]))
+
55 break;
+
56 }
+
57 return nullptr;
+
58 }
+
60
+
61 constexpr int sgml_full = 0x80000000;
+
62 constexpr int sgml_quot = 0x00000001;
+
63 constexpr int sgml_apos = 0x00000002;
+
64 constexpr int sgml_quot_apos = sgml_quot | sgml_apos;
+
65 constexpr int sgml_amp = 0x00000004;
+
66 constexpr int sgml_lt_gt = 0x00000008;
+
67 constexpr int sgml_bsol = 0x00000010;
+
68 constexpr int sgml_dollar = 0x00000020;
+
69 constexpr int sgml_percnt = 0x00000040;
+
70 constexpr int sgml_commat = 0x00000080;
+
71 constexpr int sgml_num = 0x00000100;
+
72 constexpr int sgml_lpar_rpar = 0x00000200;
+
73 constexpr int sgml_lcub_rcub = 0x00000400;
+
74 constexpr int sgml_lsqb_rsqb = 0x00000800;
+
75 constexpr int sgml_sgml = sgml_amp | sgml_lt_gt;
+
76 constexpr int sgml_ml_attrib = sgml_amp | sgml_quot_apos;
+
77 constexpr int sgml_c = sgml_amp | sgml_bsol | sgml_quot_apos;
+
78 // constexpr int sgml_ajt_lemma = sgml_amp | sgml_quot | sgml_dollar | sgml_percnt;
+
79 // constexpr int sgml_ajt_form = sgml_ajt_lemma;
+
80 // constexpr int sgml_kolos = sgml_amp | sgml_quot | sgml_dollar | sgml_percnt | sgml_lt_gt | sgml_bsol/* | sgml_commat | sgml_num*/ | sgml_lpar_rpar | sgml_lcub_rcub | sgml_lsqb_rsqb;
+
81
+
94 template <class T>
+
95 inline void sgml2wstr(
+
96 _Inout_ std::wstring& dst,
+
97 _In_reads_or_z_opt_(count_src) const T* src, _In_ size_t count_src,
+
98 _In_ int skip = 0,
+
99 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
+
100 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
+
101 {
+
102 assert(src || !count_src);
+
103
+
104 const bool
+
105 skip_quot = (skip & sgml_quot) == 0,
+
106 skip_apos = (skip & sgml_apos) == 0,
+
107 skip_amp = (skip & sgml_amp) == 0,
+
108 skip_lt_gt = (skip & sgml_lt_gt) == 0,
+
109 skip_bsol = (skip & sgml_bsol) == 0,
+
110 skip_dollar = (skip & sgml_dollar) == 0,
+
111 skip_percnt = (skip & sgml_percnt) == 0,
+
112 skip_commat = (skip & sgml_commat) == 0,
+
113 skip_num = (skip & sgml_num) == 0,
+
114 skip_lpar_rpar = (skip & sgml_lpar_rpar) == 0,
+
115 skip_lcub_rcub = (skip & sgml_lcub_rcub) == 0,
+
116 skip_lsqb_rsqb = (skip & sgml_lsqb_rsqb) == 0;
+
117
+
118 count_src = strnlen(src, count_src);
+
119 dst.reserve(dst.size() + count_src);
+
120 for (size_t i = 0; i < count_src;) {
+
121 if (src[i] == '&') {
+
122 auto end = sgmlend(src + i + 1, count_src - i - 1);
+
123 if (end) {
+
124 const wchar_t* entity_w;
+
125 wchar_t chr[3];
+
126 size_t n = end - src - i - 1;
+
127 if (n >= 2 && src[i + 1] == '#') {
+
128 uint32_t unicode;
+
129 if (src[i + 2] == 'x' || src[i + 2] == 'X')
+
130 unicode = strtou32(src + i + 3, n - 2, nullptr, 16);
+
131 else
+
132 unicode = strtou32(src + i + 2, n - 1, nullptr, 10);
+
133#ifdef _WIN32
+
134 if (unicode < 0x10000) {
+
135 chr[0] = (wchar_t)unicode;
+
136 chr[1] = 0;
+
137 }
+
138 else {
+
139 ucs4_to_surrogate_pair(chr, unicode);
+
140 chr[2] = 0;
+
141 }
+
142#else
+
143 chr[0] = (wchar_t)unicode;
+
144 chr[1] = 0;
+
145#endif
+
146 entity_w = chr;
+
147 }
+
148 else
+
149 entity_w = sgml2uni(src + i + 1, n);
+
150
+
151 if (entity_w &&
+
152 (skip_quot || (entity_w[0] != L'"')) &&
+
153 (skip_apos || (entity_w[0] != L'\'')) &&
+
154 (skip_amp || (entity_w[0] != L'&')) &&
+
155 (skip_lt_gt || (entity_w[0] != L'<' && entity_w[0] != L'>')) &&
+
156 (skip_bsol || (entity_w[0] != L'\\')) &&
+
157 (skip_dollar || (entity_w[0] != L'$')) &&
+
158 (skip_percnt || (entity_w[0] != L'%')) &&
+
159 (skip_commat || (entity_w[0] != L'@')) &&
+
160 (skip_num || (entity_w[0] != L'#')) &&
+
161 (skip_lpar_rpar || (entity_w[0] != L'(' && entity_w[0] != L')')) &&
+
162 (skip_lcub_rcub || (entity_w[0] != L'{' && entity_w[0] != L'}')) &&
+
163 (skip_lsqb_rsqb || (entity_w[0] != L'[' && entity_w[0] != L']')))
+
164 {
+
165 if (map) map->push_back(mapping<size_t>(offset.from + i, offset.to + dst.size()));
+
166 dst.append(entity_w);
+
167 i = end - src + 1;
+
168 if (map) map->push_back(mapping<size_t>(offset.from + i, offset.to + dst.size()));
+
169 continue;
+
170 }
+
171 }
+
172 }
+
173 dst.append(1, src[i++]);
+
174 }
+
175 }
+
176
+
188 template <class T>
+
189 inline void sgml2wstr(
+
190 _Inout_ std::wstring& dst,
+
191 _In_ const std::basic_string<T>& src,
+
192 _In_ int skip = 0,
+
193 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
+
194 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
+
195 {
+
196 sgml2wstr(dst, src.data(), src.size(), skip, offset, map);
+
197 }
+
198
+
210 template <class T>
+
211 inline std::wstring sgml2wstr(
+
212 _In_reads_or_z_opt_(count_src) const T* src, _In_ size_t count_src,
+
213 _In_ int skip = 0,
+
214 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
+
215 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
+
216 {
+
217 std::wstring dst;
+
218 sgml2wstr(dst, src, count_src, skip, offset, map);
+
219 return dst;
+
220 }
+
221
+
232 template <class T>
+
233 inline std::wstring sgml2wstr(
+
234 _In_ const std::basic_string<T>& src,
+
235 _In_ int skip = 0,
+
236 _In_ const mapping<size_t>& offset = mapping<size_t>(0, 0),
+
237 _Inout_opt_ mapping_vector<size_t>* map = nullptr)
+
238 {
+
239 return sgml2wstr(src.c_str(), src.size(), skip, offset, map);
+
240 }
+
241
+
243 inline const char* chr2sgml(_In_reads_or_z_(count) const wchar_t* entity, _In_ size_t count)
+
244 {
+
245 assert(entity && count);
+
246
+
247 const wchar_t e2 = entity[0];
+
248 for (size_t i = 0, j = _countof(unicode_sgml); i < j; ) {
+
249 size_t m = (i + j) / 2;
+
250 wchar_t e1 = sgml_unicode[unicode_sgml[m]].unicode[0];
+
251 if (e1 < e2)
+
252 i = m + 1;
+
253 else if (e1 > e2)
+
254 j = m;
+
255 else {
+
256 auto r = strncmp(sgml_unicode[unicode_sgml[m]].unicode + 1, _countof(sgml_unicode[0].unicode) - 1, entity + 1, count - 1);
+
257 if (r < 0)
+
258 i = m + 1;
+
259 else if (r > 0)
+
260 j = m;
+
261 else {
+
262 for (; i < m && sgml_unicode[unicode_sgml[m - 1]].unicode[0] == e2 && strncmp(sgml_unicode[unicode_sgml[m - 1]].unicode + 1, _countof(sgml_unicode[0].unicode) - 1, entity + 1, count - 1) == 0; m--);
+
263 return sgml_unicode[unicode_sgml[m]].sgml;
+
264 }
+
265 }
+
266 }
+
267 return nullptr;
+
268 }
+
270
+
279 inline void wstr2sgml(
+
280 _Inout_ std::string& dst,
+
281 _In_reads_or_z_opt_(count_src) const wchar_t* src,
+
282 _In_ size_t count_src,
+
283 _In_ size_t what = 0)
+
284 {
+
285 assert(src || !count_src);
+
286
+
287 const bool
+
288 do_ascii = (what & sgml_full) == 0,
+
289 do_quot = (what & sgml_quot) == 0,
+
290 do_apos = (what & sgml_apos) == 0,
+
291 do_lt_gt = (what & sgml_lt_gt) == 0,
+
292 do_bsol = (what & sgml_bsol) == 0,
+
293 do_dollar = (what & sgml_dollar) == 0,
+
294 do_percnt = (what & sgml_percnt) == 0,
+
295 do_commat = (what & sgml_commat) == 0,
+
296 do_num = (what & sgml_num) == 0,
+
297 do_lpar_rpar = (what & sgml_lpar_rpar) == 0,
+
298 do_lcub_rcub = (what & sgml_lcub_rcub) == 0,
+
299 do_lsqb_rsqb = (what & sgml_lsqb_rsqb) == 0;
+
300
+
301 count_src = wcsnlen(src, count_src);
+
302 dst.reserve(dst.size() + count_src);
+
303 for (size_t i = 0; i < count_src;) {
+
304 size_t n = glyphlen(src + i, count_src - i);
+
305 if (n == 1 &&
+
306 do_ascii && (unsigned int)src[i] < 128 &&
+
307 src[i] != L'&' &&
+
308 (do_quot || (src[i] != L'"')) &&
+
309 (do_apos || (src[i] != L'\'')) &&
+
310 (do_lt_gt || (src[i] != L'<' && src[i] != L'>')) &&
+
311 (do_bsol || (src[i] != L'\\')) &&
+
312 (do_dollar || (src[i] != L'$')) &&
+
313 (do_percnt || (src[i] != L'%')) &&
+
314 (do_commat || (src[i] != L'@')) &&
+
315 (do_num || (src[i] != L'#')) &&
+
316 (do_lpar_rpar || (src[i] != L'(' && src[i] != L')')) &&
+
317 (do_lcub_rcub || (src[i] != L'{' && src[i] != L'}')) &&
+
318 (do_lsqb_rsqb || (src[i] != L'[' && src[i] != L']')))
+
319 {
+
320 // 7-bit ASCII and no desire to encode it as an SGML entity.
+
321 dst.append(1, (char)src[i++]);
+
322 }
+
323 else {
+
324 const char* entity = chr2sgml(src + i, n);
+
325 if (entity) {
+
326 dst.append(1, '&');
+
327 dst.append(entity);
+
328 dst.append(1, ';');
+
329 i += n;
+
330 }
+
331 else if (n == 1) {
+
332 // Trivial character (1 code unit, 1 glyph), no entity available.
+
333 if ((unsigned int)src[i] < 128)
+
334 dst.append(1, (char)src[i++]);
+
335 else {
+
336 char tmp[3 + 8 + 1 + 1];
+
337 snprintf(tmp, _countof(tmp), "&#x%x;", src[i++]);
+
338 dst.append(tmp);
+
339 }
+
340 }
+
341 else {
+
342 // Non-trivial character. Decompose.
+
343 const size_t end = i + n;
+
344 while (i < end) {
+
345 if ((entity = chr2sgml(src + i, 1)) != nullptr) {
+
346 dst.append(1, '&');
+
347 dst.append(entity);
+
348 dst.append(1, ';');
+
349 i++;
+
350 }
+
351 else if ((unsigned int)src[i] < 128)
+
352 dst.append(1, (char)src[i++]);
+
353 else {
+
354 uint32_t unicode;
+
355#ifdef _WIN32
+
356 if (i + 1 < end && is_surrogate_pair(src + i)) {
+
357 unicode = surrogate_pair_to_ucs4(src + i);
+
358 i += 2;
+
359 }
+
360 else
+
361#endif
+
362 {
+
363 unicode = src[i++];
+
364 }
+
365 char tmp[3 + 8 + 1 + 1];
+
366 snprintf(tmp, _countof(tmp), "&#x%x;", unicode);
+
367 dst.append(tmp);
+
368 }
+
369 }
+
370 }
+
371 }
+
372 }
+
373 }
+
374
+
382 inline void wstr2sgml(
+
383 _Inout_ std::string& dst,
+
384 _In_ const std::wstring& src,
+
385 _In_ size_t what = 0)
+
386 {
+
387 wstr2sgml(dst, src.c_str(), src.size(), what);
+
388 }
+
389
+
399 inline std::string wstr2sgml(
+
400 _In_reads_or_z_opt_(count_src) const wchar_t* src,
+
401 _In_ size_t count_src,
+
402 _In_ size_t what = 0)
+
403 {
+
404 std::string dst;
+
405 wstr2sgml(dst, src, count_src, what);
+
406 return dst;
+
407 }
+
408
+
417 inline std::string wstr2sgml(
+
418 _In_ const std::wstring& src,
+
419 _In_ size_t what = 0)
+
420 {
+
421 return wstr2sgml(src.c_str(), src.size(), what);
+
422 }
+
423}
diff --git a/sgml__unicode_8hpp_source.html b/sgml__unicode_8hpp_source.html index 3b640009a..c60fb09ca 100644 --- a/sgml__unicode_8hpp_source.html +++ b/sgml__unicode_8hpp_source.html @@ -3170,7 +3170,7 @@ $(function() { diff --git a/string_8hpp_source.html b/string_8hpp_source.html index fcdc6d7b3..8187f7729 100644 --- a/string_8hpp_source.html +++ b/string_8hpp_source.html @@ -148,483 +148,551 @@ $(function() {
113 template <class T>
114 inline size_t islbreak(_In_reads_or_z_opt_(count) const T* chr, _In_ size_t count)
115 {
-
116 if (count >= 2 && (chr[0] == '\r' && chr[1] == '\n' || chr[0] == '\n' && chr[1] == '\r'))
-
117 return 2;
-
118 if (count > 1 && (chr[0] == '\n' || chr[0] == '\r'))
-
119 return 1;
-
120 return 0;
-
121 }
-
122
-
129 inline size_t glyphlen(_In_reads_or_z_opt_(count) const wchar_t* glyph, size_t count)
-
130 {
-
131 if (count) {
-
132#ifdef _WIN32
-
133 size_t i = count < 2 || !is_surrogate_pair(glyph) ? 1 : 2;
-
134#else
-
135 size_t i = 1;
-
136#endif
-
137 for (; i < count && iscombining(glyph[i]); ++i);
-
138 return i;
-
139 }
-
140 return 0;
-
141 }
-
142
-
150 template <class T>
-
151 inline size_t strlen(_In_z_ const T* str)
-
152 {
-
153 assert(str);
-
154 size_t i;
-
155 for (i = 0; str[i]; ++i);
-
156 return i;
-
157 }
-
158
-
167 template <class T>
-
168 inline size_t strnlen(_In_reads_or_z_opt_(count) const T* str, _In_ size_t count)
-
169 {
-
170 assert(str);
-
171 size_t i;
-
172 for (i = 0; i < count && str[i]; ++i);
-
173 return i;
-
174 }
-
175
-
176 constexpr auto npos{ static_cast<size_t>(-1) };
+
116 _Analysis_assume_(chr || !count);
+
117 if (count >= 2 && (chr[0] == '\r' && chr[1] == '\n' || chr[0] == '\n' && chr[1] == '\r'))
+
118 return 2;
+
119 if (count > 1 && (chr[0] == '\n' || chr[0] == '\r'))
+
120 return 1;
+
121 return 0;
+
122 }
+
123
+
130 inline size_t glyphlen(_In_reads_or_z_opt_(count) const wchar_t* glyph, size_t count)
+
131 {
+
132 _Analysis_assume_(glyph || !count);
+
133 if (count) {
+
134#ifdef _WIN32
+
135 size_t i = count < 2 || !is_surrogate_pair(glyph) ? 1 : 2;
+
136#else
+
137 size_t i = 1;
+
138#endif
+
139 for (; i < count && iscombining(glyph[i]); ++i);
+
140 return i;
+
141 }
+
142 return 0;
+
143 }
+
144
+
152 template <class T>
+
153 inline size_t strlen(_In_z_ const T* str)
+
154 {
+
155 assert(str);
+
156 size_t i;
+
157 for (i = 0; str[i]; ++i);
+
158 return i;
+
159 }
+
160
+
169 template <class T>
+
170 inline size_t strnlen(_In_reads_or_z_opt_(count) const T* str, _In_ size_t count)
+
171 {
+
172 assert(str);
+
173 size_t i;
+
174 for (i = 0; i < count && str[i]; ++i);
+
175 return i;
+
176 }
177
-
187 template <class T>
-
188 inline size_t strnchr(
-
189 _In_reads_or_z_opt_(count) const T* str,
-
190 _In_ size_t count,
-
191 _In_ T chr)
-
192 {
-
193 assert(str || !count);
-
194 for (size_t i = 0; i < count && str[i]; ++i)
-
195 if (str[i] == chr) return i;
-
196 return npos;
-
197 }
-
198
-
208 template <class T>
-
209 inline size_t strrnchr(
-
210 _In_reads_or_z_opt_(count) const T* str,
-
211 _In_ size_t count,
-
212 _In_ T chr)
-
213 {
-
214 assert(str || !count);
-
215 size_t z = npos;
-
216 for (size_t i = 0; i < count && str[i]; ++i)
-
217 if (str[i] == chr) z = i;
-
218 return z;
-
219 }
-
220
-
230 template <class T>
-
231 inline size_t strnichr(
-
232 _In_reads_or_z_opt_(count) const T* str,
-
233 _In_ size_t count,
-
234 _In_ T chr,
-
235 _In_ const std::locale& locale)
-
236 {
-
237 assert(str || !count);
-
238 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
239 chr = ctype.tolower(chr);
-
240 for (size_t i = 0; i < count && str[i]; ++i)
-
241 if (ctype.tolower(str[i]) == chr) return i;
-
242 return npos;
-
243 }
-
244
-
254 template <class T>
-
255 inline size_t strrnichr(
-
256 _In_reads_or_z_opt_(count) const T* str,
-
257 _In_ size_t count,
-
258 _In_ T chr,
-
259 _In_ const std::locale& locale)
-
260 {
-
261 assert(str || !count);
-
262 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
263 chr = ctype.tolower(chr);
-
264 size_t z = npos;
-
265 for (size_t i = 0; i < count && str[i]; ++i)
-
266 if (ctype.tolower(str[i]) == chr) z = i;
-
267 return z;
-
268 }
-
269
-
280 template <class T1, class T2>
-
281 inline int strncmp(
-
282 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
-
283 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2)
-
284 {
-
285 assert(str1 || !count1);
-
286 assert(str2 || !count2);
-
287 size_t i; T1 a; T2 b;
-
288 for (i = 0; i < count1 && i < count2 && ((a = str1[i]) | (b = str2[i])); ++i) {
-
289 if (a > b) return +1;
-
290 if (a < b) return -1;
-
291 }
-
292 if (i < count1 && str1[i]) return +1;
-
293 if (i < count2 && str2[i]) return -1;
-
294 return 0;
-
295 }
-
296
-
307 template <class T>
-
308 inline int strncoll(
-
309 _In_reads_or_z_opt_(count1) const T* str1, _In_ size_t count1,
-
310 _In_reads_or_z_opt_(count2) const T* str2, _In_ size_t count2,
-
311 _In_ const std::locale& locale)
-
312 {
-
313 assert(str1 || !count1);
-
314 assert(str2 || !count2);
-
315 auto& collate = std::use_facet<std::collate<T>>(locale);
-
316 return collate.compare(str1, str1 + count1, str2, str2 + count2);
-
317 }
-
318
-
329 template <class T1, class T2>
-
330 inline int strnicmp(
-
331 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
-
332 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2,
-
333 _In_ const std::locale& locale)
-
334 {
-
335 assert(str1 || !count1);
-
336 assert(str2 || !count2);
-
337 size_t i; T1 a; T2 b;
-
338 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
-
339 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
-
340 for (i = 0; i < count1 && i < count2 && ((a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i]))); i++) {
-
341 if (a > b) return +1;
-
342 if (a < b) return -1;
-
343 }
-
344 if (i < count1 && str1[i]) return +1;
-
345 if (i < count2 && str2[i]) return -1;
-
346 return 0;
-
347 }
-
348
-
358 template <class T1, class T2>
-
359 inline size_t strnstr(
-
360 _In_reads_or_z_opt_(count) const T1* str,
-
361 _In_ size_t count,
-
362 _In_z_ const T2* sample)
-
363 {
-
364 assert(str || !count);
-
365 assert(sample);
-
366 for (size_t offset = 0;; ++offset) {
-
367 for (size_t i = offset, j = 0;; ++i, ++j) {
-
368 if (!sample[j])
-
369 return offset;
-
370 if (i >= count || !str[i])
-
371 return npos;
-
372 if (str[i] != sample[j])
-
373 break;
-
374 }
-
375 }
-
376 }
-
377
-
387 template <class T1, class T2>
-
388 inline size_t strnistr(
-
389 _In_reads_or_z_opt_(count) const T1* str,
-
390 _In_ size_t count,
-
391 _In_z_ const T2* sample,
-
392 _In_ const std::locale& locale)
-
393 {
-
394 assert(str || !count);
-
395 assert(sample);
-
396 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
-
397 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
-
398 for (size_t offset = 0;; ++offset) {
-
399 for (size_t i = offset, j = 0;; ++i, ++j) {
-
400 if (!sample[j])
-
401 return offset;
-
402 if (i >= count || !str[i])
-
403 return npos;
-
404 if (ctype1.tolower(str[i]) != ctype2.tolower(sample[j]))
-
405 break;
-
406 }
-
407 }
-
408 }
-
409
-
419 template <class T1, class T2>
-
420 inline size_t strncpy(
-
421 _Out_writes_(count) _Post_maybez_ T1* dst,
-
422 _In_reads_or_z_opt_(count) const T2* src, _In_ size_t count)
-
423 {
-
424 assert(dst && src || !count);
-
425 for (size_t i = 0; ; ++i) {
-
426 if (i >= count)
-
427 return i;
-
428 if ((dst[i] = src[i]) == 0)
+
178 constexpr auto npos{ static_cast<size_t>(-1) };
+
179
+
189 template <class T>
+
190 inline size_t strnchr(
+
191 _In_reads_or_z_opt_(count) const T* str,
+
192 _In_ size_t count,
+
193 _In_ T chr)
+
194 {
+
195 assert(str || !count);
+
196 for (size_t i = 0; i < count && str[i]; ++i)
+
197 if (str[i] == chr) return i;
+
198 return npos;
+
199 }
+
200
+
210 template <class T>
+
211 inline size_t strrnchr(
+
212 _In_reads_or_z_opt_(count) const T* str,
+
213 _In_ size_t count,
+
214 _In_ T chr)
+
215 {
+
216 assert(str || !count);
+
217 size_t z = npos;
+
218 for (size_t i = 0; i < count && str[i]; ++i)
+
219 if (str[i] == chr) z = i;
+
220 return z;
+
221 }
+
222
+
232 template <class T>
+
233 inline size_t strnichr(
+
234 _In_reads_or_z_opt_(count) const T* str,
+
235 _In_ size_t count,
+
236 _In_ T chr,
+
237 _In_ const std::locale& locale)
+
238 {
+
239 assert(str || !count);
+
240 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
241 chr = ctype.tolower(chr);
+
242 for (size_t i = 0; i < count && str[i]; ++i)
+
243 if (ctype.tolower(str[i]) == chr) return i;
+
244 return npos;
+
245 }
+
246
+
256 template <class T>
+
257 inline size_t strrnichr(
+
258 _In_reads_or_z_opt_(count) const T* str,
+
259 _In_ size_t count,
+
260 _In_ T chr,
+
261 _In_ const std::locale& locale)
+
262 {
+
263 assert(str || !count);
+
264 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
265 chr = ctype.tolower(chr);
+
266 size_t z = npos;
+
267 for (size_t i = 0; i < count && str[i]; ++i)
+
268 if (ctype.tolower(str[i]) == chr) z = i;
+
269 return z;
+
270 }
+
271
+
282 template <class T1, class T2>
+
283 inline int strncmp(
+
284 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
+
285 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2)
+
286 {
+
287 assert(str1 || !count1);
+
288 assert(str2 || !count2);
+
289 size_t i; T1 a; T2 b;
+
290 for (i = 0; i < count1 && i < count2 && ((a = str1[i]) | (b = str2[i])); ++i) {
+
291 if (a > b) return +1;
+
292 if (a < b) return -1;
+
293 }
+
294 if (i < count1 && str1[i]) return +1;
+
295 if (i < count2 && str2[i]) return -1;
+
296 return 0;
+
297 }
+
298
+
309 template <class T>
+
310 inline int strncoll(
+
311 _In_reads_or_z_opt_(count1) const T* str1, _In_ size_t count1,
+
312 _In_reads_or_z_opt_(count2) const T* str2, _In_ size_t count2,
+
313 _In_ const std::locale& locale)
+
314 {
+
315 assert(str1 || !count1);
+
316 assert(str2 || !count2);
+
317 auto& collate = std::use_facet<std::collate<T>>(locale);
+
318 return collate.compare(str1, str1 + count1, str2, str2 + count2);
+
319 }
+
320
+
331 template <class T1, class T2>
+
332 inline int strnicmp(
+
333 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
+
334 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2,
+
335 _In_ const std::locale& locale)
+
336 {
+
337 assert(str1 || !count1);
+
338 assert(str2 || !count2);
+
339 size_t i; T1 a; T2 b;
+
340 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
+
341 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
+
342 for (i = 0; i < count1 && i < count2 && ((a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i]))); i++) {
+
343 if (a > b) return +1;
+
344 if (a < b) return -1;
+
345 }
+
346 if (i < count1 && str1[i]) return +1;
+
347 if (i < count2 && str2[i]) return -1;
+
348 return 0;
+
349 }
+
350
+
360 template <class T1, class T2>
+
361 inline size_t strnstr(
+
362 _In_reads_or_z_opt_(count) const T1* str,
+
363 _In_ size_t count,
+
364 _In_z_ const T2* sample)
+
365 {
+
366 assert(str || !count);
+
367 assert(sample);
+
368 for (size_t offset = 0;; ++offset) {
+
369 for (size_t i = offset, j = 0;; ++i, ++j) {
+
370 if (!sample[j])
+
371 return offset;
+
372 if (i >= count || !str[i])
+
373 return npos;
+
374 if (str[i] != sample[j])
+
375 break;
+
376 }
+
377 }
+
378 }
+
379
+
389 template <class T1, class T2>
+
390 inline size_t strnistr(
+
391 _In_reads_or_z_opt_(count) const T1* str,
+
392 _In_ size_t count,
+
393 _In_z_ const T2* sample,
+
394 _In_ const std::locale& locale)
+
395 {
+
396 assert(str || !count);
+
397 assert(sample);
+
398 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
+
399 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
+
400 for (size_t offset = 0;; ++offset) {
+
401 for (size_t i = offset, j = 0;; ++i, ++j) {
+
402 if (!sample[j])
+
403 return offset;
+
404 if (i >= count || !str[i])
+
405 return npos;
+
406 if (ctype1.tolower(str[i]) != ctype2.tolower(sample[j]))
+
407 break;
+
408 }
+
409 }
+
410 }
+
411
+
421 template <class T1, class T2>
+
422 inline size_t strncpy(
+
423 _Out_writes_(count) _Post_maybez_ T1* dst,
+
424 _In_reads_or_z_opt_(count) const T2* src, _In_ size_t count)
+
425 {
+
426 assert(dst && src || !count);
+
427 for (size_t i = 0; ; ++i) {
+
428 if (i >= count)
429 return i;
-
430 }
-
431 }
-
432
-
443 template <class T1, class T2>
-
444 inline size_t strncpy(
-
445 _Out_writes_(count_dst) _Post_maybez_ T1* dst, _In_ size_t count_dst,
-
446 _In_reads_or_z_opt_(count_src) const T2* src, _In_ size_t count_src)
-
447 {
-
448 assert(dst || !count_dst);
-
449 assert(src || !count_src);
-
450 for (size_t i = 0; ; ++i)
-
451 {
-
452 if (i > count_dst)
-
453 return i;
-
454 if (i > count_src) {
-
455 dst[i] = 0;
-
456 return i;
-
457 }
-
458 if ((dst[i] = src[i]) == 0)
-
459 return i;
-
460 }
-
461 }
-
462
-
472 template <class T>
-
473 inline size_t crlf2nl(_Out_writes_z_(strlen(src)) T* dst, _In_z_ const T* src)
-
474 {
-
475 assert(dst);
-
476 assert(src);
-
477 size_t i, j;
-
478 for (i = j = 0; src[j];) {
-
479 if (src[j] != '\r' || src[j + 1] != '\n')
-
480 dst[i++] = src[j++];
-
481 else {
-
482 dst[i++] = '\n';
-
483 j += 2;
-
484 }
-
485 }
-
486 dst[i] = 0;
-
487 return i;
-
488 }
-
489
-
491 template <class T, class T_bin>
-
492 inline T_bin strtoint(
-
493 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
494 _Out_opt_ size_t* end,
-
495 _In_ int radix,
-
496 _Out_ uint8_t& flags)
-
497 {
-
498 assert(str || !count);
-
499 assert(radix == 0 || 2 <= radix && radix <= 36);
-
500
-
501 size_t i = 0;
-
502 T_bin value = 0, digit,
-
503 max_ui = (T_bin)-1,
-
504 max_ui_pre1, max_ui_pre2;
-
505
-
506 flags = 0;
+
430 if ((dst[i] = src[i]) == 0)
+
431 return i;
+
432 }
+
433 }
+
434
+
445 template <class T1, class T2>
+
446 inline size_t strncpy(
+
447 _Out_writes_(count_dst) _Post_maybez_ T1* dst, _In_ size_t count_dst,
+
448 _In_reads_or_z_opt_(count_src) const T2* src, _In_ size_t count_src)
+
449 {
+
450 assert(dst || !count_dst);
+
451 assert(src || !count_src);
+
452 for (size_t i = 0; ; ++i)
+
453 {
+
454 if (i > count_dst)
+
455 return i;
+
456 if (i > count_src) {
+
457 dst[i] = 0;
+
458 return i;
+
459 }
+
460 if ((dst[i] = src[i]) == 0)
+
461 return i;
+
462 }
+
463 }
+
464
+
474 template <class T>
+
475 inline size_t crlf2nl(_Out_writes_z_(strlen(src)) T* dst, _In_z_ const T* src)
+
476 {
+
477 assert(dst);
+
478 assert(src);
+
479 size_t i, j;
+
480 for (i = j = 0; src[j];) {
+
481 if (src[j] != '\r' || src[j + 1] != '\n')
+
482 dst[i++] = src[j++];
+
483 else {
+
484 dst[i++] = '\n';
+
485 j += 2;
+
486 }
+
487 }
+
488 dst[i] = 0;
+
489 return i;
+
490 }
+
491
+
493 template <class T, class T_bin>
+
494 inline T_bin strtoint(
+
495 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
496 _Out_opt_ size_t* end,
+
497 _In_ int radix,
+
498 _Out_ uint8_t& flags)
+
499 {
+
500 assert(str || !count);
+
501 assert(radix == 0 || 2 <= radix && radix <= 36);
+
502
+
503 size_t i = 0;
+
504 T_bin value = 0, digit,
+
505 max_ui = (T_bin)-1,
+
506 max_ui_pre1, max_ui_pre2;
507
-
508 // Skip leading spaces.
-
509 for (;; ++i) {
-
510 if (i >= count || !str[i]) goto error;
-
511 if (!isspace(str[i])) break;
-
512 }
-
513
-
514 // Read the sign.
-
515 if (str[i] == '+') {
-
516 flags &= ~0x01;
-
517 ++i;
-
518 if (i >= count || !str[i]) goto error;
-
519 }
-
520 else if (str[i] == '-') {
-
521 flags |= 0x01;
-
522 ++i;
-
523 if (i >= count || !str[i]) goto error;
-
524 }
-
525
-
526 if (radix == 16) {
-
527 // On hexadecimal, allow leading 0x.
-
528 if (str[i] == '0' && i + 1 < count && (str[i + 1] == 'x' || str[i + 1] == 'X')) {
-
529 i += 2;
-
530 if (i >= count || !str[i]) goto error;
-
531 }
-
532 }
-
533 else if (!radix) {
-
534 // Autodetect radix.
-
535 if (str[i] == '0') {
-
536 ++i;
-
537 if (i >= count || !str[i]) goto error;
-
538 if (str[i] == 'x' || str[i] == 'X') {
-
539 radix = 16;
-
540 ++i;
-
541 if (i >= count || !str[i]) goto error;
-
542 }
-
543 else
-
544 radix = 8;
-
545 }
-
546 else
-
547 radix = 10;
-
548 }
-
549
-
550 // We have the radix.
-
551 max_ui_pre1 = max_ui / (T_bin)radix;
-
552 max_ui_pre2 = max_ui % (T_bin)radix;
-
553 for (;;) {
-
554 if ('0' <= str[i] && str[i] <= '9')
-
555 digit = (T_bin)str[i] - '0';
-
556 else if ('A' <= str[i] && str[i] <= 'Z')
-
557 digit = (T_bin)str[i] - 'A' + '\x0a';
-
558 else if ('a' <= str[i] && str[i] <= 'z')
-
559 digit = (T_bin)str[i] - 'a' + '\x0a';
-
560 else
-
561 goto error;
-
562 if (digit >= (T_bin)radix)
+
508 flags = 0;
+
509
+
510 // Skip leading spaces.
+
511 for (;; ++i) {
+
512 if (i >= count || !str[i]) goto error;
+
513 if (!isspace(str[i])) break;
+
514 }
+
515
+
516 // Read the sign.
+
517 if (str[i] == '+') {
+
518 flags &= ~0x01;
+
519 ++i;
+
520 if (i >= count || !str[i]) goto error;
+
521 }
+
522 else if (str[i] == '-') {
+
523 flags |= 0x01;
+
524 ++i;
+
525 if (i >= count || !str[i]) goto error;
+
526 }
+
527
+
528 if (radix == 16) {
+
529 // On hexadecimal, allow leading 0x.
+
530 if (str[i] == '0' && i + 1 < count && (str[i + 1] == 'x' || str[i + 1] == 'X')) {
+
531 i += 2;
+
532 if (i >= count || !str[i]) goto error;
+
533 }
+
534 }
+
535 else if (!radix) {
+
536 // Autodetect radix.
+
537 if (str[i] == '0') {
+
538 ++i;
+
539 if (i >= count || !str[i]) goto error;
+
540 if (str[i] == 'x' || str[i] == 'X') {
+
541 radix = 16;
+
542 ++i;
+
543 if (i >= count || !str[i]) goto error;
+
544 }
+
545 else
+
546 radix = 8;
+
547 }
+
548 else
+
549 radix = 10;
+
550 }
+
551
+
552 // We have the radix.
+
553 max_ui_pre1 = max_ui / (T_bin)radix;
+
554 max_ui_pre2 = max_ui % (T_bin)radix;
+
555 for (;;) {
+
556 if ('0' <= str[i] && str[i] <= '9')
+
557 digit = (T_bin)str[i] - '0';
+
558 else if ('A' <= str[i] && str[i] <= 'Z')
+
559 digit = (T_bin)str[i] - 'A' + '\x0a';
+
560 else if ('a' <= str[i] && str[i] <= 'z')
+
561 digit = (T_bin)str[i] - 'a' + '\x0a';
+
562 else
563 goto error;
-
564
-
565 if (value < max_ui_pre1 || // Multiplication nor addition will not overflow.
-
566 value == max_ui_pre1 && digit <= max_ui_pre2) // Small digits will not overflow.
-
567 value = value * (T_bin)radix + digit;
-
568 else {
-
569 // Overflow!
-
570 flags |= 0x02;
-
571 }
-
572
-
573 ++i;
-
574 if (i >= count || !str[i])
-
575 goto error;
-
576 }
-
577
-
578 error:
-
579 if (end) *end = i;
-
580 return value;
-
581 }
-
583
-
594 template <class T, class T_bin>
-
595 T_bin strtoint(
-
596 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
597 _Out_opt_ size_t* end,
-
598 _In_ int radix)
-
599 {
-
600 uint8_t flags;
-
601 T_bin value;
-
602
-
603 switch (sizeof(T_bin)) {
-
604 case 1:
-
605 value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags);
-
606 if ((flags & 0x01) && (value & 0x80)) {
-
607 // Sign bit is 1 => overflow.
-
608 flags |= 0x02;
-
609 }
-
610 return (flags & 0x02) ?
-
611 (flags & 0x01) ? (T_bin)0x80 : (T_bin)0x7f :
-
612 (flags & 0x01) ? -value : value;
-
613
-
614 case 2:
-
615 value = (T_bin)strtoint<T, T_U2>(str, count, end, radix, flags);
-
616 if ((flags & 0x01) && (value & 0x8000)) {
-
617 // Sign bit is 1 => overflow.
-
618 flags |= 0x02;
-
619 }
-
620 return (flags & 0x02) ?
-
621 (flags & 0x01) ? (T_bin)0x8000 : (T_bin)0x7fff :
-
622 (flags & 0x01) ? -value : value;
-
623
-
624 case 4:
-
625 value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags);
-
626 if ((flags & 0x01) && (value & 0x80000000)) {
-
627 // Sign bit is 1 => overflow.
-
628 flags |= 0x02;
-
629 }
-
630 return (flags & 0x02) ?
-
631 (flags & 0x01) ? (T_bin)0x80000000 : (T_bin)0x7fffffff :
-
632 (flags & 0x01) ? -value : value;
-
633
-
634 case 8:
-
635 value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags);
-
636 if ((flags & 0x01) && (value & 0x8000000000000000)) {
-
637 // Sign bit is 1 => overflow.
-
638 flags |= 0x02;
-
639 }
-
640 return (flags & 0x02) ?
-
641 (flags & 0x01) ? (T_bin)0x8000000000000000 : (T_bin)0x7fffffffffffffff :
-
642 (flags & 0x01) ? -value : value;
-
643
-
644 default:
-
645 throw std::invalid_argument("Unsupported bit length");
-
646 }
-
647 }
-
648
-
659 template <class T, class T_bin>
-
660 inline T_bin strtouint(
-
661 _In_reads_or_z_opt_(count) const T* str,
-
662 _In_ size_t count,
-
663 _Out_opt_ size_t* end,
-
664 _In_ int radix)
-
665 {
-
666 uint8_t flags;
-
667 T_bin value;
-
668
-
669 switch (sizeof(T_bin)) {
-
670 case 1: value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags); break;
-
671 case 2: value = (T_bin)strtoint<T, uint16_t>(str, count, end, radix, flags); break;
-
672 case 4: value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags); break;
-
673 case 8: value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags); break;
-
674 default: throw std::invalid_argument("Unsupported bit length");
-
675 }
-
676
-
677 return (flags & 0x02) ?
-
678 (flags & 0x01) ? (T_bin)0 : (T_bin)-1 :
-
679 (flags & 0x01) ? ~value : value;
-
680 }
-
681
-
692 template <class T>
-
693 inline int32_t strto32(
-
694 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
695 _Out_opt_ size_t* end,
-
696 _In_ int radix)
-
697 {
-
698 return strtoint<T, int32_t>(str, count, end, radix);
-
699 }
-
700
-
711 template <class T>
-
712 inline int64_t strto64(
-
713 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
714 _Out_opt_ size_t* end,
-
715 _In_ int radix)
-
716 {
-
717 return strtoint<T, int64_t>(str, count, end, radix);
-
718 }
-
719
-
731 template <class T>
-
732 inline intptr_t strtoi(
-
733 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
734 _Out_opt_ size_t* end,
-
735 _In_ int radix)
-
736 {
-
737#if defined(_WIN64) || defined(__LP64__)
-
738 return (intptr_t)strto64(str, count, end, radix);
-
739#else
-
740 return (intptr_t)strto32(str, count, end, radix);
-
741#endif
-
742 }
-
743
-
754 template <class T>
-
755 inline uint32_t strtou32(
-
756 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
757 _Out_opt_ size_t* end,
-
758 _In_ int radix)
-
759 {
-
760 return strtouint<T, uint32_t>(str, count, end, radix);
-
761 }
-
762
-
773 template <class T>
-
774 inline uint64_t strtou64(
-
775 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
776 _Out_opt_ size_t* end,
-
777 _In_ int radix)
-
778 {
-
779 return strtouint<T, uint64_t>(str, count, end, radix);
-
780 }
-
781
-
793 template <class T>
-
794 inline size_t strtoui(
-
795 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
796 _Out_opt_ size_t* end,
-
797 _In_ int radix)
-
798 {
-
799#if defined(_WIN64) || defined(__LP64__)
-
800 return (size_t)strtou64(str, count, end, radix);
-
801#else
-
802 return (size_t)strtou32(str, count, end, radix);
-
803#endif
-
804 }
-
805}
+
564 if (digit >= (T_bin)radix)
+
565 goto error;
+
566
+
567 if (value < max_ui_pre1 || // Multiplication nor addition will not overflow.
+
568 value == max_ui_pre1 && digit <= max_ui_pre2) // Small digits will not overflow.
+
569 value = value * (T_bin)radix + digit;
+
570 else {
+
571 // Overflow!
+
572 flags |= 0x02;
+
573 }
+
574
+
575 ++i;
+
576 if (i >= count || !str[i])
+
577 goto error;
+
578 }
+
579
+
580 error:
+
581 if (end) *end = i;
+
582 return value;
+
583 }
+
585
+
596 template <class T, class T_bin>
+
597 T_bin strtoint(
+
598 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
599 _Out_opt_ size_t* end,
+
600 _In_ int radix)
+
601 {
+
602 uint8_t flags;
+
603 T_bin value;
+
604
+
605 switch (sizeof(T_bin)) {
+
606 case 1:
+
607 value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags);
+
608 if ((flags & 0x01) && (value & 0x80)) {
+
609 // Sign bit is 1 => overflow.
+
610 flags |= 0x02;
+
611 }
+
612 return (flags & 0x02) ?
+
613 (flags & 0x01) ? (T_bin)0x80 : (T_bin)0x7f :
+
614 (flags & 0x01) ? -value : value;
+
615
+
616 case 2:
+
617 value = (T_bin)strtoint<T, T_U2>(str, count, end, radix, flags);
+
618 if ((flags & 0x01) && (value & 0x8000)) {
+
619 // Sign bit is 1 => overflow.
+
620 flags |= 0x02;
+
621 }
+
622 return (flags & 0x02) ?
+
623 (flags & 0x01) ? (T_bin)0x8000 : (T_bin)0x7fff :
+
624 (flags & 0x01) ? -value : value;
+
625
+
626 case 4:
+
627 value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags);
+
628 if ((flags & 0x01) && (value & 0x80000000)) {
+
629 // Sign bit is 1 => overflow.
+
630 flags |= 0x02;
+
631 }
+
632 return (flags & 0x02) ?
+
633 (flags & 0x01) ? (T_bin)0x80000000 : (T_bin)0x7fffffff :
+
634 (flags & 0x01) ? -value : value;
+
635
+
636 case 8:
+
637 value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags);
+
638 if ((flags & 0x01) && (value & 0x8000000000000000)) {
+
639 // Sign bit is 1 => overflow.
+
640 flags |= 0x02;
+
641 }
+
642 return (flags & 0x02) ?
+
643 (flags & 0x01) ? (T_bin)0x8000000000000000 : (T_bin)0x7fffffffffffffff :
+
644 (flags & 0x01) ? -value : value;
+
645
+
646 default:
+
647 throw std::invalid_argument("Unsupported bit length");
+
648 }
+
649 }
+
650
+
661 template <class T, class T_bin>
+
662 inline T_bin strtouint(
+
663 _In_reads_or_z_opt_(count) const T* str,
+
664 _In_ size_t count,
+
665 _Out_opt_ size_t* end,
+
666 _In_ int radix)
+
667 {
+
668 uint8_t flags;
+
669 T_bin value;
+
670
+
671 switch (sizeof(T_bin)) {
+
672 case 1: value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags); break;
+
673 case 2: value = (T_bin)strtoint<T, uint16_t>(str, count, end, radix, flags); break;
+
674 case 4: value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags); break;
+
675 case 8: value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags); break;
+
676 default: throw std::invalid_argument("Unsupported bit length");
+
677 }
+
678
+
679 return (flags & 0x02) ?
+
680 (flags & 0x01) ? (T_bin)0 : (T_bin)-1 :
+
681 (flags & 0x01) ? ~value : value;
+
682 }
+
683
+
694 template <class T>
+
695 inline int32_t strto32(
+
696 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
697 _Out_opt_ size_t* end,
+
698 _In_ int radix)
+
699 {
+
700 return strtoint<T, int32_t>(str, count, end, radix);
+
701 }
+
702
+
713 template <class T>
+
714 inline int64_t strto64(
+
715 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
716 _Out_opt_ size_t* end,
+
717 _In_ int radix)
+
718 {
+
719 return strtoint<T, int64_t>(str, count, end, radix);
+
720 }
+
721
+
733 template <class T>
+
734 inline intptr_t strtoi(
+
735 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
736 _Out_opt_ size_t* end,
+
737 _In_ int radix)
+
738 {
+
739#if defined(_WIN64) || defined(__LP64__)
+
740 return (intptr_t)strto64(str, count, end, radix);
+
741#else
+
742 return (intptr_t)strto32(str, count, end, radix);
+
743#endif
+
744 }
+
745
+
756 template <class T>
+
757 inline uint32_t strtou32(
+
758 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
759 _Out_opt_ size_t* end,
+
760 _In_ int radix)
+
761 {
+
762 return strtouint<T, uint32_t>(str, count, end, radix);
+
763 }
+
764
+
775 template <class T>
+
776 inline uint64_t strtou64(
+
777 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
778 _Out_opt_ size_t* end,
+
779 _In_ int radix)
+
780 {
+
781 return strtouint<T, uint64_t>(str, count, end, radix);
+
782 }
+
783
+
795 template <class T>
+
796 inline size_t strtoui(
+
797 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
798 _Out_opt_ size_t* end,
+
799 _In_ int radix)
+
800 {
+
801#if defined(_WIN64) || defined(__LP64__)
+
802 return (size_t)strtou64(str, count, end, radix);
+
803#else
+
804 return (size_t)strtou32(str, count, end, radix);
+
805#endif
+
806 }
+
807
+
809 inline int vsnprintf(_Out_z_cap_(capacity) char *str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const char *format, _In_ va_list arg)
+
810 {
+
811#if _MSC_VER <= 1600
+
812#pragma warning(suppress: 4996)
+
813 return _vsnprintf(str, capacity, format, arg);
+
814#else
+
815#pragma warning(suppress: 4996)
+
816 return ::vsnprintf(str, capacity, format, arg);
+
817#endif
+
818 }
+
819
+
820 inline int vsnprintf(_Out_z_cap_(capacity) wchar_t *str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const wchar_t *format, _In_ va_list arg) noexcept
+
821 {
+
822#pragma warning(suppress: 4996)
+
823 return _vsnwprintf(str, capacity, format, arg);
+
824 }
+
826
+
827
+
835 template<class _Elem, class _Traits, class _Ax>
+
836 inline void vappendf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, _In_ va_list arg)
+
837 {
+
838 _Elem buf[1024/sizeof(_Elem)];
+
839
+
840 // Try with stack buffer first.
+
841 int count = vsnprintf(buf, _countof(buf) - 1, format, arg);
+
842 if (count >= 0) {
+
843 // Copy from stack.
+
844 str.append(buf, count);
+
845 } else {
+
846 for (size_t capacity = 2*1024/sizeof(_Elem);; capacity *= 2) {
+
847 // Allocate on heap and retry.
+
848 auto buf_dyn = std::make_unique<_Elem[]>(capacity);
+
849 count = vsnprintf(buf_dyn.get(), capacity - 1, format, arg);
+
850 if (count >= 0) {
+
851 str.append(buf_dyn.get(), count);
+
852 break;
+
853 }
+
854 }
+
855 }
+
856 }
+
857
+
864 template<class _Elem, class _Traits, class _Ax>
+
865 inline void appendf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, ...)
+
866 {
+
867 va_list arg;
+
868 va_start(arg, format);
+
869 vappendf(str, format, arg);
+
870 va_end(arg);
+
871 }
+
872
+
880 template<class _Elem, class _Traits, class _Ax>
+
881 inline void vsprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, _In_ va_list arg)
+
882 {
+
883 str.clear();
+
884 appendf(str, format, arg);
+
885 }
+
886
+
893 template<class _Elem, class _Traits, class _Ax>
+
894 inline void sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax> &str, _In_z_ _Printf_format_string_ const _Elem *format, ...)
+
895 {
+
896 va_list arg;
+
897 va_start(arg, format);
+
898 vsprintf(str, format, arg);
+
899 va_end(arg);
+
900 }
+
901}
diff --git a/structstdex_1_1interval-members.html b/structstdex_1_1interval-members.html index 3e5b145ff..5f0440236 100644 --- a/structstdex_1_1interval-members.html +++ b/structstdex_1_1interval-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/structstdex_1_1interval.html b/structstdex_1_1interval.html index 9faad9a41..3580e5151 100644 --- a/structstdex_1_1interval.html +++ b/structstdex_1_1interval.html @@ -384,7 +384,7 @@ template<class T > diff --git a/structstdex_1_1mapping-members.html b/structstdex_1_1mapping-members.html index 0099f1fef..12e25ec96 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 c31dc03d6..1270a3799 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 f707945ad..5445da717 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 6f2e2047d..8ec4cc43a 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 77c9072fe..9d6b93505 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 113ee67d6..1e7083f43 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 2749df5f6..295d81eaa 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 c06f1abae..e6e7738f2 100644 --- a/structstdex_1_1parser_1_1http__factor__more.html +++ b/structstdex_1_1parser_1_1http__factor__more.html @@ -93,7 +93,7 @@ constexpr bool operator()< diff --git a/unicode_8hpp_source.html b/unicode_8hpp_source.html new file mode 100644 index 000000000..a16ec67b8 --- /dev/null +++ b/unicode_8hpp_source.html @@ -0,0 +1,214 @@ + + + + + + + +stdex: include/stdex/unicode.hpp Source File + + + + + + + + + +
+
+ + + + + + +
+
stdex +
+
Additional custom or not Standard C++ covered algorithms
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
unicode.hpp
+
+
+
1/*
+
2 SPDX-License-Identifier: MIT
+
3 Copyright © 2023 Amebis
+
4*/
+
5
+
6#pragma once
+
7
+
8#include "sal.hpp"
+
9#include <assert.h>
+
10#ifdef _WIN32
+
11#include <windows.h>
+
12#endif
+
13#include <memory>
+
14#include <string>
+
15
+
16namespace stdex
+
17{
+
18 enum class charset_id {
+
19 default = 0,
+
20 };
+
21
+
32 inline void str2wstr(
+
33 _Inout_ std::wstring& dst,
+
34 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
+
35 _In_ charset_id charset = charset_id::default)
+
36 {
+
37 assert(src || !count_src);
+
38#ifdef _WIN32
+
39 assert(count_src < INT_MAX || count_src == SIZE_MAX);
+
40 constexpr DWORD dwFlags = MB_PRECOMPOSED;
+
41
+
42 // Try to convert to stack buffer first.
+
43 WCHAR szStackBuffer[1024/sizeof(WCHAR)];
+
44 int cch = MultiByteToWideChar(static_cast<UINT>(charset), dwFlags, src, static_cast<int>(count_src), szStackBuffer, _countof(szStackBuffer));
+
45 if (cch) {
+
46 // Append from stack.
+
47 dst.append(szStackBuffer, count_src != SIZE_MAX ? wcsnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
48 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
49 // Query the required output size. Allocate buffer. Then convert again.
+
50 cch = MultiByteToWideChar(static_cast<UINT>(charset), dwFlags, src, static_cast<int>(count_src), NULL, 0);
+
51 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
52 cch = MultiByteToWideChar(static_cast<UINT>(charset), dwFlags, src, static_cast<int>(count_src), szBuffer.get(), cch);
+
53 dst.append(szBuffer.get(), count_src != SIZE_MAX ? wcsnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
54 }
+
55#else
+
56 throw std::exception("not implemented");
+
57#endif
+
58 }
+
59
+
69 inline void str2wstr(
+
70 _Inout_ std::wstring& dst,
+
71 _In_ const std::string& src,
+
72 _In_ charset_id charset = charset_id::default)
+
73 {
+
74 str2wstr(dst, src.data(), src.size(), charset);
+
75 }
+
76
+
86 inline std::wstring str2wstr(
+
87 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
+
88 _In_ charset_id charset = charset_id::default)
+
89 {
+
90 std::wstring dst;
+
91 str2wstr(dst, src, count_src, charset);
+
92 return dst;
+
93 }
+
94
+
103 inline std::wstring str2wstr(
+
104 _In_ const std::string& src,
+
105 _In_ charset_id charset = charset_id::default)
+
106 {
+
107 return str2wstr(src.c_str(), src.size(), charset);
+
108 }
+
109
+
118 inline void wstr2str(
+
119 _Inout_ std::string& dst,
+
120 _In_reads_or_z_opt_(count_src) const wchar_t* src,
+
121 _In_ size_t count_src,
+
122 _In_ charset_id charset = charset_id::default)
+
123 {
+
124 assert(src || !count_src);
+
125#ifdef _WIN32
+
126 assert(count_src < INT_MAX || count_src == SIZE_MAX);
+
127 constexpr DWORD dwFlags = 0;
+
128 constexpr LPCCH lpDefaultChar = NULL;
+
129
+
130 // Try to convert to stack buffer first.
+
131 CHAR szStackBuffer[1024/sizeof(CHAR)];
+
132 int cch = WideCharToMultiByte(static_cast<UINT>(charset), dwFlags, src, static_cast<int>(count_src), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, NULL);
+
133 if (cch) {
+
134 // Copy from stack. Be careful not to include zero terminator.
+
135 dst.append(szStackBuffer, count_src != SIZE_MAX ? strnlen(szStackBuffer, cch) : (size_t)cch - 1);
+
136 } else if (::GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
137 // Query the required output size. Allocate buffer. Then convert again.
+
138 cch = WideCharToMultiByte(static_cast<UINT>(charset), dwFlags, src, static_cast<int>(count_src), NULL, 0, lpDefaultChar, NULL);
+
139 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
140 cch = WideCharToMultiByte(static_cast<UINT>(charset), dwFlags, src, static_cast<int>(count_src), szBuffer.get(), cch, lpDefaultChar, NULL);
+
141 dst.append(szBuffer.get(), count_src != SIZE_MAX ? strnlen(szBuffer.get(), cch) : (size_t)cch - 1);
+
142 }
+
143#else
+
144 throw std::exception("not implemented");
+
145#endif
+
146 }
+
147
+
155 inline void wstr2str(
+
156 _Inout_ std::string& dst,
+
157 _In_ const std::wstring& src,
+
158 _In_ charset_id charset = charset_id::default)
+
159 {
+
160 wstr2str(dst, src.c_str(), src.size(), charset);
+
161 }
+
162
+
172 inline std::string wstr2str(
+
173 _In_reads_or_z_opt_(count_src) const wchar_t* src,
+
174 _In_ size_t count_src,
+
175 _In_ charset_id charset = charset_id::default)
+
176 {
+
177 std::string dst;
+
178 wstr2str(dst, src, count_src, charset);
+
179 return dst;
+
180 }
+
181
+
190 inline std::string wstr2str(
+
191 _In_ const std::wstring& src,
+
192 _In_ charset_id charset = charset_id::default)
+
193 {
+
194 return wstr2str(src.c_str(), src.size(), charset);
+
195 }
+
196}
+
+ + + + diff --git a/vector__queue_8hpp_source.html b/vector__queue_8hpp_source.html index 7c4e40dde..4acc54f96 100644 --- a/vector__queue_8hpp_source.html +++ b/vector__queue_8hpp_source.html @@ -386,7 +386,7 @@ $(function() {