diff --git a/_unit_tests_2compat_8hpp_source.html b/_unit_tests_2compat_8hpp_source.html index b4234dc4c..d59145f3f 100644 --- a/_unit_tests_2compat_8hpp_source.html +++ b/_unit_tests_2compat_8hpp_source.html @@ -170,7 +170,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/annotated.html b/annotated.html index 7aee667b4..ca835eafc 100644 --- a/annotated.html +++ b/annotated.html @@ -268,7 +268,7 @@ $(function() { diff --git a/base64_8hpp_source.html b/base64_8hpp_source.html index fd092affe..351f61e71 100644 --- a/base64_8hpp_source.html +++ b/base64_8hpp_source.html @@ -541,7 +541,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/chrono_8hpp_source.html b/chrono_8hpp_source.html index e4b8dd608..eb1948378 100644 --- a/chrono_8hpp_source.html +++ b/chrono_8hpp_source.html @@ -466,7 +466,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/classes.html b/classes.html index a2ec1e4cc..37d9d2828 100644 --- a/classes.html +++ b/classes.html @@ -136,7 +136,7 @@ $(function() { diff --git a/classstdex_1_1base64__dec-members.html b/classstdex_1_1base64__dec-members.html index 9e12be8a4..62c5ee4a3 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 d650383d7..76aa15ccc 100644 --- a/classstdex_1_1base64__dec.html +++ b/classstdex_1_1base64__dec.html @@ -239,7 +239,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 3b549ed19..2f652b74b 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 b6ee6f791..847bd72c8 100644 --- a/classstdex_1_1base64__enc.html +++ b/classstdex_1_1base64__enc.html @@ -244,7 +244,7 @@ template<class _Elem , class _Traits , class _Ax > diff --git a/classstdex_1_1base64__reader-members.html b/classstdex_1_1base64__reader-members.html index 5972d0e23..80c940f93 100644 --- a/classstdex_1_1base64__reader-members.html +++ b/classstdex_1_1base64__reader-members.html @@ -162,7 +162,7 @@ $(function() { diff --git a/classstdex_1_1base64__reader.html b/classstdex_1_1base64__reader.html index f5e0553ff..c85b88b15 100644 --- a/classstdex_1_1base64__reader.html +++ b/classstdex_1_1base64__reader.html @@ -443,7 +443,7 @@ size_t m_num diff --git a/classstdex_1_1base64__writer-members.html b/classstdex_1_1base64__writer-members.html index a6f396273..b9d85c30b 100644 --- a/classstdex_1_1base64__writer-members.html +++ b/classstdex_1_1base64__writer-members.html @@ -164,7 +164,7 @@ $(function() { diff --git a/classstdex_1_1base64__writer.html b/classstdex_1_1base64__writer.html index 294373d02..74c76a1e7 100644 --- a/classstdex_1_1base64__writer.html +++ b/classstdex_1_1base64__writer.html @@ -450,7 +450,7 @@ size_t m_num diff --git a/classstdex_1_1basic__hash-members.html b/classstdex_1_1basic__hash-members.html index 96a4e352f..61cd92811 100644 --- a/classstdex_1_1basic__hash-members.html +++ b/classstdex_1_1basic__hash-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1basic__hash.html b/classstdex_1_1basic__hash.html index 2a3757b66..9c2b40daf 100644 --- a/classstdex_1_1basic__hash.html +++ b/classstdex_1_1basic__hash.html @@ -255,7 +255,7 @@ template<class T > diff --git a/classstdex_1_1block__hash-members.html b/classstdex_1_1block__hash-members.html index e5159dad7..949c5d366 100644 --- a/classstdex_1_1block__hash-members.html +++ b/classstdex_1_1block__hash-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1block__hash.html b/classstdex_1_1block__hash.html index a7a405894..4a9039baa 100644 --- a/classstdex_1_1block__hash.html +++ b/classstdex_1_1block__hash.html @@ -245,7 +245,7 @@ template<class T > diff --git a/classstdex_1_1charset__encoder-members.html b/classstdex_1_1charset__encoder-members.html index 63a5c8104..374147ab8 100644 --- a/classstdex_1_1charset__encoder-members.html +++ b/classstdex_1_1charset__encoder-members.html @@ -102,7 +102,7 @@ $(function() { diff --git a/classstdex_1_1charset__encoder.html b/classstdex_1_1charset__encoder.html index 14c61ab3d..34035bea1 100644 --- a/classstdex_1_1charset__encoder.html +++ b/classstdex_1_1charset__encoder.html @@ -607,7 +607,7 @@ template<class _Traits_to = std::char_traits<T_to>, class _Alloc_to = diff --git a/classstdex_1_1crc32__hash-members.html b/classstdex_1_1crc32__hash-members.html index fc669d3cb..7893c2572 100644 --- a/classstdex_1_1crc32__hash-members.html +++ b/classstdex_1_1crc32__hash-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1crc32__hash.html b/classstdex_1_1crc32__hash.html index 261b301b6..4bb999810 100644 --- a/classstdex_1_1crc32__hash.html +++ b/classstdex_1_1crc32__hash.html @@ -245,7 +245,7 @@ crc32_t m_value diff --git a/classstdex_1_1global__progress-members.html b/classstdex_1_1global__progress-members.html index bdffc2c29..b6485e5b6 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 00ffee3f0..665caa6fa 100644 --- a/classstdex_1_1global__progress.html +++ b/classstdex_1_1global__progress.html @@ -547,7 +547,7 @@ template<class T > diff --git a/classstdex_1_1hex__dec-members.html b/classstdex_1_1hex__dec-members.html index 38cb5aa1f..dfe4f571e 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 6ae510fde..ae6ace878 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 e696d41f6..9067fce76 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 bca6869a1..90155fe77 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_1html_1_1comment-members.html b/classstdex_1_1html_1_1comment-members.html index ad15e4578..d4b1d4f34 100644 --- a/classstdex_1_1html_1_1comment-members.html +++ b/classstdex_1_1html_1_1comment-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1comment.html b/classstdex_1_1html_1_1comment.html index 81642cffb..52c2c7276 100644 --- a/classstdex_1_1html_1_1comment.html +++ b/classstdex_1_1html_1_1comment.html @@ -135,7 +135,7 @@ stdex::parser::html_sequence_t  diff --git a/classstdex_1_1html_1_1declaration-members.html b/classstdex_1_1html_1_1declaration-members.html index 33eb114ee..7c23ff06a 100644 --- a/classstdex_1_1html_1_1declaration-members.html +++ b/classstdex_1_1html_1_1declaration-members.html @@ -91,7 +91,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1declaration.html b/classstdex_1_1html_1_1declaration.html index a69115cde..f2816056f 100644 --- a/classstdex_1_1html_1_1declaration.html +++ b/classstdex_1_1html_1_1declaration.html @@ -139,7 +139,7 @@ stdex::parser::html_sequence_t  diff --git a/classstdex_1_1html_1_1document-members.html b/classstdex_1_1html_1_1document-members.html index 38cb8bc7b..8e13bcc52 100644 --- a/classstdex_1_1html_1_1document-members.html +++ b/classstdex_1_1html_1_1document-members.html @@ -107,7 +107,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1document.html b/classstdex_1_1html_1_1document.html index f089dbdc8..f7b1c0d91 100644 --- a/classstdex_1_1html_1_1document.html +++ b/classstdex_1_1html_1_1document.html @@ -197,7 +197,7 @@ class stdex::html::document< _Elem, _Traits, _Alloc >

HTML documen

diff --git a/classstdex_1_1html_1_1element-members.html b/classstdex_1_1html_1_1element-members.html index e478a8fb6..9aeb13977 100644 --- a/classstdex_1_1html_1_1element-members.html +++ b/classstdex_1_1html_1_1element-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1element.html b/classstdex_1_1html_1_1element.html index 559753e2e..c3c0fba76 100644 --- a/classstdex_1_1html_1_1element.html +++ b/classstdex_1_1html_1_1element.html @@ -152,7 +152,7 @@ stdex::parser::html_sequence_t  diff --git a/classstdex_1_1html_1_1element__end-members.html b/classstdex_1_1html_1_1element__end-members.html index d83059074..5a0c641bc 100644 --- a/classstdex_1_1html_1_1element__end-members.html +++ b/classstdex_1_1html_1_1element__end-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1element__end.html b/classstdex_1_1html_1_1element__end.html index 911019568..b93dc8df5 100644 --- a/classstdex_1_1html_1_1element__end.html +++ b/classstdex_1_1html_1_1element__end.html @@ -143,7 +143,7 @@ stdex::parser::html_sequence_t  diff --git a/classstdex_1_1html_1_1element__start-members.html b/classstdex_1_1html_1_1element__start-members.html index ee5b6a132..5a6f9671f 100644 --- a/classstdex_1_1html_1_1element__start-members.html +++ b/classstdex_1_1html_1_1element__start-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1element__start.html b/classstdex_1_1html_1_1element__start.html index 314454055..1e1abc708 100644 --- a/classstdex_1_1html_1_1element__start.html +++ b/classstdex_1_1html_1_1element__start.html @@ -162,7 +162,7 @@ template<class T > diff --git a/classstdex_1_1html_1_1instruction-members.html b/classstdex_1_1html_1_1instruction-members.html index 5593a6eb1..6af13c41f 100644 --- a/classstdex_1_1html_1_1instruction-members.html +++ b/classstdex_1_1html_1_1instruction-members.html @@ -90,7 +90,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1instruction.html b/classstdex_1_1html_1_1instruction.html index f865cc7c6..57e5e758e 100644 --- a/classstdex_1_1html_1_1instruction.html +++ b/classstdex_1_1html_1_1instruction.html @@ -135,7 +135,7 @@ stdex::parser::html_sequence_t  diff --git a/classstdex_1_1html_1_1parser-members.html b/classstdex_1_1html_1_1parser-members.html index 83024c41e..2a96f8c1c 100644 --- a/classstdex_1_1html_1_1parser-members.html +++ b/classstdex_1_1html_1_1parser-members.html @@ -110,7 +110,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1parser.html b/classstdex_1_1html_1_1parser.html index caf68130b..ddc8afd65 100644 --- a/classstdex_1_1html_1_1parser.html +++ b/classstdex_1_1html_1_1parser.html @@ -618,7 +618,7 @@ template<class _Elem , class _Traits , class _Alloc > diff --git a/classstdex_1_1html_1_1sequence-members.html b/classstdex_1_1html_1_1sequence-members.html index e1d71571e..fa50258b5 100644 --- a/classstdex_1_1html_1_1sequence-members.html +++ b/classstdex_1_1html_1_1sequence-members.html @@ -88,7 +88,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1sequence.html b/classstdex_1_1html_1_1sequence.html index 5c3ebd885..921ac7b6f 100644 --- a/classstdex_1_1html_1_1sequence.html +++ b/classstdex_1_1html_1_1sequence.html @@ -130,7 +130,7 @@ stdex::parser::html_sequence_t  diff --git a/classstdex_1_1html_1_1starting__token-members.html b/classstdex_1_1html_1_1starting__token-members.html index 7d74fa0f4..62604b991 100644 --- a/classstdex_1_1html_1_1starting__token-members.html +++ b/classstdex_1_1html_1_1starting__token-members.html @@ -99,7 +99,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1starting__token.html b/classstdex_1_1html_1_1starting__token.html index a36ead9c4..1118ea8a5 100644 --- a/classstdex_1_1html_1_1starting__token.html +++ b/classstdex_1_1html_1_1starting__token.html @@ -181,7 +181,7 @@ class stdex::html::starting_token< _Elem, _Traits, _Alloc >

Token

diff --git a/classstdex_1_1html_1_1text__token-members.html b/classstdex_1_1html_1_1text__token-members.html index d4dc81312..1c809d9e3 100644 --- a/classstdex_1_1html_1_1text__token-members.html +++ b/classstdex_1_1html_1_1text__token-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1text__token.html b/classstdex_1_1html_1_1text__token.html index 5d458f38e..c1b60ddba 100644 --- a/classstdex_1_1html_1_1text__token.html +++ b/classstdex_1_1html_1_1text__token.html @@ -168,7 +168,7 @@ class stdex::html::text_token< _Elem, _Traits, _Alloc >

Token repr

diff --git a/classstdex_1_1html_1_1token-members.html b/classstdex_1_1html_1_1token-members.html index 467bb68ab..f83df787b 100644 --- a/classstdex_1_1html_1_1token-members.html +++ b/classstdex_1_1html_1_1token-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1token.html b/classstdex_1_1html_1_1token.html index 9c1c4d4f3..d1b6eb532 100644 --- a/classstdex_1_1html_1_1token.html +++ b/classstdex_1_1html_1_1token.html @@ -231,7 +231,7 @@ template<class _Traits = std::char_traits<wchar_t>, class _Alloc = st diff --git a/classstdex_1_1html_1_1url__token-members.html b/classstdex_1_1html_1_1url__token-members.html index 18fca5727..c04aad884 100644 --- a/classstdex_1_1html_1_1url__token-members.html +++ b/classstdex_1_1html_1_1url__token-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1html_1_1url__token.html b/classstdex_1_1html_1_1url__token.html index a7b622c49..5d39443fd 100644 --- a/classstdex_1_1html_1_1url__token.html +++ b/classstdex_1_1html_1_1url__token.html @@ -163,7 +163,7 @@ class stdex::html::url_token< _Elem, _Traits, _Alloc >

HTTP token

diff --git a/classstdex_1_1idrec_1_1record-members.html b/classstdex_1_1idrec_1_1record-members.html index d0d68cb70..491c6dbcc 100644 --- a/classstdex_1_1idrec_1_1record-members.html +++ b/classstdex_1_1idrec_1_1record-members.html @@ -100,7 +100,7 @@ $(function() { diff --git a/classstdex_1_1idrec_1_1record.html b/classstdex_1_1idrec_1_1record.html index 1949af2bd..4bcfafc68 100644 --- a/classstdex_1_1idrec_1_1record.html +++ b/classstdex_1_1idrec_1_1record.html @@ -837,7 +837,7 @@ template<class T , class T_ID , const T_ID ID, class T_SIZE , T_SIZE ALIGN> diff --git a/classstdex_1_1lazy__progress-members.html b/classstdex_1_1lazy__progress-members.html index 2b1f45b7b..37f2804f7 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 77fa96cab..ca9b8516c 100644 --- a/classstdex_1_1lazy__progress.html +++ b/classstdex_1_1lazy__progress.html @@ -279,7 +279,7 @@ template<class T > diff --git a/classstdex_1_1md5__hash-members.html b/classstdex_1_1md5__hash-members.html index 6f60fba76..db6a2671d 100644 --- a/classstdex_1_1md5__hash-members.html +++ b/classstdex_1_1md5__hash-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1md5__hash.html b/classstdex_1_1md5__hash.html index f447379b9..bd56fb3f4 100644 --- a/classstdex_1_1md5__hash.html +++ b/classstdex_1_1md5__hash.html @@ -259,7 +259,7 @@ uint32_t m_temp [16] diff --git a/classstdex_1_1parser_1_1basic__angle-members.html b/classstdex_1_1parser_1_1basic__angle-members.html index 21120b397..c0b31ecd2 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 f31873e5b..31a5e6e50 100644 --- a/classstdex_1_1parser_1_1basic__angle.html +++ b/classstdex_1_1parser_1_1basic__angle.html @@ -244,7 +244,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__any__cu-members.html b/classstdex_1_1parser_1_1basic__any__cu-members.html index 63fe81735..a83761f74 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 faf680ac9..b9e09dc57 100644 --- a/classstdex_1_1parser_1_1basic__any__cu.html +++ b/classstdex_1_1parser_1_1basic__any__cu.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__bol-members.html b/classstdex_1_1parser_1_1basic__bol-members.html index ce087b7a0..804890c77 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 b912eb2f9..5b0058a2b 100644 --- a/classstdex_1_1parser_1_1basic__bol.html +++ b/classstdex_1_1parser_1_1basic__bol.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__branch-members.html b/classstdex_1_1parser_1_1basic__branch-members.html index 703e8efa1..9872acf41 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 d97a6c937..f293d2b40 100644 --- a/classstdex_1_1parser_1_1basic__branch.html +++ b/classstdex_1_1parser_1_1basic__branch.html @@ -253,7 +253,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__chemical__formula-members.html b/classstdex_1_1parser_1_1basic__chemical__formula-members.html index 6d51087a1..2f830cdf7 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 b7dd38b3a..08f5151e9 100644 --- a/classstdex_1_1parser_1_1basic__chemical__formula.html +++ b/classstdex_1_1parser_1_1basic__chemical__formula.html @@ -239,7 +239,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__creditor__reference-members.html b/classstdex_1_1parser_1_1basic__creditor__reference-members.html index 382e1e0d4..da96d3adb 100644 --- a/classstdex_1_1parser_1_1basic__creditor__reference-members.html +++ b/classstdex_1_1parser_1_1basic__creditor__reference-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__creditor__reference.html b/classstdex_1_1parser_1_1basic__creditor__reference.html index 2d03bdc9e..5de747853 100644 --- a/classstdex_1_1parser_1_1basic__creditor__reference.html +++ b/classstdex_1_1parser_1_1basic__creditor__reference.html @@ -240,7 +240,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__css__cdc-members.html b/classstdex_1_1parser_1_1basic__css__cdc-members.html index abcaf5e83..9451ec2aa 100644 --- a/classstdex_1_1parser_1_1basic__css__cdc-members.html +++ b/classstdex_1_1parser_1_1basic__css__cdc-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__css__cdc.html b/classstdex_1_1parser_1_1basic__css__cdc.html index ad086b832..9369623c7 100644 --- a/classstdex_1_1parser_1_1basic__css__cdc.html +++ b/classstdex_1_1parser_1_1basic__css__cdc.html @@ -139,7 +139,7 @@ class stdex::parser::basic_css_cdc< T >

Legacy CSS comment end

diff --git a/classstdex_1_1parser_1_1basic__css__cdo-members.html b/classstdex_1_1parser_1_1basic__css__cdo-members.html index b41a7c8b4..68b199025 100644 --- a/classstdex_1_1parser_1_1basic__css__cdo-members.html +++ b/classstdex_1_1parser_1_1basic__css__cdo-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__css__cdo.html b/classstdex_1_1parser_1_1basic__css__cdo.html index 0dd7662be..18e5fdc2c 100644 --- a/classstdex_1_1parser_1_1basic__css__cdo.html +++ b/classstdex_1_1parser_1_1basic__css__cdo.html @@ -139,7 +139,7 @@ class stdex::parser::basic_css_cdo< T >

Legacy CSS comment start <

diff --git a/classstdex_1_1parser_1_1basic__css__comment-members.html b/classstdex_1_1parser_1_1basic__css__comment-members.html index b239b49b3..0ff16dd7c 100644 --- a/classstdex_1_1parser_1_1basic__css__comment-members.html +++ b/classstdex_1_1parser_1_1basic__css__comment-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__css__comment.html b/classstdex_1_1parser_1_1basic__css__comment.html index 36d45867e..5b99780dd 100644 --- a/classstdex_1_1parser_1_1basic__css__comment.html +++ b/classstdex_1_1parser_1_1basic__css__comment.html @@ -176,7 +176,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__css__import-members.html b/classstdex_1_1parser_1_1basic__css__import-members.html index cb957201b..2eccc8a98 100644 --- a/classstdex_1_1parser_1_1basic__css__import-members.html +++ b/classstdex_1_1parser_1_1basic__css__import-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__css__import.html b/classstdex_1_1parser_1_1basic__css__import.html index 6f9d5294e..5e399a141 100644 --- a/classstdex_1_1parser_1_1basic__css__import.html +++ b/classstdex_1_1parser_1_1basic__css__import.html @@ -176,7 +176,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__css__string-members.html b/classstdex_1_1parser_1_1basic__css__string-members.html index 53acac88a..5eefd5321 100644 --- a/classstdex_1_1parser_1_1basic__css__string-members.html +++ b/classstdex_1_1parser_1_1basic__css__string-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__css__string.html b/classstdex_1_1parser_1_1basic__css__string.html index 09c643bf5..b3511898e 100644 --- a/classstdex_1_1parser_1_1basic__css__string.html +++ b/classstdex_1_1parser_1_1basic__css__string.html @@ -176,7 +176,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__css__uri-members.html b/classstdex_1_1parser_1_1basic__css__uri-members.html index f29305ba1..ed67d1c87 100644 --- a/classstdex_1_1parser_1_1basic__css__uri-members.html +++ b/classstdex_1_1parser_1_1basic__css__uri-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__css__uri.html b/classstdex_1_1parser_1_1basic__css__uri.html index 98a9c5a8e..dd5cb145e 100644 --- a/classstdex_1_1parser_1_1basic__css__uri.html +++ b/classstdex_1_1parser_1_1basic__css__uri.html @@ -176,7 +176,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__cu-members.html b/classstdex_1_1parser_1_1basic__cu-members.html index 714cd6de5..67671680c 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 c6411ce1c..a1e22acc3 100644 --- a/classstdex_1_1parser_1_1basic__cu.html +++ b/classstdex_1_1parser_1_1basic__cu.html @@ -201,7 +201,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__cu__set-members.html b/classstdex_1_1parser_1_1basic__cu__set-members.html index 21f25c72b..e798ffc8b 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 52f7355d1..6b9a17b2b 100644 --- a/classstdex_1_1parser_1_1basic__cu__set.html +++ b/classstdex_1_1parser_1_1basic__cu__set.html @@ -210,7 +210,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__date-members.html b/classstdex_1_1parser_1_1basic__date-members.html index 724445d6f..06c361cf7 100644 --- a/classstdex_1_1parser_1_1basic__date-members.html +++ b/classstdex_1_1parser_1_1basic__date-members.html @@ -100,7 +100,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__date.html b/classstdex_1_1parser_1_1basic__date.html index c122e2003..35cec61d0 100644 --- a/classstdex_1_1parser_1_1basic__date.html +++ b/classstdex_1_1parser_1_1basic__date.html @@ -252,7 +252,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__dns__domain__char-members.html b/classstdex_1_1parser_1_1basic__dns__domain__char-members.html index 8dc303cc8..0c0021677 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 daf763deb..7341fcc8e 100644 --- a/classstdex_1_1parser_1_1basic__dns__domain__char.html +++ b/classstdex_1_1parser_1_1basic__dns__domain__char.html @@ -203,7 +203,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__dns__name-members.html b/classstdex_1_1parser_1_1basic__dns__name-members.html index 62c08be8a..83ff4e745 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 fe87cf3c1..661c96753 100644 --- a/classstdex_1_1parser_1_1basic__dns__name.html +++ b/classstdex_1_1parser_1_1basic__dns__name.html @@ -205,7 +205,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__email__address-members.html b/classstdex_1_1parser_1_1basic__email__address-members.html index 074724c67..0892996e0 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 4e8d5cd02..ce11173b2 100644 --- a/classstdex_1_1parser_1_1basic__email__address.html +++ b/classstdex_1_1parser_1_1basic__email__address.html @@ -245,7 +245,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__emoticon-members.html b/classstdex_1_1parser_1_1basic__emoticon-members.html index 13918da69..9cb04ecbf 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 4f684b1ca..78d677bcb 100644 --- a/classstdex_1_1parser_1_1basic__emoticon.html +++ b/classstdex_1_1parser_1_1basic__emoticon.html @@ -243,7 +243,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__eol-members.html b/classstdex_1_1parser_1_1basic__eol-members.html index ef4e052a4..e101a8080 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 fb297195c..17983a32e 100644 --- a/classstdex_1_1parser_1_1basic__eol.html +++ b/classstdex_1_1parser_1_1basic__eol.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__fraction-members.html b/classstdex_1_1parser_1_1basic__fraction-members.html index 0918f11b2..9232cf386 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 024842448..74ef97dae 100644 --- a/classstdex_1_1parser_1_1basic__fraction.html +++ b/classstdex_1_1parser_1_1basic__fraction.html @@ -232,7 +232,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__html__declaration__condition__end-members.html b/classstdex_1_1parser_1_1basic__html__declaration__condition__end-members.html index dad2e1a28..3e111a051 100644 --- a/classstdex_1_1parser_1_1basic__html__declaration__condition__end-members.html +++ b/classstdex_1_1parser_1_1basic__html__declaration__condition__end-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__html__declaration__condition__end.html b/classstdex_1_1parser_1_1basic__html__declaration__condition__end.html index 3148051c0..df043547f 100644 --- a/classstdex_1_1parser_1_1basic__html__declaration__condition__end.html +++ b/classstdex_1_1parser_1_1basic__html__declaration__condition__end.html @@ -139,7 +139,7 @@ class stdex::parser::basic_html_declaration_condition_end< T >

End

diff --git a/classstdex_1_1parser_1_1basic__html__declaration__condition__start-members.html b/classstdex_1_1parser_1_1basic__html__declaration__condition__start-members.html index 06e0e5870..5007fe907 100644 --- a/classstdex_1_1parser_1_1basic__html__declaration__condition__start-members.html +++ b/classstdex_1_1parser_1_1basic__html__declaration__condition__start-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__html__declaration__condition__start.html b/classstdex_1_1parser_1_1basic__html__declaration__condition__start.html index 1df5d21e6..cc5bc4b09 100644 --- a/classstdex_1_1parser_1_1basic__html__declaration__condition__start.html +++ b/classstdex_1_1parser_1_1basic__html__declaration__condition__start.html @@ -175,7 +175,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__html__ident-members.html b/classstdex_1_1parser_1_1basic__html__ident-members.html index 2927bbc64..96bcc3515 100644 --- a/classstdex_1_1parser_1_1basic__html__ident-members.html +++ b/classstdex_1_1parser_1_1basic__html__ident-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__html__ident.html b/classstdex_1_1parser_1_1basic__html__ident.html index 61c0d4c6c..b16bcbc9b 100644 --- a/classstdex_1_1parser_1_1basic__html__ident.html +++ b/classstdex_1_1parser_1_1basic__html__ident.html @@ -139,7 +139,7 @@ class stdex::parser::basic_html_ident< T >

Contiguous sequence of

diff --git a/classstdex_1_1parser_1_1basic__html__tag-members.html b/classstdex_1_1parser_1_1basic__html__tag-members.html index 26067b3a6..36b5d113d 100644 --- a/classstdex_1_1parser_1_1basic__html__tag-members.html +++ b/classstdex_1_1parser_1_1basic__html__tag-members.html @@ -98,7 +98,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__html__tag.html b/classstdex_1_1parser_1_1basic__html__tag.html index 002ebfc13..9c30954c2 100644 --- a/classstdex_1_1parser_1_1basic__html__tag.html +++ b/classstdex_1_1parser_1_1basic__html__tag.html @@ -194,7 +194,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__html__value-members.html b/classstdex_1_1parser_1_1basic__html__value-members.html index 4fa1357e3..20937bdb4 100644 --- a/classstdex_1_1parser_1_1basic__html__value-members.html +++ b/classstdex_1_1parser_1_1basic__html__value-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__html__value.html b/classstdex_1_1parser_1_1basic__html__value.html index fd744d0f8..6cad48c43 100644 --- a/classstdex_1_1parser_1_1basic__html__value.html +++ b/classstdex_1_1parser_1_1basic__html__value.html @@ -176,7 +176,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__iban-members.html b/classstdex_1_1parser_1_1basic__iban-members.html index 90506b60c..a15c04b91 100644 --- a/classstdex_1_1parser_1_1basic__iban-members.html +++ b/classstdex_1_1parser_1_1basic__iban-members.html @@ -97,7 +97,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__iban.html b/classstdex_1_1parser_1_1basic__iban.html index 449595cfd..41b04b201 100644 --- a/classstdex_1_1parser_1_1basic__iban.html +++ b/classstdex_1_1parser_1_1basic__iban.html @@ -244,7 +244,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer-members.html b/classstdex_1_1parser_1_1basic__integer-members.html index cd6d3555b..5522a0d10 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 4c5a938bf..86d526f44 100644 --- a/classstdex_1_1parser_1_1basic__integer.html +++ b/classstdex_1_1parser_1_1basic__integer.html @@ -180,7 +180,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer10-members.html b/classstdex_1_1parser_1_1basic__integer10-members.html index 87bdd8705..423ed4a0c 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 9e057c296..49ec9d9f9 100644 --- a/classstdex_1_1parser_1_1basic__integer10.html +++ b/classstdex_1_1parser_1_1basic__integer10.html @@ -234,7 +234,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer10ts-members.html b/classstdex_1_1parser_1_1basic__integer10ts-members.html index c9176a785..2c1f36576 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 63f40ff7d..7752b638a 100644 --- a/classstdex_1_1parser_1_1basic__integer10ts.html +++ b/classstdex_1_1parser_1_1basic__integer10ts.html @@ -248,7 +248,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__integer16-members.html b/classstdex_1_1parser_1_1basic__integer16-members.html index 991f0aa1d..7d518c79a 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 a8f2c61e0..4649af7f5 100644 --- a/classstdex_1_1parser_1_1basic__integer16.html +++ b/classstdex_1_1parser_1_1basic__integer16.html @@ -252,7 +252,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__ipv4__address-members.html b/classstdex_1_1parser_1_1basic__ipv4__address-members.html index 4a4725a02..75fb12610 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 bc2d6b8ef..8859097fd 100644 --- a/classstdex_1_1parser_1_1basic__ipv4__address.html +++ b/classstdex_1_1parser_1_1basic__ipv4__address.html @@ -265,7 +265,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__ipv6__address-members.html b/classstdex_1_1parser_1_1basic__ipv6__address-members.html index 16edb6b49..88282b7ae 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 01071fb3d..66ac867f5 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__address.html +++ b/classstdex_1_1parser_1_1basic__ipv6__address.html @@ -290,7 +290,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char-members.html b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char-members.html index 57a175e9a..b0cd39578 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 1d033a30b..e57658a3b 100644 --- a/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1basic__ipv6__scope__id__char.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__iterations-members.html b/classstdex_1_1parser_1_1basic__iterations-members.html index a580c3a6d..89ae4bf00 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 7beb8b7be..266edeca6 100644 --- a/classstdex_1_1parser_1_1basic__iterations.html +++ b/classstdex_1_1parser_1_1basic__iterations.html @@ -211,7 +211,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__json__string-members.html b/classstdex_1_1parser_1_1basic__json__string-members.html index 5d3ea2851..42558a6f2 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 308e1ac0b..058a6026d 100644 --- a/classstdex_1_1parser_1_1basic__json__string.html +++ b/classstdex_1_1parser_1_1basic__json__string.html @@ -260,7 +260,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__mime__type-members.html b/classstdex_1_1parser_1_1basic__mime__type-members.html index da685aa06..a67884830 100644 --- a/classstdex_1_1parser_1_1basic__mime__type-members.html +++ b/classstdex_1_1parser_1_1basic__mime__type-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__mime__type.html b/classstdex_1_1parser_1_1basic__mime__type.html index 025afba20..f7991856c 100644 --- a/classstdex_1_1parser_1_1basic__mime__type.html +++ b/classstdex_1_1parser_1_1basic__mime__type.html @@ -184,7 +184,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__mixed__numeral-members.html b/classstdex_1_1parser_1_1basic__mixed__numeral-members.html index 0fdbe9dd8..2e433f0e0 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 efdb9f989..caa6350cd 100644 --- a/classstdex_1_1parser_1_1basic__mixed__numeral.html +++ b/classstdex_1_1parser_1_1basic__mixed__numeral.html @@ -247,7 +247,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__monetary__numeral-members.html b/classstdex_1_1parser_1_1basic__monetary__numeral-members.html index e9e0377d9..1cb56c297 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 6e67b8667..2bae71b34 100644 --- a/classstdex_1_1parser_1_1basic__monetary__numeral.html +++ b/classstdex_1_1parser_1_1basic__monetary__numeral.html @@ -251,7 +251,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__noop-members.html b/classstdex_1_1parser_1_1basic__noop-members.html index b284fedf8..aa2893cb2 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 4c6aa3772..65413cc6e 100644 --- a/classstdex_1_1parser_1_1basic__noop.html +++ b/classstdex_1_1parser_1_1basic__noop.html @@ -188,7 +188,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__parser-members.html b/classstdex_1_1parser_1_1basic__parser-members.html index 4d446841e..98e516574 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 110c0aa7a..8e4d05590 100644 --- a/classstdex_1_1parser_1_1basic__parser.html +++ b/classstdex_1_1parser_1_1basic__parser.html @@ -212,7 +212,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 48fcd29ed..5775be72d 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 54a51921e..177b77080 100644 --- a/classstdex_1_1parser_1_1basic__permutation.html +++ b/classstdex_1_1parser_1_1basic__permutation.html @@ -216,7 +216,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__phone__number-members.html b/classstdex_1_1parser_1_1basic__phone__number-members.html index c05b37c9f..57797ade1 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 fbc708b87..267ea8ded 100644 --- a/classstdex_1_1parser_1_1basic__phone__number.html +++ b/classstdex_1_1parser_1_1basic__phone__number.html @@ -246,7 +246,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__punct__cu-members.html b/classstdex_1_1parser_1_1basic__punct__cu-members.html index c20b28e88..d841231a7 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 f02b7c0d0..a22a2555c 100644 --- a/classstdex_1_1parser_1_1basic__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__punct__cu.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__roman__numeral-members.html b/classstdex_1_1parser_1_1basic__roman__numeral-members.html index 4cdb45dd1..ed89c41ad 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 0e00f80fb..1f2ed5a54 100644 --- a/classstdex_1_1parser_1_1basic__roman__numeral.html +++ b/classstdex_1_1parser_1_1basic__roman__numeral.html @@ -231,7 +231,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__scientific__numeral-members.html b/classstdex_1_1parser_1_1basic__scientific__numeral-members.html index 9c8533f0a..4a32a133e 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 c1b25405c..8f31af9e3 100644 --- a/classstdex_1_1parser_1_1basic__scientific__numeral.html +++ b/classstdex_1_1parser_1_1basic__scientific__numeral.html @@ -267,7 +267,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__score-members.html b/classstdex_1_1parser_1_1basic__score-members.html index d53bfefae..d48e908bb 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 0a5dda4c9..9229070bc 100644 --- a/classstdex_1_1parser_1_1basic__score.html +++ b/classstdex_1_1parser_1_1basic__score.html @@ -236,7 +236,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__sequence-members.html b/classstdex_1_1parser_1_1basic__sequence-members.html index 5a3eb83d3..3aebcc57d 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 e71b42efd..bc88c69bf 100644 --- a/classstdex_1_1parser_1_1basic__sequence.html +++ b/classstdex_1_1parser_1_1basic__sequence.html @@ -209,7 +209,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__set-members.html b/classstdex_1_1parser_1_1basic__set-members.html index 1191570a6..d86150663 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 b9a07a0bc..37285ea91 100644 --- a/classstdex_1_1parser_1_1basic__set.html +++ b/classstdex_1_1parser_1_1basic__set.html @@ -223,7 +223,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__si__reference-members.html b/classstdex_1_1parser_1_1basic__si__reference-members.html index ebc511db1..d27d2044c 100644 --- a/classstdex_1_1parser_1_1basic__si__reference-members.html +++ b/classstdex_1_1parser_1_1basic__si__reference-members.html @@ -102,7 +102,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__si__reference.html b/classstdex_1_1parser_1_1basic__si__reference.html index 8a271aeab..4e33369f4 100644 --- a/classstdex_1_1parser_1_1basic__si__reference.html +++ b/classstdex_1_1parser_1_1basic__si__reference.html @@ -265,7 +265,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html b/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html index 3cce255fd..8fa344ee0 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html +++ b/classstdex_1_1parser_1_1basic__si__reference__delimiter-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__si__reference__delimiter.html b/classstdex_1_1parser_1_1basic__si__reference__delimiter.html index f61fe8a91..a3e59a46d 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__delimiter.html +++ b/classstdex_1_1parser_1_1basic__si__reference__delimiter.html @@ -192,7 +192,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__si__reference__part-members.html b/classstdex_1_1parser_1_1basic__si__reference__part-members.html index c18590f56..bf61ed00a 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__part-members.html +++ b/classstdex_1_1parser_1_1basic__si__reference__part-members.html @@ -92,7 +92,7 @@ $(function() { diff --git a/classstdex_1_1parser_1_1basic__si__reference__part.html b/classstdex_1_1parser_1_1basic__si__reference__part.html index 62e397db2..b8a73acf1 100644 --- a/classstdex_1_1parser_1_1basic__si__reference__part.html +++ b/classstdex_1_1parser_1_1basic__si__reference__part.html @@ -192,7 +192,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__signed__numeral-members.html b/classstdex_1_1parser_1_1basic__signed__numeral-members.html index a79e4c534..a13513c91 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 ac21b67e8..6480767c5 100644 --- a/classstdex_1_1parser_1_1basic__signed__numeral.html +++ b/classstdex_1_1parser_1_1basic__signed__numeral.html @@ -239,7 +239,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__space__cu-members.html b/classstdex_1_1parser_1_1basic__space__cu-members.html index dc4958fa6..c0a84cbda 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 3fb6cd4df..f38aa7122 100644 --- a/classstdex_1_1parser_1_1basic__space__cu.html +++ b/classstdex_1_1parser_1_1basic__space__cu.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__space__or__punct__cu-members.html b/classstdex_1_1parser_1_1basic__space__or__punct__cu-members.html index 6a675135c..fd0423d7b 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 45a81782b..10b2e6cbb 100644 --- a/classstdex_1_1parser_1_1basic__space__or__punct__cu.html +++ b/classstdex_1_1parser_1_1basic__space__or__punct__cu.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__string-members.html b/classstdex_1_1parser_1_1basic__string-members.html index d0f1f3b09..b3572820c 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 da7f912df..d0c478be6 100644 --- a/classstdex_1_1parser_1_1basic__string.html +++ b/classstdex_1_1parser_1_1basic__string.html @@ -198,7 +198,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__string__branch-members.html b/classstdex_1_1parser_1_1basic__string__branch-members.html index ad8a0555a..4e5886d21 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 314ce2709..7dafbfa91 100644 --- a/classstdex_1_1parser_1_1basic__string__branch.html +++ b/classstdex_1_1parser_1_1basic__string__branch.html @@ -185,7 +185,7 @@ class stdex::parser::basic_string_branch< T, T_parser >

Test for a

diff --git a/classstdex_1_1parser_1_1basic__time-members.html b/classstdex_1_1parser_1_1basic__time-members.html index 5efba44c2..7e4a38598 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 1a683db01..788d0af13 100644 --- a/classstdex_1_1parser_1_1basic__time.html +++ b/classstdex_1_1parser_1_1basic__time.html @@ -242,7 +242,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__url-members.html b/classstdex_1_1parser_1_1basic__url-members.html index 7efb1ca3e..09f63787e 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 094446551..d6e6ecc09 100644 --- a/classstdex_1_1parser_1_1basic__url.html +++ b/classstdex_1_1parser_1_1basic__url.html @@ -272,7 +272,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__url__password__char-members.html b/classstdex_1_1parser_1_1basic__url__password__char-members.html index 4085a6fce..a1e692766 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 cc81de8d1..e6c127426 100644 --- a/classstdex_1_1parser_1_1basic__url__password__char.html +++ b/classstdex_1_1parser_1_1basic__url__password__char.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__url__path-members.html b/classstdex_1_1parser_1_1basic__url__path-members.html index 5a31cdfa2..70182d12e 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 86e0a92f3..d980ed294 100644 --- a/classstdex_1_1parser_1_1basic__url__path.html +++ b/classstdex_1_1parser_1_1basic__url__path.html @@ -242,7 +242,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__url__path__char-members.html b/classstdex_1_1parser_1_1basic__url__path__char-members.html index db22b2a4a..f8f3ea6a7 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 610b6ba66..3300524f4 100644 --- a/classstdex_1_1parser_1_1basic__url__path__char.html +++ b/classstdex_1_1parser_1_1basic__url__path__char.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1basic__url__username__char-members.html b/classstdex_1_1parser_1_1basic__url__username__char-members.html index 208db59e3..f8f731c54 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 49f27a776..e001cce44 100644 --- a/classstdex_1_1parser_1_1basic__url__username__char.html +++ b/classstdex_1_1parser_1_1basic__url__username__char.html @@ -191,7 +191,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1http__agent-members.html b/classstdex_1_1parser_1_1http__agent-members.html index 909869bf3..7c7036e75 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 d49d76fb4..22c57c1fe 100644 --- a/classstdex_1_1parser_1_1http__agent.html +++ b/classstdex_1_1parser_1_1http__agent.html @@ -220,7 +220,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__any__type-members.html b/classstdex_1_1parser_1_1http__any__type-members.html index ff6d6e807..52dd3f2d2 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 0314530f0..0394bd01a 100644 --- a/classstdex_1_1parser_1_1http__any__type.html +++ b/classstdex_1_1parser_1_1http__any__type.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__asterisk-members.html b/classstdex_1_1parser_1_1http__asterisk-members.html index f8c052e10..44f7bdca5 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 d8d444e8f..4dd20cfde 100644 --- a/classstdex_1_1parser_1_1http__asterisk.html +++ b/classstdex_1_1parser_1_1http__asterisk.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__cookie-members.html b/classstdex_1_1parser_1_1http__cookie-members.html index 561fd7add..a0756ec66 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 0838bac1a..3a595227d 100644 --- a/classstdex_1_1parser_1_1http__cookie.html +++ b/classstdex_1_1parser_1_1http__cookie.html @@ -230,7 +230,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__cookie__parameter-members.html b/classstdex_1_1parser_1_1http__cookie__parameter-members.html index 7e1262dbf..50f2f6d7f 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 e856aa8fe..29d026365 100644 --- a/classstdex_1_1parser_1_1http__cookie__parameter.html +++ b/classstdex_1_1parser_1_1http__cookie__parameter.html @@ -224,7 +224,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__header-members.html b/classstdex_1_1parser_1_1http__header-members.html index e455deaad..1d8a791c1 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 518768ced..e3df71154 100644 --- a/classstdex_1_1parser_1_1http__header.html +++ b/classstdex_1_1parser_1_1http__header.html @@ -224,7 +224,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__language-members.html b/classstdex_1_1parser_1_1http__language-members.html index b81b9b710..19e7954ca 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 b1bd20f3d..80d0bc504 100644 --- a/classstdex_1_1parser_1_1http__language.html +++ b/classstdex_1_1parser_1_1http__language.html @@ -217,7 +217,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__line__break-members.html b/classstdex_1_1parser_1_1http__line__break-members.html index 2031a1323..40cf1aebd 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 c57494c2a..0eda474b9 100644 --- a/classstdex_1_1parser_1_1http__line__break.html +++ b/classstdex_1_1parser_1_1http__line__break.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__media__range-members.html b/classstdex_1_1parser_1_1http__media__range-members.html index 45884006d..25963e94a 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 8a9a2453f..2d7a4a031 100644 --- a/classstdex_1_1parser_1_1http__media__range.html +++ b/classstdex_1_1parser_1_1http__media__range.html @@ -225,7 +225,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__media__type-members.html b/classstdex_1_1parser_1_1http__media__type-members.html index b55fede44..ab0dbfcb3 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 4b04645c9..4e1cff56f 100644 --- a/classstdex_1_1parser_1_1http__media__type.html +++ b/classstdex_1_1parser_1_1http__media__type.html @@ -229,7 +229,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__parameter-members.html b/classstdex_1_1parser_1_1http__parameter-members.html index e8fbbc959..1fdb3fe14 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 a96ca6bc8..a9755fcbc 100644 --- a/classstdex_1_1parser_1_1http__parameter.html +++ b/classstdex_1_1parser_1_1http__parameter.html @@ -226,7 +226,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__protocol-members.html b/classstdex_1_1parser_1_1http__protocol-members.html index 111349eae..c790e9d1e 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 e48b54ffd..bfa423e73 100644 --- a/classstdex_1_1parser_1_1http__protocol.html +++ b/classstdex_1_1parser_1_1http__protocol.html @@ -230,7 +230,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__quoted__string-members.html b/classstdex_1_1parser_1_1http__quoted__string-members.html index c53ccff3e..67645a36d 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 a82d723e5..090d2a97f 100644 --- a/classstdex_1_1parser_1_1http__quoted__string.html +++ b/classstdex_1_1parser_1_1http__quoted__string.html @@ -222,7 +222,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__request-members.html b/classstdex_1_1parser_1_1http__request-members.html index 5c3d31305..430afb637 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 c819e2057..61b5fda98 100644 --- a/classstdex_1_1parser_1_1http__request.html +++ b/classstdex_1_1parser_1_1http__request.html @@ -230,7 +230,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__space-members.html b/classstdex_1_1parser_1_1http__space-members.html index 542b52265..515a8119a 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 b09dfd978..256d30473 100644 --- a/classstdex_1_1parser_1_1http__space.html +++ b/classstdex_1_1parser_1_1http__space.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1http__text__char-members.html b/classstdex_1_1parser_1_1http__text__char-members.html index 2c055795d..b9171d46c 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 6b6eb0c83..980315472 100644 --- a/classstdex_1_1parser_1_1http__text__char.html +++ b/classstdex_1_1parser_1_1http__text__char.html @@ -191,7 +191,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1http__token-members.html b/classstdex_1_1parser_1_1http__token-members.html index 66974fd4a..c575bb3ee 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 0360cc396..4842c469c 100644 --- a/classstdex_1_1parser_1_1http__token.html +++ b/classstdex_1_1parser_1_1http__token.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url-members.html b/classstdex_1_1parser_1_1http__url-members.html index f4b3bbb91..77edb5727 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 d3043ff36..712c76d3d 100644 --- a/classstdex_1_1parser_1_1http__url.html +++ b/classstdex_1_1parser_1_1http__url.html @@ -229,7 +229,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__parameter-members.html b/classstdex_1_1parser_1_1http__url__parameter-members.html index b96647234..2317e59ec 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 4361757de..df9a9b870 100644 --- a/classstdex_1_1parser_1_1http__url__parameter.html +++ b/classstdex_1_1parser_1_1http__url__parameter.html @@ -220,7 +220,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__path-members.html b/classstdex_1_1parser_1_1http__url__path-members.html index d09ffe4d2..feca49afa 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 4c18d562d..b30917395 100644 --- a/classstdex_1_1parser_1_1http__url__path.html +++ b/classstdex_1_1parser_1_1http__url__path.html @@ -218,7 +218,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__path__segment-members.html b/classstdex_1_1parser_1_1http__url__path__segment-members.html index 382ab8255..9eec41445 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 1c5a4a2a1..8c853eb9c 100644 --- a/classstdex_1_1parser_1_1http__url__path__segment.html +++ b/classstdex_1_1parser_1_1http__url__path__segment.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__port-members.html b/classstdex_1_1parser_1_1http__url__port-members.html index ffe3fc9e4..38a4672a5 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 218ee1c64..864f9e7c0 100644 --- a/classstdex_1_1parser_1_1http__url__port.html +++ b/classstdex_1_1parser_1_1http__url__port.html @@ -220,7 +220,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__url__server-members.html b/classstdex_1_1parser_1_1http__url__server-members.html index b581fd773..d0b75cf7e 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 fad5b960d..e5b2357a7 100644 --- a/classstdex_1_1parser_1_1http__url__server.html +++ b/classstdex_1_1parser_1_1http__url__server.html @@ -184,7 +184,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__value-members.html b/classstdex_1_1parser_1_1http__value-members.html index f2dc784e6..17526acb1 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 3945242f1..d6f3c802b 100644 --- a/classstdex_1_1parser_1_1http__value.html +++ b/classstdex_1_1parser_1_1http__value.html @@ -222,7 +222,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__value__collection-members.html b/classstdex_1_1parser_1_1http__value__collection-members.html index 357109944..b01a0ef0f 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 28dce8626..56f6cadb8 100644 --- a/classstdex_1_1parser_1_1http__value__collection.html +++ b/classstdex_1_1parser_1_1http__value__collection.html @@ -107,7 +107,7 @@ class stdex::parser::http_value_collection< _Key, T >

Collection o

diff --git a/classstdex_1_1parser_1_1http__weight-members.html b/classstdex_1_1parser_1_1http__weight-members.html index dcce70dd1..02e64bab0 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 a066971e4..164f17754 100644 --- a/classstdex_1_1parser_1_1http__weight.html +++ b/classstdex_1_1parser_1_1http__weight.html @@ -221,7 +221,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1http__weighted__value-members.html b/classstdex_1_1parser_1_1http__weighted__value-members.html index cf94504fa..0082bf59c 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 2ec334af1..0541e3a93 100644 --- a/classstdex_1_1parser_1_1http__weighted__value.html +++ b/classstdex_1_1parser_1_1http__weighted__value.html @@ -231,7 +231,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1parser__collection-members.html b/classstdex_1_1parser_1_1parser__collection-members.html index 234bbdd70..09a7e81aa 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 9c4ab6ac4..11b00840f 100644 --- a/classstdex_1_1parser_1_1parser__collection.html +++ b/classstdex_1_1parser_1_1parser__collection.html @@ -189,7 +189,7 @@ template<clas diff --git a/classstdex_1_1parser_1_1sgml__any__cp-members.html b/classstdex_1_1parser_1_1sgml__any__cp-members.html index 1a95102fb..7c396b081 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 ace431f21..cc8cc80b7 100644 --- a/classstdex_1_1parser_1_1sgml__any__cp.html +++ b/classstdex_1_1parser_1_1sgml__any__cp.html @@ -196,7 +196,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__cp-members.html b/classstdex_1_1parser_1_1sgml__cp-members.html index 352a2c832..6f5d9fb20 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 77e6f1236..24eb06898 100644 --- a/classstdex_1_1parser_1_1sgml__cp.html +++ b/classstdex_1_1parser_1_1sgml__cp.html @@ -197,7 +197,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1sgml__cp__set-members.html b/classstdex_1_1parser_1_1sgml__cp__set-members.html index ebb42feeb..ee77033a3 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 de6bf5c60..542aba021 100644 --- a/classstdex_1_1parser_1_1sgml__cp__set.html +++ b/classstdex_1_1parser_1_1sgml__cp__set.html @@ -210,7 +210,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html b/classstdex_1_1parser_1_1sgml__dns__domain__char-members.html index 814ae7f3e..dd897bff3 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 8d4469b21..8f19a8370 100644 --- a/classstdex_1_1parser_1_1sgml__dns__domain__char.html +++ b/classstdex_1_1parser_1_1sgml__dns__domain__char.html @@ -205,7 +205,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char-members.html b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char-members.html index 97cc67728..3bd76dc37 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 92a15a537..3a68f8056 100644 --- a/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html +++ b/classstdex_1_1parser_1_1sgml__ipv6__scope__id__char.html @@ -187,7 +187,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__punct__cp-members.html b/classstdex_1_1parser_1_1sgml__punct__cp-members.html index a9d6c79a1..988d6c253 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 fe55efdd1..ccf46cd81 100644 --- a/classstdex_1_1parser_1_1sgml__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__punct__cp.html @@ -200,7 +200,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__space__cp-members.html b/classstdex_1_1parser_1_1sgml__space__cp-members.html index d893ad5e4..5a04e85e5 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 39e79b6bc..f54f5e66e 100644 --- a/classstdex_1_1parser_1_1sgml__space__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__cp.html @@ -200,7 +200,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__space__or__punct__cp-members.html b/classstdex_1_1parser_1_1sgml__space__or__punct__cp-members.html index f451640ab..f2772b141 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 72ad5e50b..2aa5f25c9 100644 --- a/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html +++ b/classstdex_1_1parser_1_1sgml__space__or__punct__cp.html @@ -200,7 +200,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__string-members.html b/classstdex_1_1parser_1_1sgml__string-members.html index 30819ef58..cc16175f8 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 b2b45e08f..c673fdeae 100644 --- a/classstdex_1_1parser_1_1sgml__string.html +++ b/classstdex_1_1parser_1_1sgml__string.html @@ -194,7 +194,7 @@ Additional Inherited Members diff --git a/classstdex_1_1parser_1_1sgml__url__password__char-members.html b/classstdex_1_1parser_1_1sgml__url__password__char-members.html index e40fe2e70..b42533bd1 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 189f1edd1..49013eafb 100644 --- a/classstdex_1_1parser_1_1sgml__url__password__char.html +++ b/classstdex_1_1parser_1_1sgml__url__password__char.html @@ -196,7 +196,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__url__path__char-members.html b/classstdex_1_1parser_1_1sgml__url__path__char-members.html index 04d9534e3..fb1154e12 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 54296d574..6427eb050 100644 --- a/classstdex_1_1parser_1_1sgml__url__path__char.html +++ b/classstdex_1_1parser_1_1sgml__url__path__char.html @@ -196,7 +196,7 @@ std::locale m_locale diff --git a/classstdex_1_1parser_1_1sgml__url__username__char-members.html b/classstdex_1_1parser_1_1sgml__url__username__char-members.html index b91d7dcd6..0ef234aaf 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 f594b5f2c..e6e3f340c 100644 --- a/classstdex_1_1parser_1_1sgml__url__username__char.html +++ b/classstdex_1_1parser_1_1sgml__url__username__char.html @@ -196,7 +196,7 @@ std::locale m_locale diff --git a/classstdex_1_1pool-members.html b/classstdex_1_1pool-members.html index dd46f9812..e4aa69609 100644 --- a/classstdex_1_1pool-members.html +++ b/classstdex_1_1pool-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classstdex_1_1pool.html b/classstdex_1_1pool.html index c1731809c..bd17d476f 100644 --- a/classstdex_1_1pool.html +++ b/classstdex_1_1pool.html @@ -197,7 +197,7 @@ template<class T > diff --git a/classstdex_1_1progress-members.html b/classstdex_1_1progress-members.html index 3ce28d2d5..1476f1d8a 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 b411cdf1b..70df323d0 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 78bef2569..7e3d2aa3a 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 8543849e0..b8e96c360 100644 --- a/classstdex_1_1progress__switcher.html +++ b/classstdex_1_1progress__switcher.html @@ -163,7 +163,7 @@ class stdex::progress_switcher< T >

Progress indicator switcher. <

diff --git a/classstdex_1_1ring-members.html b/classstdex_1_1ring-members.html index ad48af3ff..84f60d2ab 100644 --- a/classstdex_1_1ring-members.html +++ b/classstdex_1_1ring-members.html @@ -100,7 +100,7 @@ $(function() { diff --git a/classstdex_1_1ring.html b/classstdex_1_1ring.html index 47ad35992..506bfdcc1 100644 --- a/classstdex_1_1ring.html +++ b/classstdex_1_1ring.html @@ -296,7 +296,7 @@ template<class T , size_t CAPACITY> diff --git a/classstdex_1_1sha1__hash-members.html b/classstdex_1_1sha1__hash-members.html index 51a80fe96..2f8253616 100644 --- a/classstdex_1_1sha1__hash-members.html +++ b/classstdex_1_1sha1__hash-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1sha1__hash.html b/classstdex_1_1sha1__hash.html index 4408e369a..f0165b914 100644 --- a/classstdex_1_1sha1__hash.html +++ b/classstdex_1_1sha1__hash.html @@ -259,7 +259,7 @@ uint32_t m_temp [16] diff --git a/classstdex_1_1spinlock-members.html b/classstdex_1_1spinlock-members.html index f9f071594..d8782a8d8 100644 --- a/classstdex_1_1spinlock-members.html +++ b/classstdex_1_1spinlock-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/classstdex_1_1spinlock.html b/classstdex_1_1spinlock.html index 63eb34c98..5c5294f4c 100644 --- a/classstdex_1_1spinlock.html +++ b/classstdex_1_1spinlock.html @@ -138,7 +138,7 @@ void unlock () noexcep diff --git a/classstdex_1_1stream_1_1async__reader-members.html b/classstdex_1_1stream_1_1async__reader-members.html index 2a56c24e8..66ee166c9 100644 --- a/classstdex_1_1stream_1_1async__reader-members.html +++ b/classstdex_1_1stream_1_1async__reader-members.html @@ -155,7 +155,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1async__reader.html b/classstdex_1_1stream_1_1async__reader.html index 2f255365b..37feb2a04 100644 --- a/classstdex_1_1stream_1_1async__reader.html +++ b/classstdex_1_1stream_1_1async__reader.html @@ -414,7 +414,7 @@ template<size_t CAPACITY = default_async_limit> diff --git a/classstdex_1_1stream_1_1async__writer-members.html b/classstdex_1_1stream_1_1async__writer-members.html index 2e6076abd..58890bf07 100644 --- a/classstdex_1_1stream_1_1async__writer-members.html +++ b/classstdex_1_1stream_1_1async__writer-members.html @@ -155,7 +155,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1async__writer.html b/classstdex_1_1stream_1_1async__writer.html index 22f91d214..327d9e597 100644 --- a/classstdex_1_1stream_1_1async__writer.html +++ b/classstdex_1_1stream_1_1async__writer.html @@ -445,7 +445,7 @@ template<size_t CAPACITY = default_async_limit> diff --git a/classstdex_1_1stream_1_1basic-members.html b/classstdex_1_1stream_1_1basic-members.html index 8700dbf79..c133d322c 100644 --- a/classstdex_1_1stream_1_1basic-members.html +++ b/classstdex_1_1stream_1_1basic-members.html @@ -148,7 +148,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1basic.html b/classstdex_1_1stream_1_1basic.html index 2206bdb54..d6f1a1e96 100644 --- a/classstdex_1_1stream_1_1basic.html +++ b/classstdex_1_1stream_1_1basic.html @@ -1400,7 +1400,7 @@ template<class T > diff --git a/classstdex_1_1stream_1_1basic__file-members.html b/classstdex_1_1stream_1_1basic__file-members.html index e9561f67d..dd851aacb 100644 --- a/classstdex_1_1stream_1_1basic__file-members.html +++ b/classstdex_1_1stream_1_1basic__file-members.html @@ -164,7 +164,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1basic__file.html b/classstdex_1_1stream_1_1basic__file.html index 926b501f5..c3345c861 100644 --- a/classstdex_1_1stream_1_1basic__file.html +++ b/classstdex_1_1stream_1_1basic__file.html @@ -961,7 +961,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1basic__sys-members.html b/classstdex_1_1stream_1_1basic__sys-members.html index abd6f83d1..74623619c 100644 --- a/classstdex_1_1stream_1_1basic__sys-members.html +++ b/classstdex_1_1stream_1_1basic__sys-members.html @@ -160,7 +160,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1basic__sys.html b/classstdex_1_1stream_1_1basic__sys.html index 02878aaaf..c26631d20 100644 --- a/classstdex_1_1stream_1_1basic__sys.html +++ b/classstdex_1_1stream_1_1basic__sys.html @@ -527,7 +527,7 @@ sys_handle m_h diff --git a/classstdex_1_1stream_1_1buffer-members.html b/classstdex_1_1stream_1_1buffer-members.html index a97a4ec21..69adecc41 100644 --- a/classstdex_1_1stream_1_1buffer-members.html +++ b/classstdex_1_1stream_1_1buffer-members.html @@ -155,7 +155,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1buffer.html b/classstdex_1_1stream_1_1buffer.html index e75c225bb..5a986565a 100644 --- a/classstdex_1_1stream_1_1buffer.html +++ b/classstdex_1_1stream_1_1buffer.html @@ -489,7 +489,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1buffered__sys-members.html b/classstdex_1_1stream_1_1buffered__sys-members.html index 119689e63..dc8ddce39 100644 --- a/classstdex_1_1stream_1_1buffered__sys-members.html +++ b/classstdex_1_1stream_1_1buffered__sys-members.html @@ -157,7 +157,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1buffered__sys.html b/classstdex_1_1stream_1_1buffered__sys.html index 48a543e2b..2b08dceea 100644 --- a/classstdex_1_1stream_1_1buffered__sys.html +++ b/classstdex_1_1stream_1_1buffered__sys.html @@ -365,7 +365,7 @@ void flush_write () diff --git a/classstdex_1_1stream_1_1cache-members.html b/classstdex_1_1stream_1_1cache-members.html index 203ab9bc0..08303b5de 100644 --- a/classstdex_1_1stream_1_1cache-members.html +++ b/classstdex_1_1stream_1_1cache-members.html @@ -166,7 +166,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1cache.html b/classstdex_1_1stream_1_1cache.html index 9c48e25c9..1bfcac9a0 100644 --- a/classstdex_1_1stream_1_1cache.html +++ b/classstdex_1_1stream_1_1cache.html @@ -925,7 +925,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1cached__file-members.html b/classstdex_1_1stream_1_1cached__file-members.html index bdb5647a2..1625af3eb 100644 --- a/classstdex_1_1stream_1_1cached__file-members.html +++ b/classstdex_1_1stream_1_1cached__file-members.html @@ -173,7 +173,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1cached__file.html b/classstdex_1_1stream_1_1cached__file.html index 70a350337..33fadc5e3 100644 --- a/classstdex_1_1stream_1_1cached__file.html +++ b/classstdex_1_1stream_1_1cached__file.html @@ -600,7 +600,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1converter-members.html b/classstdex_1_1stream_1_1converter-members.html index c2c1f5840..a7ac95b23 100644 --- a/classstdex_1_1stream_1_1converter-members.html +++ b/classstdex_1_1stream_1_1converter-members.html @@ -150,7 +150,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1converter.html b/classstdex_1_1stream_1_1converter.html index b25dd62ca..307a9dc7c 100644 --- a/classstdex_1_1stream_1_1converter.html +++ b/classstdex_1_1stream_1_1converter.html @@ -507,7 +507,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1diag__file-members.html b/classstdex_1_1stream_1_1diag__file-members.html index 814f75ca5..837b58a6c 100644 --- a/classstdex_1_1stream_1_1diag__file-members.html +++ b/classstdex_1_1stream_1_1diag__file-members.html @@ -167,7 +167,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1diag__file.html b/classstdex_1_1stream_1_1diag__file.html index c3c253213..09ab07d99 100644 --- a/classstdex_1_1stream_1_1diag__file.html +++ b/classstdex_1_1stream_1_1diag__file.html @@ -754,7 +754,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1fifo-members.html b/classstdex_1_1stream_1_1fifo-members.html index bea84e3e3..6eb68c274 100644 --- a/classstdex_1_1stream_1_1fifo-members.html +++ b/classstdex_1_1stream_1_1fifo-members.html @@ -155,7 +155,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1fifo.html b/classstdex_1_1stream_1_1fifo.html index b1b7fc104..acd9aa928 100644 --- a/classstdex_1_1stream_1_1fifo.html +++ b/classstdex_1_1stream_1_1fifo.html @@ -479,7 +479,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1file-members.html b/classstdex_1_1stream_1_1file-members.html index f12c2df45..a94cee08e 100644 --- a/classstdex_1_1stream_1_1file-members.html +++ b/classstdex_1_1stream_1_1file-members.html @@ -189,7 +189,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1file.html b/classstdex_1_1stream_1_1file.html index ace064ef0..ae6811272 100644 --- a/classstdex_1_1stream_1_1file.html +++ b/classstdex_1_1stream_1_1file.html @@ -1161,7 +1161,7 @@ sys_handle m_h diff --git a/classstdex_1_1stream_1_1file__window-members.html b/classstdex_1_1stream_1_1file__window-members.html index d3958e66a..81345cba8 100644 --- a/classstdex_1_1stream_1_1file__window-members.html +++ b/classstdex_1_1stream_1_1file__window-members.html @@ -168,7 +168,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1file__window.html b/classstdex_1_1stream_1_1file__window.html index ca3d13a6c..a7af91a44 100644 --- a/classstdex_1_1stream_1_1file__window.html +++ b/classstdex_1_1stream_1_1file__window.html @@ -787,7 +787,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1limiter-members.html b/classstdex_1_1stream_1_1limiter-members.html index 2880455ec..7b3e9be18 100644 --- a/classstdex_1_1stream_1_1limiter-members.html +++ b/classstdex_1_1stream_1_1limiter-members.html @@ -153,7 +153,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1limiter.html b/classstdex_1_1stream_1_1limiter.html index 1e6944d47..53eaa7326 100644 --- a/classstdex_1_1stream_1_1limiter.html +++ b/classstdex_1_1stream_1_1limiter.html @@ -456,7 +456,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1memory__file-members.html b/classstdex_1_1stream_1_1memory__file-members.html index 3bb3179f8..485094b37 100644 --- a/classstdex_1_1stream_1_1memory__file-members.html +++ b/classstdex_1_1stream_1_1memory__file-members.html @@ -208,7 +208,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1memory__file.html b/classstdex_1_1stream_1_1memory__file.html index 0b1c93bfc..476dc1717 100644 --- a/classstdex_1_1stream_1_1memory__file.html +++ b/classstdex_1_1stream_1_1memory__file.html @@ -1690,7 +1690,7 @@ template<class T > diff --git a/classstdex_1_1stream_1_1replicator-members.html b/classstdex_1_1stream_1_1replicator-members.html index 18e13db7f..d3156fe4b 100644 --- a/classstdex_1_1stream_1_1replicator-members.html +++ b/classstdex_1_1stream_1_1replicator-members.html @@ -153,7 +153,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1replicator.html b/classstdex_1_1stream_1_1replicator.html index c880a15c4..6dcb69f4b 100644 --- a/classstdex_1_1stream_1_1replicator.html +++ b/classstdex_1_1stream_1_1replicator.html @@ -462,7 +462,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1replicator_1_1worker-members.html b/classstdex_1_1stream_1_1replicator_1_1worker-members.html index c1fce6600..83d1f5b8e 100644 --- a/classstdex_1_1stream_1_1replicator_1_1worker-members.html +++ b/classstdex_1_1stream_1_1replicator_1_1worker-members.html @@ -93,7 +93,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1replicator_1_1worker.html b/classstdex_1_1stream_1_1replicator_1_1worker.html index 0ec39f94e..96d20343a 100644 --- a/classstdex_1_1stream_1_1replicator_1_1worker.html +++ b/classstdex_1_1stream_1_1replicator_1_1worker.html @@ -149,7 +149,7 @@ void process_op () diff --git a/classstdex_1_1stream_1_1socket-members.html b/classstdex_1_1stream_1_1socket-members.html index 789ecab6e..5784f6adb 100644 --- a/classstdex_1_1stream_1_1socket-members.html +++ b/classstdex_1_1stream_1_1socket-members.html @@ -156,7 +156,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1socket.html b/classstdex_1_1stream_1_1socket.html index cff7856a6..adf2c69eb 100644 --- a/classstdex_1_1stream_1_1socket.html +++ b/classstdex_1_1stream_1_1socket.html @@ -533,7 +533,7 @@ state_t m_state diff --git a/classstdex_1_1stream_1_1window-members.html b/classstdex_1_1stream_1_1window-members.html index 71cac2d44..370074ac1 100644 --- a/classstdex_1_1stream_1_1window-members.html +++ b/classstdex_1_1stream_1_1window-members.html @@ -156,7 +156,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1window.html b/classstdex_1_1stream_1_1window.html index 65a680574..50ee625e2 100644 --- a/classstdex_1_1stream_1_1window.html +++ b/classstdex_1_1stream_1_1window.html @@ -465,7 +465,7 @@ state_t m_state diff --git a/classstdex_1_1stream__hasher-members.html b/classstdex_1_1stream__hasher-members.html index 5dd4c1020..a4e951640 100644 --- a/classstdex_1_1stream__hasher-members.html +++ b/classstdex_1_1stream__hasher-members.html @@ -152,7 +152,7 @@ $(function() { diff --git a/classstdex_1_1stream__hasher.html b/classstdex_1_1stream__hasher.html index db65416b7..9057c8c06 100644 --- a/classstdex_1_1stream__hasher.html +++ b/classstdex_1_1stream__hasher.html @@ -448,7 +448,7 @@ template<class T > diff --git a/classstdex_1_1sys__object-members.html b/classstdex_1_1sys__object-members.html index cc28e02d4..5e0e67ef8 100644 --- a/classstdex_1_1sys__object-members.html +++ b/classstdex_1_1sys__object-members.html @@ -95,7 +95,7 @@ $(function() { diff --git a/classstdex_1_1sys__object.html b/classstdex_1_1sys__object.html index 5dd58aac2..71082fcaf 100644 --- a/classstdex_1_1sys__object.html +++ b/classstdex_1_1sys__object.html @@ -182,7 +182,7 @@ sys_handle m_h diff --git a/classstdex_1_1user__cancelled-members.html b/classstdex_1_1user__cancelled-members.html index e9e6a20d3..6bd60b606 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 c46a34c35..917f17687 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 18c27ce97..77a5c034b 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 47892b28d..4b858bab1 100644 --- a/classstdex_1_1vector__queue.html +++ b/classstdex_1_1vector__queue.html @@ -795,7 +795,7 @@ template<class T > diff --git a/classstdex_1_1watchdog-members.html b/classstdex_1_1watchdog-members.html index aa9219372..2d7c1327c 100644 --- a/classstdex_1_1watchdog-members.html +++ b/classstdex_1_1watchdog-members.html @@ -94,7 +94,7 @@ $(function() { diff --git a/classstdex_1_1watchdog.html b/classstdex_1_1watchdog.html index 3f3afe37f..35aeb8b49 100644 --- a/classstdex_1_1watchdog.html +++ b/classstdex_1_1watchdog.html @@ -223,7 +223,7 @@ template<class _Clock , class _Duration = typename _Clock::duration> diff --git a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html index 29fa73e6b..517b664be 100644 --- a/dir_4be4f7b278e009bf0f1906cf31fb73bd.html +++ b/dir_4be4f7b278e009bf0f1906cf31fb73bd.html @@ -104,7 +104,7 @@ Files diff --git a/dir_d44c64559bbebec7f509842c48db8b23.html b/dir_d44c64559bbebec7f509842c48db8b23.html index 323feab8c..d189fa364 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 a2ff815e7..6b86f2fc9 100644 --- a/dir_fca3c47b2ea228727bd6729832f89576.html +++ b/dir_fca3c47b2ea228727bd6729832f89576.html @@ -146,7 +146,7 @@ Files diff --git a/endian_8hpp_source.html b/endian_8hpp_source.html index b0ab77f18..78b38fc79 100644 --- a/endian_8hpp_source.html +++ b/endian_8hpp_source.html @@ -225,7 +225,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/exception_8hpp_source.html b/exception_8hpp_source.html index b7998d1ae..f68d66b22 100644 --- a/exception_8hpp_source.html +++ b/exception_8hpp_source.html @@ -107,7 +107,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/files.html b/files.html index d4a15ba26..dae298f76 100644 --- a/files.html +++ b/files.html @@ -124,7 +124,7 @@ $(function() { diff --git a/functions.html b/functions.html index 8faa8d10c..9c31f348f 100644 --- a/functions.html +++ b/functions.html @@ -94,7 +94,7 @@ $(function() { diff --git a/functions_b.html b/functions_b.html index c135a0c1b..70d9fb18c 100644 --- a/functions_b.html +++ b/functions_b.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_c.html b/functions_c.html index aaa6d1260..54005a805 100644 --- a/functions_c.html +++ b/functions_c.html @@ -94,7 +94,7 @@ $(function() { diff --git a/functions_d.html b/functions_d.html index 5170a809f..ecf5bcc76 100644 --- a/functions_d.html +++ b/functions_d.html @@ -87,7 +87,7 @@ $(function() { diff --git a/functions_e.html b/functions_e.html index 9ab700b0f..9cd0ca236 100644 --- a/functions_e.html +++ b/functions_e.html @@ -90,7 +90,7 @@ $(function() { diff --git a/functions_f.html b/functions_f.html index 97afde672..aefc3de66 100644 --- a/functions_f.html +++ b/functions_f.html @@ -87,7 +87,7 @@ $(function() { diff --git a/functions_func.html b/functions_func.html index aa866deb6..4a7425263 100644 --- a/functions_func.html +++ b/functions_func.html @@ -88,7 +88,7 @@ $(function() { diff --git a/functions_func_b.html b/functions_func_b.html index 04d6aa17f..4c396fc58 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_func_c.html b/functions_func_c.html index f5454352e..89c07ec9c 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_d.html b/functions_func_d.html index 7f49ba105..e30a7ac60 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -84,7 +84,7 @@ $(function() { diff --git a/functions_func_e.html b/functions_func_e.html index a4bc0447a..a89de3e9f 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_func_f.html b/functions_func_f.html index a7d85610e..83355c48e 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -86,7 +86,7 @@ $(function() { diff --git a/functions_func_g.html b/functions_func_g.html index 357ff382a..a9abd5046 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_h.html b/functions_func_h.html index 9944b42f7..5c40b2dea 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_i.html b/functions_func_i.html index d78313dc5..48c3d403a 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -97,7 +97,7 @@ $(function() { diff --git a/functions_func_l.html b/functions_func_l.html index 773164628..c546daff8 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_func_m.html b/functions_func_m.html index 70a1e87d8..19470a0b8 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -83,7 +83,7 @@ $(function() { diff --git a/functions_func_n.html b/functions_func_n.html index d886dc12e..20c293745 100644 --- a/functions_func_n.html +++ b/functions_func_n.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_func_o.html b/functions_func_o.html index feb667b93..ecd61d2a0 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -90,7 +90,7 @@ $(function() { diff --git a/functions_func_p.html b/functions_func_p.html index 80edb0921..ee1762732 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_q.html b/functions_func_q.html index 5130e9093..689f15c0d 100644 --- a/functions_func_q.html +++ b/functions_func_q.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_func_r.html b/functions_func_r.html index 96616436d..f4945dd66 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -92,7 +92,7 @@ $(function() { diff --git a/functions_func_s.html b/functions_func_s.html index a487f1abb..b84a8395f 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -101,7 +101,7 @@ $(function() { diff --git a/functions_func_t.html b/functions_func_t.html index f0012f55c..ccd00f1d6 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_func_u.html b/functions_func_u.html index e6ac050dd..5154f9a36 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_func_v.html b/functions_func_v.html index ee48efeeb..f52b2b10d 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_func_w.html b/functions_func_w.html index 40b02af77..5f9a3b8e9 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -87,7 +87,7 @@ $(function() { diff --git a/functions_func_~.html b/functions_func_~.html index e8726820e..d34634888 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_g.html b/functions_g.html index a60937aec..5d27217d4 100644 --- a/functions_g.html +++ b/functions_g.html @@ -79,7 +79,7 @@ $(function() { diff --git a/functions_h.html b/functions_h.html index 230903ea8..e5a741ddd 100644 --- a/functions_h.html +++ b/functions_h.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_i.html b/functions_i.html index ae221f481..6bbdfad3a 100644 --- a/functions_i.html +++ b/functions_i.html @@ -100,7 +100,7 @@ $(function() { diff --git a/functions_l.html b/functions_l.html index 44ea4068a..fd5a3a65c 100644 --- a/functions_l.html +++ b/functions_l.html @@ -82,7 +82,7 @@ $(function() { diff --git a/functions_m.html b/functions_m.html index 7242cdd43..97083239c 100644 --- a/functions_m.html +++ b/functions_m.html @@ -124,7 +124,7 @@ $(function() { diff --git a/functions_n.html b/functions_n.html index d4d508940..c331b764f 100644 --- a/functions_n.html +++ b/functions_n.html @@ -85,7 +85,7 @@ $(function() { diff --git a/functions_o.html b/functions_o.html index 862828084..efd2fec76 100644 --- a/functions_o.html +++ b/functions_o.html @@ -94,7 +94,7 @@ $(function() { diff --git a/functions_p.html b/functions_p.html index d33d3200d..c20810e49 100644 --- a/functions_p.html +++ b/functions_p.html @@ -93,7 +93,7 @@ $(function() { diff --git a/functions_q.html b/functions_q.html index 0bdfb2861..7ba22b7f9 100644 --- a/functions_q.html +++ b/functions_q.html @@ -78,7 +78,7 @@ $(function() { diff --git a/functions_r.html b/functions_r.html index ff018e51c..44e74609c 100644 --- a/functions_r.html +++ b/functions_r.html @@ -95,7 +95,7 @@ $(function() { diff --git a/functions_rela.html b/functions_rela.html index 72f1c74f7..602349cde 100644 --- a/functions_rela.html +++ b/functions_rela.html @@ -77,7 +77,7 @@ $(function() { diff --git a/functions_s.html b/functions_s.html index 0e19c88c9..4af7e562f 100644 --- a/functions_s.html +++ b/functions_s.html @@ -109,7 +109,7 @@ $(function() { diff --git a/functions_t.html b/functions_t.html index a1e31e462..f8dec1c0e 100644 --- a/functions_t.html +++ b/functions_t.html @@ -89,7 +89,7 @@ $(function() { diff --git a/functions_type.html b/functions_type.html index d16d0cb15..1e6682334 100644 --- a/functions_type.html +++ b/functions_type.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_u.html b/functions_u.html index 94bf44c53..fb50f4577 100644 --- a/functions_u.html +++ b/functions_u.html @@ -80,7 +80,7 @@ $(function() { diff --git a/functions_v.html b/functions_v.html index f66f4764f..d1a5c0ddf 100644 --- a/functions_v.html +++ b/functions_v.html @@ -81,7 +81,7 @@ $(function() { diff --git a/functions_vars.html b/functions_vars.html index 0bf4af471..6ebd36420 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -262,7 +262,7 @@ $(function() { diff --git a/functions_w.html b/functions_w.html index 92e3a9be8..ff294cdd2 100644 --- a/functions_w.html +++ b/functions_w.html @@ -90,7 +90,7 @@ $(function() { diff --git a/functions_~.html b/functions_~.html index 2667c5176..48672d4d4 100644 --- a/functions_~.html +++ b/functions_~.html @@ -79,7 +79,7 @@ $(function() { diff --git a/hash_8cpp_source.html b/hash_8cpp_source.html index b22a6e207..52c8b414a 100644 --- a/hash_8cpp_source.html +++ b/hash_8cpp_source.html @@ -164,7 +164,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/hash_8hpp_source.html b/hash_8hpp_source.html index 756472177..168258010 100644 --- a/hash_8hpp_source.html +++ b/hash_8hpp_source.html @@ -743,7 +743,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/hex_8hpp_source.html b/hex_8hpp_source.html index ae446dd0d..5e6136fc1 100644 --- a/hex_8hpp_source.html +++ b/hex_8hpp_source.html @@ -231,7 +231,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/hierarchy.html b/hierarchy.html index f11ca6b56..eda003928 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -303,7 +303,7 @@ $(function() { diff --git a/html_8hpp_source.html b/html_8hpp_source.html index f0652d717..8d5c27073 100644 --- a/html_8hpp_source.html +++ b/html_8hpp_source.html @@ -2156,7 +2156,7 @@ $(document).ready(function() { init_codefold(0); });
2324 s.get()));
2325 stdex::mapping<size_t> rel_value(a.value.start, 0);
2326 t_value->mapping.push_back(rel_value);
-
2327 stdex::sgml2strcpy(t_value->text, m_source + a.value.start, a.value.size(), 0, rel_value, &t_value->mapping);
+
2327 stdex::sgml2strcat(t_value->text, m_source + a.value.start, a.value.size(), 0, rel_value, &t_value->mapping);
2328 append_token(std::move(t_value), t->text);
2329 t->text_type |= has_tokens;
2330 offset = a.value.end;
@@ -2457,7 +2457,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/idrec_8hpp_source.html b/idrec_8hpp_source.html index b3b07caa5..68927858a 100644 --- a/idrec_8hpp_source.html +++ b/idrec_8hpp_source.html @@ -471,7 +471,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/include_2stdex_2compat_8hpp_source.html b/include_2stdex_2compat_8hpp_source.html index aa703e073..ca0bc9b2d 100644 --- a/include_2stdex_2compat_8hpp_source.html +++ b/include_2stdex_2compat_8hpp_source.html @@ -294,7 +294,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/index.html b/index.html index 5da4c03b6..2de8f3911 100644 --- a/index.html +++ b/index.html @@ -84,7 +84,7 @@ Requirements diff --git a/interval_8hpp_source.html b/interval_8hpp_source.html index efb1b2bfb..c43a05d35 100644 --- a/interval_8hpp_source.html +++ b/interval_8hpp_source.html @@ -231,7 +231,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/locale_8hpp_source.html b/locale_8hpp_source.html index 408bbfb75..9d0baf1dc 100644 --- a/locale_8hpp_source.html +++ b/locale_8hpp_source.html @@ -149,7 +149,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/mapping_8hpp_source.html b/mapping_8hpp_source.html index 992511d61..54e69e7c9 100644 --- a/mapping_8hpp_source.html +++ b/mapping_8hpp_source.html @@ -124,7 +124,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/math_8cpp_source.html b/math_8cpp_source.html index a1fea0d5f..5438b3a08 100644 --- a/math_8cpp_source.html +++ b/math_8cpp_source.html @@ -129,7 +129,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/math_8hpp_source.html b/math_8hpp_source.html index d3decfc74..6951b22cc 100644 --- a/math_8hpp_source.html +++ b/math_8hpp_source.html @@ -147,7 +147,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/memory_8hpp_source.html b/memory_8hpp_source.html index a8f94084b..147a71294 100644 --- a/memory_8hpp_source.html +++ b/memory_8hpp_source.html @@ -129,7 +129,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/parser_8cpp_source.html b/parser_8cpp_source.html index f175f623e..cc7f24792 100644 --- a/parser_8cpp_source.html +++ b/parser_8cpp_source.html @@ -597,7 +597,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/parser_8hpp_source.html b/parser_8hpp_source.html index ee982bd7e..ef338d360 100644 --- a/parser_8hpp_source.html +++ b/parser_8hpp_source.html @@ -471,7 +471,7 @@ $(document).ready(function() { init_codefold(0); });
400 _Assume_(text || start >= end);
401 if (start < end && text[start]) {
402 bool r =
-
403 ((flags & match_multiline) || !islbreak(text[start])) &&
+
403 ((flags & match_multiline) || !stdex::islbreak(text[start])) &&
404 std::use_facet<std::ctype<T>>(this->m_locale).is(std::ctype_base::space, text[start]);
405 if ((r && !m_invert) || (!r && m_invert)) {
406 this->interval.end = (this->interval.start = start) + 1;
@@ -515,7 +515,7 @@ $(document).ready(function() { init_codefold(0); });
445 const wchar_t* chr = next_sgml_cp(text, start, end, this->interval.end, buf);
446 const wchar_t* chr_end = chr + stdex::strlen(chr);
447 bool r =
-
448 ((flags & match_multiline) || !islbreak(chr, SIZE_MAX)) &&
+
448 ((flags & match_multiline) || !stdex::islbreak(chr, SIZE_MAX)) &&
449 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::space, chr, chr_end) == chr_end;
450 if ((r && !m_invert) || (!r && m_invert)) {
451 this->interval.start = start;
@@ -620,7 +620,7 @@ $(document).ready(function() { init_codefold(0); });
553 _Assume_(text || start >= end);
554 if (start < end && text[start]) {
555 bool r =
-
556 ((flags & match_multiline) || !islbreak(text[start])) &&
+
556 ((flags & match_multiline) || !stdex::islbreak(text[start])) &&
557 std::use_facet<std::ctype<T>>(this->m_locale).is(std::ctype_base::space | std::ctype_base::punct, text[start]);
558 if ((r && !m_invert) || (!r && m_invert)) {
559 this->interval.end = (this->interval.start = start) + 1;
@@ -664,7 +664,7 @@ $(document).ready(function() { init_codefold(0); });
598 const wchar_t* chr = next_sgml_cp(text, start, end, this->interval.end, buf);
599 const wchar_t* chr_end = chr + stdex::strlen(chr);
600 bool r =
-
601 ((flags & match_multiline) || !islbreak(chr, SIZE_MAX)) &&
+
601 ((flags & match_multiline) || !stdex::islbreak(chr, SIZE_MAX)) &&
602 std::use_facet<std::ctype<wchar_t>>(m_locale).scan_not(std::ctype_base::space | std::ctype_base::punct, chr, chr_end) == chr_end;
603 if ((r && !m_invert) || (!r && m_invert)) {
604 this->interval.start = start;
@@ -691,7 +691,7 @@ $(document).ready(function() { init_codefold(0); });
626 _In_ int flags = match_default)
627 {
628 _Assume_(text || start >= end);
-
629 bool r = start == 0 || (start <= end && islbreak(text[start - 1]));
+
629 bool r = start == 0 || (start <= end && stdex::islbreak(text[start - 1]));
630 if ((r && !m_invert) || (!r && m_invert)) {
631 this->interval.end = this->interval.start = start;
632 return true;
@@ -728,7 +728,7 @@ $(document).ready(function() { init_codefold(0); });
664 _In_ int flags = match_default)
665 {
666 _Assume_(text || start >= end);
-
667 bool r = islbreak(text[start]);
+
667 bool r = stdex::islbreak(text[start]);
668 if ((r && !m_invert) || (!r && m_invert)) {
669 this->interval.end = this->interval.start = start;
670 return true;
@@ -5667,17 +5667,17 @@ $(document).ready(function() { init_codefold(0); });
5666 this->interval.end = start;
5667 if (m_line_break.match(text, this->interval.end, end, flags)) {
5668 this->interval.end = m_line_break.interval.end;
-
5669 if (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) {
+
5669 if (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) {
5670 this->interval.start = start;
5671 this->interval.end++;
-
5672 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
5672 while (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) this->interval.end++;
5673 return true;
5674 }
5675 }
-
5676 else if (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) {
+
5676 else if (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) {
5677 this->interval.start = start;
5678 this->interval.end++;
-
5679 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
5679 while (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) this->interval.end++;
5680 return true;
5681 }
5682 this->interval.invalidate();
@@ -5755,7 +5755,7 @@ $(document).ready(function() { init_codefold(0); });
5756 text[this->interval.end] == '=' ||
5757 text[this->interval.end] == '{' ||
5758 text[this->interval.end] == '}' ||
-
5759 isspace(text[this->interval.end]))
+
5759 stdex::isspace(text[this->interval.end]))
5760 break;
5761 else
5762 this->interval.end++;
@@ -6097,7 +6097,7 @@ $(document).ready(function() { init_codefold(0); });
6105 (unsigned int)text[this->interval.end] == 0x7f ||
6106 text[this->interval.end] == ':' ||
6107 text[this->interval.end] == '/' ||
-
6108 isspace(text[this->interval.end]))
+
6108 stdex::isspace(text[this->interval.end]))
6109 break;
6110 else
6111 this->interval.end++;
@@ -6188,7 +6188,7 @@ $(document).ready(function() { init_codefold(0); });
6198 (unsigned int)text[this->interval.end] == 0x7f ||
6199 text[this->interval.end] == '?' ||
6200 text[this->interval.end] == '/' ||
-
6201 isspace(text[this->interval.end]))
+
6201 stdex::isspace(text[this->interval.end]))
6202 break;
6203 else
6204 this->interval.end++;
@@ -6276,7 +6276,7 @@ $(document).ready(function() { init_codefold(0); });
6288 (unsigned int)text[this->interval.end] == 0x7f ||
6289 text[this->interval.end] == '&' ||
6290 text[this->interval.end] == '=' ||
-
6291 isspace(text[this->interval.end]))
+
6291 stdex::isspace(text[this->interval.end]))
6292 break;
6293 else
6294 this->interval.end++;
@@ -6296,7 +6296,7 @@ $(document).ready(function() { init_codefold(0); });
6308 if ((unsigned int)text[this->interval.end] < 0x20 ||
6309 (unsigned int)text[this->interval.end] == 0x7f ||
6310 text[this->interval.end] == '&' ||
-
6311 isspace(text[this->interval.end]))
+
6311 stdex::isspace(text[this->interval.end]))
6312 break;
6313 else
6314 this->interval.end++;
@@ -6390,7 +6390,7 @@ $(document).ready(function() { init_codefold(0); });
6403 if (this->interval.end < end && text[this->interval.end]) {
6404 if ((unsigned int)text[this->interval.end] < 0x20 ||
6405 (unsigned int)text[this->interval.end] == 0x7f ||
-
6406 isspace(text[this->interval.end]))
+
6406 stdex::isspace(text[this->interval.end]))
6407 break;
6408 else if (text[this->interval.end] == '&')
6409 this->interval.end++;
@@ -6457,7 +6457,7 @@ $(document).ready(function() { init_codefold(0); });
6471 k.end = this->interval.end;
6472 for (;;) {
6473 if (k.end < end && text[k.end]) {
-
6474 if (isalpha(text[k.end]))
+
6474 if (stdex::isalpha(text[k.end]))
6475 k.end++;
6476 else
6477 break;
@@ -6623,16 +6623,16 @@ $(document).ready(function() { init_codefold(0); });
6640 return false;
6641 }
6642
-
6643 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6643 while (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) this->interval.end++;
6644 if (this->interval.end < end && text[this->interval.end] == ';') {
6645 this->interval.end++;
-
6646 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6646 while (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) this->interval.end++;
6647 if (this->interval.end < end && (text[this->interval.end] == 'q' || text[this->interval.end] == 'Q')) {
6648 this->interval.end++;
-
6649 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6649 while (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) this->interval.end++;
6650 if (this->interval.end < end && text[this->interval.end] == '=') {
6651 this->interval.end++;
-
6652 while (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])) this->interval.end++;
+
6652 while (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])) this->interval.end++;
6653 if (factor.match(text, this->interval.end, end, flags))
6654 this->interval.end = factor.interval.end;
6655 }
@@ -6821,7 +6821,7 @@ $(document).ready(function() { init_codefold(0); });
6841 version.start = this->interval.end;
6842 for (;;) {
6843 if (this->interval.end < end && text[this->interval.end]) {
-
6844 if (isspace(text[this->interval.end])) {
+
6844 if (stdex::isspace(text[this->interval.end])) {
6845 version.end = this->interval.end;
6846 break;
6847 }
@@ -6835,7 +6835,7 @@ $(document).ready(function() { init_codefold(0); });
6855 }
6856 break;
6857 }
-
6858 else if (isspace(text[this->interval.end])) {
+
6858 else if (stdex::isspace(text[this->interval.end])) {
6859 type.end = this->interval.end;
6860 break;
6861 }
@@ -6899,7 +6899,7 @@ $(document).ready(function() { init_codefold(0); });
6920 this->interval.end++;
6921 break;
6922 }
-
6923 else if (isspace(text[this->interval.end]))
+
6923 else if (stdex::isspace(text[this->interval.end]))
6924 goto error;
6925 else
6926 this->interval.end++;
@@ -6918,7 +6918,7 @@ $(document).ready(function() { init_codefold(0); });
6939 version_min.start = this->interval.end;
6940 for (;;) {
6941 if (this->interval.end < end && text[this->interval.end]) {
-
6942 if (isspace(text[this->interval.end])) {
+
6942 if (stdex::isspace(text[this->interval.end])) {
6943 version_min.end = this->interval.end;
6944 version =
6945 (uint16_t)strtoui(text + version_maj.start, version_maj.size(), nullptr, 10) * 0x100 +
@@ -6933,7 +6933,7 @@ $(document).ready(function() { init_codefold(0); });
6954 }
6955 break;
6956 }
-
6957 else if (isspace(text[this->interval.end])) {
+
6957 else if (stdex::isspace(text[this->interval.end])) {
6958 version_maj.end = this->interval.end;
6959 version_min.start = 1;
6960 version_min.end = 0;
@@ -7004,7 +7004,7 @@ $(document).ready(function() { init_codefold(0); });
7026 if (m_line_break.match(text, this->interval.end, end, flags))
7027 goto error;
7028 else if (this->interval.end < end && text[this->interval.end]) {
-
7029 if (isspace(text[this->interval.end]))
+
7029 if (stdex::isspace(text[this->interval.end]))
7030 this->interval.end++;
7031 else
7032 break;
@@ -7017,7 +7017,7 @@ $(document).ready(function() { init_codefold(0); });
7039 if (m_line_break.match(text, this->interval.end, end, flags))
7040 goto error;
7041 else if (this->interval.end < end && text[this->interval.end]) {
-
7042 if (isspace(text[this->interval.end])) {
+
7042 if (stdex::isspace(text[this->interval.end])) {
7043 verb.end = this->interval.end;
7044 this->interval.end++;
7045 break;
@@ -7033,7 +7033,7 @@ $(document).ready(function() { init_codefold(0); });
7055 if (m_line_break.match(text, this->interval.end, end, flags))
7056 goto error;
7057 else if (this->interval.end < end && text[this->interval.end]) {
-
7058 if (isspace(text[this->interval.end]))
+
7058 if (stdex::isspace(text[this->interval.end]))
7059 this->interval.end++;
7060 else
7061 break;
@@ -7053,7 +7053,7 @@ $(document).ready(function() { init_codefold(0); });
7075 goto end;
7076 }
7077 else if (this->interval.end < end && text[this->interval.end]) {
-
7078 if (isspace(text[this->interval.end]))
+
7078 if (stdex::isspace(text[this->interval.end]))
7079 this->interval.end++;
7080 else
7081 break;
@@ -7131,21 +7131,21 @@ $(document).ready(function() { init_codefold(0); });
7154 this->interval.end = start;
7155
7156 if (m_line_break.match(text, this->interval.end, end, flags) ||
-
7157 (this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end])))
+
7157 (this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end])))
7158 goto error;
7159 name.start = this->interval.end;
7160 for (;;) {
7161 if (m_line_break.match(text, this->interval.end, end, flags))
7162 goto error;
7163 else if (this->interval.end < end && text[this->interval.end]) {
-
7164 if (isspace(text[this->interval.end])) {
+
7164 if (stdex::isspace(text[this->interval.end])) {
7165 name.end = this->interval.end;
7166 this->interval.end++;
7167 for (;;) {
7168 if (m_line_break.match(text, this->interval.end, end, flags))
7169 goto error;
7170 else if (this->interval.end < end && text[this->interval.end]) {
-
7171 if (isspace(text[this->interval.end]))
+
7171 if (stdex::isspace(text[this->interval.end]))
7172 this->interval.end++;
7173 else
7174 break;
@@ -7178,13 +7178,13 @@ $(document).ready(function() { init_codefold(0); });
7201 if (m_line_break.match(text, this->interval.end, end, flags)) {
7202 this->interval.end = m_line_break.interval.end;
7203 if (!m_line_break.match(text, this->interval.end, end, flags) &&
-
7204 this->interval.end < end && text[this->interval.end] && isspace(text[this->interval.end]))
+
7204 this->interval.end < end && text[this->interval.end] && stdex::isspace(text[this->interval.end]))
7205 this->interval.end++;
7206 else
7207 break;
7208 }
7209 else if (this->interval.end < end && text[this->interval.end]) {
-
7210 if (isspace(text[this->interval.end]))
+
7210 if (stdex::isspace(text[this->interval.end]))
7211 this->interval.end++;
7212 else {
7213 if (value.start == SIZE_MAX) value.start = this->interval.end;
@@ -7236,10 +7236,10 @@ $(document).ready(function() { init_codefold(0); });
7260 _In_ int flags = match_default)
7261 {
7262 while (start < end) {
-
7263 while (start < end && text[start] && isspace(text[start])) start++;
+
7263 while (start < end && text[start] && stdex::isspace(text[start])) start++;
7264 if (start < end && text[start] == ',') {
7265 start++;
-
7266 while (start < end&& text[start] && isspace(text[start])) start++;
+
7266 while (start < end&& text[start] && stdex::isspace(text[start])) start++;
7267 }
7268 _Key el;
7269 if (el.match(text, start, end, flags)) {
@@ -8635,7 +8635,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/pch_8hpp_source.html b/pch_8hpp_source.html index 75273ef15..8890cb1ab 100644 --- a/pch_8hpp_source.html +++ b/pch_8hpp_source.html @@ -124,7 +124,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/pool_8hpp_source.html b/pool_8hpp_source.html index 3bd26c93e..b418b9028 100644 --- a/pool_8hpp_source.html +++ b/pool_8hpp_source.html @@ -170,7 +170,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/progress_8hpp_source.html b/progress_8hpp_source.html index a21df4f2e..7e241fc11 100644 --- a/progress_8hpp_source.html +++ b/progress_8hpp_source.html @@ -331,7 +331,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/ring_8cpp_source.html b/ring_8cpp_source.html index 98c4211ed..1d26651b3 100644 --- a/ring_8cpp_source.html +++ b/ring_8cpp_source.html @@ -144,7 +144,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/ring_8hpp_source.html b/ring_8hpp_source.html index 6c9e2aa3b..377d8a8a0 100644 --- a/ring_8hpp_source.html +++ b/ring_8hpp_source.html @@ -223,7 +223,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/sgml_8cpp_source.html b/sgml_8cpp_source.html index d534d58ba..4717e4569 100644 --- a/sgml_8cpp_source.html +++ b/sgml_8cpp_source.html @@ -153,7 +153,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/sgml_8hpp_source.html b/sgml_8hpp_source.html index 1fa5e6484..2776839d7 100644 --- a/sgml_8hpp_source.html +++ b/sgml_8hpp_source.html @@ -710,7 +710,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/sgml__unicode_8hpp_source.html b/sgml__unicode_8hpp_source.html index c35ad809f..f69abf6e2 100644 --- a/sgml__unicode_8hpp_source.html +++ b/sgml__unicode_8hpp_source.html @@ -3175,7 +3175,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/socket_8hpp_source.html b/socket_8hpp_source.html index a00ea65a7..322770bcb 100644 --- a/socket_8hpp_source.html +++ b/socket_8hpp_source.html @@ -113,7 +113,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/spinlock_8hpp_source.html b/spinlock_8hpp_source.html index b96076af9..0c90a5b08 100644 --- a/spinlock_8hpp_source.html +++ b/spinlock_8hpp_source.html @@ -157,7 +157,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/stream_8cpp_source.html b/stream_8cpp_source.html index e3d853af4..35f99e208 100644 --- a/stream_8cpp_source.html +++ b/stream_8cpp_source.html @@ -257,7 +257,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/stream_8hpp_source.html b/stream_8hpp_source.html index a14aca430..f0373f647 100644 --- a/stream_8hpp_source.html +++ b/stream_8hpp_source.html @@ -4010,7 +4010,7 @@ $(document).ready(function() { init_codefold(0); });
4187 }
4188}
-
stdex::charset_encoder
Encoding converter context.
Definition unicode.hpp:117
+
stdex::charset_encoder
Encoding converter context.
Definition unicode.hpp:133
stdex::stream::async_reader
Provides read-ahead stream capability.
Definition stream.hpp:1256
stdex::stream::async_reader::read
virtual size_t read(_Out_writes_bytes_to_opt_(length, return) void *data, size_t length)
Reads block of data from the stream.
Definition stream.hpp:1270
stdex::stream::async_writer
Provides write-back stream capability.
Definition stream.hpp:1323
@@ -4225,7 +4225,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/string_8hpp_source.html b/string_8hpp_source.html index e2dfe935b..366f36d1b 100644 --- a/string_8hpp_source.html +++ b/string_8hpp_source.html @@ -195,1276 +195,1282 @@ $(document).ready(function() { init_codefold(0); });
177 return '0' <= chr && chr <= '9';
178 }
179
-
186 inline size_t glyphlen(_In_reads_or_z_opt_(count) const wchar_t* glyph, _In_ size_t count)
+
185 template <class T>
+
186 inline bool isalpha(_In_ T chr)
187 {
-
188 _Assume_(glyph || !count);
-
189 if (count) {
-
190#ifdef _WIN32
-
191 size_t i = count < 2 || !is_surrogate_pair(glyph) ? 1 : 2;
-
192#else
-
193 size_t i = 1;
-
194#endif
-
195 for (; i < count && iscombining(glyph[i]); ++i);
-
196 return i;
-
197 }
-
198 return 0;
-
199 }
-
200
-
208 template <class T>
-
209 inline T tolower(_In_ T chr)
-
210 {
-
211 return isupper(chr) ? chr | 0x20 : chr;
-
212 }
-
213
-
221 template <class T>
-
222 inline T toupper(_In_ T chr)
-
223 {
-
224 return islower(chr) ? chr | ~0x20 : chr;
-
225 }
-
226
-
234 template <class T>
-
235 inline size_t strlen(_In_z_ const T* str)
-
236 {
-
237 _Assume_(str);
-
238 size_t i;
-
239 for (i = 0; str[i]; ++i);
-
240 return i;
-
241 }
-
242
-
251 template <class T>
-
252 inline size_t strnlen(_In_reads_or_z_opt_(count) const T* str, _In_ size_t count)
-
253 {
-
254 _Assume_(str || !count);
-
255 size_t i;
-
256 for (i = 0; i < count && str[i]; ++i);
-
257 return i;
-
258 }
-
259
-
260 constexpr auto npos{ static_cast<size_t>(-1) };
-
261
-
270 template <class T>
-
271 inline size_t strchr(_In_z_ const T* str, _In_ T chr)
-
272 {
-
273 _Assume_(str);
-
274 for (size_t i = 0; str[i]; ++i)
-
275 if (str[i] == chr) return i;
-
276 return npos;
-
277 }
-
278
-
288 template <class T>
-
289 inline size_t strnchr(
-
290 _In_reads_or_z_opt_(count) const T* str,
-
291 _In_ size_t count,
-
292 _In_ T chr)
-
293 {
-
294 _Assume_(str || !count);
-
295 for (size_t i = 0; i < count && str[i]; ++i)
-
296 if (str[i] == chr) return i;
-
297 return npos;
-
298 }
-
299
-
309 template <class T>
-
310 inline size_t strrnchr(
-
311 _In_reads_or_z_opt_(count) const T* str,
-
312 _In_ size_t count,
-
313 _In_ T chr)
-
314 {
-
315 _Assume_(str || !count);
-
316 size_t z = npos;
-
317 for (size_t i = 0; i < count && str[i]; ++i)
-
318 if (str[i] == chr) z = i;
-
319 return z;
-
320 }
-
321
-
330 template <class T>
-
331 inline bool isblank(
-
332 _In_reads_or_z_opt_(count) const T* str,
-
333 _In_ size_t count)
-
334 {
-
335 _Assume_(str || !count);
-
336 for (size_t i = 0; i < count && str[i]; ++i)
-
337 if (!isspace(str[i]))
-
338 return false;
-
339 return true;
-
340 }
-
341
-
351 template <class T>
-
352 inline bool isblank(
-
353 _In_reads_or_z_opt_(count) const T* str,
-
354 _In_ size_t count,
-
355 _In_ const std::locale& locale)
-
356 {
-
357 _Assume_(str || !count);
-
358 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
359 for (size_t i = 0; i < count && str[i]; ++i)
-
360 if (!ctype.is(ctype.space, str[i]))
-
361 return false;
-
362 return true;
-
363 }
-
364
-
374 template <class T>
-
375 inline size_t strnichr(
-
376 _In_reads_or_z_opt_(count) const T* str,
-
377 _In_ size_t count,
-
378 _In_ T chr)
-
379 {
-
380 _Assume_(str || !count);
-
381 chr = tolower(chr);
-
382 for (size_t i = 0; i < count && str[i]; ++i)
-
383 if (tolower(str[i]) == chr) return i;
-
384 return npos;
-
385 }
-
386
-
397 template <class T>
-
398 inline size_t strnichr(
-
399 _In_reads_or_z_opt_(count) const T* str,
-
400 _In_ size_t count,
-
401 _In_ T chr,
-
402 _In_ const std::locale& locale)
-
403 {
-
404 _Assume_(str || !count);
-
405 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
406 chr = ctype.tolower(chr);
-
407 for (size_t i = 0; i < count && str[i]; ++i)
-
408 if (ctype.tolower(str[i]) == chr) return i;
-
409 return npos;
-
410 }
-
411
-
421 template <class T>
-
422 inline size_t strrnichr(
-
423 _In_reads_or_z_opt_(count) const T* str,
-
424 _In_ size_t count,
-
425 _In_ T chr)
-
426 {
-
427 _Assume_(str || !count);
-
428 chr = tolower(chr);
-
429 size_t z = npos;
-
430 for (size_t i = 0; i < count && str[i]; ++i)
-
431 if (tolower(str[i]) == chr) z = i;
-
432 return z;
-
433 }
-
434
-
445 template <class T>
-
446 inline size_t strrnichr(
-
447 _In_reads_or_z_opt_(count) const T* str,
-
448 _In_ size_t count,
-
449 _In_ T chr,
-
450 _In_ const std::locale& locale)
-
451 {
-
452 _Assume_(str || !count);
-
453 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
454 chr = ctype.tolower(chr);
-
455 size_t z = npos;
-
456 for (size_t i = 0; i < count && str[i]; ++i)
-
457 if (ctype.tolower(str[i]) == chr) z = i;
-
458 return z;
-
459 }
-
460
-
469 template <class T1, class T2>
-
470 inline int strcmp(const T1* str1, const T2* str2)
-
471 {
-
472 _Assume_(str1 && str2);
-
473 T1 a; T2 b;
-
474 for (size_t i = 0; (a = str1[i]) | (b = str2[i]); ++i) {
-
475 if (a > b) return +1;
-
476 if (a < b) return -1;
-
477 }
-
478 return 0;
-
479 }
-
480
-
491 template <class T1, class T2>
-
492 inline int strncmp(
-
493 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
-
494 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2)
-
495 {
-
496 _Assume_(str1 || !count1);
-
497 _Assume_(str2 || !count2);
-
498 size_t i; T1 a; T2 b;
-
499 for (i = 0; i < count1 && i < count2 && ((a = str1[i]) | (b = str2[i])); ++i) {
-
500 if (a > b) return +1;
-
501 if (a < b) return -1;
-
502 }
-
503 if (i < count1 && str1[i]) return +1;
-
504 if (i < count2 && str2[i]) return -1;
-
505 return 0;
-
506 }
-
507
-
517 template <class T1, class T2>
-
518 inline int strncmp(_In_reads_or_z_opt_(count) const T1* str1, _In_reads_or_z_opt_(count) const T2* str2, _In_ size_t count)
-
519 {
-
520 _Assume_((str1 && str2) || !count);
-
521 size_t i; T1 a; T2 b;
-
522 for (i = 0; i < count && ((a = str1[i]) | (b = str2[i])); ++i) {
-
523 if (a > b) return +1;
-
524 if (a < b) return -1;
-
525 }
-
526 if (i < count && str1[i]) return +1;
-
527 if (i < count && str2[i]) return -1;
-
528 return 0;
-
529 }
-
530
-
542 template <class T>
-
543 inline int strncoll(
-
544 _In_reads_or_z_opt_(count1) const T* str1, _In_ size_t count1,
-
545 _In_reads_or_z_opt_(count2) const T* str2, _In_ size_t count2,
-
546 _In_ const std::locale& locale)
-
547 {
-
548 _Assume_(str1 || !count1);
-
549 _Assume_(str2 || !count2);
-
550 auto& collate = std::use_facet<std::collate<T>>(locale);
-
551 return collate.compare(str1, str1 + count1, str2, str2 + count2);
-
552 }
-
553
-
562 template <class T1, class T2>
-
563 inline int stricmp(_In_z_ const T1* str1, _In_z_ const T2* str2)
-
564 {
-
565 _Assume_(str1);
-
566 _Assume_(str2);
-
567 size_t i; T1 a; T2 b;
-
568 for (i = 0; (a = tolower(str1[i])) | (b = tolower(str2[i])); i++) {
-
569 if (a > b) return +1;
-
570 if (a < b) return -1;
-
571 }
-
572 if (str1[i]) return +1;
-
573 if (str2[i]) return -1;
-
574 return 0;
-
575 }
-
576
-
586 template <class T1, class T2>
-
587 inline int stricmp(_In_z_ const T1* str1, _In_z_ const T2* str2, _In_ const std::locale& locale)
-
588 {
-
589 _Assume_(str1);
-
590 _Assume_(str2);
-
591 size_t i; T1 a; T2 b;
-
592 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
-
593 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
-
594 for (i = 0; (a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i])); i++) {
-
595 if (a > b) return +1;
-
596 if (a < b) return -1;
-
597 }
-
598 if (str1[i]) return +1;
-
599 if (str2[i]) return -1;
-
600 return 0;
-
601 }
-
602
-
612 template <class T1, class T2>
-
613 inline int strnicmp(_In_reads_or_z_opt_(count) const T1* str1, _In_reads_or_z_opt_(count) const T2* str2, _In_ size_t count)
-
614 {
-
615 _Assume_(str1 || !count);
-
616 _Assume_(str2 || !count);
-
617 size_t i; T1 a; T2 b;
-
618 for (i = 0; i < count && ((a = tolower(str1[i])) | (b = tolower(str2[i]))); i++) {
-
619 if (a > b) return +1;
-
620 if (a < b) return -1;
-
621 }
-
622 if (i < count && str1[i]) return +1;
-
623 if (i < count && str2[i]) return -1;
-
624 return 0;
-
625 }
-
626
-
637 template <class T1, class T2>
-
638 inline int strnicmp(_In_reads_or_z_opt_(count) const T1* str1, _In_reads_or_z_opt_(count) const T2* str2, _In_ size_t count, _In_ const std::locale& locale)
-
639 {
-
640 _Assume_(str1 || !count);
-
641 _Assume_(str2 || !count);
-
642 size_t i; T1 a; T2 b;
-
643 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
-
644 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
-
645 for (i = 0; i < count && ((a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i]))); i++) {
-
646 if (a > b) return +1;
-
647 if (a < b) return -1;
-
648 }
-
649 if (i < count && str1[i]) return +1;
-
650 if (i < count && str2[i]) return -1;
-
651 return 0;
-
652 }
-
653
-
664 template <class T1, class T2>
-
665 inline int strnicmp(
-
666 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
-
667 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2)
-
668 {
-
669 _Assume_(str1 || !count1);
-
670 _Assume_(str2 || !count2);
-
671 size_t i; T1 a; T2 b;
-
672 for (i = 0; i < count1 && i < count2 && ((a = tolower(str1[i])) | (b = tolower(str2[i]))); i++) {
-
673 if (a > b) return +1;
-
674 if (a < b) return -1;
-
675 }
-
676 if (i < count1 && str1[i]) return +1;
-
677 if (i < count2 && str2[i]) return -1;
-
678 return 0;
-
679 }
-
680
-
692 template <class T1, class T2>
-
693 inline int strnicmp(
-
694 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
-
695 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2,
-
696 _In_ const std::locale& locale)
-
697 {
-
698 _Assume_(str1 || !count1);
-
699 _Assume_(str2 || !count2);
-
700 size_t i; T1 a; T2 b;
-
701 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
-
702 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
-
703 for (i = 0; i < count1 && i < count2 && ((a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i]))); i++) {
-
704 if (a > b) return +1;
-
705 if (a < b) return -1;
-
706 }
-
707 if (i < count1 && str1[i]) return +1;
-
708 if (i < count2 && str2[i]) return -1;
-
709 return 0;
-
710 }
-
711
-
720 template <class T1, class T2>
-
721 inline size_t strstr(
-
722 _In_z_ const T1* str,
-
723 _In_z_ const T2* sample)
-
724 {
-
725 _Assume_(str);
-
726 _Assume_(sample);
-
727 for (size_t offset = 0;; ++offset) {
-
728 for (size_t i = offset, j = 0;; ++i, ++j) {
-
729 if (!sample[j])
-
730 return offset;
-
731 if (!str[i])
-
732 return npos;
-
733 if (str[i] != sample[j])
-
734 break;
-
735 }
-
736 }
-
737 }
-
738
-
748 template <class T1, class T2>
-
749 inline size_t strnstr(
-
750 _In_reads_or_z_opt_(count) const T1* str,
-
751 _In_ size_t count,
-
752 _In_z_ const T2* sample)
-
753 {
-
754 _Assume_(str || !count);
-
755 _Assume_(sample);
-
756 for (size_t offset = 0;; ++offset) {
-
757 for (size_t i = offset, j = 0;; ++i, ++j) {
-
758 if (!sample[j])
-
759 return offset;
-
760 if (i >= count || !str[i])
-
761 return npos;
-
762 if (str[i] != sample[j])
-
763 break;
-
764 }
-
765 }
-
766 }
-
767
-
776 template <class T1, class T2>
-
777 inline size_t stristr(
-
778 _In_z_ const T1* str,
-
779 _In_z_ const T2* sample)
-
780 {
-
781 _Assume_(str);
-
782 _Assume_(sample);
-
783 for (size_t offset = 0;; ++offset) {
-
784 for (size_t i = offset, j = 0;; ++i, ++j) {
-
785 if (!sample[j])
-
786 return offset;
-
787 if (!str[i])
-
788 return npos;
-
789 if (tolower(str[i]) != tolower(sample[j]))
-
790 break;
-
791 }
-
792 }
-
793 }
-
794
-
804 template <class T1, class T2>
-
805 inline size_t stristr(
-
806 _In_z_ const T1* str,
-
807 _In_z_ const T2* sample,
-
808 _In_ const std::locale& locale)
-
809 {
-
810 _Assume_(str);
-
811 _Assume_(sample);
-
812 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
-
813 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
-
814 for (size_t offset = 0;; ++offset) {
-
815 for (size_t i = offset, j = 0;; ++i, ++j) {
-
816 if (!sample[j])
-
817 return offset;
-
818 if (!str[i])
-
819 return npos;
-
820 if (ctype1.tolower(str[i]) != ctype2.tolower(sample[j]))
-
821 break;
-
822 }
-
823 }
-
824 }
-
825
-
835 template <class T1, class T2>
-
836 inline size_t strnistr(
-
837 _In_reads_or_z_opt_(count) const T1* str,
-
838 _In_ size_t count,
-
839 _In_z_ const T2* sample)
-
840 {
-
841 _Assume_(str || !count);
-
842 _Assume_(sample);
-
843 for (size_t offset = 0;; ++offset) {
-
844 for (size_t i = offset, j = 0;; ++i, ++j) {
-
845 if (!sample[j])
-
846 return offset;
-
847 if (i >= count || !str[i])
-
848 return npos;
-
849 if (tolower(str[i]) != tolower(sample[j]))
-
850 break;
-
851 }
-
852 }
-
853 }
-
854
-
865 template <class T1, class T2>
-
866 inline size_t strnistr(
-
867 _In_reads_or_z_opt_(count) const T1* str,
-
868 _In_ size_t count,
-
869 _In_z_ const T2* sample,
-
870 _In_ const std::locale& locale)
-
871 {
-
872 _Assume_(str || !count);
-
873 _Assume_(sample);
-
874 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
-
875 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
-
876 for (size_t offset = 0;; ++offset) {
-
877 for (size_t i = offset, j = 0;; ++i, ++j) {
-
878 if (!sample[j])
-
879 return offset;
-
880 if (i >= count || !str[i])
-
881 return npos;
-
882 if (ctype1.tolower(str[i]) != ctype2.tolower(sample[j]))
-
883 break;
-
884 }
-
885 }
-
886 }
-
887
-
896 template <class T1, class T2>
-
897 inline size_t strcpy(
-
898 _Out_writes_z_(_String_length_(src) + 1) T1* dst,
-
899 _In_z_ const T2* src)
-
900 {
-
901 _Assume_(dst && src);
-
902 for (size_t i = 0; ; ++i) {
-
903 if ((dst[i] = src[i]) == 0)
-
904 return i;
-
905 }
-
906 }
-
907
-
917 template <class T1, class T2>
-
918 inline size_t strncpy(
-
919 _Out_writes_(count) _Post_maybez_ T1* dst,
-
920 _In_reads_or_z_opt_(count) const T2* src, _In_ size_t count)
-
921 {
-
922 _Assume_(dst && src || !count);
-
923 for (size_t i = 0; ; ++i) {
-
924 if (i >= count)
-
925 return i;
-
926 if ((dst[i] = src[i]) == 0)
-
927 return i;
-
928 }
-
929 }
-
930
-
941 template <class T1, class T2>
-
942 inline size_t strncpy(
-
943 _Out_writes_(count_dst) _Post_maybez_ T1* dst, _In_ size_t count_dst,
-
944 _In_reads_or_z_opt_(count_src) const T2* src, _In_ size_t count_src)
-
945 {
-
946 _Assume_(dst || !count_dst);
-
947 _Assume_(src || !count_src);
-
948 for (size_t i = 0; ; ++i)
-
949 {
-
950 if (i >= count_dst)
-
951 return i;
-
952 if (i >= count_src) {
-
953 dst[i] = 0;
-
954 return i;
-
955 }
-
956 if ((dst[i] = src[i]) == 0)
-
957 return i;
-
958 }
-
959 }
-
960
-
969 template <class T1, class T2>
-
970 inline size_t strcat(
-
971 _In_z_ _Out_writes_z_(_String_length_(dst) + _String_length_(src) + 1) T1* dst,
-
972 _In_z_ const T2* src)
-
973 {
-
974 _Assume_(dst && src);
-
975 for (size_t i = 0, j = stdex::strlen<T1>(dst); ; ++i, ++j) {
-
976 if ((dst[j] = src[i]) == 0)
-
977 return j;
-
978 }
-
979 }
-
980
-
990 template <class T1, class T2>
-
991 inline size_t strncat(
-
992 _Inout_z_ T1* dst,
-
993 _In_reads_or_z_opt_(count) const T2* src, _In_ size_t count)
-
994 {
-
995 _Assume_(dst && src || !count);
-
996 for (size_t i = 0, j = stdex::strlen<T1>(dst); ; ++i, ++j) {
-
997 if (i >= count)
-
998 return j;
-
999 if ((dst[j] = src[i]) == 0)
-
1000 return j;
-
1001 }
-
1002 }
-
1003
-
1014 template <class T1, class T2>
-
1015 inline size_t strncat(
-
1016 _Out_writes_(count_dst) _Post_maybez_ T1* dst, _In_ size_t count_dst,
-
1017 _In_reads_or_z_opt_(count_src) const T2* src, _In_ size_t count_src)
-
1018 {
-
1019 _Assume_(dst || !count_dst);
-
1020 _Assume_(src || !count_src);
-
1021 for (size_t i = 0, j = stdex::strnlen<T1>(dst, count_dst); ; ++i, ++j)
-
1022 {
-
1023 if (j >= count_dst)
-
1024 return j;
-
1025 if (i >= count_src) {
-
1026 dst[j] = 0;
-
1027 return j;
-
1028 }
-
1029 if ((dst[j] = src[i]) == 0)
-
1030 return j;
-
1031 }
-
1032 }
-
1033
-
1044 template <class T>
-
1045 inline _Check_return_ _Ret_maybenull_z_ T* strdup(_In_opt_z_ const T* str)
-
1046 {
-
1047 if (!str) _Unlikely_
-
1048 return nullptr;
-
1049 size_t count = strlen(str) + 1;
-
1050 T* dst = new T[count];
-
1051 strncpy(dst, count, str, SIZE_MAX);
-
1052 return dst;
-
1053 }
-
1054
-
1066 template <class T>
-
1067 inline _Ret_z_ T* strndup(
-
1068 _In_reads_or_z_opt_(count) const T* str,
-
1069 _In_ size_t count)
-
1070 {
-
1071 T* dst = new T[count];
-
1072 strncpy(dst, count, str, SIZE_MAX);
-
1073 return dst;
-
1074 }
-
1075
-
1085 template <class T>
-
1086 inline size_t crlf2nl(_Out_writes_z_(strlen(src)) T* dst, _In_z_ const T* src)
-
1087 {
-
1088 _Assume_(dst);
-
1089 _Assume_(src);
-
1090 size_t i, j;
-
1091 for (i = j = 0; src[j];) {
-
1092 if (src[j] != '\r' || src[j + 1] != '\n')
-
1093 dst[i++] = src[j++];
-
1094 else {
-
1095 dst[i++] = '\n';
-
1096 j += 2;
-
1097 }
-
1098 }
-
1099 dst[i] = 0;
-
1100 return i;
-
1101 }
-
1102
-
1109 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1110 inline void crlf2nl(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& dst, _In_z_ const _Elem* src)
-
1111 {
-
1112 _Assume_(src);
-
1113 _Assume_(src != dst.c_str());
-
1114 dst.clear();
-
1115 dst.reserve(strlen(src));
-
1116 for (size_t j = 0; src[j];) {
-
1117 if (src[j] != '\r' || src[j + 1] != '\n')
-
1118 dst += src[j++];
-
1119 else {
-
1120 dst += '\n';
-
1121 j += 2;
-
1122 }
-
1123 }
-
1124 }
-
1125
-
1131 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1132 inline void crlf2nl(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str)
-
1133 {
-
1134 size_t i, j, n;
-
1135 for (i = j = 0, n = str.size(); j < n;) {
-
1136 if (str[j] != '\r' || str[j + 1] != '\n')
-
1137 str[i++] = str[j++];
-
1138 else {
-
1139 str[i++] = '\n';
-
1140 j += 2;
-
1141 }
-
1142 }
-
1143 str.resize(i);
-
1144 }
-
1145
-
1147 template <class T, class T_bin>
-
1148 inline T_bin strtoint(
-
1149 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1150 _Out_opt_ size_t* end,
-
1151 _In_ int radix,
-
1152 _Out_ uint8_t& flags)
-
1153 {
-
1154 _Assume_(str || !count);
-
1155 _Assume_(radix == 0 || 2 <= radix && radix <= 36);
+
188 return islower(chr) || isupper(chr);
+
189 }
+
190
+
197 inline size_t glyphlen(_In_reads_or_z_opt_(count) const wchar_t* glyph, _In_ size_t count)
+
198 {
+
199 _Assume_(glyph || !count);
+
200 if (count) {
+
201#ifdef _WIN32
+
202 size_t i = count < 2 || !is_surrogate_pair(glyph) ? 1 : 2;
+
203#else
+
204 size_t i = 1;
+
205#endif
+
206 for (; i < count && iscombining(glyph[i]); ++i);
+
207 return i;
+
208 }
+
209 return 0;
+
210 }
+
211
+
219 template <class T>
+
220 inline T tolower(_In_ T chr)
+
221 {
+
222 return isupper(chr) ? chr | 0x20 : chr;
+
223 }
+
224
+
232 template <class T>
+
233 inline T toupper(_In_ T chr)
+
234 {
+
235 return islower(chr) ? chr | ~0x20 : chr;
+
236 }
+
237
+
245 template <class T>
+
246 inline size_t strlen(_In_z_ const T* str)
+
247 {
+
248 _Assume_(str);
+
249 size_t i;
+
250 for (i = 0; str[i]; ++i);
+
251 return i;
+
252 }
+
253
+
262 template <class T>
+
263 inline size_t strnlen(_In_reads_or_z_opt_(count) const T* str, _In_ size_t count)
+
264 {
+
265 _Assume_(str || !count);
+
266 size_t i;
+
267 for (i = 0; i < count && str[i]; ++i);
+
268 return i;
+
269 }
+
270
+
271 constexpr auto npos{ static_cast<size_t>(-1) };
+
272
+
281 template <class T>
+
282 inline size_t strchr(_In_z_ const T* str, _In_ T chr)
+
283 {
+
284 _Assume_(str);
+
285 for (size_t i = 0; str[i]; ++i)
+
286 if (str[i] == chr) return i;
+
287 return npos;
+
288 }
+
289
+
299 template <class T>
+
300 inline size_t strnchr(
+
301 _In_reads_or_z_opt_(count) const T* str,
+
302 _In_ size_t count,
+
303 _In_ T chr)
+
304 {
+
305 _Assume_(str || !count);
+
306 for (size_t i = 0; i < count && str[i]; ++i)
+
307 if (str[i] == chr) return i;
+
308 return npos;
+
309 }
+
310
+
320 template <class T>
+
321 inline size_t strrnchr(
+
322 _In_reads_or_z_opt_(count) const T* str,
+
323 _In_ size_t count,
+
324 _In_ T chr)
+
325 {
+
326 _Assume_(str || !count);
+
327 size_t z = npos;
+
328 for (size_t i = 0; i < count && str[i]; ++i)
+
329 if (str[i] == chr) z = i;
+
330 return z;
+
331 }
+
332
+
341 template <class T>
+
342 inline bool isblank(
+
343 _In_reads_or_z_opt_(count) const T* str,
+
344 _In_ size_t count)
+
345 {
+
346 _Assume_(str || !count);
+
347 for (size_t i = 0; i < count && str[i]; ++i)
+
348 if (!isspace(str[i]))
+
349 return false;
+
350 return true;
+
351 }
+
352
+
362 template <class T>
+
363 inline bool isblank(
+
364 _In_reads_or_z_opt_(count) const T* str,
+
365 _In_ size_t count,
+
366 _In_ const std::locale& locale)
+
367 {
+
368 _Assume_(str || !count);
+
369 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
370 for (size_t i = 0; i < count && str[i]; ++i)
+
371 if (!ctype.is(ctype.space, str[i]))
+
372 return false;
+
373 return true;
+
374 }
+
375
+
385 template <class T>
+
386 inline size_t strnichr(
+
387 _In_reads_or_z_opt_(count) const T* str,
+
388 _In_ size_t count,
+
389 _In_ T chr)
+
390 {
+
391 _Assume_(str || !count);
+
392 chr = tolower(chr);
+
393 for (size_t i = 0; i < count && str[i]; ++i)
+
394 if (tolower(str[i]) == chr) return i;
+
395 return npos;
+
396 }
+
397
+
408 template <class T>
+
409 inline size_t strnichr(
+
410 _In_reads_or_z_opt_(count) const T* str,
+
411 _In_ size_t count,
+
412 _In_ T chr,
+
413 _In_ const std::locale& locale)
+
414 {
+
415 _Assume_(str || !count);
+
416 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
417 chr = ctype.tolower(chr);
+
418 for (size_t i = 0; i < count && str[i]; ++i)
+
419 if (ctype.tolower(str[i]) == chr) return i;
+
420 return npos;
+
421 }
+
422
+
432 template <class T>
+
433 inline size_t strrnichr(
+
434 _In_reads_or_z_opt_(count) const T* str,
+
435 _In_ size_t count,
+
436 _In_ T chr)
+
437 {
+
438 _Assume_(str || !count);
+
439 chr = tolower(chr);
+
440 size_t z = npos;
+
441 for (size_t i = 0; i < count && str[i]; ++i)
+
442 if (tolower(str[i]) == chr) z = i;
+
443 return z;
+
444 }
+
445
+
456 template <class T>
+
457 inline size_t strrnichr(
+
458 _In_reads_or_z_opt_(count) const T* str,
+
459 _In_ size_t count,
+
460 _In_ T chr,
+
461 _In_ const std::locale& locale)
+
462 {
+
463 _Assume_(str || !count);
+
464 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
465 chr = ctype.tolower(chr);
+
466 size_t z = npos;
+
467 for (size_t i = 0; i < count && str[i]; ++i)
+
468 if (ctype.tolower(str[i]) == chr) z = i;
+
469 return z;
+
470 }
+
471
+
480 template <class T1, class T2>
+
481 inline int strcmp(const T1* str1, const T2* str2)
+
482 {
+
483 _Assume_(str1 && str2);
+
484 T1 a; T2 b;
+
485 for (size_t i = 0; (a = str1[i]) | (b = str2[i]); ++i) {
+
486 if (a > b) return +1;
+
487 if (a < b) return -1;
+
488 }
+
489 return 0;
+
490 }
+
491
+
502 template <class T1, class T2>
+
503 inline int strncmp(
+
504 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
+
505 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2)
+
506 {
+
507 _Assume_(str1 || !count1);
+
508 _Assume_(str2 || !count2);
+
509 size_t i; T1 a; T2 b;
+
510 for (i = 0; i < count1 && i < count2 && ((a = str1[i]) | (b = str2[i])); ++i) {
+
511 if (a > b) return +1;
+
512 if (a < b) return -1;
+
513 }
+
514 if (i < count1 && str1[i]) return +1;
+
515 if (i < count2 && str2[i]) return -1;
+
516 return 0;
+
517 }
+
518
+
528 template <class T1, class T2>
+
529 inline int strncmp(_In_reads_or_z_opt_(count) const T1* str1, _In_reads_or_z_opt_(count) const T2* str2, _In_ size_t count)
+
530 {
+
531 _Assume_((str1 && str2) || !count);
+
532 size_t i; T1 a; T2 b;
+
533 for (i = 0; i < count && ((a = str1[i]) | (b = str2[i])); ++i) {
+
534 if (a > b) return +1;
+
535 if (a < b) return -1;
+
536 }
+
537 if (i < count && str1[i]) return +1;
+
538 if (i < count && str2[i]) return -1;
+
539 return 0;
+
540 }
+
541
+
553 template <class T>
+
554 inline int strncoll(
+
555 _In_reads_or_z_opt_(count1) const T* str1, _In_ size_t count1,
+
556 _In_reads_or_z_opt_(count2) const T* str2, _In_ size_t count2,
+
557 _In_ const std::locale& locale)
+
558 {
+
559 _Assume_(str1 || !count1);
+
560 _Assume_(str2 || !count2);
+
561 auto& collate = std::use_facet<std::collate<T>>(locale);
+
562 return collate.compare(str1, str1 + count1, str2, str2 + count2);
+
563 }
+
564
+
573 template <class T1, class T2>
+
574 inline int stricmp(_In_z_ const T1* str1, _In_z_ const T2* str2)
+
575 {
+
576 _Assume_(str1);
+
577 _Assume_(str2);
+
578 size_t i; T1 a; T2 b;
+
579 for (i = 0; (a = tolower(str1[i])) | (b = tolower(str2[i])); i++) {
+
580 if (a > b) return +1;
+
581 if (a < b) return -1;
+
582 }
+
583 if (str1[i]) return +1;
+
584 if (str2[i]) return -1;
+
585 return 0;
+
586 }
+
587
+
597 template <class T1, class T2>
+
598 inline int stricmp(_In_z_ const T1* str1, _In_z_ const T2* str2, _In_ const std::locale& locale)
+
599 {
+
600 _Assume_(str1);
+
601 _Assume_(str2);
+
602 size_t i; T1 a; T2 b;
+
603 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
+
604 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
+
605 for (i = 0; (a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i])); i++) {
+
606 if (a > b) return +1;
+
607 if (a < b) return -1;
+
608 }
+
609 if (str1[i]) return +1;
+
610 if (str2[i]) return -1;
+
611 return 0;
+
612 }
+
613
+
623 template <class T1, class T2>
+
624 inline int strnicmp(_In_reads_or_z_opt_(count) const T1* str1, _In_reads_or_z_opt_(count) const T2* str2, _In_ size_t count)
+
625 {
+
626 _Assume_(str1 || !count);
+
627 _Assume_(str2 || !count);
+
628 size_t i; T1 a; T2 b;
+
629 for (i = 0; i < count && ((a = tolower(str1[i])) | (b = tolower(str2[i]))); i++) {
+
630 if (a > b) return +1;
+
631 if (a < b) return -1;
+
632 }
+
633 if (i < count && str1[i]) return +1;
+
634 if (i < count && str2[i]) return -1;
+
635 return 0;
+
636 }
+
637
+
648 template <class T1, class T2>
+
649 inline int strnicmp(_In_reads_or_z_opt_(count) const T1* str1, _In_reads_or_z_opt_(count) const T2* str2, _In_ size_t count, _In_ const std::locale& locale)
+
650 {
+
651 _Assume_(str1 || !count);
+
652 _Assume_(str2 || !count);
+
653 size_t i; T1 a; T2 b;
+
654 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
+
655 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
+
656 for (i = 0; i < count && ((a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i]))); i++) {
+
657 if (a > b) return +1;
+
658 if (a < b) return -1;
+
659 }
+
660 if (i < count && str1[i]) return +1;
+
661 if (i < count && str2[i]) return -1;
+
662 return 0;
+
663 }
+
664
+
675 template <class T1, class T2>
+
676 inline int strnicmp(
+
677 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
+
678 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2)
+
679 {
+
680 _Assume_(str1 || !count1);
+
681 _Assume_(str2 || !count2);
+
682 size_t i; T1 a; T2 b;
+
683 for (i = 0; i < count1 && i < count2 && ((a = tolower(str1[i])) | (b = tolower(str2[i]))); i++) {
+
684 if (a > b) return +1;
+
685 if (a < b) return -1;
+
686 }
+
687 if (i < count1 && str1[i]) return +1;
+
688 if (i < count2 && str2[i]) return -1;
+
689 return 0;
+
690 }
+
691
+
703 template <class T1, class T2>
+
704 inline int strnicmp(
+
705 _In_reads_or_z_opt_(count1) const T1* str1, _In_ size_t count1,
+
706 _In_reads_or_z_opt_(count2) const T2* str2, _In_ size_t count2,
+
707 _In_ const std::locale& locale)
+
708 {
+
709 _Assume_(str1 || !count1);
+
710 _Assume_(str2 || !count2);
+
711 size_t i; T1 a; T2 b;
+
712 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
+
713 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
+
714 for (i = 0; i < count1 && i < count2 && ((a = ctype1.tolower(str1[i])) | (b = ctype2.tolower(str2[i]))); i++) {
+
715 if (a > b) return +1;
+
716 if (a < b) return -1;
+
717 }
+
718 if (i < count1 && str1[i]) return +1;
+
719 if (i < count2 && str2[i]) return -1;
+
720 return 0;
+
721 }
+
722
+
731 template <class T1, class T2>
+
732 inline size_t strstr(
+
733 _In_z_ const T1* str,
+
734 _In_z_ const T2* sample)
+
735 {
+
736 _Assume_(str);
+
737 _Assume_(sample);
+
738 for (size_t offset = 0;; ++offset) {
+
739 for (size_t i = offset, j = 0;; ++i, ++j) {
+
740 if (!sample[j])
+
741 return offset;
+
742 if (!str[i])
+
743 return npos;
+
744 if (str[i] != sample[j])
+
745 break;
+
746 }
+
747 }
+
748 }
+
749
+
759 template <class T1, class T2>
+
760 inline size_t strnstr(
+
761 _In_reads_or_z_opt_(count) const T1* str,
+
762 _In_ size_t count,
+
763 _In_z_ const T2* sample)
+
764 {
+
765 _Assume_(str || !count);
+
766 _Assume_(sample);
+
767 for (size_t offset = 0;; ++offset) {
+
768 for (size_t i = offset, j = 0;; ++i, ++j) {
+
769 if (!sample[j])
+
770 return offset;
+
771 if (i >= count || !str[i])
+
772 return npos;
+
773 if (str[i] != sample[j])
+
774 break;
+
775 }
+
776 }
+
777 }
+
778
+
787 template <class T1, class T2>
+
788 inline size_t stristr(
+
789 _In_z_ const T1* str,
+
790 _In_z_ const T2* sample)
+
791 {
+
792 _Assume_(str);
+
793 _Assume_(sample);
+
794 for (size_t offset = 0;; ++offset) {
+
795 for (size_t i = offset, j = 0;; ++i, ++j) {
+
796 if (!sample[j])
+
797 return offset;
+
798 if (!str[i])
+
799 return npos;
+
800 if (tolower(str[i]) != tolower(sample[j]))
+
801 break;
+
802 }
+
803 }
+
804 }
+
805
+
815 template <class T1, class T2>
+
816 inline size_t stristr(
+
817 _In_z_ const T1* str,
+
818 _In_z_ const T2* sample,
+
819 _In_ const std::locale& locale)
+
820 {
+
821 _Assume_(str);
+
822 _Assume_(sample);
+
823 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
+
824 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
+
825 for (size_t offset = 0;; ++offset) {
+
826 for (size_t i = offset, j = 0;; ++i, ++j) {
+
827 if (!sample[j])
+
828 return offset;
+
829 if (!str[i])
+
830 return npos;
+
831 if (ctype1.tolower(str[i]) != ctype2.tolower(sample[j]))
+
832 break;
+
833 }
+
834 }
+
835 }
+
836
+
846 template <class T1, class T2>
+
847 inline size_t strnistr(
+
848 _In_reads_or_z_opt_(count) const T1* str,
+
849 _In_ size_t count,
+
850 _In_z_ const T2* sample)
+
851 {
+
852 _Assume_(str || !count);
+
853 _Assume_(sample);
+
854 for (size_t offset = 0;; ++offset) {
+
855 for (size_t i = offset, j = 0;; ++i, ++j) {
+
856 if (!sample[j])
+
857 return offset;
+
858 if (i >= count || !str[i])
+
859 return npos;
+
860 if (tolower(str[i]) != tolower(sample[j]))
+
861 break;
+
862 }
+
863 }
+
864 }
+
865
+
876 template <class T1, class T2>
+
877 inline size_t strnistr(
+
878 _In_reads_or_z_opt_(count) const T1* str,
+
879 _In_ size_t count,
+
880 _In_z_ const T2* sample,
+
881 _In_ const std::locale& locale)
+
882 {
+
883 _Assume_(str || !count);
+
884 _Assume_(sample);
+
885 const auto& ctype1 = std::use_facet<std::ctype<T1>>(locale);
+
886 const auto& ctype2 = std::use_facet<std::ctype<T2>>(locale);
+
887 for (size_t offset = 0;; ++offset) {
+
888 for (size_t i = offset, j = 0;; ++i, ++j) {
+
889 if (!sample[j])
+
890 return offset;
+
891 if (i >= count || !str[i])
+
892 return npos;
+
893 if (ctype1.tolower(str[i]) != ctype2.tolower(sample[j]))
+
894 break;
+
895 }
+
896 }
+
897 }
+
898
+
907 template <class T1, class T2>
+
908 inline size_t strcpy(
+
909 _Out_writes_z_(_String_length_(src) + 1) T1* dst,
+
910 _In_z_ const T2* src)
+
911 {
+
912 _Assume_(dst && src);
+
913 for (size_t i = 0; ; ++i) {
+
914 if ((dst[i] = src[i]) == 0)
+
915 return i;
+
916 }
+
917 }
+
918
+
928 template <class T1, class T2>
+
929 inline size_t strncpy(
+
930 _Out_writes_(count) _Post_maybez_ T1* dst,
+
931 _In_reads_or_z_opt_(count) const T2* src, _In_ size_t count)
+
932 {
+
933 _Assume_(dst && src || !count);
+
934 for (size_t i = 0; ; ++i) {
+
935 if (i >= count)
+
936 return i;
+
937 if ((dst[i] = src[i]) == 0)
+
938 return i;
+
939 }
+
940 }
+
941
+
952 template <class T1, class T2>
+
953 inline size_t strncpy(
+
954 _Out_writes_(count_dst) _Post_maybez_ T1* dst, _In_ size_t count_dst,
+
955 _In_reads_or_z_opt_(count_src) const T2* src, _In_ size_t count_src)
+
956 {
+
957 _Assume_(dst || !count_dst);
+
958 _Assume_(src || !count_src);
+
959 for (size_t i = 0; ; ++i)
+
960 {
+
961 if (i >= count_dst)
+
962 return i;
+
963 if (i >= count_src) {
+
964 dst[i] = 0;
+
965 return i;
+
966 }
+
967 if ((dst[i] = src[i]) == 0)
+
968 return i;
+
969 }
+
970 }
+
971
+
980 template <class T1, class T2>
+
981 inline size_t strcat(
+
982 _In_z_ _Out_writes_z_(_String_length_(dst) + _String_length_(src) + 1) T1* dst,
+
983 _In_z_ const T2* src)
+
984 {
+
985 _Assume_(dst && src);
+
986 for (size_t i = 0, j = stdex::strlen<T1>(dst); ; ++i, ++j) {
+
987 if ((dst[j] = src[i]) == 0)
+
988 return j;
+
989 }
+
990 }
+
991
+
1001 template <class T1, class T2>
+
1002 inline size_t strncat(
+
1003 _Inout_z_ T1* dst,
+
1004 _In_reads_or_z_opt_(count) const T2* src, _In_ size_t count)
+
1005 {
+
1006 _Assume_(dst && src || !count);
+
1007 for (size_t i = 0, j = stdex::strlen<T1>(dst); ; ++i, ++j) {
+
1008 if (i >= count)
+
1009 return j;
+
1010 if ((dst[j] = src[i]) == 0)
+
1011 return j;
+
1012 }
+
1013 }
+
1014
+
1025 template <class T1, class T2>
+
1026 inline size_t strncat(
+
1027 _Out_writes_(count_dst) _Post_maybez_ T1* dst, _In_ size_t count_dst,
+
1028 _In_reads_or_z_opt_(count_src) const T2* src, _In_ size_t count_src)
+
1029 {
+
1030 _Assume_(dst || !count_dst);
+
1031 _Assume_(src || !count_src);
+
1032 for (size_t i = 0, j = stdex::strnlen<T1>(dst, count_dst); ; ++i, ++j)
+
1033 {
+
1034 if (j >= count_dst)
+
1035 return j;
+
1036 if (i >= count_src) {
+
1037 dst[j] = 0;
+
1038 return j;
+
1039 }
+
1040 if ((dst[j] = src[i]) == 0)
+
1041 return j;
+
1042 }
+
1043 }
+
1044
+
1055 template <class T>
+
1056 inline _Check_return_ _Ret_maybenull_z_ T* strdup(_In_opt_z_ const T* str)
+
1057 {
+
1058 if (!str) _Unlikely_
+
1059 return nullptr;
+
1060 size_t count = strlen(str) + 1;
+
1061 T* dst = new T[count];
+
1062 strncpy(dst, count, str, SIZE_MAX);
+
1063 return dst;
+
1064 }
+
1065
+
1077 template <class T>
+
1078 inline _Ret_z_ T* strndup(
+
1079 _In_reads_or_z_opt_(count) const T* str,
+
1080 _In_ size_t count)
+
1081 {
+
1082 T* dst = new T[count];
+
1083 strncpy(dst, count, str, SIZE_MAX);
+
1084 return dst;
+
1085 }
+
1086
+
1096 template <class T>
+
1097 inline size_t crlf2nl(_Out_writes_z_(strlen(src)) T* dst, _In_z_ const T* src)
+
1098 {
+
1099 _Assume_(dst);
+
1100 _Assume_(src);
+
1101 size_t i, j;
+
1102 for (i = j = 0; src[j];) {
+
1103 if (src[j] != '\r' || src[j + 1] != '\n')
+
1104 dst[i++] = src[j++];
+
1105 else {
+
1106 dst[i++] = '\n';
+
1107 j += 2;
+
1108 }
+
1109 }
+
1110 dst[i] = 0;
+
1111 return i;
+
1112 }
+
1113
+
1120 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1121 inline void crlf2nl(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& dst, _In_z_ const _Elem* src)
+
1122 {
+
1123 _Assume_(src);
+
1124 _Assume_(src != dst.c_str());
+
1125 dst.clear();
+
1126 dst.reserve(strlen(src));
+
1127 for (size_t j = 0; src[j];) {
+
1128 if (src[j] != '\r' || src[j + 1] != '\n')
+
1129 dst += src[j++];
+
1130 else {
+
1131 dst += '\n';
+
1132 j += 2;
+
1133 }
+
1134 }
+
1135 }
+
1136
+
1142 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1143 inline void crlf2nl(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str)
+
1144 {
+
1145 size_t i, j, n;
+
1146 for (i = j = 0, n = str.size(); j < n;) {
+
1147 if (str[j] != '\r' || str[j + 1] != '\n')
+
1148 str[i++] = str[j++];
+
1149 else {
+
1150 str[i++] = '\n';
+
1151 j += 2;
+
1152 }
+
1153 }
+
1154 str.resize(i);
+
1155 }
1156
-
1157 size_t i = 0;
-
1158 T_bin value = 0, digit,
-
1159 max_ui = (T_bin)-1,
-
1160 max_ui_pre1, max_ui_pre2;
-
1161
-
1162 flags = 0;
-
1163
-
1164 // Skip leading spaces.
-
1165 for (;; ++i) {
-
1166 if (i >= count || !str[i]) goto error;
-
1167 if (!isspace(str[i])) break;
-
1168 }
-
1169
-
1170 // Read the sign.
-
1171 if (str[i] == '+') {
-
1172 flags &= ~0x01;
-
1173 ++i;
-
1174 if (i >= count || !str[i]) goto error;
-
1175 }
-
1176 else if (str[i] == '-') {
-
1177 flags |= 0x01;
-
1178 ++i;
-
1179 if (i >= count || !str[i]) goto error;
-
1180 }
-
1181
-
1182 if (radix == 16) {
-
1183 // On hexadecimal, allow leading 0x.
-
1184 if (str[i] == '0' && i + 1 < count && (str[i + 1] == 'x' || str[i + 1] == 'X')) {
-
1185 i += 2;
-
1186 if (i >= count || !str[i]) goto error;
-
1187 }
-
1188 }
-
1189 else if (!radix) {
-
1190 // Autodetect radix.
-
1191 if (str[i] == '0') {
-
1192 ++i;
-
1193 if (i >= count || !str[i]) goto error;
-
1194 if (str[i] == 'x' || str[i] == 'X') {
-
1195 radix = 16;
-
1196 ++i;
-
1197 if (i >= count || !str[i]) goto error;
-
1198 }
-
1199 else
-
1200 radix = 8;
-
1201 }
-
1202 else
-
1203 radix = 10;
-
1204 }
-
1205
-
1206 // We have the radix.
-
1207 max_ui_pre1 = max_ui / (T_bin)radix;
-
1208 max_ui_pre2 = max_ui % (T_bin)radix;
-
1209 for (;;) {
-
1210 if ('0' <= str[i] && str[i] <= '9')
-
1211 digit = (T_bin)str[i] - '0';
-
1212 else if ('A' <= str[i] && str[i] <= 'Z')
-
1213 digit = (T_bin)str[i] - 'A' + '\x0a';
-
1214 else if ('a' <= str[i] && str[i] <= 'z')
-
1215 digit = (T_bin)str[i] - 'a' + '\x0a';
-
1216 else
-
1217 goto error;
-
1218 if (digit >= (T_bin)radix)
-
1219 goto error;
-
1220
-
1221 if (value < max_ui_pre1 || // Multiplication nor addition will not overflow.
-
1222 (value == max_ui_pre1 && digit <= max_ui_pre2)) // Small digits will not overflow.
-
1223 value = value * (T_bin)radix + digit;
-
1224 else {
-
1225 // Overflow!
-
1226 flags |= 0x02;
-
1227 }
-
1228
-
1229 ++i;
-
1230 if (i >= count || !str[i])
-
1231 goto error;
-
1232 }
-
1233
-
1234 error:
-
1235 if (end) *end = i;
-
1236 return value;
-
1237 }
+
1158 template <class T, class T_bin>
+
1159 inline T_bin strtoint(
+
1160 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1161 _Out_opt_ size_t* end,
+
1162 _In_ int radix,
+
1163 _Out_ uint8_t& flags)
+
1164 {
+
1165 _Assume_(str || !count);
+
1166 _Assume_(radix == 0 || 2 <= radix && radix <= 36);
+
1167
+
1168 size_t i = 0;
+
1169 T_bin value = 0, digit,
+
1170 max_ui = (T_bin)-1,
+
1171 max_ui_pre1, max_ui_pre2;
+
1172
+
1173 flags = 0;
+
1174
+
1175 // Skip leading spaces.
+
1176 for (;; ++i) {
+
1177 if (i >= count || !str[i]) goto error;
+
1178 if (!isspace(str[i])) break;
+
1179 }
+
1180
+
1181 // Read the sign.
+
1182 if (str[i] == '+') {
+
1183 flags &= ~0x01;
+
1184 ++i;
+
1185 if (i >= count || !str[i]) goto error;
+
1186 }
+
1187 else if (str[i] == '-') {
+
1188 flags |= 0x01;
+
1189 ++i;
+
1190 if (i >= count || !str[i]) goto error;
+
1191 }
+
1192
+
1193 if (radix == 16) {
+
1194 // On hexadecimal, allow leading 0x.
+
1195 if (str[i] == '0' && i + 1 < count && (str[i + 1] == 'x' || str[i + 1] == 'X')) {
+
1196 i += 2;
+
1197 if (i >= count || !str[i]) goto error;
+
1198 }
+
1199 }
+
1200 else if (!radix) {
+
1201 // Autodetect radix.
+
1202 if (str[i] == '0') {
+
1203 ++i;
+
1204 if (i >= count || !str[i]) goto error;
+
1205 if (str[i] == 'x' || str[i] == 'X') {
+
1206 radix = 16;
+
1207 ++i;
+
1208 if (i >= count || !str[i]) goto error;
+
1209 }
+
1210 else
+
1211 radix = 8;
+
1212 }
+
1213 else
+
1214 radix = 10;
+
1215 }
+
1216
+
1217 // We have the radix.
+
1218 max_ui_pre1 = max_ui / (T_bin)radix;
+
1219 max_ui_pre2 = max_ui % (T_bin)radix;
+
1220 for (;;) {
+
1221 if ('0' <= str[i] && str[i] <= '9')
+
1222 digit = (T_bin)str[i] - '0';
+
1223 else if ('A' <= str[i] && str[i] <= 'Z')
+
1224 digit = (T_bin)str[i] - 'A' + '\x0a';
+
1225 else if ('a' <= str[i] && str[i] <= 'z')
+
1226 digit = (T_bin)str[i] - 'a' + '\x0a';
+
1227 else
+
1228 goto error;
+
1229 if (digit >= (T_bin)radix)
+
1230 goto error;
+
1231
+
1232 if (value < max_ui_pre1 || // Multiplication nor addition will not overflow.
+
1233 (value == max_ui_pre1 && digit <= max_ui_pre2)) // Small digits will not overflow.
+
1234 value = value * (T_bin)radix + digit;
+
1235 else {
+
1236 // Overflow!
+
1237 flags |= 0x02;
+
1238 }
1239
-
1250 template <class T, class T_bin>
-
1251 T_bin strtoint(
-
1252 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1253 _Out_opt_ size_t* end,
-
1254 _In_ int radix)
-
1255 {
-
1256 uint8_t flags;
-
1257 T_bin value;
-
1258
-
1259 switch (sizeof(T_bin)) {
-
1260 case 1:
-
1261 value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags);
-
1262 if ((flags & 0x01) && (value & 0x80)) {
-
1263 // Sign bit is 1 => overflow.
-
1264 flags |= 0x02;
-
1265 }
-
1266 return (flags & 0x02) ?
-
1267 (flags & 0x01) ? (T_bin)0x80 : (T_bin)0x7f :
-
1268 (flags & 0x01) ? -value : value;
+
1240 ++i;
+
1241 if (i >= count || !str[i])
+
1242 goto error;
+
1243 }
+
1244
+
1245 error:
+
1246 if (end) *end = i;
+
1247 return value;
+
1248 }
+
1250
+
1261 template <class T, class T_bin>
+
1262 T_bin strtoint(
+
1263 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1264 _Out_opt_ size_t* end,
+
1265 _In_ int radix)
+
1266 {
+
1267 uint8_t flags;
+
1268 T_bin value;
1269
-
1270 case 2:
-
1271 value = (T_bin)strtoint<T, uint16_t>(str, count, end, radix, flags);
-
1272 if ((flags & 0x01) && (value & 0x8000)) {
-
1273 // Sign bit is 1 => overflow.
-
1274 flags |= 0x02;
-
1275 }
-
1276 return (flags & 0x02) ?
-
1277 (flags & 0x01) ? (T_bin)0x8000 : (T_bin)0x7fff :
-
1278 (flags & 0x01) ? -value : value;
-
1279
-
1280 case 4:
-
1281 value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags);
-
1282 if ((flags & 0x01) && (value & 0x80000000)) {
-
1283 // Sign bit is 1 => overflow.
-
1284 flags |= 0x02;
-
1285 }
-
1286 return (flags & 0x02) ?
-
1287 (flags & 0x01) ? (T_bin)0x80000000 : (T_bin)0x7fffffff :
-
1288 (flags & 0x01) ? -value : value;
-
1289
-
1290 case 8:
-
1291 value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags);
-
1292 if ((flags & 0x01) && (value & 0x8000000000000000)) {
-
1293 // Sign bit is 1 => overflow.
-
1294 flags |= 0x02;
-
1295 }
-
1296 return (flags & 0x02) ?
-
1297 (flags & 0x01) ? (T_bin)0x8000000000000000 : (T_bin)0x7fffffffffffffff :
-
1298 (flags & 0x01) ? -value : value;
-
1299
-
1300 default:
-
1301 throw std::invalid_argument("Unsupported bit length");
-
1302 }
-
1303 }
-
1304
-
1315 template <class T, class T_bin>
-
1316 inline T_bin strtouint(
-
1317 _In_reads_or_z_opt_(count) const T* str,
-
1318 _In_ size_t count,
-
1319 _Out_opt_ size_t* end,
-
1320 _In_ int radix)
-
1321 {
-
1322 uint8_t flags;
-
1323 T_bin value;
-
1324
-
1325 switch (sizeof(T_bin)) {
-
1326 case 1: value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags); break;
-
1327 case 2: value = (T_bin)strtoint<T, uint16_t>(str, count, end, radix, flags); break;
-
1328 case 4: value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags); break;
-
1329 case 8: value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags); break;
-
1330 default: throw std::invalid_argument("Unsupported bit length");
-
1331 }
-
1332
-
1333 return (flags & 0x02) ?
-
1334 (flags & 0x01) ? (T_bin)0 : (T_bin)-1 :
-
1335 (flags & 0x01) ? ~value : value;
-
1336 }
-
1337
-
1348 template <class T>
-
1349 inline int32_t strto32(
-
1350 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1351 _Out_opt_ size_t* end,
-
1352 _In_ int radix)
-
1353 {
-
1354 return strtoint<T, int32_t>(str, count, end, radix);
-
1355 }
-
1356
-
1367 template <class T>
-
1368 inline int64_t strto64(
-
1369 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1370 _Out_opt_ size_t* end,
-
1371 _In_ int radix)
-
1372 {
-
1373 return strtoint<T, int64_t>(str, count, end, radix);
-
1374 }
-
1375
-
1387 template <class T>
-
1388 inline intptr_t strtoi(
-
1389 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1390 _Out_opt_ size_t* end,
-
1391 _In_ int radix)
-
1392 {
-
1393#if defined(_WIN64) || defined(__LP64__)
-
1394 return (intptr_t)strto64(str, count, end, radix);
-
1395#else
-
1396 return (intptr_t)strto32(str, count, end, radix);
-
1397#endif
-
1398 }
-
1399
-
1410 template <class T>
-
1411 inline uint32_t strtou32(
-
1412 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1413 _Out_opt_ size_t* end,
-
1414 _In_ int radix)
-
1415 {
-
1416 return strtouint<T, uint32_t>(str, count, end, radix);
-
1417 }
-
1418
-
1429 template <class T>
-
1430 inline uint64_t strtou64(
-
1431 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1432 _Out_opt_ size_t* end,
-
1433 _In_ int radix)
-
1434 {
-
1435 return strtouint<T, uint64_t>(str, count, end, radix);
-
1436 }
-
1437
-
1449 template <class T>
-
1450 inline size_t strtoui(
-
1451 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
-
1452 _Out_opt_ size_t* end,
-
1453 _In_ int radix)
-
1454 {
-
1455#if defined(_WIN64) || defined(__LP64__)
-
1456 return (size_t)strtou64(str, count, end, radix);
-
1457#else
-
1458 return (size_t)strtou32(str, count, end, radix);
-
1459#endif
-
1460 }
-
1461
-
1463 inline int vsnprintf(_Out_z_cap_(capacity) char* str, _In_ size_t capacity, _In_z_ _Printf_format_string_params_(2) const char* format, _In_opt_ locale_t locale, _In_ va_list arg)
-
1464 {
-
1465 int r;
-
1466#ifdef _WIN32
-
1467 // Don't use _vsnprintf_s(). It terminates the string even if we want to print to the edge of the buffer.
-
1468#pragma warning(suppress: 4996)
-
1469 r = _vsnprintf_l(str, capacity, format, locale, arg);
-
1470#else
-
1471 r = ::vsnprintf(str, capacity, format, arg);
-
1472#endif
-
1473 if (r == -1 && strnlen(str, capacity) == capacity) {
-
1474 // Buffer overrun. Estimate buffer size for the next iteration.
-
1475 capacity += std::max<size_t>(capacity / 8, 0x80);
-
1476 if (capacity > INT_MAX)
-
1477 throw std::invalid_argument("string too big");
-
1478 return (int)capacity;
-
1479 }
-
1480 return r;
-
1481 }
-
1482
-
1483 inline int vsnprintf(_Out_z_cap_(capacity) wchar_t* str, _In_ size_t capacity, _In_z_ _Printf_format_string_params_(2) const wchar_t* format, _In_opt_ locale_t locale, _In_ va_list arg)
-
1484 {
-
1485 int r;
-
1486#ifdef _WIN32
-
1487 // Don't use _vsnwprintf_s(). It terminates the string even if we want to print to the edge of the buffer.
-
1488#pragma warning(suppress: 4996)
-
1489 r = _vsnwprintf_l(str, capacity, format, locale, arg);
-
1490#else
-
1491 r = vswprintf(str, capacity, format, arg);
-
1492#endif
-
1493 if (r == -1 && strnlen(str, capacity) == capacity) {
-
1494 // Buffer overrun. Estimate buffer size for the next iteration.
-
1495 capacity += std::max<size_t>(capacity / 8, 0x80);
-
1496 if (capacity > INT_MAX)
-
1497 throw std::invalid_argument("string too big");
-
1498 return (int)capacity;
-
1499 }
-
1500 return r;
-
1501 }
-
1503
-
1514 template<class _Elem, class _Traits, class _Ax>
-
1515 inline size_t vappendf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, _In_ va_list arg)
-
1516 {
-
1517 _Elem buf[1024 / sizeof(_Elem)];
-
1518
-
1519 // Try with stack buffer first.
-
1520 int count = vsnprintf(buf, _countof(buf) - 1, format, locale, arg);
-
1521 if (count >= 0) {
-
1522 // Copy from stack.
-
1523 str.append(buf, count);
-
1524 return count;
-
1525 }
-
1526 for (size_t capacity = 2 * 1024 / sizeof(_Elem);; capacity *= 2) {
-
1527 // Allocate on heap and retry.
-
1528 auto buf_dyn = std::make_unique<_Elem[]>(capacity);
-
1529 count = vsnprintf(buf_dyn.get(), capacity - 1, format, locale, arg);
-
1530 if (count >= 0) {
-
1531 str.append(buf_dyn.get(), count);
-
1532 return count;
-
1533 }
-
1534 }
-
1535 }
-
1536
-
1546 template<class _Elem, class _Traits, class _Ax>
-
1547 inline size_t appendf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, ...)
-
1548 {
-
1549 va_list arg;
-
1550 va_start(arg, locale);
-
1551 size_t n = vappendf(str, format, locale, arg);
-
1552 va_end(arg);
-
1553 return n;
-
1554 }
-
1555
-
1564 template<class _Elem, class _Traits, class _Ax>
-
1565 inline void vsprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, _In_ va_list arg)
-
1566 {
-
1567 str.clear();
-
1568 vappendf(str, format, locale, arg);
-
1569 }
-
1570
-
1578 template<class _Elem, class _Traits, class _Ax>
-
1579 inline void sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, ...)
-
1580 {
-
1581 va_list arg;
-
1582 va_start(arg, locale);
-
1583 vsprintf(str, format, locale, arg);
-
1584 va_end(arg);
-
1585 }
-
1586
-
1596 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1597 inline std::basic_string<_Elem, _Traits, _Ax> vsprintf(_In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, _In_ va_list arg)
-
1598 {
-
1599 std::basic_string<_Elem, _Traits, _Ax> str;
-
1600 vappendf(str, format, locale, arg);
-
1601 return str;
-
1602 }
-
1603
-
1612 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1613 inline std::basic_string<_Elem, _Traits, _Ax> sprintf(_In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, ...)
-
1614 {
-
1615 va_list arg;
-
1616 va_start(arg, locale);
-
1617 auto str = vsprintf(format, locale, arg);
-
1618 va_end(arg);
-
1619 return str;
-
1620 }
-
1621
-
1623 inline size_t strftime(_Out_z_cap_(capacity) char* str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const char* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
-
1624 {
-
1625#ifdef _WIN32
-
1626 return _strftime_l(str, capacity, format, time, locale);
-
1627#else
-
1628 return strftime_l(str, capacity, format, time, locale);
-
1629#endif
-
1630 }
-
1631
-
1632 inline size_t strftime(_Out_z_cap_(capacity) wchar_t* str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const wchar_t* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
-
1633 {
-
1634#ifdef _WIN32
-
1635 return _wcsftime_l(str, capacity, format, time, locale);
-
1636#else
-
1637 return wcsftime_l(str, capacity, format, time, locale);
-
1638#endif
-
1639 }
-
1641
-
1650 template<class _Elem, class _Traits, class _Ax>
-
1651 inline void strcatftime(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_ const _Elem* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
-
1652 {
-
1653 _Elem buf[1024 / sizeof(_Elem)];
-
1654
-
1655 // Try with stack buffer first.
-
1656 size_t count = strftime(buf, _countof(buf), format, time, locale);
-
1657 if (count) {
-
1658 // Copy from stack.
-
1659 str.append(buf, count);
-
1660 }
-
1661 else {
-
1662 for (size_t capacity = 2 * 1024 / sizeof(_Elem);; capacity *= 2) {
-
1663 // Allocate on heap and retry.
-
1664 auto buf_dyn = std::make_unique<_Elem[]>(capacity);
-
1665 count = strftime(buf_dyn.get(), capacity, format, time, locale);
-
1666 if (count) {
-
1667 str.append(buf_dyn.get(), count);
-
1668 break;
-
1669 }
-
1670 }
+
1270 switch (sizeof(T_bin)) {
+
1271 case 1:
+
1272 value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags);
+
1273 if ((flags & 0x01) && (value & 0x80)) {
+
1274 // Sign bit is 1 => overflow.
+
1275 flags |= 0x02;
+
1276 }
+
1277 return (flags & 0x02) ?
+
1278 (flags & 0x01) ? (T_bin)0x80 : (T_bin)0x7f :
+
1279 (flags & 0x01) ? -value : value;
+
1280
+
1281 case 2:
+
1282 value = (T_bin)strtoint<T, uint16_t>(str, count, end, radix, flags);
+
1283 if ((flags & 0x01) && (value & 0x8000)) {
+
1284 // Sign bit is 1 => overflow.
+
1285 flags |= 0x02;
+
1286 }
+
1287 return (flags & 0x02) ?
+
1288 (flags & 0x01) ? (T_bin)0x8000 : (T_bin)0x7fff :
+
1289 (flags & 0x01) ? -value : value;
+
1290
+
1291 case 4:
+
1292 value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags);
+
1293 if ((flags & 0x01) && (value & 0x80000000)) {
+
1294 // Sign bit is 1 => overflow.
+
1295 flags |= 0x02;
+
1296 }
+
1297 return (flags & 0x02) ?
+
1298 (flags & 0x01) ? (T_bin)0x80000000 : (T_bin)0x7fffffff :
+
1299 (flags & 0x01) ? -value : value;
+
1300
+
1301 case 8:
+
1302 value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags);
+
1303 if ((flags & 0x01) && (value & 0x8000000000000000)) {
+
1304 // Sign bit is 1 => overflow.
+
1305 flags |= 0x02;
+
1306 }
+
1307 return (flags & 0x02) ?
+
1308 (flags & 0x01) ? (T_bin)0x8000000000000000 : (T_bin)0x7fffffffffffffff :
+
1309 (flags & 0x01) ? -value : value;
+
1310
+
1311 default:
+
1312 throw std::invalid_argument("Unsupported bit length");
+
1313 }
+
1314 }
+
1315
+
1326 template <class T, class T_bin>
+
1327 inline T_bin strtouint(
+
1328 _In_reads_or_z_opt_(count) const T* str,
+
1329 _In_ size_t count,
+
1330 _Out_opt_ size_t* end,
+
1331 _In_ int radix)
+
1332 {
+
1333 uint8_t flags;
+
1334 T_bin value;
+
1335
+
1336 switch (sizeof(T_bin)) {
+
1337 case 1: value = (T_bin)strtoint<T, uint8_t>(str, count, end, radix, flags); break;
+
1338 case 2: value = (T_bin)strtoint<T, uint16_t>(str, count, end, radix, flags); break;
+
1339 case 4: value = (T_bin)strtoint<T, uint32_t>(str, count, end, radix, flags); break;
+
1340 case 8: value = (T_bin)strtoint<T, uint64_t>(str, count, end, radix, flags); break;
+
1341 default: throw std::invalid_argument("Unsupported bit length");
+
1342 }
+
1343
+
1344 return (flags & 0x02) ?
+
1345 (flags & 0x01) ? (T_bin)0 : (T_bin)-1 :
+
1346 (flags & 0x01) ? ~value : value;
+
1347 }
+
1348
+
1359 template <class T>
+
1360 inline int32_t strto32(
+
1361 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1362 _Out_opt_ size_t* end,
+
1363 _In_ int radix)
+
1364 {
+
1365 return strtoint<T, int32_t>(str, count, end, radix);
+
1366 }
+
1367
+
1378 template <class T>
+
1379 inline int64_t strto64(
+
1380 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1381 _Out_opt_ size_t* end,
+
1382 _In_ int radix)
+
1383 {
+
1384 return strtoint<T, int64_t>(str, count, end, radix);
+
1385 }
+
1386
+
1398 template <class T>
+
1399 inline intptr_t strtoi(
+
1400 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1401 _Out_opt_ size_t* end,
+
1402 _In_ int radix)
+
1403 {
+
1404#if defined(_WIN64) || defined(__LP64__)
+
1405 return (intptr_t)strto64(str, count, end, radix);
+
1406#else
+
1407 return (intptr_t)strto32(str, count, end, radix);
+
1408#endif
+
1409 }
+
1410
+
1421 template <class T>
+
1422 inline uint32_t strtou32(
+
1423 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1424 _Out_opt_ size_t* end,
+
1425 _In_ int radix)
+
1426 {
+
1427 return strtouint<T, uint32_t>(str, count, end, radix);
+
1428 }
+
1429
+
1440 template <class T>
+
1441 inline uint64_t strtou64(
+
1442 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1443 _Out_opt_ size_t* end,
+
1444 _In_ int radix)
+
1445 {
+
1446 return strtouint<T, uint64_t>(str, count, end, radix);
+
1447 }
+
1448
+
1460 template <class T>
+
1461 inline size_t strtoui(
+
1462 _In_reads_or_z_opt_(count) const T* str, _In_ size_t count,
+
1463 _Out_opt_ size_t* end,
+
1464 _In_ int radix)
+
1465 {
+
1466#if defined(_WIN64) || defined(__LP64__)
+
1467 return (size_t)strtou64(str, count, end, radix);
+
1468#else
+
1469 return (size_t)strtou32(str, count, end, radix);
+
1470#endif
+
1471 }
+
1472
+
1474 inline int vsnprintf(_Out_z_cap_(capacity) char* str, _In_ size_t capacity, _In_z_ _Printf_format_string_params_(2) const char* format, _In_opt_ locale_t locale, _In_ va_list arg)
+
1475 {
+
1476 int r;
+
1477#ifdef _WIN32
+
1478 // Don't use _vsnprintf_s(). It terminates the string even if we want to print to the edge of the buffer.
+
1479#pragma warning(suppress: 4996)
+
1480 r = _vsnprintf_l(str, capacity, format, locale, arg);
+
1481#else
+
1482 r = ::vsnprintf(str, capacity, format, arg);
+
1483#endif
+
1484 if (r == -1 && strnlen(str, capacity) == capacity) {
+
1485 // Buffer overrun. Estimate buffer size for the next iteration.
+
1486 capacity += std::max<size_t>(capacity / 8, 0x80);
+
1487 if (capacity > INT_MAX)
+
1488 throw std::invalid_argument("string too big");
+
1489 return (int)capacity;
+
1490 }
+
1491 return r;
+
1492 }
+
1493
+
1494 inline int vsnprintf(_Out_z_cap_(capacity) wchar_t* str, _In_ size_t capacity, _In_z_ _Printf_format_string_params_(2) const wchar_t* format, _In_opt_ locale_t locale, _In_ va_list arg)
+
1495 {
+
1496 int r;
+
1497#ifdef _WIN32
+
1498 // Don't use _vsnwprintf_s(). It terminates the string even if we want to print to the edge of the buffer.
+
1499#pragma warning(suppress: 4996)
+
1500 r = _vsnwprintf_l(str, capacity, format, locale, arg);
+
1501#else
+
1502 r = vswprintf(str, capacity, format, arg);
+
1503#endif
+
1504 if (r == -1 && strnlen(str, capacity) == capacity) {
+
1505 // Buffer overrun. Estimate buffer size for the next iteration.
+
1506 capacity += std::max<size_t>(capacity / 8, 0x80);
+
1507 if (capacity > INT_MAX)
+
1508 throw std::invalid_argument("string too big");
+
1509 return (int)capacity;
+
1510 }
+
1511 return r;
+
1512 }
+
1514
+
1525 template<class _Elem, class _Traits, class _Ax>
+
1526 inline size_t vappendf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, _In_ va_list arg)
+
1527 {
+
1528 _Elem buf[1024 / sizeof(_Elem)];
+
1529
+
1530 // Try with stack buffer first.
+
1531 int count = vsnprintf(buf, _countof(buf) - 1, format, locale, arg);
+
1532 if (count >= 0) {
+
1533 // Copy from stack.
+
1534 str.append(buf, count);
+
1535 return count;
+
1536 }
+
1537 for (size_t capacity = 2 * 1024 / sizeof(_Elem);; capacity *= 2) {
+
1538 // Allocate on heap and retry.
+
1539 auto buf_dyn = std::make_unique<_Elem[]>(capacity);
+
1540 count = vsnprintf(buf_dyn.get(), capacity - 1, format, locale, arg);
+
1541 if (count >= 0) {
+
1542 str.append(buf_dyn.get(), count);
+
1543 return count;
+
1544 }
+
1545 }
+
1546 }
+
1547
+
1557 template<class _Elem, class _Traits, class _Ax>
+
1558 inline size_t appendf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, ...)
+
1559 {
+
1560 va_list arg;
+
1561 va_start(arg, locale);
+
1562 size_t n = vappendf(str, format, locale, arg);
+
1563 va_end(arg);
+
1564 return n;
+
1565 }
+
1566
+
1575 template<class _Elem, class _Traits, class _Ax>
+
1576 inline void vsprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, _In_ va_list arg)
+
1577 {
+
1578 str.clear();
+
1579 vappendf(str, format, locale, arg);
+
1580 }
+
1581
+
1589 template<class _Elem, class _Traits, class _Ax>
+
1590 inline void sprintf(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, ...)
+
1591 {
+
1592 va_list arg;
+
1593 va_start(arg, locale);
+
1594 vsprintf(str, format, locale, arg);
+
1595 va_end(arg);
+
1596 }
+
1597
+
1607 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1608 inline std::basic_string<_Elem, _Traits, _Ax> vsprintf(_In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, _In_ va_list arg)
+
1609 {
+
1610 std::basic_string<_Elem, _Traits, _Ax> str;
+
1611 vappendf(str, format, locale, arg);
+
1612 return str;
+
1613 }
+
1614
+
1623 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1624 inline std::basic_string<_Elem, _Traits, _Ax> sprintf(_In_z_ _Printf_format_string_params_(2) const _Elem* format, _In_opt_ locale_t locale, ...)
+
1625 {
+
1626 va_list arg;
+
1627 va_start(arg, locale);
+
1628 auto str = vsprintf(format, locale, arg);
+
1629 va_end(arg);
+
1630 return str;
+
1631 }
+
1632
+
1634 inline size_t strftime(_Out_z_cap_(capacity) char* str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const char* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
+
1635 {
+
1636#ifdef _WIN32
+
1637 return _strftime_l(str, capacity, format, time, locale);
+
1638#else
+
1639 return strftime_l(str, capacity, format, time, locale);
+
1640#endif
+
1641 }
+
1642
+
1643 inline size_t strftime(_Out_z_cap_(capacity) wchar_t* str, _In_ size_t capacity, _In_z_ _Printf_format_string_ const wchar_t* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
+
1644 {
+
1645#ifdef _WIN32
+
1646 return _wcsftime_l(str, capacity, format, time, locale);
+
1647#else
+
1648 return wcsftime_l(str, capacity, format, time, locale);
+
1649#endif
+
1650 }
+
1652
+
1661 template<class _Elem, class _Traits, class _Ax>
+
1662 inline void strcatftime(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_ const _Elem* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
+
1663 {
+
1664 _Elem buf[1024 / sizeof(_Elem)];
+
1665
+
1666 // Try with stack buffer first.
+
1667 size_t count = strftime(buf, _countof(buf), format, time, locale);
+
1668 if (count) {
+
1669 // Copy from stack.
+
1670 str.append(buf, count);
1671 }
-
1672 }
-
1673
-
1682 template<class _Elem, class _Traits, class _Ax>
-
1683 inline void strftime(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_ const _Elem* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
-
1684 {
-
1685 str.clear();
-
1686 strcatftime(str, format, time, locale);
-
1687 }
-
1688
-
1699 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1700 inline std::basic_string<_Elem, _Traits, _Ax> strftime(_In_z_ _Printf_format_string_ const _Elem* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
-
1701 {
-
1702 std::basic_string<_Elem, _Traits, _Ax> str;
-
1703 strcatftime(str, format, time, locale);
-
1704 return str;
-
1705 }
-
1706
-
1712 template<class T>
-
1713 inline void strlwr(_Inout_z_ T* str)
-
1714 {
-
1715 _Assume_(str);
-
1716 for (size_t i = 0; str[i]; ++i)
-
1717 str[i] = tolower(str[i]);
-
1718 }
-
1719
-
1726 template<class T>
-
1727 inline void strlwr(_Inout_z_ T* str, _In_ const std::locale& locale)
-
1728 {
-
1729 _Assume_(str);
-
1730 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
1731 for (size_t i = 0; str[i]; ++i)
-
1732 str[i] = ctype.tolower(str[i]);
-
1733 }
-
1734
-
1741 template<class T>
-
1742 inline void strlwr(_Inout_updates_z_(count) T* str, _In_ size_t count)
-
1743 {
-
1744 _Assume_(str || !count);
-
1745 for (size_t i = 0; i < count && str[i]; ++i)
-
1746 str[i] = tolower(str[i]);
-
1747 }
-
1748
-
1756 template<class T>
-
1757 inline void strlwr(_Inout_updates_z_(count) T* str, _In_ size_t count, _In_ const std::locale& locale)
-
1758 {
-
1759 _Assume_(str || !count);
-
1760 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
1761 for (size_t i = 0; i < count && str[i]; ++i)
-
1762 str[i] = ctype.tolower(str[i]);
-
1763 }
-
1764
-
1770 template<class T>
-
1771 inline void strupr(_Inout_z_ T* str)
-
1772 {
-
1773 _Assume_(str);
-
1774 for (size_t i = 0; str[i]; ++i)
-
1775 str[i] = toupper(str[i]);
-
1776 }
-
1777
-
1784 template<class T>
-
1785 inline void strupr(_Inout_z_ T* str, _In_ const std::locale& locale)
-
1786 {
-
1787 _Assume_(str);
-
1788 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
1789 for (size_t i = 0; str[i]; ++i)
-
1790 str[i] = ctype.toupper(str[i]);
-
1791 }
-
1792
-
1799 template<class T>
-
1800 inline void strupr(_Inout_updates_z_(count) T* str, _In_ size_t count)
-
1801 {
-
1802 _Assume_(str || !count);
-
1803 for (size_t i = 0; i < count && str[i]; ++i)
-
1804 str[i] = toupper(str[i]);
-
1805 }
-
1806
-
1814 template<class T>
-
1815 inline void strupr(_Inout_updates_z_(count) T* str, _In_ size_t count, _In_ const std::locale& locale)
-
1816 {
-
1817 _Assume_(str || !count);
-
1818 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
1819 for (size_t i = 0; i < count && str[i]; ++i)
-
1820 str[i] = ctype.toupper(str[i]);
-
1821 }
-
1822
-
1828 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1829 inline void strupr(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str)
-
1830 {
-
1831 for (size_t i = 0; i < str.size(); ++i)
-
1832 str[i] = toupper(str[i]);
-
1833 }
-
1834
-
1841 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1842 inline void strupr(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_ const std::locale& locale)
-
1843 {
-
1844 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
-
1845 for (size_t i = 0; i < str.size(); ++i)
-
1846 str[i] = ctype.toupper(str[i]);
-
1847 }
-
1848
-
1857 template<class T>
-
1858 inline size_t ltrim(
-
1859 _Inout_z_count_(count) T* str, _In_ size_t count)
-
1860 {
-
1861 for (size_t i = 0;; ++i) {
-
1862 if (i >= count) {
-
1863 if (count) str[0] = 0;
-
1864 return 0;
-
1865 }
-
1866 if (!str[i]) {
-
1867 str[0] = 0;
-
1868 return 0;
-
1869 }
-
1870 if (!isspace(str[i])) {
-
1871 if (!i)
-
1872 return strnlen(str, count);
-
1873 size_t n = count != SIZE_MAX ? strncpy(str, str + i, count - i) : strcpy(str, str + i);
-
1874 str[n] = 0;
-
1875 return n;
+
1672 else {
+
1673 for (size_t capacity = 2 * 1024 / sizeof(_Elem);; capacity *= 2) {
+
1674 // Allocate on heap and retry.
+
1675 auto buf_dyn = std::make_unique<_Elem[]>(capacity);
+
1676 count = strftime(buf_dyn.get(), capacity, format, time, locale);
+
1677 if (count) {
+
1678 str.append(buf_dyn.get(), count);
+
1679 break;
+
1680 }
+
1681 }
+
1682 }
+
1683 }
+
1684
+
1693 template<class _Elem, class _Traits, class _Ax>
+
1694 inline void strftime(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_z_ _Printf_format_string_ const _Elem* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
+
1695 {
+
1696 str.clear();
+
1697 strcatftime(str, format, time, locale);
+
1698 }
+
1699
+
1710 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1711 inline std::basic_string<_Elem, _Traits, _Ax> strftime(_In_z_ _Printf_format_string_ const _Elem* format, _In_ const struct tm* time, _In_opt_ locale_t locale)
+
1712 {
+
1713 std::basic_string<_Elem, _Traits, _Ax> str;
+
1714 strcatftime(str, format, time, locale);
+
1715 return str;
+
1716 }
+
1717
+
1723 template<class T>
+
1724 inline void strlwr(_Inout_z_ T* str)
+
1725 {
+
1726 _Assume_(str);
+
1727 for (size_t i = 0; str[i]; ++i)
+
1728 str[i] = tolower(str[i]);
+
1729 }
+
1730
+
1737 template<class T>
+
1738 inline void strlwr(_Inout_z_ T* str, _In_ const std::locale& locale)
+
1739 {
+
1740 _Assume_(str);
+
1741 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
1742 for (size_t i = 0; str[i]; ++i)
+
1743 str[i] = ctype.tolower(str[i]);
+
1744 }
+
1745
+
1752 template<class T>
+
1753 inline void strlwr(_Inout_updates_z_(count) T* str, _In_ size_t count)
+
1754 {
+
1755 _Assume_(str || !count);
+
1756 for (size_t i = 0; i < count && str[i]; ++i)
+
1757 str[i] = tolower(str[i]);
+
1758 }
+
1759
+
1767 template<class T>
+
1768 inline void strlwr(_Inout_updates_z_(count) T* str, _In_ size_t count, _In_ const std::locale& locale)
+
1769 {
+
1770 _Assume_(str || !count);
+
1771 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
1772 for (size_t i = 0; i < count && str[i]; ++i)
+
1773 str[i] = ctype.tolower(str[i]);
+
1774 }
+
1775
+
1781 template<class T>
+
1782 inline void strupr(_Inout_z_ T* str)
+
1783 {
+
1784 _Assume_(str);
+
1785 for (size_t i = 0; str[i]; ++i)
+
1786 str[i] = toupper(str[i]);
+
1787 }
+
1788
+
1795 template<class T>
+
1796 inline void strupr(_Inout_z_ T* str, _In_ const std::locale& locale)
+
1797 {
+
1798 _Assume_(str);
+
1799 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
1800 for (size_t i = 0; str[i]; ++i)
+
1801 str[i] = ctype.toupper(str[i]);
+
1802 }
+
1803
+
1810 template<class T>
+
1811 inline void strupr(_Inout_updates_z_(count) T* str, _In_ size_t count)
+
1812 {
+
1813 _Assume_(str || !count);
+
1814 for (size_t i = 0; i < count && str[i]; ++i)
+
1815 str[i] = toupper(str[i]);
+
1816 }
+
1817
+
1825 template<class T>
+
1826 inline void strupr(_Inout_updates_z_(count) T* str, _In_ size_t count, _In_ const std::locale& locale)
+
1827 {
+
1828 _Assume_(str || !count);
+
1829 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
1830 for (size_t i = 0; i < count && str[i]; ++i)
+
1831 str[i] = ctype.toupper(str[i]);
+
1832 }
+
1833
+
1839 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1840 inline void strupr(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str)
+
1841 {
+
1842 for (size_t i = 0; i < str.size(); ++i)
+
1843 str[i] = toupper(str[i]);
+
1844 }
+
1845
+
1852 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1853 inline void strupr(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& str, _In_ const std::locale& locale)
+
1854 {
+
1855 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
+
1856 for (size_t i = 0; i < str.size(); ++i)
+
1857 str[i] = ctype.toupper(str[i]);
+
1858 }
+
1859
+
1868 template<class T>
+
1869 inline size_t ltrim(
+
1870 _Inout_z_count_(count) T* str, _In_ size_t count)
+
1871 {
+
1872 for (size_t i = 0;; ++i) {
+
1873 if (i >= count) {
+
1874 if (count) str[0] = 0;
+
1875 return 0;
1876 }
-
1877 }
-
1878 }
-
1879
-
1889 template<class T>
-
1890 inline size_t ltrim(
-
1891 _Inout_z_count_(count) T* str, _In_ size_t count,
-
1892 _In_ const std::locale& locale)
-
1893 {
-
1894 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
1895 for (size_t i = 0;; ++i) {
-
1896 if (i >= count) {
-
1897 if (count) str[0] = 0;
-
1898 return 0;
-
1899 }
-
1900 if (!str[i]) {
-
1901 str[0] = 0;
-
1902 return 0;
-
1903 }
-
1904 if (!ctype.is(ctype.space, str[i])) {
-
1905 if (!i)
-
1906 return strnlen(str, count);
-
1907 size_t n = count != SIZE_MAX ? strncpy(str, str + i, count - i) : strcpy(str, str + i);
-
1908 str[n] = 0;
-
1909 return n;
+
1877 if (!str[i]) {
+
1878 str[0] = 0;
+
1879 return 0;
+
1880 }
+
1881 if (!isspace(str[i])) {
+
1882 if (!i)
+
1883 return strnlen(str, count);
+
1884 size_t n = count != SIZE_MAX ? strncpy(str, str + i, count - i) : strcpy(str, str + i);
+
1885 str[n] = 0;
+
1886 return n;
+
1887 }
+
1888 }
+
1889 }
+
1890
+
1900 template<class T>
+
1901 inline size_t ltrim(
+
1902 _Inout_z_count_(count) T* str, _In_ size_t count,
+
1903 _In_ const std::locale& locale)
+
1904 {
+
1905 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
1906 for (size_t i = 0;; ++i) {
+
1907 if (i >= count) {
+
1908 if (count) str[0] = 0;
+
1909 return 0;
1910 }
-
1911 }
-
1912 }
-
1913
-
1919 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1920 inline void ltrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s)
-
1921 {
-
1922 s.erase(
-
1923 s.begin(),
-
1924 std::find_if(
-
1925 s.begin(),
-
1926 s.end(),
-
1927 [&](_In_ _Elem ch) { return !isspace(ch); }));
-
1928 }
-
1929
-
1936 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
1937 inline void ltrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s, _In_ const std::locale& locale)
-
1938 {
-
1939 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
-
1940 s.erase(
-
1941 s.begin(),
-
1942 std::find_if(
-
1943 s.begin(),
-
1944 s.end(),
-
1945 [&](_In_ _Elem ch) { return !ctype.is(ctype.space, ch); }));
-
1946 }
-
1947
-
1956 template<class T>
-
1957 inline size_t rtrim(
-
1958 _Inout_z_count_(count) T* str, _In_ size_t count)
-
1959 {
-
1960 for (size_t i = 0, j = 0;;) {
-
1961 if (i >= count || !str[i]) {
-
1962 if (j < count) str[j] = 0;
-
1963 return j;
-
1964 }
-
1965 if (!isspace(str[i]))
-
1966 j = ++i;
-
1967 else
-
1968 ++i;
-
1969 }
-
1970 }
-
1971
-
1981 template<class T>
-
1982 inline size_t rtrim(
-
1983 _Inout_z_count_(count) T* str, _In_ size_t count,
-
1984 _In_ const std::locale& locale)
-
1985 {
-
1986 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
-
1987 for (size_t i = 0, j = 0;;) {
-
1988 if (i >= count || !str[i]) {
-
1989 if (j < count) str[j] = 0;
-
1990 return j;
-
1991 }
-
1992 if (!ctype.is(ctype.space, str[i]))
-
1993 j = ++i;
-
1994 else
-
1995 ++i;
-
1996 }
-
1997 }
-
1998
-
2004 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
2005 static inline void rtrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s)
-
2006 {
-
2007 s.erase(
-
2008 std::find_if(
-
2009 s.rbegin(),
-
2010 s.rend(),
-
2011 [&](_In_ _Elem ch) { return !isspace(ch); }).base(),
-
2012 s.end());
-
2013 }
-
2014
-
2021 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
2022 static inline void rtrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s, _In_ const std::locale& locale)
-
2023 {
-
2024 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
-
2025 s.erase(
-
2026 std::find_if(
-
2027 s.rbegin(),
-
2028 s.rend(),
-
2029 [&](_In_ _Elem ch) { return !ctype.is(ctype.space, ch); }).base(),
-
2030 s.end());
-
2031 }
-
2032
-
2041 template<class T>
-
2042 inline size_t trim(
-
2043 _Inout_z_count_(count) T* str, _In_ size_t count)
-
2044 {
-
2045 return ltrim(str, rtrim(str, count));
-
2046 }
-
2047
-
2057 template<class T>
-
2058 inline size_t trim(
-
2059 _Inout_z_count_(count) T* str, _In_ size_t count,
-
2060 _In_ const std::locale& locale)
-
2061 {
-
2062 return ltrim(str, rtrim(str, count, locale), locale);
-
2063 }
-
2064
-
2070 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
2071 static inline void trim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s)
+
1911 if (!str[i]) {
+
1912 str[0] = 0;
+
1913 return 0;
+
1914 }
+
1915 if (!ctype.is(ctype.space, str[i])) {
+
1916 if (!i)
+
1917 return strnlen(str, count);
+
1918 size_t n = count != SIZE_MAX ? strncpy(str, str + i, count - i) : strcpy(str, str + i);
+
1919 str[n] = 0;
+
1920 return n;
+
1921 }
+
1922 }
+
1923 }
+
1924
+
1930 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1931 inline void ltrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s)
+
1932 {
+
1933 s.erase(
+
1934 s.begin(),
+
1935 std::find_if(
+
1936 s.begin(),
+
1937 s.end(),
+
1938 [&](_In_ _Elem ch) { return !isspace(ch); }));
+
1939 }
+
1940
+
1947 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
1948 inline void ltrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s, _In_ const std::locale& locale)
+
1949 {
+
1950 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
+
1951 s.erase(
+
1952 s.begin(),
+
1953 std::find_if(
+
1954 s.begin(),
+
1955 s.end(),
+
1956 [&](_In_ _Elem ch) { return !ctype.is(ctype.space, ch); }));
+
1957 }
+
1958
+
1967 template<class T>
+
1968 inline size_t rtrim(
+
1969 _Inout_z_count_(count) T* str, _In_ size_t count)
+
1970 {
+
1971 for (size_t i = 0, j = 0;;) {
+
1972 if (i >= count || !str[i]) {
+
1973 if (j < count) str[j] = 0;
+
1974 return j;
+
1975 }
+
1976 if (!isspace(str[i]))
+
1977 j = ++i;
+
1978 else
+
1979 ++i;
+
1980 }
+
1981 }
+
1982
+
1992 template<class T>
+
1993 inline size_t rtrim(
+
1994 _Inout_z_count_(count) T* str, _In_ size_t count,
+
1995 _In_ const std::locale& locale)
+
1996 {
+
1997 const auto& ctype = std::use_facet<std::ctype<T>>(locale);
+
1998 for (size_t i = 0, j = 0;;) {
+
1999 if (i >= count || !str[i]) {
+
2000 if (j < count) str[j] = 0;
+
2001 return j;
+
2002 }
+
2003 if (!ctype.is(ctype.space, str[i]))
+
2004 j = ++i;
+
2005 else
+
2006 ++i;
+
2007 }
+
2008 }
+
2009
+
2015 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
2016 static inline void rtrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s)
+
2017 {
+
2018 s.erase(
+
2019 std::find_if(
+
2020 s.rbegin(),
+
2021 s.rend(),
+
2022 [&](_In_ _Elem ch) { return !isspace(ch); }).base(),
+
2023 s.end());
+
2024 }
+
2025
+
2032 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
2033 static inline void rtrim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s, _In_ const std::locale& locale)
+
2034 {
+
2035 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
+
2036 s.erase(
+
2037 std::find_if(
+
2038 s.rbegin(),
+
2039 s.rend(),
+
2040 [&](_In_ _Elem ch) { return !ctype.is(ctype.space, ch); }).base(),
+
2041 s.end());
+
2042 }
+
2043
+
2052 template<class T>
+
2053 inline size_t trim(
+
2054 _Inout_z_count_(count) T* str, _In_ size_t count)
+
2055 {
+
2056 return ltrim(str, rtrim(str, count));
+
2057 }
+
2058
+
2068 template<class T>
+
2069 inline size_t trim(
+
2070 _Inout_z_count_(count) T* str, _In_ size_t count,
+
2071 _In_ const std::locale& locale)
2072 {
-
2073 auto nonspace = [&](_In_ _Elem ch) { return !isspace(ch); };
-
2074 s.erase(
-
2075 s.begin(),
-
2076 std::find_if(
-
2077 s.begin(),
-
2078 s.end(),
-
2079 nonspace));
-
2080 s.erase(
-
2081 std::find_if(
-
2082 s.rbegin(),
-
2083 s.rend(),
-
2084 nonspace).base(),
-
2085 s.end());
-
2086 }
-
2087
-
2094 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
-
2095 static inline void trim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s, _In_ const std::locale& locale)
-
2096 {
-
2097 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
-
2098 auto nonspace = [&](_In_ _Elem ch) { return !ctype.is(ctype.space, ch); };
-
2099 s.erase(
-
2100 s.begin(),
-
2101 std::find_if(
-
2102 s.begin(),
-
2103 s.end(),
-
2104 nonspace));
-
2105 s.erase(
-
2106 std::find_if(
-
2107 s.rbegin(),
-
2108 s.rend(),
-
2109 nonspace).base(),
-
2110 s.end());
-
2111 }
-
2112}
+
2073 return ltrim(str, rtrim(str, count, locale), locale);
+
2074 }
+
2075
+
2081 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
2082 static inline void trim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s)
+
2083 {
+
2084 auto nonspace = [&](_In_ _Elem ch) { return !isspace(ch); };
+
2085 s.erase(
+
2086 s.begin(),
+
2087 std::find_if(
+
2088 s.begin(),
+
2089 s.end(),
+
2090 nonspace));
+
2091 s.erase(
+
2092 std::find_if(
+
2093 s.rbegin(),
+
2094 s.rend(),
+
2095 nonspace).base(),
+
2096 s.end());
+
2097 }
+
2098
+
2105 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
+
2106 static inline void trim(_Inout_ std::basic_string<_Elem, _Traits, _Ax>& s, _In_ const std::locale& locale)
+
2107 {
+
2108 const auto& ctype = std::use_facet<std::ctype<_Elem>>(locale);
+
2109 auto nonspace = [&](_In_ _Elem ch) { return !ctype.is(ctype.space, ch); };
+
2110 s.erase(
+
2111 s.begin(),
+
2112 std::find_if(
+
2113 s.begin(),
+
2114 s.end(),
+
2115 nonspace));
+
2116 s.erase(
+
2117 std::find_if(
+
2118 s.rbegin(),
+
2119 s.rend(),
+
2120 nonspace).base(),
+
2121 s.end());
+
2122 }
+
2123}
diff --git a/structstdex_1_1chrono_1_1aosn__date-members.html b/structstdex_1_1chrono_1_1aosn__date-members.html index 08414be18..7e76f3ecd 100644 --- a/structstdex_1_1chrono_1_1aosn__date-members.html +++ b/structstdex_1_1chrono_1_1aosn__date-members.html @@ -96,7 +96,7 @@ $(function() { diff --git a/structstdex_1_1chrono_1_1aosn__date.html b/structstdex_1_1chrono_1_1aosn__date.html index f2cc51288..19c60929f 100644 --- a/structstdex_1_1chrono_1_1aosn__date.html +++ b/structstdex_1_1chrono_1_1aosn__date.html @@ -152,7 +152,7 @@ static constexpr bool is_s diff --git a/structstdex_1_1chrono_1_1aosn__timestamp-members.html b/structstdex_1_1chrono_1_1aosn__timestamp-members.html index 9d63b042e..78b11c16c 100644 --- a/structstdex_1_1chrono_1_1aosn__timestamp-members.html +++ b/structstdex_1_1chrono_1_1aosn__timestamp-members.html @@ -110,7 +110,7 @@ $(function() { diff --git a/structstdex_1_1chrono_1_1aosn__timestamp.html b/structstdex_1_1chrono_1_1aosn__timestamp.html index 8f5a2b73e..3044ae2ed 100644 --- a/structstdex_1_1chrono_1_1aosn__timestamp.html +++ b/structstdex_1_1chrono_1_1aosn__timestamp.html @@ -197,7 +197,7 @@ static constexpr rep one_w diff --git a/structstdex_1_1free__locale__delete-members.html b/structstdex_1_1free__locale__delete-members.html index 8dcdb9d15..622681c57 100644 --- a/structstdex_1_1free__locale__delete-members.html +++ b/structstdex_1_1free__locale__delete-members.html @@ -84,7 +84,7 @@ $(function() { diff --git a/structstdex_1_1free__locale__delete.html b/structstdex_1_1free__locale__delete.html index d6b427e73..aee5e0cc3 100644 --- a/structstdex_1_1free__locale__delete.html +++ b/structstdex_1_1free__locale__delete.html @@ -101,7 +101,7 @@ void operator() (local diff --git a/structstdex_1_1html_1_1element__traits-members.html b/structstdex_1_1html_1_1element__traits-members.html index bfed59def..6d8863f88 100644 --- a/structstdex_1_1html_1_1element__traits-members.html +++ b/structstdex_1_1html_1_1element__traits-members.html @@ -102,7 +102,7 @@ $(function() { diff --git a/structstdex_1_1html_1_1element__traits.html b/structstdex_1_1html_1_1element__traits.html index d16d53be9..5813c47e9 100644 --- a/structstdex_1_1html_1_1element__traits.html +++ b/structstdex_1_1html_1_1element__traits.html @@ -858,7 +858,7 @@ template<class T > diff --git a/structstdex_1_1html_1_1entity-members.html b/structstdex_1_1html_1_1entity-members.html index 45746f256..120bb9e39 100644 --- a/structstdex_1_1html_1_1entity-members.html +++ b/structstdex_1_1html_1_1entity-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/structstdex_1_1html_1_1entity.html b/structstdex_1_1html_1_1entity.html index 27f070580..15337fd75 100644 --- a/structstdex_1_1html_1_1entity.html +++ b/structstdex_1_1html_1_1entity.html @@ -106,7 +106,7 @@ struct stdex::html::entity< _Elem, _Traits, _Alloc >

HTML entity.

diff --git a/structstdex_1_1html_1_1inserted__token-members.html b/structstdex_1_1html_1_1inserted__token-members.html index 6b5b5eb11..3a269bb8e 100644 --- a/structstdex_1_1html_1_1inserted__token-members.html +++ b/structstdex_1_1html_1_1inserted__token-members.html @@ -87,7 +87,7 @@ $(function() { diff --git a/structstdex_1_1html_1_1inserted__token.html b/structstdex_1_1html_1_1inserted__token.html index 369ed9a9e..d471896c3 100644 --- a/structstdex_1_1html_1_1inserted__token.html +++ b/structstdex_1_1html_1_1inserted__token.html @@ -113,7 +113,7 @@ bool after_word diff --git a/structstdex_1_1interval-members.html b/structstdex_1_1interval-members.html index d7ead532e..784fdedea 100644 --- a/structstdex_1_1interval-members.html +++ b/structstdex_1_1interval-members.html @@ -103,7 +103,7 @@ $(function() { diff --git a/structstdex_1_1interval.html b/structstdex_1_1interval.html index 40d70afba..516a203d7 100644 --- a/structstdex_1_1interval.html +++ b/structstdex_1_1interval.html @@ -722,7 +722,7 @@ template<class T > diff --git a/structstdex_1_1mapping-members.html b/structstdex_1_1mapping-members.html index 6b768a0d4..4dbe59f6f 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 ed4a56826..c6f971b3f 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 873c7bf26..a1b2070ed 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 e5a172dc6..6ab1d8be2 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 0ce185d12..11d11d9c9 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 75da0b1c1..18af532a0 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_1html__attribute-members.html b/structstdex_1_1parser_1_1html__attribute-members.html index f50e5114a..e6e3f36aa 100644 --- a/structstdex_1_1parser_1_1html__attribute-members.html +++ b/structstdex_1_1parser_1_1html__attribute-members.html @@ -85,7 +85,7 @@ $(function() { diff --git a/structstdex_1_1parser_1_1html__attribute.html b/structstdex_1_1parser_1_1html__attribute.html index 2638ed273..02bd39801 100644 --- a/structstdex_1_1parser_1_1html__attribute.html +++ b/structstdex_1_1parser_1_1html__attribute.html @@ -105,7 +105,7 @@ Public Attributes diff --git a/structstdex_1_1parser_1_1http__factor__more-members.html b/structstdex_1_1parser_1_1http__factor__more-members.html index b78355ec3..bef9b15c0 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 69e2f7d05..29af14c8a 100644 --- a/structstdex_1_1parser_1_1http__factor__more.html +++ b/structstdex_1_1parser_1_1http__factor__more.html @@ -93,7 +93,7 @@ Public Member Functions diff --git a/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html b/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html index ca64013a1..d4e2c9300 100644 --- a/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html +++ b/structstdex_1_1stream_1_1buffer_1_1buffer__t-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/structstdex_1_1stream_1_1buffer_1_1buffer__t.html b/structstdex_1_1stream_1_1buffer_1_1buffer__t.html index c75ddda9c..ddf42eb71 100644 --- a/structstdex_1_1stream_1_1buffer_1_1buffer__t.html +++ b/structstdex_1_1stream_1_1buffer_1_1buffer__t.html @@ -109,7 +109,7 @@ size_t capacity diff --git a/structstdex_1_1stream_1_1fifo_1_1node__t-members.html b/structstdex_1_1stream_1_1fifo_1_1node__t-members.html index abe0db72c..412997e01 100644 --- a/structstdex_1_1stream_1_1fifo_1_1node__t-members.html +++ b/structstdex_1_1stream_1_1fifo_1_1node__t-members.html @@ -86,7 +86,7 @@ $(function() { diff --git a/structstdex_1_1stream_1_1fifo_1_1node__t.html b/structstdex_1_1stream_1_1fifo_1_1node__t.html index 84d4e56ec..666ba4017 100644 --- a/structstdex_1_1stream_1_1fifo_1_1node__t.html +++ b/structstdex_1_1stream_1_1fifo_1_1node__t.html @@ -99,7 +99,7 @@ uint8_t data [0]< diff --git a/structstdex_1_1sys__info__t-members.html b/structstdex_1_1sys__info__t-members.html index f6e57a417..4e1971294 100644 --- a/structstdex_1_1sys__info__t-members.html +++ b/structstdex_1_1sys__info__t-members.html @@ -89,7 +89,7 @@ $(function() { diff --git a/structstdex_1_1sys__info__t.html b/structstdex_1_1sys__info__t.html index 2bf356ee8..e94c9651b 100644 --- a/structstdex_1_1sys__info__t.html +++ b/structstdex_1_1sys__info__t.html @@ -137,7 +137,7 @@ struct utsname m_utsn< diff --git a/sys__info_8hpp_source.html b/sys__info_8hpp_source.html index e566ffa6f..e42be065d 100644 --- a/sys__info_8hpp_source.html +++ b/sys__info_8hpp_source.html @@ -285,7 +285,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/system_8hpp_source.html b/system_8hpp_source.html index 45febfe20..03996c762 100644 --- a/system_8hpp_source.html +++ b/system_8hpp_source.html @@ -289,7 +289,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/unicode_8cpp_source.html b/unicode_8cpp_source.html index bf4e0fd0b..53df99b09 100644 --- a/unicode_8cpp_source.html +++ b/unicode_8cpp_source.html @@ -177,11 +177,11 @@ $(document).ready(function() { init_codefold(0); });
93#ifndef _WIN32
94#pragma GCC diagnostic pop
95#endif
-
Encoding converter context.
Definition unicode.hpp:117
+
Encoding converter context.
Definition unicode.hpp:133
diff --git a/unicode_8hpp_source.html b/unicode_8hpp_source.html index 2152c3710..ec53348cd 100644 --- a/unicode_8hpp_source.html +++ b/unicode_8hpp_source.html @@ -146,570 +146,576 @@ $(document).ready(function() { init_codefold(0); });
62 constexpr charset_id system_charset = charset_id::system;
63#endif
64
-
65 inline charset_id charset_from_name(_In_z_ const char* name)
-
66 {
-
67 struct charset_less {
-
68 inline bool operator()(_In_z_ const char* a, _In_z_ const char* b) const
-
69 {
-
70 return stdex::stricmp(a, b) < 0;
-
71 }
-
72 };
-
73 static const std::map<const char*, charset_id, charset_less> charsets = {
-
74 { "UNICODE-1-1-UTF-7", charset_id::utf7 },
-
75 { "UTF-7", charset_id::utf7 },
-
76 { "CSUNICODE11UTF7", charset_id::utf7 },
-
77
-
78 { "UTF-8", charset_id::utf8 },
-
79 { "UTF8", charset_id::utf8 },
-
80
-
81 { "UTF-16", charset_id::utf16 },
-
82#if BYTE_ORDER == BIG_ENDIAN
-
83 { "UTF-16BE", charset_id::utf16 },
-
84#else
-
85 { "UTF-16LE", charset_id::utf16 },
-
86#endif
-
87
-
88 { "UTF-32", charset_id::utf32 },
-
89#if BYTE_ORDER == BIG_ENDIAN
-
90 { "UTF-32BE", charset_id::utf32 },
-
91#else
-
92 { "UTF-32LE", charset_id::utf32 },
-
93#endif
-
94
-
95 { "CP1250", charset_id::windows1250 },
-
96 { "MS-EE", charset_id::windows1250 },
-
97 { "WINDOWS-1250", charset_id::windows1250 },
-
98
-
99 { "CP1251", charset_id::windows1251 },
-
100 { "MS-CYRL", charset_id::windows1251 },
-
101 { "WINDOWS-1251", charset_id::windows1251 },
-
102
-
103 { "CP1252", charset_id::windows1252 },
-
104 { "MS-ANSI", charset_id::windows1252 },
-
105 { "WINDOWS-1252", charset_id::windows1252 },
-
106 };
-
107 if (auto el = charsets.find(name); el != charsets.end())
-
108 return el->second;
-
109 return charset_id::system;
-
110 }
-
111
-
115 template <typename T_from, typename T_to>
-
- -
117 {
-
118 protected:
-
119 charset_id m_from, m_to;
-
120
-
121 public:
-
122 charset_encoder(_In_ charset_id from, _In_ charset_id to) :
-
123 m_from(from),
-
124 m_to(to)
-
125 {
-
126#ifdef _WIN32
-
127 m_from_wincp = to_encoding(from);
-
128 m_to_wincp = to_encoding(to);
-
129#else
-
130 m_handle = iconv_open(to_encoding(to), to_encoding(from));
-
131 if (m_handle == (iconv_t)-1)
-
132 throw std::system_error(errno, std::system_category(), "iconv_open failed");
-
133#endif
-
134 }
-
135
-
136#ifndef _WIN32
- -
138 {
-
139 iconv_close(m_handle);
-
140 }
-
141#endif
-
142
-
143 inline charset_id from_encoding() const { return m_from; }
-
144 inline charset_id to_encoding() const { return m_to; }
-
145
-
153 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
-
-
154 void strcat(
-
155 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
-
156 _In_reads_or_z_opt_(count_src) const T_from* src, _In_ size_t count_src)
-
157 {
-
158 _Assume_(src || !count_src);
-
159 count_src = stdex::strnlen<T_from>(src, count_src);
-
160 if (!count_src) _Unlikely_
-
161 return;
-
162
-
163#ifdef _WIN32
-
164 constexpr DWORD dwFlagsMBWC = MB_PRECOMPOSED;
-
165 constexpr DWORD dwFlagsWCMB = 0;
-
166 constexpr LPCCH lpDefaultChar = NULL;
-
167
-
168 _Assume_(src);
-
169 if (m_from_wincp == m_to_wincp) _Unlikely_{
-
170 dst.append(reinterpret_cast<const T_to*>(src), count_src);
-
171 return;
-
172 }
-
173
-
174#pragma warning(suppress: 4127)
-
175 if constexpr (sizeof(T_from) == sizeof(char) && sizeof(T_to) == sizeof(wchar_t)) {
-
176 _Assume_(count_src < INT_MAX || count_src == SIZE_MAX);
-
177
-
178 // Try to convert to stack buffer first.
-
179 WCHAR szStackBuffer[1024 / sizeof(WCHAR)];
-
180#pragma warning(suppress: 6387) // Testing indicates src may be NULL when count_src is also 0. Is SAL of the lpMultiByteStr parameter wrong?
-
181 int cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szStackBuffer, _countof(szStackBuffer));
-
182 if (cch) {
-
183 // Append from stack.
-
184 dst.append(reinterpret_cast<const T_to*>(szStackBuffer), count_src != SIZE_MAX ? wcsnlen(szStackBuffer, cch) : static_cast<size_t>(cch) - 1);
-
185 return;
-
186 }
-
187 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
188 // Query the required output size. Allocate buffer. Then convert again.
-
189 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), NULL, 0);
-
190 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
-
191 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szBuffer.get(), cch);
-
192 dst.append(reinterpret_cast<const T_to*>(szBuffer.get()), count_src != SIZE_MAX ? wcsnlen(szBuffer.get(), cch) : static_cast<size_t>(cch) - 1);
-
193 return;
-
194 }
-
195 throw std::system_error(GetLastError(), std::system_category(), "MultiByteToWideChar failed");
-
196 }
-
197
-
198#pragma warning(suppress: 4127)
-
199 if constexpr (sizeof(T_from) == sizeof(wchar_t) && sizeof(T_to) == sizeof(char)) {
-
200 _Assume_(count_src < INT_MAX || count_src == SIZE_MAX);
-
201
-
202 // Try to convert to stack buffer first.
-
203 CHAR szStackBuffer[1024 / sizeof(CHAR)];
-
204#pragma warning(suppress: 6387) // Testing indicates src may be NULL when count_src is also 0. Is SAL of the lpWideCharStr parameter wrong?
-
205 int cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, reinterpret_cast<LPCWCH>(src), static_cast<int>(count_src), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, NULL);
-
206 if (cch) {
-
207 // Copy from stack. Be careful not to include zero terminator.
-
208 dst.append(reinterpret_cast<const T_to*>(szStackBuffer), count_src != SIZE_MAX ? strnlen(szStackBuffer, cch) : static_cast<size_t>(cch) - 1);
-
209 return;
-
210 }
-
211 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
212 // Query the required output size. Allocate buffer. Then convert again.
-
213 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, reinterpret_cast<LPCWCH>(src), static_cast<int>(count_src), NULL, 0, lpDefaultChar, NULL);
-
214 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
-
215 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, reinterpret_cast<LPCWCH>(src), static_cast<int>(count_src), szBuffer.get(), cch, lpDefaultChar, NULL);
-
216 dst.append(reinterpret_cast<const T_to*>(szBuffer.get()), count_src != SIZE_MAX ? strnlen(szBuffer.get(), cch) : static_cast<size_t>(cch) - 1);
-
217 return;
-
218 }
-
219 throw std::system_error(GetLastError(), std::system_category(), "WideCharToMultiByte failed");
-
220 }
-
221
-
222#pragma warning(suppress: 4127)
-
223 if constexpr (sizeof(T_from) == sizeof(char) && sizeof(T_to) == sizeof(char)) {
-
224 _Assume_(count_src < INT_MAX || count_src == SIZE_MAX);
-
225
-
226 // Try to convert to stack buffer first.
-
227 WCHAR szStackBufferMBWC[512 / sizeof(WCHAR)];
-
228#pragma warning(suppress: 6387) // Testing indicates src may be NULL when count_src is also 0. Is SAL of the lpMultiByteStr parameter wrong?
-
229 int cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szStackBufferMBWC, _countof(szStackBufferMBWC));
-
230 if (cch) {
-
231 // Append from stack.
-
232 size_t count_inter = count_src != SIZE_MAX ? wcsnlen(szStackBufferMBWC, cch) : static_cast<size_t>(cch) - 1;
-
233 _Assume_(count_inter < INT_MAX);
-
234
-
235 // Try to convert to stack buffer first.
-
236 CHAR szStackBufferWCMB[512 / sizeof(CHAR)];
-
237#pragma warning(suppress: 6387) // Testing indicates szStackBufferMBWC may be NULL when count_inter is also 0. Is SAL of the lpWideCharStr parameter wrong?
-
238 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szStackBufferMBWC, static_cast<int>(count_inter), szStackBufferWCMB, _countof(szStackBufferWCMB), lpDefaultChar, NULL);
-
239 if (cch) {
-
240 // Copy from stack. Be careful not to include zero terminator.
-
241 dst.append(reinterpret_cast<const T_to*>(szStackBufferWCMB), strnlen(szStackBufferWCMB, cch));
-
242 return;
-
243 }
-
244 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
245 // Query the required output size. Allocate buffer. Then convert again.
-
246 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szStackBufferMBWC, static_cast<int>(count_inter), NULL, 0, lpDefaultChar, NULL);
-
247 std::unique_ptr<CHAR[]> szBufferWCMB(new CHAR[cch]);
-
248 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szStackBufferMBWC, static_cast<int>(count_inter), szBufferWCMB.get(), cch, lpDefaultChar, NULL);
-
249 dst.append(reinterpret_cast<const T_to*>(szBufferWCMB.get()), strnlen(szBufferWCMB.get(), cch));
-
250 return;
-
251 }
-
252 throw std::system_error(GetLastError(), std::system_category(), "WideCharToMultiByte failed");
-
253 }
-
254 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
-
255 // Query the required output size. Allocate buffer. Then convert again.
-
256 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), NULL, 0);
-
257 std::unique_ptr<WCHAR[]> szBufferMBWC(new WCHAR[cch]);
-
258 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szBufferMBWC.get(), cch);
-
259 size_t count_inter = count_src != SIZE_MAX ? wcsnlen(szBufferMBWC.get(), cch) : static_cast<size_t>(cch) - 1;
-
260
-
261 // Query the required output size. Allocate buffer. Then convert again.
-
262 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szBufferMBWC.get(), static_cast<int>(count_inter), NULL, 0, lpDefaultChar, NULL);
-
263 std::unique_ptr<CHAR[]> szBufferWCMB(new CHAR[cch]);
-
264 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szBufferMBWC.get(), static_cast<int>(count_inter), szBufferWCMB.get(), cch, lpDefaultChar, NULL);
-
265 dst.append(reinterpret_cast<const T_to*>(szBufferWCMB.get()), strnlen(szBufferWCMB.get(), cch));
-
266 return;
-
267 }
-
268 throw std::system_error(GetLastError(), std::system_category(), "MultiByteToWideChar failed");
-
269 }
-
270#else
-
271 dst.reserve(dst.size() + count_src);
-
272 T_to buf[1024 / sizeof(T_to)];
-
273 size_t src_size = stdex::mul(sizeof(T_from), count_src);
-
274 for (;;) {
-
275 T_to* output = &buf[0];
-
276 size_t output_size = sizeof(buf);
-
277 errno = 0;
-
278 iconv(m_handle, const_cast<char**>(reinterpret_cast<const char**>(&src)), &src_size, reinterpret_cast<char**>(&output), &output_size);
-
279 dst.append(buf, reinterpret_cast<T_to*>(reinterpret_cast<char*>(buf) + sizeof(buf) - output_size));
-
280 if (!errno)
-
281 break;
-
282 if (errno == E2BIG)
-
283 continue;
-
284 throw std::system_error(errno, std::system_category(), "iconv failed");
+
70 inline charset_id charset_from_name(_In_z_ const char* name)
+
71 {
+
72 struct charset_less {
+
73 inline bool operator()(_In_z_ const char* a, _In_z_ const char* b) const
+
74 {
+
75 return stdex::stricmp(a, b) < 0;
+
76 }
+
77 };
+
78 static const std::map<const char*, charset_id, charset_less> charsets = {
+
79 { "UNICODE-1-1-UTF-7", charset_id::utf7 },
+
80 { "UTF-7", charset_id::utf7 },
+
81 { "CSUNICODE11UTF7", charset_id::utf7 },
+
82
+
83 { "UTF-8", charset_id::utf8 },
+
84 { "UTF8", charset_id::utf8 },
+
85
+
86 { "UTF-16", charset_id::utf16 },
+
87#if BYTE_ORDER == BIG_ENDIAN
+
88 { "UTF-16BE", charset_id::utf16 },
+
89#else
+
90 { "UTF-16LE", charset_id::utf16 },
+
91#endif
+
92
+
93 { "UTF-32", charset_id::utf32 },
+
94#if BYTE_ORDER == BIG_ENDIAN
+
95 { "UTF-32BE", charset_id::utf32 },
+
96#else
+
97 { "UTF-32LE", charset_id::utf32 },
+
98#endif
+
99
+
100 { "CP1250", charset_id::windows1250 },
+
101 { "MS-EE", charset_id::windows1250 },
+
102 { "WINDOWS-1250", charset_id::windows1250 },
+
103
+
104 { "CP1251", charset_id::windows1251 },
+
105 { "MS-CYRL", charset_id::windows1251 },
+
106 { "WINDOWS-1251", charset_id::windows1251 },
+
107
+
108 { "CP1252", charset_id::windows1252 },
+
109 { "MS-ANSI", charset_id::windows1252 },
+
110 { "WINDOWS-1252", charset_id::windows1252 },
+
111 };
+
112 if (auto el = charsets.find(name); el != charsets.end())
+
113 return el->second;
+
114 return charset_id::system;
+
115 }
+
116
+
122 template <class _Traits = std::char_traits<char>, class _Alloc = std::allocator<char>>
+
123 inline charset_id charset_from_name(_In_ const std::basic_string<char, _Traits, _Alloc>& name)
+
124 {
+
125 return charset_from_name(name.c_str());
+
126 }
+
127
+
131 template <typename T_from, typename T_to>
+
+ +
133 {
+
134 protected:
+
135 charset_id m_from, m_to;
+
136
+
137 public:
+
138 charset_encoder(_In_ charset_id from, _In_ charset_id to) :
+
139 m_from(from),
+
140 m_to(to)
+
141 {
+
142#ifdef _WIN32
+
143 m_from_wincp = to_encoding(from);
+
144 m_to_wincp = to_encoding(to);
+
145#else
+
146 m_handle = iconv_open(to_encoding(to), to_encoding(from));
+
147 if (m_handle == (iconv_t)-1)
+
148 throw std::system_error(errno, std::system_category(), "iconv_open failed");
+
149#endif
+
150 }
+
151
+
152#ifndef _WIN32
+ +
154 {
+
155 iconv_close(m_handle);
+
156 }
+
157#endif
+
158
+
159 inline charset_id from_encoding() const { return m_from; }
+
160 inline charset_id to_encoding() const { return m_to; }
+
161
+
169 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
+
+
170 void strcat(
+
171 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
+
172 _In_reads_or_z_opt_(count_src) const T_from* src, _In_ size_t count_src)
+
173 {
+
174 _Assume_(src || !count_src);
+
175 count_src = stdex::strnlen<T_from>(src, count_src);
+
176 if (!count_src) _Unlikely_
+
177 return;
+
178
+
179#ifdef _WIN32
+
180 constexpr DWORD dwFlagsMBWC = MB_PRECOMPOSED;
+
181 constexpr DWORD dwFlagsWCMB = 0;
+
182 constexpr LPCCH lpDefaultChar = NULL;
+
183
+
184 _Assume_(src);
+
185 if (m_from_wincp == m_to_wincp) _Unlikely_{
+
186 dst.append(reinterpret_cast<const T_to*>(src), count_src);
+
187 return;
+
188 }
+
189
+
190#pragma warning(suppress: 4127)
+
191 if constexpr (sizeof(T_from) == sizeof(char) && sizeof(T_to) == sizeof(wchar_t)) {
+
192 _Assume_(count_src < INT_MAX || count_src == SIZE_MAX);
+
193
+
194 // Try to convert to stack buffer first.
+
195 WCHAR szStackBuffer[1024 / sizeof(WCHAR)];
+
196#pragma warning(suppress: 6387) // Testing indicates src may be NULL when count_src is also 0. Is SAL of the lpMultiByteStr parameter wrong?
+
197 int cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szStackBuffer, _countof(szStackBuffer));
+
198 if (cch) {
+
199 // Append from stack.
+
200 dst.append(reinterpret_cast<const T_to*>(szStackBuffer), count_src != SIZE_MAX ? wcsnlen(szStackBuffer, cch) : static_cast<size_t>(cch) - 1);
+
201 return;
+
202 }
+
203 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
204 // Query the required output size. Allocate buffer. Then convert again.
+
205 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), NULL, 0);
+
206 std::unique_ptr<WCHAR[]> szBuffer(new WCHAR[cch]);
+
207 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szBuffer.get(), cch);
+
208 dst.append(reinterpret_cast<const T_to*>(szBuffer.get()), count_src != SIZE_MAX ? wcsnlen(szBuffer.get(), cch) : static_cast<size_t>(cch) - 1);
+
209 return;
+
210 }
+
211 throw std::system_error(GetLastError(), std::system_category(), "MultiByteToWideChar failed");
+
212 }
+
213
+
214#pragma warning(suppress: 4127)
+
215 if constexpr (sizeof(T_from) == sizeof(wchar_t) && sizeof(T_to) == sizeof(char)) {
+
216 _Assume_(count_src < INT_MAX || count_src == SIZE_MAX);
+
217
+
218 // Try to convert to stack buffer first.
+
219 CHAR szStackBuffer[1024 / sizeof(CHAR)];
+
220#pragma warning(suppress: 6387) // Testing indicates src may be NULL when count_src is also 0. Is SAL of the lpWideCharStr parameter wrong?
+
221 int cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, reinterpret_cast<LPCWCH>(src), static_cast<int>(count_src), szStackBuffer, _countof(szStackBuffer), lpDefaultChar, NULL);
+
222 if (cch) {
+
223 // Copy from stack. Be careful not to include zero terminator.
+
224 dst.append(reinterpret_cast<const T_to*>(szStackBuffer), count_src != SIZE_MAX ? strnlen(szStackBuffer, cch) : static_cast<size_t>(cch) - 1);
+
225 return;
+
226 }
+
227 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
228 // Query the required output size. Allocate buffer. Then convert again.
+
229 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, reinterpret_cast<LPCWCH>(src), static_cast<int>(count_src), NULL, 0, lpDefaultChar, NULL);
+
230 std::unique_ptr<CHAR[]> szBuffer(new CHAR[cch]);
+
231 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, reinterpret_cast<LPCWCH>(src), static_cast<int>(count_src), szBuffer.get(), cch, lpDefaultChar, NULL);
+
232 dst.append(reinterpret_cast<const T_to*>(szBuffer.get()), count_src != SIZE_MAX ? strnlen(szBuffer.get(), cch) : static_cast<size_t>(cch) - 1);
+
233 return;
+
234 }
+
235 throw std::system_error(GetLastError(), std::system_category(), "WideCharToMultiByte failed");
+
236 }
+
237
+
238#pragma warning(suppress: 4127)
+
239 if constexpr (sizeof(T_from) == sizeof(char) && sizeof(T_to) == sizeof(char)) {
+
240 _Assume_(count_src < INT_MAX || count_src == SIZE_MAX);
+
241
+
242 // Try to convert to stack buffer first.
+
243 WCHAR szStackBufferMBWC[512 / sizeof(WCHAR)];
+
244#pragma warning(suppress: 6387) // Testing indicates src may be NULL when count_src is also 0. Is SAL of the lpMultiByteStr parameter wrong?
+
245 int cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szStackBufferMBWC, _countof(szStackBufferMBWC));
+
246 if (cch) {
+
247 // Append from stack.
+
248 size_t count_inter = count_src != SIZE_MAX ? wcsnlen(szStackBufferMBWC, cch) : static_cast<size_t>(cch) - 1;
+
249 _Assume_(count_inter < INT_MAX);
+
250
+
251 // Try to convert to stack buffer first.
+
252 CHAR szStackBufferWCMB[512 / sizeof(CHAR)];
+
253#pragma warning(suppress: 6387) // Testing indicates szStackBufferMBWC may be NULL when count_inter is also 0. Is SAL of the lpWideCharStr parameter wrong?
+
254 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szStackBufferMBWC, static_cast<int>(count_inter), szStackBufferWCMB, _countof(szStackBufferWCMB), lpDefaultChar, NULL);
+
255 if (cch) {
+
256 // Copy from stack. Be careful not to include zero terminator.
+
257 dst.append(reinterpret_cast<const T_to*>(szStackBufferWCMB), strnlen(szStackBufferWCMB, cch));
+
258 return;
+
259 }
+
260 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
261 // Query the required output size. Allocate buffer. Then convert again.
+
262 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szStackBufferMBWC, static_cast<int>(count_inter), NULL, 0, lpDefaultChar, NULL);
+
263 std::unique_ptr<CHAR[]> szBufferWCMB(new CHAR[cch]);
+
264 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szStackBufferMBWC, static_cast<int>(count_inter), szBufferWCMB.get(), cch, lpDefaultChar, NULL);
+
265 dst.append(reinterpret_cast<const T_to*>(szBufferWCMB.get()), strnlen(szBufferWCMB.get(), cch));
+
266 return;
+
267 }
+
268 throw std::system_error(GetLastError(), std::system_category(), "WideCharToMultiByte failed");
+
269 }
+
270 if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
+
271 // Query the required output size. Allocate buffer. Then convert again.
+
272 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), NULL, 0);
+
273 std::unique_ptr<WCHAR[]> szBufferMBWC(new WCHAR[cch]);
+
274 cch = MultiByteToWideChar(static_cast<UINT>(m_from_wincp), dwFlagsMBWC, reinterpret_cast<LPCCH>(src), static_cast<int>(count_src), szBufferMBWC.get(), cch);
+
275 size_t count_inter = count_src != SIZE_MAX ? wcsnlen(szBufferMBWC.get(), cch) : static_cast<size_t>(cch) - 1;
+
276
+
277 // Query the required output size. Allocate buffer. Then convert again.
+
278 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szBufferMBWC.get(), static_cast<int>(count_inter), NULL, 0, lpDefaultChar, NULL);
+
279 std::unique_ptr<CHAR[]> szBufferWCMB(new CHAR[cch]);
+
280 cch = WideCharToMultiByte(static_cast<UINT>(m_to_wincp), dwFlagsWCMB, szBufferMBWC.get(), static_cast<int>(count_inter), szBufferWCMB.get(), cch, lpDefaultChar, NULL);
+
281 dst.append(reinterpret_cast<const T_to*>(szBufferWCMB.get()), strnlen(szBufferWCMB.get(), cch));
+
282 return;
+
283 }
+
284 throw std::system_error(GetLastError(), std::system_category(), "MultiByteToWideChar failed");
285 }
-
286#endif
-
287 }
+
286#else
+
287 dst.reserve(dst.size() + count_src);
+
288 T_to buf[1024 / sizeof(T_to)];
+
289 size_t src_size = stdex::mul(sizeof(T_from), count_src);
+
290 for (;;) {
+
291 T_to* output = &buf[0];
+
292 size_t output_size = sizeof(buf);
+
293 errno = 0;
+
294 iconv(m_handle, const_cast<char**>(reinterpret_cast<const char**>(&src)), &src_size, reinterpret_cast<char**>(&output), &output_size);
+
295 dst.append(buf, reinterpret_cast<T_to*>(reinterpret_cast<char*>(buf) + sizeof(buf) - output_size));
+
296 if (!errno)
+
297 break;
+
298 if (errno == E2BIG)
+
299 continue;
+
300 throw std::system_error(errno, std::system_category(), "iconv failed");
+
301 }
+
302#endif
+
303 }
-
288
-
295 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
-
-
296 inline void strcat(
-
297 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
-
298 _In_z_ const T_from* src)
-
299 {
-
300 strcat(dst, src, SIZE_MAX);
-
301 }
+
304
+
311 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
+
+
312 inline void strcat(
+
313 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
+
314 _In_z_ const T_from* src)
+
315 {
+
316 strcat(dst, src, SIZE_MAX);
+
317 }
-
302
-
309 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>, class _Traits_from = std::char_traits<T_from>, class _Alloc_from = std::allocator<T_from>>
-
-
310 inline void strcat(
-
311 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
-
312 _In_ const std::basic_string<T_from, _Traits_from, _Alloc_from>& src)
-
313 {
-
314 strcat(dst, src.data(), src.size());
-
315 }
-
-
316
-
324 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
-
-
325 inline void strcpy(
-
326 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
-
327 _In_reads_or_z_opt_(count_src) const T_from* src, _In_ size_t count_src)
-
328 {
-
329 dst.clear();
-
330 strcat(dst, src, count_src);
+
318
+
325 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>, class _Traits_from = std::char_traits<T_from>, class _Alloc_from = std::allocator<T_from>>
+
+
326 inline void strcat(
+
327 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
+
328 _In_ const std::basic_string<T_from, _Traits_from, _Alloc_from>& src)
+
329 {
+
330 strcat(dst, src.data(), src.size());
331 }
332
-
339 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
-
-
340 inline void strcpy(
-
341 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
-
342 _In_z_ const T_from* src)
-
343 {
-
344 strcpy(dst, src, SIZE_MAX);
-
345 }
+
340 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
+
+
341 inline void strcpy(
+
342 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
+
343 _In_reads_or_z_opt_(count_src) const T_from* src, _In_ size_t count_src)
+
344 {
+
345 dst.clear();
+
346 strcat(dst, src, count_src);
+
347 }
-
346
-
353 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>, class _Traits_from = std::char_traits<T_from>, class _Alloc_from = std::allocator<T_from>>
-
-
354 inline void strcpy(
-
355 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
-
356 _In_ const std::basic_string<T_from, _Traits_from, _Alloc_from>& src)
-
357 {
-
358 strcpy(dst, src.data(), src.size());
-
359 }
+
348
+
355 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
+
+
356 inline void strcpy(
+
357 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
+
358 _In_z_ const T_from* src)
+
359 {
+
360 strcpy(dst, src, SIZE_MAX);
+
361 }
-
360
-
367 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
-
-
368 inline std::basic_string<T_to, _Traits_to, _Alloc_to> convert(_In_reads_or_z_opt_(count_src) const T_from* src, _In_ size_t count_src)
-
369 {
-
370 std::basic_string<T_to, _Traits_to, _Alloc_to> dst;
-
371 strcat(dst, src, count_src);
-
372 return dst;
-
373 }
+
362
+
369 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>, class _Traits_from = std::char_traits<T_from>, class _Alloc_from = std::allocator<T_from>>
+
+
370 inline void strcpy(
+
371 _Inout_ std::basic_string<T_to, _Traits_to, _Alloc_to>& dst,
+
372 _In_ const std::basic_string<T_from, _Traits_from, _Alloc_from>& src)
+
373 {
+
374 strcpy(dst, src.data(), src.size());
+
375 }
-
374
-
380 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
-
-
381 inline std::basic_string<T_to, _Traits_to, _Alloc_to> convert(_In_z_ const T_from* src)
-
382 {
-
383 return convert(src, SIZE_MAX);
-
384 }
+
376
+
383 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
+
+
384 inline std::basic_string<T_to, _Traits_to, _Alloc_to> convert(_In_reads_or_z_opt_(count_src) const T_from* src, _In_ size_t count_src)
+
385 {
+
386 std::basic_string<T_to, _Traits_to, _Alloc_to> dst;
+
387 strcat(dst, src, count_src);
+
388 return dst;
+
389 }
-
385
-
391 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>, class _Traits_from = std::char_traits<T_from>, class _Alloc_from = std::allocator<T_from>>
-
-
392 inline std::basic_string<T_to, _Traits_to, _Alloc_to> convert(_In_ const std::basic_string<T_from, _Traits_from, _Alloc_from>& src)
-
393 {
-
394 return convert(src.data(), src.size());
-
395 }
-
-
396
-
397 inline void clear()
+
390
+
396 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>>
+
+
397 inline std::basic_string<T_to, _Traits_to, _Alloc_to> convert(_In_z_ const T_from* src)
398 {
-
399#ifndef _WIN32
-
400 iconv(m_handle, NULL, NULL, NULL, NULL);
-
401#endif
-
402 }
-
403
-
404 static charset_id system_charset()
-
405 {
-
406#ifdef _WIN32
-
407 return static_cast<charset_id>(GetACP());
-
408#else
-
409 return charset_from_name(nl_langinfo(CODESET));
-
410#endif
-
411 }
-
412
-
413#ifdef _WIN32
-
414 protected:
-
415 static UINT to_encoding(_In_ charset_id charset)
-
416 {
-
417 return
-
418 charset == charset_id::system ? GetACP() :
-
419 charset == charset_id::oem ? GetOEMCP() :
-
420 static_cast<UINT>(charset);
-
421 }
-
422
-
423 protected:
-
424 UINT m_from_wincp, m_to_wincp;
-
425#else
-
426 protected:
-
427 static const char* to_encoding(_In_ charset_id charset)
-
428 {
-
429 static const char* const encodings[static_cast<std::underlying_type_t<charset_id>>(charset_id::_max)] = {
-
430 "", // system
-
431 "UTF-7", // utf7
-
432 "UTF-8", // utf8
-
433#if BYTE_ORDER == BIG_ENDIAN
-
434 "UTF-16BE", // utf16
-
435 "UTF-32BE", // utf32
-
436#else
-
437 "UTF-16LE", // utf16
-
438 "UTF-32LE", // utf32
-
439#endif
-
440 "CP1250", // windows1250
-
441 "CP1251", // windows1251
-
442 "CP1252", // windows1252
-
443 };
-
444 return
-
445 charset == charset_id::system ? nl_langinfo(CODESET) :
-
446 encodings[static_cast<std::underlying_type_t<charset_id>>(charset)];
-
447 }
-
448
-
449 protected:
-
450 iconv_t m_handle;
-
451#endif
-
452 };
+
399 return convert(src, SIZE_MAX);
+
400 }
-
453
-
464#ifndef _WIN32
-
465 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
466#endif
-
467 inline void strcat(
-
468 _Inout_ std::wstring& dst,
-
469 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
-
470 _In_ charset_id charset = charset_id::system)
-
471 {
-
472 charset_encoder<char, wchar_t>(charset, wchar_t_charset).strcat(dst, src, count_src);
-
473 }
-
474
-
475 _Deprecated_("Use stdex::strcat")
-
476 inline void str2wstr(
-
477 _Inout_ std::wstring& dst,
-
478 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
-
479 _In_ charset_id charset = charset_id::system)
-
480 {
-
481 strcat(dst, src, count_src, charset);
-
482 }
-
483
-
493#ifndef _WIN32
-
494 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
495#endif
-
496 inline void strcat(
-
497 _Inout_ std::wstring& dst,
-
498 _In_ const std::string& src,
-
499 _In_ charset_id charset = charset_id::system)
-
500 {
-
501 strcat(dst, src.data(), src.size(), charset);
-
502 }
-
503
-
504 _Deprecated_("Use stdex::strcat")
-
505 inline void str2wstr(
-
506 _Inout_ std::wstring& dst,
-
507 _In_ const std::string& src,
-
508 _In_ charset_id charset = charset_id::system)
-
509 {
-
510 strcat(dst, src, charset);
-
511 }
-
512
-
523#ifndef _WIN32
-
524 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
525#endif
-
526 inline void strcpy(
-
527 _Inout_ std::wstring& dst,
-
528 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
-
529 _In_ charset_id charset = charset_id::system)
-
530 {
-
531 dst.clear();
-
532 strcat(dst, src, count_src, charset);
-
533 }
-
534
-
544#ifndef _WIN32
-
545 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
546#endif
-
547 inline void strcpy(
-
548 _Inout_ std::wstring& dst,
-
549 _In_ const std::string& src,
-
550 _In_ charset_id charset = charset_id::system)
-
551 {
-
552 strcpy(dst, src.data(), src.size(), charset);
-
553 }
-
554
-
565#ifndef _WIN32
-
566 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
567#endif
-
568 inline std::wstring str2wstr(
-
569 _In_z_ const char* src,
-
570 _In_ charset_id charset = charset_id::system)
-
571 {
-
572 std::wstring dst;
-
573 strcat(dst, src, SIZE_MAX, charset);
-
574 return dst;
-
575 }
-
576
-
588#ifndef _WIN32
-
589 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
590#endif
-
591 inline std::wstring str2wstr(
-
592 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
-
593 _In_ charset_id charset = charset_id::system)
-
594 {
-
595 std::wstring dst;
-
596 strcat(dst, src, count_src, charset);
-
597 return dst;
-
598 }
-
599
-
610#ifndef _WIN32
-
611 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
612#endif
-
613 inline std::wstring str2wstr(
-
614 _In_ const std::string& src,
-
615 _In_ charset_id charset = charset_id::system)
-
616 {
-
617 return str2wstr(src.c_str(), src.size(), charset);
-
618 }
-
619
-
630#ifndef _WIN32
-
631 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
632#endif
-
633 inline void strcat(
-
634 _Inout_ std::string& dst,
-
635 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
-
636 _In_ charset_id charset = charset_id::system)
-
637 {
-
638 charset_encoder<wchar_t, char>(wchar_t_charset, charset).strcat(dst, src, count_src);
-
639 }
-
640
-
641 _Deprecated_("Use stdex::strcat")
-
642 inline void wstr2str(
-
643 _Inout_ std::string& dst,
-
644 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
-
645 _In_ charset_id charset = charset_id::system)
-
646 {
-
647 strcat(dst, src, count_src, charset);
-
648 }
-
649
-
659#ifndef _WIN32
-
660 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
661#endif
-
662 inline void strcat(
-
663 _Inout_ std::string& dst,
-
664 _In_ const std::wstring& src,
-
665 _In_ charset_id charset = charset_id::system)
-
666 {
-
667 strcat(dst, src.c_str(), src.size(), charset);
-
668 }
-
669
-
670 _Deprecated_("Use stdex::strcat")
-
671 inline void wstr2str(
-
672 _Inout_ std::string& dst,
-
673 _In_ const std::wstring& src,
-
674 _In_ charset_id charset = charset_id::system)
-
675 {
-
676 strcat(dst, src, charset);
-
677 }
-
678
-
689#ifndef _WIN32
-
690 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
691#endif
-
692 inline void strcpy(
-
693 _Inout_ std::string& dst,
-
694 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
-
695 _In_ charset_id charset = charset_id::system)
-
696 {
-
697 dst.clear();
-
698 strcat(dst, src, count_src, charset);
-
699 }
-
700
-
710#ifndef _WIN32
-
711 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
712#endif
-
713 inline void strcpy(
-
714 _Inout_ std::string& dst,
-
715 _In_ const std::wstring& src,
-
716 _In_ charset_id charset = charset_id::system)
-
717 {
-
718 strcpy(dst, src.data(), src.size(), charset);
-
719 }
-
720
-
731#ifndef _WIN32
-
732 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
733#endif
-
734 inline std::string wstr2str(
-
735 _In_z_ const wchar_t* src,
-
736 _In_ charset_id charset = charset_id::system)
-
737 {
-
738 std::string dst;
-
739 strcat(dst, src, SIZE_MAX, charset);
-
740 return dst;
-
741 }
-
742
-
754#ifndef _WIN32
-
755 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
756#endif
-
757 inline std::string wstr2str(
-
758 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
-
759 _In_ charset_id charset = charset_id::system)
-
760 {
-
761 std::string dst;
-
762 strcat(dst, src, count_src, charset);
-
763 return dst;
-
764 }
-
765
-
776#ifndef _WIN32
-
777 _Deprecated_("For better performance, consider a reusable charset_encoder")
-
778#endif
-
779 inline std::string wstr2str(
-
780 _In_ const std::wstring& src,
-
781 _In_ charset_id charset = charset_id::system)
-
782 {
-
783 return wstr2str(src.c_str(), src.size(), charset);
-
784 }
-
785}
-
786
-
787#ifndef _WIN32
-
788#pragma GCC diagnostic pop
-
789#endif
-
Encoding converter context.
Definition unicode.hpp:117
-
void strcpy(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const std::basic_string< T_from, _Traits_from, _Alloc_from > &src)
Convert string.
Definition unicode.hpp:354
-
std::basic_string< T_to, _Traits_to, _Alloc_to > convert(const std::basic_string< T_from, _Traits_from, _Alloc_from > &src)
Return converted string.
Definition unicode.hpp:392
-
std::basic_string< T_to, _Traits_to, _Alloc_to > convert(const T_from *src)
Return converted string.
Definition unicode.hpp:381
-
void strcat(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const std::basic_string< T_from, _Traits_from, _Alloc_from > &src)
Convert string and append to string.
Definition unicode.hpp:310
-
void strcpy(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const T_from *src)
Convert string.
Definition unicode.hpp:340
-
void strcat(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, _In_reads_or_z_opt_(count_src) const T_from *src, size_t count_src)
Convert string and append to string.
Definition unicode.hpp:154
-
void strcat(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const T_from *src)
Convert string and append to string.
Definition unicode.hpp:296
-
void strcpy(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, _In_reads_or_z_opt_(count_src) const T_from *src, size_t count_src)
Convert string.
Definition unicode.hpp:325
-
std::basic_string< T_to, _Traits_to, _Alloc_to > convert(_In_reads_or_z_opt_(count_src) const T_from *src, size_t count_src)
Return converted string.
Definition unicode.hpp:368
+
401
+
407 template <class _Traits_to = std::char_traits<T_to>, class _Alloc_to = std::allocator<T_to>, class _Traits_from = std::char_traits<T_from>, class _Alloc_from = std::allocator<T_from>>
+
+
408 inline std::basic_string<T_to, _Traits_to, _Alloc_to> convert(_In_ const std::basic_string<T_from, _Traits_from, _Alloc_from>& src)
+
409 {
+
410 return convert(src.data(), src.size());
+
411 }
+
+
412
+
413 inline void clear()
+
414 {
+
415#ifndef _WIN32
+
416 iconv(m_handle, NULL, NULL, NULL, NULL);
+
417#endif
+
418 }
+
419
+
420 static charset_id system_charset()
+
421 {
+
422#ifdef _WIN32
+
423 return static_cast<charset_id>(GetACP());
+
424#else
+
425 return charset_from_name(nl_langinfo(CODESET));
+
426#endif
+
427 }
+
428
+
429#ifdef _WIN32
+
430 protected:
+
431 static UINT to_encoding(_In_ charset_id charset)
+
432 {
+
433 return
+
434 charset == charset_id::system ? GetACP() :
+
435 charset == charset_id::oem ? GetOEMCP() :
+
436 static_cast<UINT>(charset);
+
437 }
+
438
+
439 protected:
+
440 UINT m_from_wincp, m_to_wincp;
+
441#else
+
442 protected:
+
443 static const char* to_encoding(_In_ charset_id charset)
+
444 {
+
445 static const char* const encodings[static_cast<std::underlying_type_t<charset_id>>(charset_id::_max)] = {
+
446 "", // system
+
447 "UTF-7", // utf7
+
448 "UTF-8", // utf8
+
449#if BYTE_ORDER == BIG_ENDIAN
+
450 "UTF-16BE", // utf16
+
451 "UTF-32BE", // utf32
+
452#else
+
453 "UTF-16LE", // utf16
+
454 "UTF-32LE", // utf32
+
455#endif
+
456 "CP1250", // windows1250
+
457 "CP1251", // windows1251
+
458 "CP1252", // windows1252
+
459 };
+
460 return
+
461 charset == charset_id::system ? nl_langinfo(CODESET) :
+
462 encodings[static_cast<std::underlying_type_t<charset_id>>(charset)];
+
463 }
+
464
+
465 protected:
+
466 iconv_t m_handle;
+
467#endif
+
468 };
+
+
469
+
480#ifndef _WIN32
+
481 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
482#endif
+
483 inline void strcat(
+
484 _Inout_ std::wstring& dst,
+
485 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
+
486 _In_ charset_id charset = charset_id::system)
+
487 {
+
488 charset_encoder<char, wchar_t>(charset, wchar_t_charset).strcat(dst, src, count_src);
+
489 }
+
490
+
491 _Deprecated_("Use stdex::strcat")
+
492 inline void str2wstr(
+
493 _Inout_ std::wstring& dst,
+
494 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
+
495 _In_ charset_id charset = charset_id::system)
+
496 {
+
497 strcat(dst, src, count_src, charset);
+
498 }
+
499
+
509#ifndef _WIN32
+
510 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
511#endif
+
512 inline void strcat(
+
513 _Inout_ std::wstring& dst,
+
514 _In_ const std::string& src,
+
515 _In_ charset_id charset = charset_id::system)
+
516 {
+
517 strcat(dst, src.data(), src.size(), charset);
+
518 }
+
519
+
520 _Deprecated_("Use stdex::strcat")
+
521 inline void str2wstr(
+
522 _Inout_ std::wstring& dst,
+
523 _In_ const std::string& src,
+
524 _In_ charset_id charset = charset_id::system)
+
525 {
+
526 strcat(dst, src, charset);
+
527 }
+
528
+
539#ifndef _WIN32
+
540 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
541#endif
+
542 inline void strcpy(
+
543 _Inout_ std::wstring& dst,
+
544 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
+
545 _In_ charset_id charset = charset_id::system)
+
546 {
+
547 dst.clear();
+
548 strcat(dst, src, count_src, charset);
+
549 }
+
550
+
560#ifndef _WIN32
+
561 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
562#endif
+
563 inline void strcpy(
+
564 _Inout_ std::wstring& dst,
+
565 _In_ const std::string& src,
+
566 _In_ charset_id charset = charset_id::system)
+
567 {
+
568 strcpy(dst, src.data(), src.size(), charset);
+
569 }
+
570
+
581#ifndef _WIN32
+
582 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
583#endif
+
584 inline std::wstring str2wstr(
+
585 _In_z_ const char* src,
+
586 _In_ charset_id charset = charset_id::system)
+
587 {
+
588 std::wstring dst;
+
589 strcat(dst, src, SIZE_MAX, charset);
+
590 return dst;
+
591 }
+
592
+
604#ifndef _WIN32
+
605 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
606#endif
+
607 inline std::wstring str2wstr(
+
608 _In_reads_or_z_opt_(count_src) const char* src, _In_ size_t count_src,
+
609 _In_ charset_id charset = charset_id::system)
+
610 {
+
611 std::wstring dst;
+
612 strcat(dst, src, count_src, charset);
+
613 return dst;
+
614 }
+
615
+
626#ifndef _WIN32
+
627 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
628#endif
+
629 inline std::wstring str2wstr(
+
630 _In_ const std::string& src,
+
631 _In_ charset_id charset = charset_id::system)
+
632 {
+
633 return str2wstr(src.c_str(), src.size(), charset);
+
634 }
+
635
+
646#ifndef _WIN32
+
647 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
648#endif
+
649 inline void strcat(
+
650 _Inout_ std::string& dst,
+
651 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
+
652 _In_ charset_id charset = charset_id::system)
+
653 {
+
654 charset_encoder<wchar_t, char>(wchar_t_charset, charset).strcat(dst, src, count_src);
+
655 }
+
656
+
657 _Deprecated_("Use stdex::strcat")
+
658 inline void wstr2str(
+
659 _Inout_ std::string& dst,
+
660 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
+
661 _In_ charset_id charset = charset_id::system)
+
662 {
+
663 strcat(dst, src, count_src, charset);
+
664 }
+
665
+
675#ifndef _WIN32
+
676 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
677#endif
+
678 inline void strcat(
+
679 _Inout_ std::string& dst,
+
680 _In_ const std::wstring& src,
+
681 _In_ charset_id charset = charset_id::system)
+
682 {
+
683 strcat(dst, src.c_str(), src.size(), charset);
+
684 }
+
685
+
686 _Deprecated_("Use stdex::strcat")
+
687 inline void wstr2str(
+
688 _Inout_ std::string& dst,
+
689 _In_ const std::wstring& src,
+
690 _In_ charset_id charset = charset_id::system)
+
691 {
+
692 strcat(dst, src, charset);
+
693 }
+
694
+
705#ifndef _WIN32
+
706 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
707#endif
+
708 inline void strcpy(
+
709 _Inout_ std::string& dst,
+
710 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
+
711 _In_ charset_id charset = charset_id::system)
+
712 {
+
713 dst.clear();
+
714 strcat(dst, src, count_src, charset);
+
715 }
+
716
+
726#ifndef _WIN32
+
727 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
728#endif
+
729 inline void strcpy(
+
730 _Inout_ std::string& dst,
+
731 _In_ const std::wstring& src,
+
732 _In_ charset_id charset = charset_id::system)
+
733 {
+
734 strcpy(dst, src.data(), src.size(), charset);
+
735 }
+
736
+
747#ifndef _WIN32
+
748 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
749#endif
+
750 inline std::string wstr2str(
+
751 _In_z_ const wchar_t* src,
+
752 _In_ charset_id charset = charset_id::system)
+
753 {
+
754 std::string dst;
+
755 strcat(dst, src, SIZE_MAX, charset);
+
756 return dst;
+
757 }
+
758
+
770#ifndef _WIN32
+
771 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
772#endif
+
773 inline std::string wstr2str(
+
774 _In_reads_or_z_opt_(count_src) const wchar_t* src, _In_ size_t count_src,
+
775 _In_ charset_id charset = charset_id::system)
+
776 {
+
777 std::string dst;
+
778 strcat(dst, src, count_src, charset);
+
779 return dst;
+
780 }
+
781
+
792#ifndef _WIN32
+
793 _Deprecated_("For better performance, consider a reusable charset_encoder")
+
794#endif
+
795 inline std::string wstr2str(
+
796 _In_ const std::wstring& src,
+
797 _In_ charset_id charset = charset_id::system)
+
798 {
+
799 return wstr2str(src.c_str(), src.size(), charset);
+
800 }
+
801}
+
802
+
803#ifndef _WIN32
+
804#pragma GCC diagnostic pop
+
805#endif
+
Encoding converter context.
Definition unicode.hpp:133
+
void strcpy(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const std::basic_string< T_from, _Traits_from, _Alloc_from > &src)
Convert string.
Definition unicode.hpp:370
+
std::basic_string< T_to, _Traits_to, _Alloc_to > convert(const std::basic_string< T_from, _Traits_from, _Alloc_from > &src)
Return converted string.
Definition unicode.hpp:408
+
std::basic_string< T_to, _Traits_to, _Alloc_to > convert(const T_from *src)
Return converted string.
Definition unicode.hpp:397
+
void strcat(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const std::basic_string< T_from, _Traits_from, _Alloc_from > &src)
Convert string and append to string.
Definition unicode.hpp:326
+
void strcpy(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const T_from *src)
Convert string.
Definition unicode.hpp:356
+
void strcat(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, _In_reads_or_z_opt_(count_src) const T_from *src, size_t count_src)
Convert string and append to string.
Definition unicode.hpp:170
+
void strcat(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, const T_from *src)
Convert string and append to string.
Definition unicode.hpp:312
+
void strcpy(std::basic_string< T_to, _Traits_to, _Alloc_to > &dst, _In_reads_or_z_opt_(count_src) const T_from *src, size_t count_src)
Convert string.
Definition unicode.hpp:341
+
std::basic_string< T_to, _Traits_to, _Alloc_to > convert(_In_reads_or_z_opt_(count_src) const T_from *src, size_t count_src)
Return converted string.
Definition unicode.hpp:384
diff --git a/unionstdex_1_1md2__t-members.html b/unionstdex_1_1md2__t-members.html index 1de071597..5267d2c27 100644 --- a/unionstdex_1_1md2__t-members.html +++ b/unionstdex_1_1md2__t-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/unionstdex_1_1md2__t.html b/unionstdex_1_1md2__t.html index a6d18d6c5..7c054d791 100644 --- a/unionstdex_1_1md2__t.html +++ b/unionstdex_1_1md2__t.html @@ -123,7 +123,7 @@ Friends
diff --git a/unionstdex_1_1sha256__t-members.html b/unionstdex_1_1sha256__t-members.html index 4c38d4db4..d4f1f9306 100644 --- a/unionstdex_1_1sha256__t-members.html +++ b/unionstdex_1_1sha256__t-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/unionstdex_1_1sha256__t.html b/unionstdex_1_1sha256__t.html index bd81cfeb3..2abe95465 100644 --- a/unionstdex_1_1sha256__t.html +++ b/unionstdex_1_1sha256__t.html @@ -123,7 +123,7 @@ Friends
diff --git a/unionstdex_1_1sha__t-members.html b/unionstdex_1_1sha__t-members.html index 813a1a3b8..67b8f696a 100644 --- a/unionstdex_1_1sha__t-members.html +++ b/unionstdex_1_1sha__t-members.html @@ -89,7 +89,7 @@ $(function() {
diff --git a/unionstdex_1_1sha__t.html b/unionstdex_1_1sha__t.html index 429bf6e54..eee753d15 100644 --- a/unionstdex_1_1sha__t.html +++ b/unionstdex_1_1sha__t.html @@ -123,7 +123,7 @@ Friends
diff --git a/uuid_8hpp_source.html b/uuid_8hpp_source.html index d6a649ce1..ee6913960 100644 --- a/uuid_8hpp_source.html +++ b/uuid_8hpp_source.html @@ -145,7 +145,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/vector__queue_8hpp_source.html b/vector__queue_8hpp_source.html index b0c2b5101..24b640192 100644 --- a/vector__queue_8hpp_source.html +++ b/vector__queue_8hpp_source.html @@ -453,7 +453,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/watchdog_8cpp_source.html b/watchdog_8cpp_source.html index 6ebc4635e..870a32994 100644 --- a/watchdog_8cpp_source.html +++ b/watchdog_8cpp_source.html @@ -118,7 +118,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/watchdog_8hpp_source.html b/watchdog_8hpp_source.html index 9674a5827..fd5d1b50a 100644 --- a/watchdog_8hpp_source.html +++ b/watchdog_8hpp_source.html @@ -176,7 +176,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/windows_8h_source.html b/windows_8h_source.html index 03e6e843f..bb157b0cf 100644 --- a/windows_8h_source.html +++ b/windows_8h_source.html @@ -109,7 +109,7 @@ $(document).ready(function() { init_codefold(0); });