From 043e5edd5f946a284b19614c4639fe18ab21d27f Mon Sep 17 00:00:00 2001 From: rozmansi Date: Fri, 1 Dec 2023 14:52:27 +0000 Subject: [PATCH] deploy: 976662415b606cdab9f9fc138fe1f44093bfb6d4 --- _unit_tests_2compat_8hpp_source.html | 2 +- annotated.html | 2 +- base64_8hpp_source.html | 2 +- chrono_8hpp_source.html | 2 +- classes.html | 2 +- classstdex_1_1base64__dec-members.html | 2 +- classstdex_1_1base64__dec.html | 2 +- classstdex_1_1base64__enc-members.html | 2 +- classstdex_1_1base64__enc.html | 2 +- classstdex_1_1base64__reader-members.html | 2 +- classstdex_1_1base64__reader.html | 2 +- classstdex_1_1base64__writer-members.html | 2 +- classstdex_1_1base64__writer.html | 2 +- classstdex_1_1basic__hash-members.html | 2 +- classstdex_1_1basic__hash.html | 2 +- classstdex_1_1block__hash-members.html | 2 +- classstdex_1_1block__hash.html | 2 +- classstdex_1_1charset__encoder-members.html | 2 +- classstdex_1_1charset__encoder.html | 2 +- classstdex_1_1crc32__hash-members.html | 2 +- classstdex_1_1crc32__hash.html | 2 +- classstdex_1_1global__progress-members.html | 2 +- classstdex_1_1global__progress.html | 2 +- classstdex_1_1hex__dec-members.html | 2 +- classstdex_1_1hex__dec.html | 2 +- classstdex_1_1hex__enc-members.html | 2 +- classstdex_1_1hex__enc.html | 2 +- classstdex_1_1html_1_1comment-members.html | 2 +- classstdex_1_1html_1_1comment.html | 2 +- ...sstdex_1_1html_1_1declaration-members.html | 2 +- classstdex_1_1html_1_1declaration.html | 2 +- classstdex_1_1html_1_1document-members.html | 2 +- classstdex_1_1html_1_1document.html | 2 +- classstdex_1_1html_1_1element-members.html | 2 +- classstdex_1_1html_1_1element.html | 2 +- ...stdex_1_1html_1_1element__end-members.html | 2 +- classstdex_1_1html_1_1element__end.html | 2 +- ...dex_1_1html_1_1element__start-members.html | 2 +- classstdex_1_1html_1_1element__start.html | 2 +- ...sstdex_1_1html_1_1instruction-members.html | 2 +- classstdex_1_1html_1_1instruction.html | 2 +- classstdex_1_1html_1_1parser-members.html | 2 +- classstdex_1_1html_1_1parser.html | 2 +- classstdex_1_1html_1_1sequence-members.html | 2 +- classstdex_1_1html_1_1sequence.html | 2 +- ...ex_1_1html_1_1starting__token-members.html | 2 +- classstdex_1_1html_1_1starting__token.html | 2 +- ...sstdex_1_1html_1_1text__token-members.html | 2 +- classstdex_1_1html_1_1text__token.html | 2 +- classstdex_1_1html_1_1token-members.html | 2 +- classstdex_1_1html_1_1token.html | 2 +- classstdex_1_1html_1_1url__token-members.html | 2 +- classstdex_1_1html_1_1url__token.html | 2 +- classstdex_1_1idrec_1_1record-members.html | 2 +- classstdex_1_1idrec_1_1record.html | 2 +- classstdex_1_1lazy__progress-members.html | 2 +- classstdex_1_1lazy__progress.html | 2 +- classstdex_1_1md5__hash-members.html | 2 +- classstdex_1_1md5__hash.html | 2 +- ...dex_1_1parser_1_1basic__angle-members.html | 2 +- classstdex_1_1parser_1_1basic__angle.html | 2 +- ...x_1_1parser_1_1basic__any__cu-members.html | 2 +- classstdex_1_1parser_1_1basic__any__cu.html | 2 +- ...stdex_1_1parser_1_1basic__bol-members.html | 2 +- classstdex_1_1parser_1_1basic__bol.html | 2 +- ...ex_1_1parser_1_1basic__branch-members.html | 2 +- classstdex_1_1parser_1_1basic__branch.html | 2 +- ...r_1_1basic__chemical__formula-members.html | 2 +- ...1_1parser_1_1basic__chemical__formula.html | 2 +- ...1_1basic__creditor__reference-members.html | 2 +- ...1parser_1_1basic__creditor__reference.html | 2 +- ..._1_1parser_1_1basic__css__cdc-members.html | 2 +- classstdex_1_1parser_1_1basic__css__cdc.html | 2 +- ..._1_1parser_1_1basic__css__cdo-members.html | 2 +- classstdex_1_1parser_1_1basic__css__cdo.html | 2 +- ...parser_1_1basic__css__comment-members.html | 2 +- ...tdex_1_1parser_1_1basic__css__comment.html | 2 +- ...1parser_1_1basic__css__import-members.html | 2 +- ...stdex_1_1parser_1_1basic__css__import.html | 2 +- ...1parser_1_1basic__css__string-members.html | 2 +- ...stdex_1_1parser_1_1basic__css__string.html | 2 +- ..._1_1parser_1_1basic__css__uri-members.html | 2 +- classstdex_1_1parser_1_1basic__css__uri.html | 2 +- ...sstdex_1_1parser_1_1basic__cu-members.html | 2 +- classstdex_1_1parser_1_1basic__cu.html | 2 +- ...x_1_1parser_1_1basic__cu__set-members.html | 2 +- classstdex_1_1parser_1_1basic__cu__set.html | 2 +- ...tdex_1_1parser_1_1basic__date-members.html | 2 +- classstdex_1_1parser_1_1basic__date.html | 2 +- ...r_1_1basic__dns__domain__char-members.html | 2 +- ...1_1parser_1_1basic__dns__domain__char.html | 2 +- ...1_1parser_1_1basic__dns__name-members.html | 2 +- classstdex_1_1parser_1_1basic__dns__name.html | 2 +- ...rser_1_1basic__email__address-members.html | 2 +- ...ex_1_1parser_1_1basic__email__address.html | 2 +- ..._1_1parser_1_1basic__emoticon-members.html | 2 +- classstdex_1_1parser_1_1basic__emoticon.html | 2 +- ...stdex_1_1parser_1_1basic__eol-members.html | 2 +- classstdex_1_1parser_1_1basic__eol.html | 2 +- ..._1_1parser_1_1basic__fraction-members.html | 2 +- classstdex_1_1parser_1_1basic__fraction.html | 2 +- ...__declaration__condition__end-members.html | 2 +- ...ic__html__declaration__condition__end.html | 2 +- ...declaration__condition__start-members.html | 2 +- ...__html__declaration__condition__start.html | 2 +- ...1parser_1_1basic__html__ident-members.html | 2 +- ...stdex_1_1parser_1_1basic__html__ident.html | 2 +- ...1_1parser_1_1basic__html__tag-members.html | 2 +- classstdex_1_1parser_1_1basic__html__tag.html | 2 +- ...1parser_1_1basic__html__value-members.html | 2 +- ...stdex_1_1parser_1_1basic__html__value.html | 2 +- ...tdex_1_1parser_1_1basic__iban-members.html | 2 +- classstdex_1_1parser_1_1basic__iban.html | 2 +- ...x_1_1parser_1_1basic__integer-members.html | 2 +- classstdex_1_1parser_1_1basic__integer.html | 2 +- ...1_1parser_1_1basic__integer10-members.html | 2 +- classstdex_1_1parser_1_1basic__integer10.html | 2 +- ...1parser_1_1basic__integer10ts-members.html | 2 +- ...stdex_1_1parser_1_1basic__integer10ts.html | 2 +- ...1_1parser_1_1basic__integer16-members.html | 2 +- classstdex_1_1parser_1_1basic__integer16.html | 2 +- ...arser_1_1basic__ipv4__address-members.html | 2 +- ...dex_1_1parser_1_1basic__ipv4__address.html | 2 +- ...arser_1_1basic__ipv6__address-members.html | 2 +- ...dex_1_1parser_1_1basic__ipv6__address.html | 2 +- ...1basic__ipv6__scope__id__char-members.html | 2 +- ...arser_1_1basic__ipv6__scope__id__char.html | 2 +- ..._1parser_1_1basic__iterations-members.html | 2 +- ...sstdex_1_1parser_1_1basic__iterations.html | 2 +- ...parser_1_1basic__json__string-members.html | 2 +- ...tdex_1_1parser_1_1basic__json__string.html | 2 +- ..._1parser_1_1basic__mime__type-members.html | 2 +- ...sstdex_1_1parser_1_1basic__mime__type.html | 2 +- ...rser_1_1basic__mixed__numeral-members.html | 2 +- ...ex_1_1parser_1_1basic__mixed__numeral.html | 2 +- ...r_1_1basic__monetary__numeral-members.html | 2 +- ...1_1parser_1_1basic__monetary__numeral.html | 2 +- ...tdex_1_1parser_1_1basic__noop-members.html | 2 +- classstdex_1_1parser_1_1basic__noop.html | 2 +- ...ex_1_1parser_1_1basic__parser-members.html | 2 +- classstdex_1_1parser_1_1basic__parser.html | 2 +- ...1parser_1_1basic__permutation-members.html | 2 +- ...stdex_1_1parser_1_1basic__permutation.html | 2 +- ...arser_1_1basic__phone__number-members.html | 2 +- ...dex_1_1parser_1_1basic__phone__number.html | 2 +- ...1_1parser_1_1basic__punct__cu-members.html | 2 +- classstdex_1_1parser_1_1basic__punct__cu.html | 2 +- ...rser_1_1basic__roman__numeral-members.html | 2 +- ...ex_1_1parser_1_1basic__roman__numeral.html | 2 +- ...1_1basic__scientific__numeral-members.html | 2 +- ...1parser_1_1basic__scientific__numeral.html | 2 +- ...dex_1_1parser_1_1basic__score-members.html | 2 +- classstdex_1_1parser_1_1basic__score.html | 2 +- ..._1_1parser_1_1basic__sequence-members.html | 2 +- classstdex_1_1parser_1_1basic__sequence.html | 2 +- ...stdex_1_1parser_1_1basic__set-members.html | 2 +- classstdex_1_1parser_1_1basic__set.html | 2 +- ...arser_1_1basic__si__reference-members.html | 2 +- ...dex_1_1parser_1_1basic__si__reference.html | 2 +- ...sic__si__reference__delimiter-members.html | 2 +- ...er_1_1basic__si__reference__delimiter.html | 2 +- ...1_1basic__si__reference__part-members.html | 2 +- ...1parser_1_1basic__si__reference__part.html | 2 +- ...ser_1_1basic__signed__numeral-members.html | 2 +- ...x_1_1parser_1_1basic__signed__numeral.html | 2 +- ...1_1parser_1_1basic__space__cu-members.html | 2 +- classstdex_1_1parser_1_1basic__space__cu.html | 2 +- ..._1basic__space__or__punct__cu-members.html | 2 +- ...parser_1_1basic__space__or__punct__cu.html | 2 +- ...ex_1_1parser_1_1basic__string-members.html | 2 +- classstdex_1_1parser_1_1basic__string.html | 2 +- ...rser_1_1basic__string__branch-members.html | 2 +- ...ex_1_1parser_1_1basic__string__branch.html | 2 +- ...tdex_1_1parser_1_1basic__time-members.html | 2 +- classstdex_1_1parser_1_1basic__time.html | 2 +- ...stdex_1_1parser_1_1basic__url-members.html | 2 +- classstdex_1_1parser_1_1basic__url.html | 2 +- ...1_1basic__url__password__char-members.html | 2 +- ...1parser_1_1basic__url__password__char.html | 2 +- ...1_1parser_1_1basic__url__path-members.html | 2 +- classstdex_1_1parser_1_1basic__url__path.html | 2 +- ...ser_1_1basic__url__path__char-members.html | 2 +- ...x_1_1parser_1_1basic__url__path__char.html | 2 +- ...1_1basic__url__username__char-members.html | 2 +- ...1parser_1_1basic__url__username__char.html | 2 +- ...tdex_1_1parser_1_1http__agent-members.html | 2 +- classstdex_1_1parser_1_1http__agent.html | 2 +- ..._1_1parser_1_1http__any__type-members.html | 2 +- classstdex_1_1parser_1_1http__any__type.html | 2 +- ...x_1_1parser_1_1http__asterisk-members.html | 2 +- classstdex_1_1parser_1_1http__asterisk.html | 2 +- ...dex_1_1parser_1_1http__cookie-members.html | 2 +- classstdex_1_1parser_1_1http__cookie.html | 2 +- ...er_1_1http__cookie__parameter-members.html | 2 +- ..._1_1parser_1_1http__cookie__parameter.html | 2 +- ...dex_1_1parser_1_1http__header-members.html | 2 +- classstdex_1_1parser_1_1http__header.html | 2 +- ...x_1_1parser_1_1http__language-members.html | 2 +- classstdex_1_1parser_1_1http__language.html | 2 +- ..._1parser_1_1http__line__break-members.html | 2 +- ...sstdex_1_1parser_1_1http__line__break.html | 2 +- ...1parser_1_1http__media__range-members.html | 2 +- ...stdex_1_1parser_1_1http__media__range.html | 2 +- ..._1parser_1_1http__media__type-members.html | 2 +- ...sstdex_1_1parser_1_1http__media__type.html | 2 +- ..._1_1parser_1_1http__parameter-members.html | 2 +- classstdex_1_1parser_1_1http__parameter.html | 2 +- ...x_1_1parser_1_1http__protocol-members.html | 2 +- classstdex_1_1parser_1_1http__protocol.html | 2 +- ...arser_1_1http__quoted__string-members.html | 2 +- ...dex_1_1parser_1_1http__quoted__string.html | 2 +- ...ex_1_1parser_1_1http__request-members.html | 2 +- classstdex_1_1parser_1_1http__request.html | 2 +- ...tdex_1_1parser_1_1http__space-members.html | 2 +- classstdex_1_1parser_1_1http__space.html | 2 +- ...1_1parser_1_1http__text__char-members.html | 2 +- classstdex_1_1parser_1_1http__text__char.html | 2 +- ...tdex_1_1parser_1_1http__token-members.html | 2 +- classstdex_1_1parser_1_1http__token.html | 2 +- ...sstdex_1_1parser_1_1http__url-members.html | 2 +- classstdex_1_1parser_1_1http__url.html | 2 +- ...arser_1_1http__url__parameter-members.html | 2 +- ...dex_1_1parser_1_1http__url__parameter.html | 2 +- ..._1_1parser_1_1http__url__path-members.html | 2 +- classstdex_1_1parser_1_1http__url__path.html | 2 +- ...r_1_1http__url__path__segment-members.html | 2 +- ...1_1parser_1_1http__url__path__segment.html | 2 +- ..._1_1parser_1_1http__url__port-members.html | 2 +- classstdex_1_1parser_1_1http__url__port.html | 2 +- ..._1parser_1_1http__url__server-members.html | 2 +- ...sstdex_1_1parser_1_1http__url__server.html | 2 +- ...tdex_1_1parser_1_1http__value-members.html | 2 +- classstdex_1_1parser_1_1http__value.html | 2 +- ...er_1_1http__value__collection-members.html | 2 +- ..._1_1parser_1_1http__value__collection.html | 2 +- ...dex_1_1parser_1_1http__weight-members.html | 2 +- classstdex_1_1parser_1_1http__weight.html | 2 +- ...rser_1_1http__weighted__value-members.html | 2 +- ...ex_1_1parser_1_1http__weighted__value.html | 2 +- ...1parser_1_1parser__collection-members.html | 2 +- ...stdex_1_1parser_1_1parser__collection.html | 2 +- ...ex_1_1parser_1_1sgml__any__cp-members.html | 2 +- classstdex_1_1parser_1_1sgml__any__cp.html | 2 +- classstdex_1_1parser_1_1sgml__cp-members.html | 2 +- classstdex_1_1parser_1_1sgml__cp.html | 2 +- ...ex_1_1parser_1_1sgml__cp__set-members.html | 2 +- classstdex_1_1parser_1_1sgml__cp__set.html | 2 +- ...er_1_1sgml__dns__domain__char-members.html | 2 +- ..._1_1parser_1_1sgml__dns__domain__char.html | 2 +- ..._1sgml__ipv6__scope__id__char-members.html | 2 +- ...parser_1_1sgml__ipv6__scope__id__char.html | 2 +- ..._1_1parser_1_1sgml__punct__cp-members.html | 2 +- classstdex_1_1parser_1_1sgml__punct__cp.html | 2 +- ..._1_1parser_1_1sgml__space__cp-members.html | 2 +- classstdex_1_1parser_1_1sgml__space__cp.html | 2 +- ...1_1sgml__space__or__punct__cp-members.html | 2 +- ...1parser_1_1sgml__space__or__punct__cp.html | 2 +- ...dex_1_1parser_1_1sgml__string-members.html | 2 +- classstdex_1_1parser_1_1sgml__string.html | 2 +- ..._1_1sgml__url__password__char-members.html | 2 +- ..._1parser_1_1sgml__url__password__char.html | 2 +- ...rser_1_1sgml__url__path__char-members.html | 2 +- ...ex_1_1parser_1_1sgml__url__path__char.html | 2 +- ..._1_1sgml__url__username__char-members.html | 2 +- ..._1parser_1_1sgml__url__username__char.html | 2 +- classstdex_1_1pool-members.html | 2 +- classstdex_1_1pool.html | 2 +- classstdex_1_1progress-members.html | 2 +- classstdex_1_1progress.html | 2 +- classstdex_1_1progress__switcher-members.html | 2 +- classstdex_1_1progress__switcher.html | 2 +- classstdex_1_1ring-members.html | 2 +- classstdex_1_1ring.html | 2 +- classstdex_1_1sha1__hash-members.html | 2 +- classstdex_1_1sha1__hash.html | 2 +- classstdex_1_1spinlock-members.html | 2 +- classstdex_1_1spinlock.html | 2 +- ...ex_1_1stream_1_1async__reader-members.html | 2 +- classstdex_1_1stream_1_1async__reader.html | 2 +- ...ex_1_1stream_1_1async__writer-members.html | 2 +- classstdex_1_1stream_1_1async__writer.html | 2 +- classstdex_1_1stream_1_1basic-members.html | 2 +- classstdex_1_1stream_1_1basic.html | 2 +- ...tdex_1_1stream_1_1basic__file-members.html | 4 +- classstdex_1_1stream_1_1basic__file.html | 16 +- ...stdex_1_1stream_1_1basic__sys-members.html | 2 +- classstdex_1_1stream_1_1basic__sys.html | 4 +- classstdex_1_1stream_1_1buffer-members.html | 2 +- classstdex_1_1stream_1_1buffer.html | 2 +- ...ex_1_1stream_1_1buffered__sys-members.html | 2 +- classstdex_1_1stream_1_1buffered__sys.html | 2 +- classstdex_1_1stream_1_1cache-members.html | 4 +- classstdex_1_1stream_1_1cache.html | 16 +- ...dex_1_1stream_1_1cached__file-members.html | 4 +- classstdex_1_1stream_1_1cached__file.html | 8 +- ...sstdex_1_1stream_1_1converter-members.html | 2 +- classstdex_1_1stream_1_1converter.html | 2 +- ...stdex_1_1stream_1_1diag__file-members.html | 4 +- classstdex_1_1stream_1_1diag__file.html | 16 +- classstdex_1_1stream_1_1fifo-members.html | 2 +- classstdex_1_1stream_1_1fifo.html | 2 +- classstdex_1_1stream_1_1file-members.html | 4 +- classstdex_1_1stream_1_1file.html | 18 +- ...dex_1_1stream_1_1file__window-members.html | 4 +- classstdex_1_1stream_1_1file__window.html | 16 +- classstdex_1_1stream_1_1limiter-members.html | 2 +- classstdex_1_1stream_1_1limiter.html | 2 +- ...dex_1_1stream_1_1memory__file-members.html | 4 +- classstdex_1_1stream_1_1memory__file.html | 22 +- ...stdex_1_1stream_1_1replicator-members.html | 2 +- classstdex_1_1stream_1_1replicator.html | 2 +- ...tream_1_1replicator_1_1worker-members.html | 2 +- ...dex_1_1stream_1_1replicator_1_1worker.html | 2 +- classstdex_1_1stream_1_1socket-members.html | 2 +- classstdex_1_1stream_1_1socket.html | 2 +- classstdex_1_1stream_1_1window-members.html | 2 +- classstdex_1_1stream_1_1window.html | 2 +- classstdex_1_1stream__hasher-members.html | 2 +- classstdex_1_1stream__hasher.html | 2 +- classstdex_1_1sys__object-members.html | 2 +- classstdex_1_1sys__object.html | 4 +- classstdex_1_1user__cancelled-members.html | 2 +- classstdex_1_1user__cancelled.html | 2 +- classstdex_1_1vector__queue-members.html | 2 +- classstdex_1_1vector__queue.html | 2 +- classstdex_1_1watchdog-members.html | 2 +- classstdex_1_1watchdog.html | 2 +- dir_4be4f7b278e009bf0f1906cf31fb73bd.html | 2 +- dir_d44c64559bbebec7f509842c48db8b23.html | 2 +- dir_fca3c47b2ea228727bd6729832f89576.html | 2 +- endian_8hpp_source.html | 2 +- exception_8hpp_source.html | 2 +- files.html | 2 +- functions.html | 2 +- functions_b.html | 2 +- functions_c.html | 2 +- functions_d.html | 2 +- functions_e.html | 2 +- functions_f.html | 2 +- functions_func.html | 2 +- functions_func_b.html | 2 +- functions_func_c.html | 2 +- functions_func_d.html | 2 +- functions_func_e.html | 2 +- functions_func_f.html | 2 +- functions_func_g.html | 2 +- functions_func_h.html | 2 +- functions_func_i.html | 2 +- functions_func_l.html | 2 +- functions_func_m.html | 2 +- functions_func_n.html | 2 +- functions_func_o.html | 2 +- functions_func_p.html | 2 +- functions_func_q.html | 2 +- functions_func_r.html | 2 +- functions_func_s.html | 4 +- functions_func_t.html | 2 +- functions_func_u.html | 2 +- functions_func_v.html | 2 +- functions_func_w.html | 2 +- functions_func_~.html | 2 +- functions_g.html | 2 +- functions_h.html | 2 +- functions_i.html | 2 +- functions_l.html | 2 +- functions_m.html | 2 +- functions_n.html | 2 +- functions_o.html | 2 +- functions_p.html | 2 +- functions_q.html | 2 +- functions_r.html | 2 +- functions_rela.html | 2 +- functions_s.html | 4 +- functions_t.html | 2 +- functions_type.html | 2 +- functions_u.html | 2 +- functions_v.html | 2 +- functions_vars.html | 2 +- functions_w.html | 2 +- functions_~.html | 2 +- hash_8cpp_source.html | 2 +- hash_8hpp_source.html | 2 +- hex_8hpp_source.html | 2 +- hierarchy.html | 2 +- html_8hpp_source.html | 2 +- idrec_8hpp_source.html | 8 +- include_2stdex_2compat_8hpp_source.html | 2 +- index.html | 2 +- interval_8hpp_source.html | 2 +- locale_8hpp_source.html | 2 +- mapping_8hpp_source.html | 2 +- math_8cpp_source.html | 2 +- math_8hpp_source.html | 2 +- memory_8hpp_source.html | 2 +- parser_8cpp_source.html | 2 +- parser_8hpp_source.html | 2 +- pch_8hpp_source.html | 2 +- pool_8hpp_source.html | 2 +- progress_8hpp_source.html | 2 +- ring_8cpp_source.html | 2 +- ring_8hpp_source.html | 2 +- search/all_10.js | 2 +- search/functions_10.js | 2 +- sgml_8cpp_source.html | 2 +- sgml_8hpp_source.html | 2 +- sgml__unicode_8hpp_source.html | 2 +- socket_8hpp_source.html | 2 +- spinlock_8hpp_source.html | 2 +- stream_8cpp_source.html | 12 +- stream_8hpp_source.html | 4113 +++++++++-------- string_8hpp_source.html | 2 +- ...stdex_1_1chrono_1_1aosn__date-members.html | 2 +- structstdex_1_1chrono_1_1aosn__date.html | 2 +- ..._1_1chrono_1_1aosn__timestamp-members.html | 2 +- structstdex_1_1chrono_1_1aosn__timestamp.html | 2 +- ...stdex_1_1free__locale__delete-members.html | 2 +- structstdex_1_1free__locale__delete.html | 2 +- ...ex_1_1html_1_1element__traits-members.html | 2 +- structstdex_1_1html_1_1element__traits.html | 2 +- structstdex_1_1html_1_1entity-members.html | 2 +- structstdex_1_1html_1_1entity.html | 2 +- ...ex_1_1html_1_1inserted__token-members.html | 2 +- structstdex_1_1html_1_1inserted__token.html | 2 +- structstdex_1_1interval-members.html | 2 +- structstdex_1_1interval.html | 2 +- structstdex_1_1mapping-members.html | 2 +- structstdex_1_1mapping.html | 2 +- structstdex_1_1no__delete-members.html | 2 +- structstdex_1_1no__delete.html | 2 +- ..._1_1no__delete_3_01_t_0f_0e_4-members.html | 2 +- structstdex_1_1no__delete_3_01_t_0f_0e_4.html | 2 +- ..._1_1parser_1_1html__attribute-members.html | 2 +- structstdex_1_1parser_1_1html__attribute.html | 2 +- ...1parser_1_1http__factor__more-members.html | 2 +- ...stdex_1_1parser_1_1http__factor__more.html | 2 +- ...stream_1_1buffer_1_1buffer__t-members.html | 2 +- ...tdex_1_1stream_1_1buffer_1_1buffer__t.html | 2 +- ..._1_1stream_1_1fifo_1_1node__t-members.html | 2 +- structstdex_1_1stream_1_1fifo_1_1node__t.html | 2 +- structstdex_1_1sys__info__t-members.html | 2 +- structstdex_1_1sys__info__t.html | 2 +- sys__info_8hpp_source.html | 2 +- system_8hpp_source.html | 2 +- unicode_8cpp_source.html | 2 +- unicode_8hpp_source.html | 2 +- unionstdex_1_1md2__t-members.html | 2 +- unionstdex_1_1md2__t.html | 2 +- unionstdex_1_1sha256__t-members.html | 2 +- unionstdex_1_1sha256__t.html | 2 +- unionstdex_1_1sha__t-members.html | 2 +- unionstdex_1_1sha__t.html | 2 +- uuid_8hpp_source.html | 2 +- vector__queue_8hpp_source.html | 2 +- watchdog_8cpp_source.html | 2 +- watchdog_8hpp_source.html | 2 +- windows_8h_source.html | 2 +- 456 files changed, 2580 insertions(+), 2579 deletions(-) diff --git a/_unit_tests_2compat_8hpp_source.html b/_unit_tests_2compat_8hpp_source.html index 230f4ab9a..e596e4dc4 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 0d3f39c09..3f739677e 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 679ef6995..7767b4169 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 13079b175..f71103578 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 1bc2b0187..1cf2bba13 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 d79d1a61b..f76357e86 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 7a6baa038..ed3612b0a 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 90a509311..f11469d1a 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 251094f69..151ae76d9 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 198e51407..8ef4f9f0a 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 39c0028ea..ab198e859 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 6ce119a03..a54b1e33b 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 bd8cd70f5..11b892e51 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 eaae30177..4e68dc622 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 6228d790f..d27762afc 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 5f2a505d3..2126b9ee4 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 ff4e0ff5b..dcf6b03b5 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 4e4cda7b6..a57b31cf4 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 b645699e8..0023919d8 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 ac1f04c5c..e05c902d3 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 227de7a18..35a944f2d 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 70d672ef9..fc0915fae 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 66947ce20..6e1ec674b 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 9279623ac..b68b2a752 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 d14c15180..94c50d354 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 2c0f01cb8..273dcb8d9 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 a388477af..fb40ecc1e 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 2cee8b103..d6f95c6fd 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 36e9453a1..7669722f9 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 f677ded63..e87056993 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 f9ac2cb9a..eaf400dbb 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 04b25a757..fc3bcf763 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 fe631a0d2..5316d103a 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 b3500ef4d..8a3c18e2c 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 01442dc1c..13e04d7e9 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 9d5fbdff0..83b8b0457 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 3a8533818..ccb60f8ea 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 dd09f4216..31f9a8a9e 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 fc997e213..245dc63bc 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 94c499b2d..b8e6ed620 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 fe94f4cf2..f915fce57 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 dd1091edf..d8619e2b5 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 3e6cfe869..bf6b4d8d3 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 1130f7141..bc8e1b4aa 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 cfd1c3035..ad1b5cded 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 6189600f9..1ad318b8c 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 820b30403..42da65ddc 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 ef91007a0..816838170 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 6904d5635..c7a92372d 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 a28f1c4e5..75788012b 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 07aa78cd6..fccd4fdd8 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 bb37e3ad1..f0cfdca9b 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 92eadef62..5e1a51026 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 8abd3b9ee..820467609 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 e7d7e64ae..3dc3b9186 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 ac058d29b..ab05ea2a5 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 7c50aef9d..93554b818 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 8b56ff70f..640161fe5 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 25a678064..45ebde82a 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 dc4ba4bc4..d84de0824 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 7c67e6b37..47727d4e1 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 6482a3c1e..56802854c 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 db8e8a77e..e96df7514 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 24f55b15b..d02d8458d 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 88b070468..da1e05e2e 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 d1fa23e12..c827a304b 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 eed942c35..f3082727d 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 6179019df..4a413bc13 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 e7593db70..48719e2a7 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 e76e3f219..91ff11820 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 dd11c0dc4..1147c9e25 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 ce9e64e20..64dc0c403 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 56b169341..c03f74229 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 9c9a48b53..6ed56b25f 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 0467817d8..b0cc4937e 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 688eb3b6d..55be18ccc 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 3e21cc6dd..8308cdda7 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 133261e79..9fc94e7db 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 e7f3d7bf3..78d9edb4a 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 78f03c4ac..c00e927f2 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 e930215fd..a4c5d39b2 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 3488f216c..2fe5e21d7 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 c8f9ca794..0760db7e0 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 2cd17600a..ceb1173fe 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 5a8df2f5d..f6af7a347 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 21da01d79..29d6d0030 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 c1a26ecb2..48bebd6d9 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 be0ace3b6..c7212004f 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 0418436ee..e5820ae98 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 0f3106e14..c4af42b8f 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 a60dbbdde..9ccc83413 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 6598cdc2d..236f44a0e 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 570a92ed2..3a59c61fe 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 c50301b7a..ef8581ebe 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 36f6d852a..63fac1a99 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 7dfeae07a..1ea225386 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 8994f1eeb..c2725dfe7 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 c29eadbd8..7453d5430 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 2de693160..6ee6f76f6 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 d73a0a829..b52a1ac77 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 bf15c1ce5..269222731 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 f08763522..97201fe4d 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 b262d653b..10d920ad7 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 d60da7c40..72840dfa0 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 bc787092c..00d7cc062 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 42d147a1b..a838a640a 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 ccdcb2a34..fcd535759 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 a618f86e4..3f3e571fa 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 877ef26c6..f9979f9e2 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 29dab1974..cefbd9dd2 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 62c298f5f..dfe55d70e 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 ed3889daf..12b54c060 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 56fad915d..ece5b28a0 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 a7c1944ff..a04868e7d 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 9aa1afc3e..07b148daa 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 fa1d1ed8e..5c41b9efa 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 9d5264009..fac7f0066 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 3c7163630..1eb303d65 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 4b39275bb..8ef931ddb 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 1362f662d..c6b831514 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 5a2076733..f4819eec2 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 02b203a44..d316164c0 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 4b4a8ac93..6e40de077 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 fc380a6bf..5b88aaa31 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 4bdcd2715..39b7b83f7 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 9756955ca..edc99de36 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 5174954ba..954f80597 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 8355e8f5b..90049eee6 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 3e0e70915..2d990584c 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 2a58bc883..ef2a55276 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 05f66f38a..a2111b7c9 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 d1165f39f..ea6de4ad6 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 6250d7cbe..b0870daec 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 876f7fdcf..a2c4dbf50 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 b3fb30e2e..1bc00bc17 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 bc92531b9..eeca1ba14 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 c374b9fff..8241a9111 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 e4d1674da..0a78ec53a 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 530f9d702..be0d06299 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 74989d2d8..7e20418ac 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 355e43d9b..d27fc7827 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 0cc1bc599..ebbcd1045 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 84fb2db46..2ce22ce7b 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 26b0e79ee..ac04bf805 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 b6de51420..0e044d8a8 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 f695a5e09..af9eb4201 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 53b6cdb76..cb9067bad 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 be375d06a..8fe8a1415 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 63d2a4e03..57ab72004 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 1978688eb..b54899cec 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 90f9dca52..240ca045a 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 fd4fa5fa5..3480f98db 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 f39a5c089..325a0f25f 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 a8075b45f..7fce1ea10 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 2de5b1905..7b3de5ff3 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 4bd1d6cf1..f0751101d 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 a033a4630..9142ac958 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 8e83458a8..ab7e69ec8 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 fe190da4b..9bacffe36 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 3bc297cc4..e5b8fcbf4 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 67648bf18..6f79a8ce5 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 06234a6f0..81727f29f 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 07a05b475..18f6bb042 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 b977bedb1..a4233fe82 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 ba0bc79bd..707f1575f 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 9abe53cb6..bfc6173c9 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 9b11bed56..09a778014 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 3634e31a2..25291088d 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 4a1210e14..71eb62439 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 685875fab..0f4eb309d 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 bd15fdca6..30fc06951 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 41fd77652..b4c9c4847 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 469bcc229..28b1a6e4e 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 f5a1938ef..a97085213 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 a8d787262..dcd00c5f3 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 8f48ca706..fe28c8a89 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 6caaf3376..d27de6fb5 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 036b3b837..71bccb222 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 8fdffda68..4b333360a 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 fd39b32e2..157670044 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 ada48e9ef..fe5432796 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 8b87312a0..06ccb157d 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 dc3f7d390..ee52c9a88 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 0c53e7a6d..4f6ebe73f 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 69007e97e..4f4cc6817 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 67f80b578..e190ab101 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 5477d9183..165c46302 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 cf9c98cd1..17cb2c7b8 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 d0c5c7c10..9450cab06 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 051580563..589faec2a 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 37d6417cb..2e965ab66 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 5f4e6ad5e..0e0c64324 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 2ec901ff7..5d2896665 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 14d4b6972..4c15822f3 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 523d081a3..60223ac85 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 20d52396b..d83e2199e 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 f866bfa93..eab86a15f 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 990eeed08..654d5ce8d 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 99c8e49a1..6a53c0239 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 e2ccc238c..1c28827f9 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 98711c1e3..826b492a8 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 afb43cbb7..e05b28c97 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 366d9433a..35ae09001 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 4ddf2df54..671126baa 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 f399f2969..75c414d86 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 adb55ccd6..d1cfb4fd2 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 1fe20b890..21c64101b 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 360b499df..2243a7e0a 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 be7e3fe53..ac7fb1b36 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 7732a5660..d628c0d23 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 fb7c52a20..1d1cee306 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 b34aeabb0..ac1ec9462 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 afe614277..30fe5e2e5 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 3134f5180..541f9229d 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 f4860284d..4920262bc 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 43af55220..a021a9d9c 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 88b84deb4..0a7e53e5c 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 464e0e006..7021f6f92 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 baac309bf..53adfb7e8 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 fd7fc107a..150e56f62 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 71d2afb33..815bddbc3 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 bf6649991..e2930e352 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 1df8d3a22..e8deffa3a 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 8148c59a0..a6aed6fcd 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 b544e0cde..305771b69 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 ad4b370bb..d0e108f80 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 810714308..e80bc6314 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 af94ffc5d..b87510bd7 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 ec6af466b..615956212 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 a13665aef..4378a19b9 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 bde85d75d..9eda38fc6 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 c5deadb5e..c7dc8a276 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 e40346513..6381a22ef 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 12af3c448..2904c009c 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 18bf8d55f..ca9891d84 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 1cc461d01..591584791 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 33d437c14..b8cf98ba7 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 14aef6011..ec2f9f1d9 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 a669beca4..d7cec60c2 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 808a42d66..ac2b43a13 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 2df823b8d..ef352821a 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 a8d744378..566060354 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 78ed00a3a..40c18d725 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 af7f08417..619ae0e96 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 20d1bb021..b7d593efd 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 dfdef06c8..f2b23e561 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 4ff6175a0..19628c5ea 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 e8dfb2a39..2e7ff0512 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 eb2e7ab86..51226e750 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 d2d595cd0..9a67579b1 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 a7148868c..345baeeaf 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 38071830b..5961e9bbe 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 d00075c4b..d85ebb130 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 065034591..5fe4ca785 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 9ac611059..797d49178 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 d5b4d0c8e..ee1fdbe2e 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 4b1caba07..c9d1a584a 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 2fc44b262..f347c2a0f 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 0260646a8..f1c88d249 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 ec827fa4b..13a414dd6 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 b0f75ad50..aac40cc14 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 756dfe595..6b3aed6af 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 78d46855d..b6cda9995 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 6aaa4bf55..ae40460d1 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 9db0cb163..a2c7d5101 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 3ce16f983..8e7c74a57 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 ae85cb5b8..5bcd0417f 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 20850ad91..2e1442b0e 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 c3d49dbdb..4725ae90b 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 1469c5fff..eed6edd87 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 3303c5496..02c19856b 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 ac46fc518..410ee8f3d 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 bd664d88b..a217ac29b 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 077743b02..02eebb15b 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 1545ca6fa..9031e9171 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 039ad6c5e..3aea9d334 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 0ae8be3e7..c9894f4d1 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 1eb922107..e928f76e2 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 4123517d0..0d0000a1b 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 d0adb7fbe..d76aeb562 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 dc50059de..73912af6b 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 6299426db..b4efde119 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 702ab7dbf..c49f5e34d 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 188dcb807..6b35fb4ea 100644 --- a/classstdex_1_1stream_1_1basic__file-members.html +++ b/classstdex_1_1stream_1_1basic__file-members.html @@ -139,7 +139,7 @@ $(function() { set_atime(time_point date)stdex::stream::basic_fileinlinevirtual set_ctime(time_point date)stdex::stream::basic_fileinlinevirtual set_mtime(time_point date)stdex::stream::basic_fileinlinevirtual - size()=0stdex::stream::basic_filepure virtual + size() const =0stdex::stream::basic_filepure virtual skip(fsize_t amount)stdex::stream::basic_fileinlinevirtual state() conststdex::stream::basicinline tell() const =0stdex::stream::basic_filepure virtual @@ -164,7 +164,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1basic__file.html b/classstdex_1_1stream_1_1basic__file.html index 5ccf13689..a91f985ee 100644 --- a/classstdex_1_1stream_1_1basic__file.html +++ b/classstdex_1_1stream_1_1basic__file.html @@ -130,9 +130,9 @@ Public Member Functions virtual void unlock (fpos_t offset, fsize_t length)  Unlocks file section for exclusive access.
  -virtual fsize_t size ()=0 - Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
-  +virtual fsize_t size () const =0 + Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
+  virtual void truncate ()=0  Sets file size - truncates the remainder of file content from the current file position to the end of file.
  @@ -795,8 +795,8 @@ state_t m_state - -

◆ size()

+ +

◆ size()

@@ -808,7 +808,7 @@ state_t m_statevirtual fsize_t stdex::stream::basic_file::size ( ) - + const @@ -820,7 +820,7 @@ state_t m_stateReturns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.

-

Implemented in stdex::stream::file_window, stdex::stream::cache, stdex::stream::file, stdex::stream::memory_file, and stdex::stream::diag_file.

+

Implemented in stdex::stream::file_window, stdex::stream::cache, stdex::stream::file, stdex::stream::memory_file, and stdex::stream::diag_file.

@@ -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 47daee882..d46bae511 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 42751c4d3..f98d6e4ca 100644 --- a/classstdex_1_1stream_1_1basic__sys.html +++ b/classstdex_1_1stream_1_1basic__sys.html @@ -337,7 +337,7 @@ template<class _Kty , class _Pr = std::less<_Kty>, class _Alloc = std    operator bool () const noexcept - Returns true if object is valid.
+ Returns true if object has a valid handle.
  sys_handle get () const noexcept @@ -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 cb78f06e6..e46c6ae59 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 10a158f76..269dec94d 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 2965de765..eeac8a595 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 e99133479..9baee6088 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 f72eb0392..58f44a318 100644 --- a/classstdex_1_1stream_1_1cache-members.html +++ b/classstdex_1_1stream_1_1cache-members.html @@ -140,7 +140,7 @@ $(function() { set_atime(time_point date)stdex::stream::cacheinlinevirtual set_ctime(time_point date)stdex::stream::cacheinlinevirtual set_mtime(time_point date)stdex::stream::cacheinlinevirtual - size()stdex::stream::cacheinlinevirtual + size() conststdex::stream::cacheinlinevirtual skip(fsize_t amount)stdex::stream::basic_fileinlinevirtual state() conststdex::stream::basicinline tell() conststdex::stream::cacheinlinevirtual @@ -166,7 +166,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1cache.html b/classstdex_1_1stream_1_1cache.html index 40079ec47..07a70cbb3 100644 --- a/classstdex_1_1stream_1_1cache.html +++ b/classstdex_1_1stream_1_1cache.html @@ -126,9 +126,9 @@ Public Member Functions virtual void unlock (fpos_t offset, fsize_t length)  Unlocks file section for exclusive access.
  -virtual fsize_t size () - Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
-  +virtual fsize_t size () const + Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
+  virtual void truncate ()  Sets file size - truncates the remainder of file content from the current file position to the end of file.
  @@ -743,8 +743,8 @@ state_t m_state - -

◆ size()

+ +

◆ size()

@@ -756,7 +756,7 @@ state_t m_statevirtual fsize_t stdex::stream::cache::size ( ) - + const @@ -768,7 +768,7 @@ state_t m_stateReturns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.

-

Implements stdex::stream::basic_file.

+

Implements stdex::stream::basic_file.

@@ -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 8199c75ac..7191612f4 100644 --- a/classstdex_1_1stream_1_1cached__file-members.html +++ b/classstdex_1_1stream_1_1cached__file-members.html @@ -146,7 +146,7 @@ $(function() { set_atime(time_point date)stdex::stream::cacheinlinevirtual set_ctime(time_point date)stdex::stream::cacheinlinevirtual set_mtime(time_point date)stdex::stream::cacheinlinevirtual - size()stdex::stream::cacheinlinevirtual + size() conststdex::stream::cacheinlinevirtual skip(fsize_t amount)stdex::stream::basic_fileinlinevirtual state() conststdex::stream::basicinline tell() conststdex::stream::cacheinlinevirtual @@ -173,7 +173,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1cached__file.html b/classstdex_1_1stream_1_1cached__file.html index 85cfd4de5..7500c6825 100644 --- a/classstdex_1_1stream_1_1cached__file.html +++ b/classstdex_1_1stream_1_1cached__file.html @@ -143,9 +143,9 @@ Public Member Functions virtual void unlock (fpos_t offset, fsize_t length)  Unlocks file section for exclusive access.
  -virtual fsize_t size () - Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
-  +virtual fsize_t size () const + Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
+  virtual void truncate ()  Sets file size - truncates the remainder of file content from the current file position to the end of file.
  @@ -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 e10a09c57..59efbc670 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 3d57838e2..ecc6c0603 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 dd8e9d00e..4f69f598f 100644 --- a/classstdex_1_1stream_1_1diag__file-members.html +++ b/classstdex_1_1stream_1_1diag__file-members.html @@ -142,7 +142,7 @@ $(function() { set_atime(time_point date)stdex::stream::basic_fileinlinevirtual set_ctime(time_point date)stdex::stream::basic_fileinlinevirtual set_mtime(time_point date)stdex::stream::basic_fileinlinevirtual - size()stdex::stream::diag_fileinlinevirtual + size() conststdex::stream::diag_fileinlinevirtual skip(fsize_t amount)stdex::stream::basic_fileinlinevirtual state() conststdex::stream::basicinline tell() conststdex::stream::diag_fileinlinevirtual @@ -167,7 +167,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1diag__file.html b/classstdex_1_1stream_1_1diag__file.html index b2fa1ec5a..e2bd0ab52 100644 --- a/classstdex_1_1stream_1_1diag__file.html +++ b/classstdex_1_1stream_1_1diag__file.html @@ -126,9 +126,9 @@ Public Member Functions virtual void unlock (fpos_t offset, fsize_t length)  Unlocks file section for exclusive access.
  -virtual fsize_t size () - Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
-  +virtual fsize_t size () const + Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
+  virtual void truncate ()  Sets file size - truncates the remainder of file content from the current file position to the end of file.
  @@ -572,8 +572,8 @@ state_t m_state - -

◆ size()

+ +

◆ size()

@@ -585,7 +585,7 @@ state_t m_statevirtual fsize_t stdex::stream::diag_file::size ( ) - + const @@ -597,7 +597,7 @@ state_t m_stateReturns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.

-

Implements stdex::stream::basic_file.

+

Implements stdex::stream::basic_file.

@@ -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 e456ec017..e4de7b3fe 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 30b567736..0e270111a 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 09a7eee87..9f306be28 100644 --- a/classstdex_1_1stream_1_1file-members.html +++ b/classstdex_1_1stream_1_1file-members.html @@ -159,7 +159,7 @@ $(function() { set_atime(time_point date)stdex::stream::fileinlinevirtual set_ctime(time_point date)stdex::stream::fileinlinevirtual set_mtime(time_point date)stdex::stream::fileinlinevirtual - size()stdex::stream::fileinlinevirtual + size() conststdex::stream::fileinlinevirtual skip(fsize_t amount)stdex::stream::basic_fileinlinevirtual state() conststdex::stream::basicinline sys_object(sys_handle h=invalid_handle) (defined in stdex::sys_object)stdex::sys_objectinline @@ -189,7 +189,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1file.html b/classstdex_1_1stream_1_1file.html index 9ea672c97..2f6d68f5e 100644 --- a/classstdex_1_1stream_1_1file.html +++ b/classstdex_1_1stream_1_1file.html @@ -129,9 +129,9 @@ Public Member Functions virtual void unlock (fpos_t offset, fsize_t length)  Unlocks file section for exclusive access.
  -virtual fsize_t size () - Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
-  +virtual fsize_t size () const + Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
+  virtual void truncate ()  Sets file size - truncates the remainder of file content from the current file position to the end of file.
  @@ -405,7 +405,7 @@ template<class _Kty , class _Pr = std::less<_Kty>, class _Alloc = std    operator bool () const noexcept - Returns true if object is valid.
+ Returns true if object has a valid handle.
  sys_handle get () const noexcept @@ -1027,8 +1027,8 @@ sys_handle m_h - -

◆ size()

+ +

◆ size()

@@ -1040,7 +1040,7 @@ sys_handle m_hvirtual fsize_t stdex::stream::file::size ( ) - + const @@ -1052,7 +1052,7 @@ sys_handle m_hReturns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.

-

Implements stdex::stream::basic_file.

+

Implements stdex::stream::basic_file.

@@ -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 0f2be7dac..3ed780728 100644 --- a/classstdex_1_1stream_1_1file__window-members.html +++ b/classstdex_1_1stream_1_1file__window-members.html @@ -143,7 +143,7 @@ $(function() { set_atime(time_point date)stdex::stream::basic_fileinlinevirtual set_ctime(time_point date)stdex::stream::basic_fileinlinevirtual set_mtime(time_point date)stdex::stream::basic_fileinlinevirtual - size()stdex::stream::file_windowinlinevirtual + size() conststdex::stream::file_windowinlinevirtual skip(fsize_t amount)stdex::stream::file_windowinlinevirtual state() conststdex::stream::basicinline tell() conststdex::stream::file_windowinlinevirtual @@ -168,7 +168,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1file__window.html b/classstdex_1_1stream_1_1file__window.html index 03723d9c9..b232c6121 100644 --- a/classstdex_1_1stream_1_1file__window.html +++ b/classstdex_1_1stream_1_1file__window.html @@ -129,9 +129,9 @@ Public Member Functions virtual void unlock (fpos_t offset, fsize_t length)  Unlocks file section for exclusive access.
  -virtual fsize_t size () - Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
-  +virtual fsize_t size () const + Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
+  virtual void truncate ()  Sets file size - truncates the remainder of file content from the current file position to the end of file.
  @@ -575,8 +575,8 @@ state_t m_state - -

◆ size()

+ +

◆ size()

@@ -588,7 +588,7 @@ state_t m_statevirtual fsize_t stdex::stream::file_window::size ( ) - + const @@ -600,7 +600,7 @@ state_t m_stateReturns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.

-

Implements stdex::stream::basic_file.

+

Implements stdex::stream::basic_file.

@@ -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 966e5ab6f..66980ee95 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 d7a005043..5c06ef9e4 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 17c8ded3c..b700ca7e2 100644 --- a/classstdex_1_1stream_1_1memory__file-members.html +++ b/classstdex_1_1stream_1_1memory__file-members.html @@ -180,7 +180,7 @@ $(function() { set_atime(time_point date)stdex::stream::basic_fileinlinevirtual set_ctime(time_point date)stdex::stream::basic_fileinlinevirtual set_mtime(time_point date)stdex::stream::basic_fileinlinevirtual - size()stdex::stream::memory_fileinlinevirtual + size() conststdex::stream::memory_fileinlinevirtual skip(fsize_t amount)stdex::stream::basic_fileinlinevirtual state() conststdex::stream::basicinline tell() conststdex::stream::memory_fileinlinevirtual @@ -208,7 +208,7 @@ $(function() { diff --git a/classstdex_1_1stream_1_1memory__file.html b/classstdex_1_1stream_1_1memory__file.html index 69714b167..2eb729c00 100644 --- a/classstdex_1_1stream_1_1memory__file.html +++ b/classstdex_1_1stream_1_1memory__file.html @@ -103,13 +103,13 @@ Public Member Functions  memory_file (state_t state=state_t::ok)   - memory_file (size_t size, state_t state=state_t::ok) + memory_file (size_t size, state_t state=state_t::ok)  Creates an empty file of reserved size.
  - memory_file (void *data, size_t size, size_t reserved, bool manage=false, state_t state=state_t::ok) + memory_file (void *data, size_t size, size_t reserved, bool manage=false, state_t state=state_t::ok)  Creates a file based on available data.
  - memory_file (void *data, size_t size, bool manage=false, state_t state=state_t::ok) + memory_file (void *data, size_t size, bool manage=false, state_t state=state_t::ok)  Creates a file based on available data.
   memory_file (const schar_t *filename, int mode) @@ -179,9 +179,9 @@ void write_byte (uint8 virtual fpos_t tell () const  Returns absolute file position in file or fpos_max if fails. This method does not update stream state.
  -virtual fsize_t size () - Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
-  +virtual fsize_t size () const + Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.
+  virtual void truncate ()  Sets file size - truncates the remainder of file content from the current file position to the end of file.
  @@ -1392,8 +1392,8 @@ template<class T > - -

◆ size()

+ +

◆ size()

@@ -1405,7 +1405,7 @@ template<class T >
virtual fsize_t stdex::stream::memory_file::size ( ) - + const @@ -1417,7 +1417,7 @@ template<class T >

Returns file size Should the file size cannot be determined, the method returns fsize_max and it does not reset the state to failed.

-

Implements stdex::stream::basic_file.

+

Implements stdex::stream::basic_file.

@@ -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 d0f25bee0..924a933e0 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 42fe4c264..5dc76977c 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 d24e5c84b..1c09f45e8 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 b1d5a28fb..c84d9aa0f 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 a81ae6697..b8d52dee8 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 58f2f5fe0..79142d75a 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 b4b5d7355..a31bb1bdd 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 801ab3452..d4c335b2e 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 927b9253b..115758d3b 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 bc17a4066..a3d295c2d 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 9ce701b82..f8003758b 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 b639b2ef0..885f82146 100644 --- a/classstdex_1_1sys__object.html +++ b/classstdex_1_1sys__object.html @@ -120,7 +120,7 @@ Public Member Functions    operator bool () const noexcept - Returns true if object is valid.
+ Returns true if object has a valid handle.
  sys_handle get () const noexcept @@ -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 45590e4a2..845fc2a85 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 518294c7b..5265a9d60 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 ef0ac7064..66f7e5b05 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 a7277c31e..cc859eb62 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 49bd1bc6b..ef0f47dd0 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 6515ff762..056822e43 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 6f52e7d54..0ca909b51 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 f85c9ad4c..3e98cc1ea 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 9b47d460d..57e5dbc48 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 b769383bb..229422377 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 960ad245c..20b7d1bfe 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 a5a776f74..a26fc88b7 100644 --- a/files.html +++ b/files.html @@ -124,7 +124,7 @@ $(function() { diff --git a/functions.html b/functions.html index 19b24a0a5..caa4c2e22 100644 --- a/functions.html +++ b/functions.html @@ -94,7 +94,7 @@ $(function() { diff --git a/functions_b.html b/functions_b.html index 823a2e089..ca738ae24 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 d1a3132b3..1820a0cbe 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 5133ec7aa..0850f76cb 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 0cf3444d1..f983a1e62 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 b8fd9bf17..0ffd27d0f 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 e2c851bc3..d3d504a6f 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 57d6f75a5..b7523cca3 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 6ef02717b..faec8235b 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 8d4c1d659..c1f769827 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 5a742fc12..94bcc1bb7 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 e4bd48a5e..14fdd3180 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 01c804036..ca5d93ef7 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 d61b94d45..439d14b4f 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 553751b5f..d3597c9ee 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 77c004c6b..06341b6e9 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 904a2c290..12c002792 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 1ce1bdc89..d3627722e 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 c210a68c4..dc86c259d 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 751e89130..05fccd1c4 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 b035100a2..a108309d9 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 99eb23903..1cffa1b22 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 003f51d8d..fae9204f4 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -87,7 +87,7 @@ $(function() {
  • set_section_range() : stdex::global_progress< T >
  • set_text() : stdex::global_progress< T >, stdex::progress< T >
  • show() : stdex::global_progress< T >, stdex::progress< T >
  • -
  • size() : stdex::basic_hash< T >, stdex::interval< T >, stdex::stream::basic_file, stdex::stream::cache, stdex::stream::diag_file, stdex::stream::fifo, stdex::stream::file, stdex::stream::file_window, stdex::stream::memory_file, stdex::vector_queue< T >
  • +
  • size() : stdex::basic_hash< T >, stdex::interval< T >, stdex::stream::basic_file, stdex::stream::cache, stdex::stream::diag_file, stdex::stream::fifo, stdex::stream::file, stdex::stream::file_window, stdex::stream::memory_file, stdex::vector_queue< T >
  • skip() : stdex::stream::basic, stdex::stream::basic_file, stdex::stream::file_window
  • socket() : stdex::stream::socket
  • source() : stdex::html::document< _Elem, _Traits, _Alloc >
  • @@ -101,7 +101,7 @@ $(function() { diff --git a/functions_func_t.html b/functions_func_t.html index b3d8a039c..6b3ea8707 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 2cd8600de..8befd64e2 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 3077ad316..c7e3c7e07 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 582c52bf0..7774fc279 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 7c5f03cfc..1315d8fba 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 41d6d7fef..27e0dd184 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 c4a22b74c..4862f1006 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 80fadd525..97996593a 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 7dc36fe25..b76a82f73 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 0bd502138..4e02e42fa 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 68765662a..001b0de60 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 083468368..f398c9ed2 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 597f0086d..c1805a70d 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 3fc70e2b3..88a8bbccd 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 2fa9b0a7c..f657b0afb 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 d6d5af6b7..bbbe9496d 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 257dfdd84..c0639bd26 100644 --- a/functions_s.html +++ b/functions_s.html @@ -90,7 +90,7 @@ $(function() {
  • set_section_range() : stdex::global_progress< T >
  • set_text() : stdex::global_progress< T >, stdex::progress< T >
  • show() : stdex::global_progress< T >, stdex::progress< T >
  • -
  • size() : stdex::basic_hash< T >, stdex::interval< T >, stdex::stream::basic_file, stdex::stream::cache, stdex::stream::diag_file, stdex::stream::fifo, stdex::stream::file, stdex::stream::file_window, stdex::stream::memory_file, stdex::vector_queue< T >
  • +
  • size() : stdex::basic_hash< T >, stdex::interval< T >, stdex::stream::basic_file, stdex::stream::cache, stdex::stream::diag_file, stdex::stream::fifo, stdex::stream::file, stdex::stream::file_window, stdex::stream::memory_file, stdex::vector_queue< T >
  • size_type : stdex::vector_queue< T >
  • skip() : stdex::stream::basic, stdex::stream::basic_file, stdex::stream::file_window
  • socket() : stdex::stream::socket
  • @@ -109,7 +109,7 @@ $(function() { diff --git a/functions_t.html b/functions_t.html index 51f1524f7..79b914b16 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 d3cba3ecf..c8e52cbc9 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 9dd40e41c..73d91b9c3 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 46a252c90..b54a02e91 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 56f0fdd8b..ccbdda101 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 74e0aa818..fa613f02a 100644 --- a/functions_w.html +++ b/functions_w.html @@ -90,7 +90,7 @@ $(function() { diff --git a/functions_~.html b/functions_~.html index 72dd73213..0e91260e6 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 429fa754c..bc81e9c0b 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 a6b703495..6105a487d 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 f97563686..0b0823442 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 6b668fbfa..fa92ff43c 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 ad693e4ca..c375ad57c 100644 --- a/html_8hpp_source.html +++ b/html_8hpp_source.html @@ -2457,7 +2457,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/idrec_8hpp_source.html b/idrec_8hpp_source.html index 22914a84e..5b144ce90 100644 --- a/idrec_8hpp_source.html +++ b/idrec_8hpp_source.html @@ -465,13 +465,13 @@ $(document).ready(function() { init_codefold(0); });
    virtual void skip(fsize_t amount)
    Skips given amount of bytes of data on the stream.
    Definition stream.hpp:142
    Limits reading from/writing to stream to a predefined number of bytes.
    Definition stream.hpp:1551
    fsize_t read_limit
    Number of bytes left that may be read from the stream.
    Definition stream.hpp:1603
    -
    In-memory file.
    Definition stream.hpp:3172
    -
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:3733
    -
    const void * data() const
    Returns pointer to data.
    Definition stream.hpp:3382
    +
    In-memory file.
    Definition stream.hpp:3178
    +
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:3739
    +
    const void * data() const
    Returns pointer to data.
    Definition stream.hpp:3388
    diff --git a/include_2stdex_2compat_8hpp_source.html b/include_2stdex_2compat_8hpp_source.html index 91ac59f37..c35eda7c4 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 d75626a5c..e6cdebd64 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 c8fb01a63..9ca8b4676 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 9a96a5c70..b695d2e83 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 7c8899105..68cbbe267 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 f39016f12..5b495bf56 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 5027089c0..0ef313667 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 7254cee99..3fef8bb98 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 fe3176136..8ed09b560 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 75dd1fb40..0c2c104a8 100644 --- a/parser_8hpp_source.html +++ b/parser_8hpp_source.html @@ -8635,7 +8635,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/pch_8hpp_source.html b/pch_8hpp_source.html index 99a6e337d..d1413f10d 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 2cb0c9557..0af452961 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 60ca1901a..25ac95ec5 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 aba5df695..6eefcbb7d 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 c2d4c5976..f81bab84a 100644 --- a/ring_8hpp_source.html +++ b/ring_8hpp_source.html @@ -223,7 +223,7 @@ $(document).ready(function() { init_codefold(0); }); diff --git a/search/all_10.js b/search/all_10.js index a58a75b94..d86e71a84 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -32,7 +32,7 @@ var searchData= ['sha256_5ft_29',['sha256_t',['../unionstdex_1_1sha256__t.html',1,'stdex']]], ['sha_5ft_30',['sha_t',['../unionstdex_1_1sha__t.html',1,'stdex']]], ['show_31',['show',['../classstdex_1_1progress.html#ab6e57aed9e7a18a501e8a63cef199d8e',1,'stdex::progress::show()'],['../classstdex_1_1global__progress.html#a32350e02d5904867402187e81a3c4a26',1,'stdex::global_progress::show()']]], - ['size_32',['size',['../structstdex_1_1interval.html#a8c5222bc73fc66ba78bfabc1b985c864',1,'stdex::interval::size()'],['../classstdex_1_1stream_1_1fifo.html#a3272bc89573fe75fe0e6de2600967c10',1,'stdex::stream::fifo::size()'],['../classstdex_1_1stream_1_1basic__file.html#ad868d7c25aa45cefc95dd54a24febf2f',1,'stdex::stream::basic_file::size()'],['../classstdex_1_1stream_1_1file__window.html#a70d596dd863a5265303aab11db59768e',1,'stdex::stream::file_window::size()'],['../classstdex_1_1stream_1_1cache.html#a769034b8641a17210a916091b112af2d',1,'stdex::stream::cache::size()'],['../classstdex_1_1stream_1_1file.html#acc591c2378e51340b7af7fbf12d1a98f',1,'stdex::stream::file::size()'],['../classstdex_1_1stream_1_1memory__file.html#a99b32855f1f85ccc7c08d71786c17a1c',1,'stdex::stream::memory_file::size()'],['../classstdex_1_1basic__hash.html#a9b8b5f91873e5d2cfe93533832318b5a',1,'stdex::basic_hash::size()'],['../classstdex_1_1stream_1_1diag__file.html#a0797e4eba9f702022e1c467694302871',1,'stdex::stream::diag_file::size()'],['../classstdex_1_1vector__queue.html#ad704df8c3664a6d3f3e0977d87162114',1,'stdex::vector_queue::size() const']]], + ['size_32',['size',['../structstdex_1_1interval.html#a8c5222bc73fc66ba78bfabc1b985c864',1,'stdex::interval::size()'],['../classstdex_1_1stream_1_1fifo.html#a3272bc89573fe75fe0e6de2600967c10',1,'stdex::stream::fifo::size()'],['../classstdex_1_1stream_1_1basic__file.html#a5ce5b79bc42a41426debb10022ec0627',1,'stdex::stream::basic_file::size()'],['../classstdex_1_1stream_1_1file__window.html#af4a162cd43352b308f43be4520c72dbe',1,'stdex::stream::file_window::size()'],['../classstdex_1_1stream_1_1cache.html#ac984f9471425a3179f4b02694c83211a',1,'stdex::stream::cache::size()'],['../classstdex_1_1stream_1_1file.html#a020509db889ab8b1129e55a9c8ea1b09',1,'stdex::stream::file::size()'],['../classstdex_1_1stream_1_1memory__file.html#a0a163692d7d99a9942127ffc76775e1b',1,'stdex::stream::memory_file::size()'],['../classstdex_1_1basic__hash.html#a9b8b5f91873e5d2cfe93533832318b5a',1,'stdex::basic_hash::size()'],['../classstdex_1_1stream_1_1diag__file.html#a53bbe3f837eaedd0639f988288b7470f',1,'stdex::stream::diag_file::size()'],['../classstdex_1_1vector__queue.html#ad704df8c3664a6d3f3e0977d87162114',1,'stdex::vector_queue::size() const']]], ['size_5ftype_33',['size_type',['../classstdex_1_1vector__queue.html#a2a044b4eb0242a00568d08b4d8b6343a',1,'stdex::vector_queue']]], ['skip_34',['skip',['../classstdex_1_1stream_1_1basic.html#a52ce3bdf28a9a7fc5a881616c8db2da4',1,'stdex::stream::basic::skip()'],['../classstdex_1_1stream_1_1basic__file.html#a15a1e6a778adefea421f32d14c8178dd',1,'stdex::stream::basic_file::skip()'],['../classstdex_1_1stream_1_1file__window.html#a4202fcc2b9e69e40bf15aaa3b5f50dda',1,'stdex::stream::file_window::skip()']]], ['socket_35',['socket',['../classstdex_1_1stream_1_1socket.html',1,'stdex::stream::socket'],['../classstdex_1_1stream_1_1socket.html#aae9f08b885315a555d46faee399196c9',1,'stdex::stream::socket::socket()']]], diff --git a/search/functions_10.js b/search/functions_10.js index 312b1c70b..fdccfe6a1 100644 --- a/search/functions_10.js +++ b/search/functions_10.js @@ -14,7 +14,7 @@ var searchData= ['set_5fsection_5frange_11',['set_section_range',['../classstdex_1_1global__progress.html#a242009bce7ac595975bbfd703ec58c3b',1,'stdex::global_progress']]], ['set_5ftext_12',['set_text',['../classstdex_1_1progress.html#a2cab8b5ac137d16fced31ee205264b01',1,'stdex::progress::set_text()'],['../classstdex_1_1global__progress.html#a89b7116003ab3b6344d90f130c14933e',1,'stdex::global_progress::set_text()']]], ['show_13',['show',['../classstdex_1_1progress.html#ab6e57aed9e7a18a501e8a63cef199d8e',1,'stdex::progress::show()'],['../classstdex_1_1global__progress.html#a32350e02d5904867402187e81a3c4a26',1,'stdex::global_progress::show()']]], - ['size_14',['size',['../classstdex_1_1basic__hash.html#a9b8b5f91873e5d2cfe93533832318b5a',1,'stdex::basic_hash::size()'],['../structstdex_1_1interval.html#a8c5222bc73fc66ba78bfabc1b985c864',1,'stdex::interval::size()'],['../classstdex_1_1stream_1_1basic__file.html#ad868d7c25aa45cefc95dd54a24febf2f',1,'stdex::stream::basic_file::size()'],['../classstdex_1_1stream_1_1file__window.html#a70d596dd863a5265303aab11db59768e',1,'stdex::stream::file_window::size()'],['../classstdex_1_1stream_1_1cache.html#a769034b8641a17210a916091b112af2d',1,'stdex::stream::cache::size()'],['../classstdex_1_1stream_1_1file.html#acc591c2378e51340b7af7fbf12d1a98f',1,'stdex::stream::file::size()'],['../classstdex_1_1stream_1_1memory__file.html#a99b32855f1f85ccc7c08d71786c17a1c',1,'stdex::stream::memory_file::size()'],['../classstdex_1_1stream_1_1fifo.html#a3272bc89573fe75fe0e6de2600967c10',1,'stdex::stream::fifo::size()'],['../classstdex_1_1stream_1_1diag__file.html#a0797e4eba9f702022e1c467694302871',1,'stdex::stream::diag_file::size()'],['../classstdex_1_1vector__queue.html#ad704df8c3664a6d3f3e0977d87162114',1,'stdex::vector_queue::size()']]], + ['size_14',['size',['../classstdex_1_1basic__hash.html#a9b8b5f91873e5d2cfe93533832318b5a',1,'stdex::basic_hash::size()'],['../structstdex_1_1interval.html#a8c5222bc73fc66ba78bfabc1b985c864',1,'stdex::interval::size()'],['../classstdex_1_1stream_1_1basic__file.html#a5ce5b79bc42a41426debb10022ec0627',1,'stdex::stream::basic_file::size()'],['../classstdex_1_1stream_1_1file__window.html#af4a162cd43352b308f43be4520c72dbe',1,'stdex::stream::file_window::size()'],['../classstdex_1_1stream_1_1cache.html#ac984f9471425a3179f4b02694c83211a',1,'stdex::stream::cache::size()'],['../classstdex_1_1stream_1_1file.html#a020509db889ab8b1129e55a9c8ea1b09',1,'stdex::stream::file::size()'],['../classstdex_1_1stream_1_1memory__file.html#a0a163692d7d99a9942127ffc76775e1b',1,'stdex::stream::memory_file::size()'],['../classstdex_1_1stream_1_1fifo.html#a3272bc89573fe75fe0e6de2600967c10',1,'stdex::stream::fifo::size()'],['../classstdex_1_1stream_1_1diag__file.html#a53bbe3f837eaedd0639f988288b7470f',1,'stdex::stream::diag_file::size()'],['../classstdex_1_1vector__queue.html#ad704df8c3664a6d3f3e0977d87162114',1,'stdex::vector_queue::size()']]], ['skip_15',['skip',['../classstdex_1_1stream_1_1basic__file.html#a15a1e6a778adefea421f32d14c8178dd',1,'stdex::stream::basic_file::skip()'],['../classstdex_1_1stream_1_1file__window.html#a4202fcc2b9e69e40bf15aaa3b5f50dda',1,'stdex::stream::file_window::skip()'],['../classstdex_1_1stream_1_1basic.html#a52ce3bdf28a9a7fc5a881616c8db2da4',1,'stdex::stream::basic::skip()']]], ['socket_16',['socket',['../classstdex_1_1stream_1_1socket.html#aae9f08b885315a555d46faee399196c9',1,'stdex::stream::socket']]], ['source_17',['source',['../classstdex_1_1html_1_1document.html#adf28cd75b7cfcf892a77bc25d921f673',1,'stdex::html::document']]], diff --git a/sgml_8cpp_source.html b/sgml_8cpp_source.html index aa75bac64..b1dfcf87d 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 3ff76cf61..85d033844 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 36107cc86..bf18e8341 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 24bfe8000..1195ca42c 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 be83d46ce..66872004a 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 1510b66f1..d364ac704 100644 --- a/stream_8cpp_source.html +++ b/stream_8cpp_source.html @@ -247,17 +247,17 @@ $(document).ready(function() { init_codefold(0); });
    Provides write-back stream capability.
    Definition stream.hpp:1323
    bool ok() const
    Returns true if the stream state is clean i.e. previous operation was succesful.
    Definition stream.hpp:175
    Buffered read/write stream.
    Definition stream.hpp:1394
    -
    Cached file-system file.
    Definition stream.hpp:3095
    -
    File-system file.
    Definition stream.hpp:2691
    -
    static bool readonly(const stdex::schar_t *filename)
    Checks if file/folder/symlink is read-only.
    Definition stream.hpp:3066
    -
    static bool exists(const stdex::schar_t *filename)
    Checks if file/folder/symlink likely exists.
    Definition stream.hpp:3039
    -
    In-memory file.
    Definition stream.hpp:3172
    +
    Cached file-system file.
    Definition stream.hpp:3101
    +
    File-system file.
    Definition stream.hpp:2697
    +
    static bool readonly(const stdex::schar_t *filename)
    Checks if file/folder/symlink is read-only.
    Definition stream.hpp:3072
    +
    static bool exists(const stdex::schar_t *filename)
    Checks if file/folder/symlink likely exists.
    Definition stream.hpp:3045
    +
    In-memory file.
    Definition stream.hpp:3178
    Replicates writing of the same data to multiple streams.
    Definition stream.hpp:1087
    void push_back(basic *source)
    Adds stream on the list.
    Definition stream.hpp:1106
    diff --git a/stream_8hpp_source.html b/stream_8hpp_source.html index 3868df60e..0ca0fc4a9 100644 --- a/stream_8hpp_source.html +++ b/stream_8hpp_source.html @@ -754,7 +754,7 @@ $(document).ready(function() { init_codefold(0); });
    826 virtual std::vector<uint8_t> read_remainder(_In_ size_t max_length = SIZE_MAX)
    827 {
    -
    828 size_t length = std::min<size_t>(max_length, static_cast<size_t>(size() - tell()));
    +
    828 size_t length = std::min<size_t>(max_length, static_cast<size_t>(size() - tell()));
    829 std::vector<uint8_t> result;
    830 try { result.resize(length); }
    831 catch (const std::bad_alloc&) {
    @@ -801,7 +801,7 @@ $(document).ready(function() { init_codefold(0); });
    898 }
    899
    -
    904 virtual fsize_t size() = 0;
    +
    904 virtual fsize_t size() const = 0;
    905
    909 virtual void truncate() = 0;
    910
    @@ -853,8 +853,8 @@ $(document).ready(function() { init_codefold(0); });
    962#ifdef _WIN32
    966 LPSAFEARRAY read_sa()
    967 {
    -
    968 _Assume_(size() <= SIZE_MAX);
    -
    969 size_t length = static_cast<size_t>(size());
    +
    968 _Assume_(size() <= SIZE_MAX);
    +
    969 size_t length = static_cast<size_t>(size());
    970 std::unique_ptr<SAFEARRAY, SafeArrayDestroy_delete> sa(SafeArrayCreateVector(VT_UI1, 0, (ULONG)length));
    971 if (!sa) _Unlikely_
    972 throw std::runtime_error("SafeArrayCreateVector failed");
    @@ -1701,8 +1701,8 @@ $(document).ready(function() { init_codefold(0); });
    1781
    -
    1782 virtual fsize_t size()
    -
    1783 {
    +
    1782 virtual fsize_t size() const
    +
    1783 {
    1784 return m_region.size();
    1785 }
    @@ -1942,2074 +1942,2075 @@ $(document).ready(function() { init_codefold(0); });
    2011 return m_offset = offset;
    2012 case seek_t::cur:
    2013 return m_offset += offset;
    -
    2014 case seek_t::end:
    -
    2015 return m_offset = size() + offset;
    -
    2016 default:
    -
    2017 throw std::invalid_argument("unknown seek origin");
    -
    2018 }
    -
    2019 }
    +
    2014 case seek_t::end: {
    +
    2015 auto n = size();
    +
    2016 if (n == fsize_max) _Unlikely_{
    +
    2017 m_state = state_t::fail;
    +
    2018 return fpos_max;
    +
    2019 }
    +
    2020 return m_offset = n + offset;
    +
    2021 }
    +
    2022 default:
    +
    2023 throw std::invalid_argument("unknown seek origin");
    +
    2024 }
    +
    2025 }
    -
    2020
    -
    -
    2021 virtual fpos_t tell() const
    -
    2022 {
    -
    2023 return m_offset;
    -
    2024 }
    -
    -
    2025
    -
    -
    2026 virtual void lock(_In_ fpos_t offset, _In_ fsize_t length)
    -
    2027 {
    -
    2028 m_source->lock(offset, length);
    -
    2029 m_state = m_source->state();
    +
    2026
    +
    +
    2027 virtual fpos_t tell() const
    +
    2028 {
    +
    2029 return m_offset;
    2030 }
    2031
    -
    2032 virtual void unlock(_In_ fpos_t offset, _In_ fsize_t length)
    +
    2032 virtual void lock(_In_ fpos_t offset, _In_ fsize_t length)
    2033 {
    -
    2034 m_source->unlock(offset, length);
    +
    2034 m_source->lock(offset, length);
    2035 m_state = m_source->state();
    2036 }
    2037
    -
    2038 virtual fsize_t size()
    +
    2038 virtual void unlock(_In_ fpos_t offset, _In_ fsize_t length)
    2039 {
    -
    2040 return m_cache.status != cache_t::cache_t::status_t::empty ?
    -
    2041 std::max(m_source->size(), m_cache.region.end) :
    -
    2042 m_source->size();
    -
    2043 }
    +
    2040 m_source->unlock(offset, length);
    +
    2041 m_state = m_source->state();
    +
    2042 }
    -
    2044
    -
    -
    2045 virtual void truncate()
    -
    2046 {
    -
    2047#if SET_FILE_OP_TIMES
    -
    2048 m_atime = m_mtime = time_point::now();
    -
    2049#endif
    -
    2050 m_source->seek(m_offset);
    -
    2051 if (m_cache.region.end <= m_offset) {
    -
    2052 // Truncation does not affect cache.
    -
    2053 }
    -
    2054 else if (m_cache.region.start <= m_offset) {
    -
    2055 // Truncation truncates cache.
    -
    2056 m_cache.region.end = m_offset;
    -
    2057 }
    -
    2058 else {
    -
    2059 // Truncation invalidates cache.
    -
    2060 m_cache.status = cache_t::cache_t::status_t::empty;
    -
    2061 }
    -
    2062 m_source->truncate();
    -
    2063 m_state = m_source->state();
    -
    2064 }
    +
    2043
    +
    +
    2044 virtual fsize_t size() const
    +
    2045 {
    +
    2046 return m_cache.status != cache_t::cache_t::status_t::empty ?
    +
    2047 std::max(m_source->size(), m_cache.region.end) :
    +
    2048 m_source->size();
    +
    2049 }
    -
    2065
    -
    -
    2066 virtual time_point ctime() const
    -
    2067 {
    -
    2068 return m_source->ctime();
    -
    2069 }
    +
    2050
    +
    +
    2051 virtual void truncate()
    +
    2052 {
    +
    2053#if SET_FILE_OP_TIMES
    +
    2054 m_atime = m_mtime = time_point::now();
    +
    2055#endif
    +
    2056 m_source->seek(m_offset);
    +
    2057 if (m_cache.region.end <= m_offset) {
    +
    2058 // Truncation does not affect cache.
    +
    2059 }
    +
    2060 else if (m_cache.region.start <= m_offset) {
    +
    2061 // Truncation truncates cache.
    +
    2062 m_cache.region.end = m_offset;
    +
    2063 }
    +
    2064 else {
    +
    2065 // Truncation invalidates cache.
    +
    2066 m_cache.status = cache_t::cache_t::status_t::empty;
    +
    2067 }
    +
    2068 m_source->truncate();
    +
    2069 m_state = m_source->state();
    +
    2070 }
    -
    2070
    -
    -
    2071 virtual time_point atime() const
    -
    2072 {
    -
    2073#if SET_FILE_OP_TIMES
    -
    2074 return std::max(m_atime, m_source->atime());
    -
    2075#else
    -
    2076 return m_source->atime();
    -
    2077#endif
    -
    2078 }
    +
    2071
    +
    +
    2072 virtual time_point ctime() const
    +
    2073 {
    +
    2074 return m_source->ctime();
    +
    2075 }
    -
    2079
    -
    -
    2080 virtual time_point mtime() const
    -
    2081 {
    -
    2082#if SET_FILE_OP_TIMES
    -
    2083 return std::max(m_mtime, m_source->mtime());
    -
    2084#else
    -
    2085 return m_source->mtime();
    -
    2086#endif
    -
    2087 }
    +
    2076
    +
    +
    2077 virtual time_point atime() const
    +
    2078 {
    +
    2079#if SET_FILE_OP_TIMES
    +
    2080 return std::max(m_atime, m_source->atime());
    +
    2081#else
    +
    2082 return m_source->atime();
    +
    2083#endif
    +
    2084 }
    -
    2088
    -
    -
    2089 virtual void set_ctime(time_point date)
    -
    2090 {
    -
    2091 m_source->set_ctime(date);
    -
    2092 }
    +
    2085
    +
    +
    2086 virtual time_point mtime() const
    +
    2087 {
    +
    2088#if SET_FILE_OP_TIMES
    +
    2089 return std::max(m_mtime, m_source->mtime());
    +
    2090#else
    +
    2091 return m_source->mtime();
    +
    2092#endif
    +
    2093 }
    -
    2093
    -
    -
    2094 virtual void set_atime(time_point date)
    -
    2095 {
    -
    2096#if SET_FILE_OP_TIMES
    -
    2097 m_atime = date;
    -
    2098#endif
    -
    2099 m_source->set_atime(date);
    -
    2100 }
    +
    2094
    +
    +
    2095 virtual void set_ctime(time_point date)
    +
    2096 {
    +
    2097 m_source->set_ctime(date);
    +
    2098 }
    -
    2101
    -
    -
    2102 virtual void set_mtime(time_point date)
    -
    2103 {
    -
    2104#if SET_FILE_OP_TIMES
    -
    2105 m_mtime = date;
    -
    2106#endif
    -
    2107 m_source->set_mtime(date);
    -
    2108 }
    +
    2099
    +
    +
    2100 virtual void set_atime(time_point date)
    +
    2101 {
    +
    2102#if SET_FILE_OP_TIMES
    +
    2103 m_atime = date;
    +
    2104#endif
    +
    2105 m_source->set_atime(date);
    +
    2106 }
    -
    2109
    -
    2110 protected:
    -
    2112 void flush_cache()
    -
    2113 {
    -
    2114 if (m_cache.status != cache_t::cache_t::status_t::dirty)
    -
    2115 m_state = state_t::ok;
    -
    2116 else if (!m_cache.region.empty()) {
    -
    2117 write_cache();
    -
    2118 if (ok())
    -
    2119 m_cache.status = cache_t::cache_t::status_t::loaded;
    -
    2120 }
    -
    2121 else {
    -
    2122 m_state = state_t::ok;
    -
    2123 m_cache.status = cache_t::cache_t::status_t::loaded;
    -
    2124 }
    -
    2125 }
    -
    2126
    -
    2127 void invalidate_cache()
    -
    2128 {
    -
    2129 if (m_cache.status == cache_t::cache_t::status_t::dirty && !m_cache.region.empty()) {
    -
    2130 write_cache();
    -
    2131 if (!ok()) _Unlikely_
    -
    2132 return;
    -
    2133 } else
    -
    2134 m_state = state_t::ok;
    -
    2135 m_cache.status = cache_t::cache_t::status_t::empty;
    -
    2136 }
    -
    2137
    -
    2138 void load_cache(_In_ fpos_t start)
    -
    2139 {
    -
    2140 _Assume_(m_cache.status != cache_t::cache_t::status_t::dirty);
    -
    2141 start -= start % m_cache.capacity; // Align to cache block size.
    -
    2142 m_source->seek(m_cache.region.start = start);
    -
    2143 if (m_source->ok()) {
    -
    2144 m_cache.region.end = start + m_source->read(m_cache.data, m_cache.capacity);
    -
    2145 m_cache.status = cache_t::cache_t::status_t::loaded;
    -
    2146 m_state = state_t::ok; // Regardless the read failure, we still might have cached some data.
    -
    2147 }
    -
    2148 else
    -
    2149 m_state = state_t::fail;
    -
    2150 }
    -
    2151
    -
    2152 void write_cache()
    -
    2153 {
    -
    2154 _Assume_(m_cache.status == cache_t::cache_t::status_t::dirty);
    -
    2155 m_source->seek(m_cache.region.start);
    -
    2156 m_source->write(m_cache.data, static_cast<size_t>(m_cache.region.size()));
    -
    2157 m_state = m_source->state();
    -
    2158 }
    -
    2159
    -
    2160 basic_file* m_source;
    -
    2161 struct cache_t {
    -
    2162 uint8_t* data;
    -
    2163 size_t capacity;
    -
    2164 enum class status_t {
    -
    2165 empty = 0,
    -
    2166 loaded,
    -
    2167 dirty,
    -
    2168 } status;
    -
    2169 interval<fpos_t> region;
    -
    2170
    -
    2171 cache_t(_In_ size_t _capacity) :
    -
    2172 data(new uint8_t[_capacity]),
    -
    2173 capacity(_capacity),
    -
    2174 status(status_t::empty),
    -
    2175 region(0)
    -
    2176 {}
    -
    2177
    -
    2178 ~cache_t()
    -
    2179 {
    -
    2180 delete[] data;
    -
    2181 }
    -
    2182 } m_cache;
    -
    2183 fpos_t m_offset;
    -
    2184#if SET_FILE_OP_TIMES
    -
    2185 time_point
    -
    2186 m_atime,
    -
    2187 m_mtime;
    -
    2188#endif
    -
    2190 };
    +
    2107
    +
    +
    2108 virtual void set_mtime(time_point date)
    +
    2109 {
    +
    2110#if SET_FILE_OP_TIMES
    +
    2111 m_mtime = date;
    +
    2112#endif
    +
    2113 m_source->set_mtime(date);
    +
    2114 }
    -
    2191
    -
    -
    2195 class basic_sys : virtual public basic, public sys_object
    -
    2196 {
    -
    2197 public:
    -
    2198 basic_sys(_In_opt_ sys_handle h = invalid_handle, _In_ state_t state = state_t::ok) :
    -
    2199 basic(state),
    -
    2200 sys_object(h)
    -
    2201 {}
    -
    2202
    -
    -
    2203 virtual _Success_(return != 0 || length == 0) size_t read(
    -
    2204 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    -
    2205 {
    -
    2206 _Assume_(data || !length);
    -
    2207 // Windows Server 2003 and Windows XP: Pipe write operations across a network are limited in size per write.
    -
    2208 // The amount varies per platform. For x86 platforms it's 63.97 MB. For x64 platforms it's 31.97 MB. For Itanium
    -
    2209 // it's 63.95 MB. For more information regarding pipes, see the Remarks section.
    -
    2210 size_t
    -
    2211#if defined(_WIN64)
    -
    2212 block_size = 0x1F80000;
    -
    2213#elif defined(_WIN32)
    -
    2214 block_size = 0x3f00000;
    -
    2215#else
    -
    2216 block_size = SSIZE_MAX;
    -
    2217#endif
    -
    2218 for (size_t to_read = length;;) {
    -
    2219#ifdef _WIN32
    -
    2220 // ReadFile() might raise exception (e.g. STATUS_FILE_BAD_FORMAT/0xE0000002).
    -
    2221 BOOL succeeded;
    -
    2222 DWORD num_read;
    -
    2223 __try { succeeded = ReadFile(m_h, data, static_cast<DWORD>(std::min<size_t>(to_read, block_size)), &num_read, nullptr); }
    -
    2224 __except (EXCEPTION_EXECUTE_HANDLER) { succeeded = FALSE; SetLastError(ERROR_UNHANDLED_EXCEPTION); num_read = 0; }
    -
    2225 if (!succeeded && GetLastError() == ERROR_NO_SYSTEM_RESOURCES && block_size > default_block_size) _Unlikely_ {
    -
    2226 // Error "Insufficient system resources exist to complete the requested service." occurs
    -
    2227 // ocasionally, when attempting to read too much data at once (e.g. over \\TSClient).
    -
    2228 block_size = default_block_size;
    -
    2229 continue;
    -
    2230 }
    -
    2231 if (!succeeded) _Unlikely_
    -
    2232#else
    -
    2233 ssize_t num_read = ::read(m_h, data, static_cast<ssize_t>(std::min<size_t>(to_read, block_size)));
    -
    2234 if (num_read < 0) _Unlikely_
    -
    2235#endif
    -
    2236 {
    -
    2237 m_state = to_read < length ? state_t::ok : state_t::fail;
    -
    2238 return length - to_read;
    -
    2239 }
    -
    2240 if (!num_read) _Unlikely_ {
    -
    2241 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    -
    2242 return length - to_read;
    -
    2243 }
    -
    2244 to_read -= num_read;
    -
    2245 if (!to_read) {
    -
    2246 m_state = state_t::ok;
    -
    2247 return length;
    -
    2248 }
    -
    2249 reinterpret_cast<uint8_t*&>(data) += num_read;
    -
    2250 }
    -
    2251 }
    +
    2115
    +
    2116 protected:
    +
    2118 void flush_cache()
    +
    2119 {
    +
    2120 if (m_cache.status != cache_t::cache_t::status_t::dirty)
    +
    2121 m_state = state_t::ok;
    +
    2122 else if (!m_cache.region.empty()) {
    +
    2123 write_cache();
    +
    2124 if (ok())
    +
    2125 m_cache.status = cache_t::cache_t::status_t::loaded;
    +
    2126 }
    +
    2127 else {
    +
    2128 m_state = state_t::ok;
    +
    2129 m_cache.status = cache_t::cache_t::status_t::loaded;
    +
    2130 }
    +
    2131 }
    +
    2132
    +
    2133 void invalidate_cache()
    +
    2134 {
    +
    2135 if (m_cache.status == cache_t::cache_t::status_t::dirty && !m_cache.region.empty()) {
    +
    2136 write_cache();
    +
    2137 if (!ok()) _Unlikely_
    +
    2138 return;
    +
    2139 } else
    +
    2140 m_state = state_t::ok;
    +
    2141 m_cache.status = cache_t::cache_t::status_t::empty;
    +
    2142 }
    +
    2143
    +
    2144 void load_cache(_In_ fpos_t start)
    +
    2145 {
    +
    2146 _Assume_(m_cache.status != cache_t::cache_t::status_t::dirty);
    +
    2147 start -= start % m_cache.capacity; // Align to cache block size.
    +
    2148 m_source->seek(m_cache.region.start = start);
    +
    2149 if (m_source->ok()) {
    +
    2150 m_cache.region.end = start + m_source->read(m_cache.data, m_cache.capacity);
    +
    2151 m_cache.status = cache_t::cache_t::status_t::loaded;
    +
    2152 m_state = state_t::ok; // Regardless the read failure, we still might have cached some data.
    +
    2153 }
    +
    2154 else
    +
    2155 m_state = state_t::fail;
    +
    2156 }
    +
    2157
    +
    2158 void write_cache()
    +
    2159 {
    +
    2160 _Assume_(m_cache.status == cache_t::cache_t::status_t::dirty);
    +
    2161 m_source->seek(m_cache.region.start);
    +
    2162 m_source->write(m_cache.data, static_cast<size_t>(m_cache.region.size()));
    +
    2163 m_state = m_source->state();
    +
    2164 }
    +
    2165
    +
    2166 basic_file* m_source;
    +
    2167 struct cache_t {
    +
    2168 uint8_t* data;
    +
    2169 size_t capacity;
    +
    2170 enum class status_t {
    +
    2171 empty = 0,
    +
    2172 loaded,
    +
    2173 dirty,
    +
    2174 } status;
    +
    2175 interval<fpos_t> region;
    +
    2176
    +
    2177 cache_t(_In_ size_t _capacity) :
    +
    2178 data(new uint8_t[_capacity]),
    +
    2179 capacity(_capacity),
    +
    2180 status(status_t::empty),
    +
    2181 region(0)
    +
    2182 {}
    +
    2183
    +
    2184 ~cache_t()
    +
    2185 {
    +
    2186 delete[] data;
    +
    2187 }
    +
    2188 } m_cache;
    +
    2189 fpos_t m_offset;
    +
    2190#if SET_FILE_OP_TIMES
    +
    2191 time_point
    +
    2192 m_atime,
    +
    2193 m_mtime;
    +
    2194#endif
    +
    2196 };
    -
    2252
    -
    -
    2253 virtual _Success_(return != 0) size_t write(
    -
    2254 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    -
    2255 {
    -
    2256 // Windows Server 2003 and Windows XP: Pipe write operations across a network are limited in size per write.
    -
    2257 // The amount varies per platform. For x86 platforms it's 63.97 MB. For x64 platforms it's 31.97 MB. For Itanium
    -
    2258 // it's 63.95 MB. For more information regarding pipes, see the Remarks section.
    -
    2259 constexpr size_t
    -
    2260#if defined(_WIN64)
    -
    2261 block_size = 0x1F80000;
    -
    2262#elif defined(_WIN32)
    -
    2263 block_size = 0x3f00000;
    -
    2264#else
    -
    2265 block_size = SSIZE_MAX;
    -
    2266#endif
    -
    2267 for (size_t to_write = length;;) {
    -
    2268#ifdef _WIN32
    -
    2269 // ReadFile() might raise an exception. Be cautious with WriteFile() too.
    -
    2270 BOOL succeeded;
    -
    2271 DWORD num_written;
    -
    2272 __try { succeeded = WriteFile(m_h, data, static_cast<DWORD>(std::min<size_t>(to_write, block_size)), &num_written, nullptr); }
    -
    2273 __except (EXCEPTION_EXECUTE_HANDLER) { succeeded = FALSE; SetLastError(ERROR_UNHANDLED_EXCEPTION); num_written = 0; }
    -
    2274 to_write -= num_written;
    -
    2275 if (!to_write) {
    -
    2276 m_state = state_t::ok;
    -
    2277 return length;
    -
    2278 }
    -
    2279 reinterpret_cast<const uint8_t*&>(data) += num_written;
    -
    2280 if (!succeeded) _Unlikely_ {
    -
    2281 m_state = state_t::fail;
    -
    2282 return length - to_write;
    -
    2283 }
    -
    2284#else
    -
    2285 ssize_t num_written = ::write(m_h, data, static_cast<ssize_t>(std::min<size_t>(to_write, block_size)));
    -
    2286 if (num_written < 0) _Unlikely_ {
    +
    2197
    +
    +
    2201 class basic_sys : virtual public basic, public sys_object
    +
    2202 {
    +
    2203 public:
    +
    2204 basic_sys(_In_opt_ sys_handle h = invalid_handle, _In_ state_t state = state_t::ok) :
    +
    2205 basic(state),
    +
    2206 sys_object(h)
    +
    2207 {}
    +
    2208
    +
    +
    2209 virtual _Success_(return != 0 || length == 0) size_t read(
    +
    2210 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    2211 {
    +
    2212 _Assume_(data || !length);
    +
    2213 // Windows Server 2003 and Windows XP: Pipe write operations across a network are limited in size per write.
    +
    2214 // The amount varies per platform. For x86 platforms it's 63.97 MB. For x64 platforms it's 31.97 MB. For Itanium
    +
    2215 // it's 63.95 MB. For more information regarding pipes, see the Remarks section.
    +
    2216 size_t
    +
    2217#if defined(_WIN64)
    +
    2218 block_size = 0x1F80000;
    +
    2219#elif defined(_WIN32)
    +
    2220 block_size = 0x3f00000;
    +
    2221#else
    +
    2222 block_size = SSIZE_MAX;
    +
    2223#endif
    +
    2224 for (size_t to_read = length;;) {
    +
    2225#ifdef _WIN32
    +
    2226 // ReadFile() might raise exception (e.g. STATUS_FILE_BAD_FORMAT/0xE0000002).
    +
    2227 BOOL succeeded;
    +
    2228 DWORD num_read;
    +
    2229 __try { succeeded = ReadFile(m_h, data, static_cast<DWORD>(std::min<size_t>(to_read, block_size)), &num_read, nullptr); }
    +
    2230 __except (EXCEPTION_EXECUTE_HANDLER) { succeeded = FALSE; SetLastError(ERROR_UNHANDLED_EXCEPTION); num_read = 0; }
    +
    2231 if (!succeeded && GetLastError() == ERROR_NO_SYSTEM_RESOURCES && block_size > default_block_size) _Unlikely_ {
    +
    2232 // Error "Insufficient system resources exist to complete the requested service." occurs
    +
    2233 // ocasionally, when attempting to read too much data at once (e.g. over \\TSClient).
    +
    2234 block_size = default_block_size;
    +
    2235 continue;
    +
    2236 }
    +
    2237 if (!succeeded) _Unlikely_
    +
    2238#else
    +
    2239 ssize_t num_read = ::read(m_h, data, static_cast<ssize_t>(std::min<size_t>(to_read, block_size)));
    +
    2240 if (num_read < 0) _Unlikely_
    +
    2241#endif
    +
    2242 {
    +
    2243 m_state = to_read < length ? state_t::ok : state_t::fail;
    +
    2244 return length - to_read;
    +
    2245 }
    +
    2246 if (!num_read) _Unlikely_ {
    +
    2247 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    +
    2248 return length - to_read;
    +
    2249 }
    +
    2250 to_read -= num_read;
    +
    2251 if (!to_read) {
    +
    2252 m_state = state_t::ok;
    +
    2253 return length;
    +
    2254 }
    +
    2255 reinterpret_cast<uint8_t*&>(data) += num_read;
    +
    2256 }
    +
    2257 }
    +
    +
    2258
    +
    +
    2259 virtual _Success_(return != 0) size_t write(
    +
    2260 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    +
    2261 {
    +
    2262 // Windows Server 2003 and Windows XP: Pipe write operations across a network are limited in size per write.
    +
    2263 // The amount varies per platform. For x86 platforms it's 63.97 MB. For x64 platforms it's 31.97 MB. For Itanium
    +
    2264 // it's 63.95 MB. For more information regarding pipes, see the Remarks section.
    +
    2265 constexpr size_t
    +
    2266#if defined(_WIN64)
    +
    2267 block_size = 0x1F80000;
    +
    2268#elif defined(_WIN32)
    +
    2269 block_size = 0x3f00000;
    +
    2270#else
    +
    2271 block_size = SSIZE_MAX;
    +
    2272#endif
    +
    2273 for (size_t to_write = length;;) {
    +
    2274#ifdef _WIN32
    +
    2275 // ReadFile() might raise an exception. Be cautious with WriteFile() too.
    +
    2276 BOOL succeeded;
    +
    2277 DWORD num_written;
    +
    2278 __try { succeeded = WriteFile(m_h, data, static_cast<DWORD>(std::min<size_t>(to_write, block_size)), &num_written, nullptr); }
    +
    2279 __except (EXCEPTION_EXECUTE_HANDLER) { succeeded = FALSE; SetLastError(ERROR_UNHANDLED_EXCEPTION); num_written = 0; }
    +
    2280 to_write -= num_written;
    +
    2281 if (!to_write) {
    +
    2282 m_state = state_t::ok;
    +
    2283 return length;
    +
    2284 }
    +
    2285 reinterpret_cast<const uint8_t*&>(data) += num_written;
    +
    2286 if (!succeeded) _Unlikely_ {
    2287 m_state = state_t::fail;
    2288 return length - to_write;
    2289 }
    -
    2290 to_write -= num_written;
    -
    2291 if (!to_write) {
    -
    2292 m_state = state_t::ok;
    -
    2293 return length;
    -
    2294 }
    -
    2295 reinterpret_cast<const uint8_t*&>(data) += num_written;
    -
    2296#endif
    -
    2297 }
    -
    2298 }
    +
    2290#else
    +
    2291 ssize_t num_written = ::write(m_h, data, static_cast<ssize_t>(std::min<size_t>(to_write, block_size)));
    +
    2292 if (num_written < 0) _Unlikely_ {
    +
    2293 m_state = state_t::fail;
    +
    2294 return length - to_write;
    +
    2295 }
    +
    2296 to_write -= num_written;
    +
    2297 if (!to_write) {
    +
    2298 m_state = state_t::ok;
    +
    2299 return length;
    +
    2300 }
    +
    2301 reinterpret_cast<const uint8_t*&>(data) += num_written;
    +
    2302#endif
    +
    2303 }
    +
    2304 }
    -
    2299
    -
    -
    2300 virtual void close()
    -
    2301 {
    -
    2302 try {
    - -
    2304 m_state = state_t::ok;
    -
    2305 }
    -
    2306 catch (...) {
    -
    2307 m_state = state_t::fail;
    -
    2308 }
    -
    2309 }
    +
    2305
    +
    +
    2306 virtual void close()
    +
    2307 {
    +
    2308 try {
    + +
    2310 m_state = state_t::ok;
    +
    2311 }
    +
    2312 catch (...) {
    +
    2313 m_state = state_t::fail;
    +
    2314 }
    +
    2315 }
    -
    2310
    -
    -
    2311 virtual void flush()
    -
    2312 {
    -
    2313#ifdef _WIN32
    -
    2314 m_state = FlushFileBuffers(m_h) ? state_t::ok : state_t::fail;
    -
    2315#else
    -
    2316 m_state = fsync(m_h) >= 0 ? state_t::ok : state_t::fail;
    -
    2317#endif
    -
    2318 }
    +
    2316
    +
    +
    2317 virtual void flush()
    +
    2318 {
    +
    2319#ifdef _WIN32
    +
    2320 m_state = FlushFileBuffers(m_h) ? state_t::ok : state_t::fail;
    +
    2321#else
    +
    2322 m_state = fsync(m_h) >= 0 ? state_t::ok : state_t::fail;
    +
    2323#endif
    +
    2324 }
    -
    2319 };
    +
    2325 };
    -
    2320
    -
    -
    2324 class buffered_sys : public buffer
    -
    2325 {
    -
    2326 public:
    -
    2327 buffered_sys(_In_opt_ sys_handle h = invalid_handle, size_t read_buffer_size = default_buffer_size, size_t write_buffer_size = default_buffer_size) :
    -
    2328 buffer(read_buffer_size, write_buffer_size),
    -
    2329 m_source(h)
    -
    2330 {
    -
    2331 init(m_source);
    -
    2332 }
    -
    2333
    -
    2334 virtual ~buffered_sys()
    -
    2335 {
    -
    2336 done();
    -
    2337 }
    -
    2338
    -
    2339 protected:
    -
    2340 basic_sys m_source;
    -
    2341 };
    +
    2326
    +
    +
    2330 class buffered_sys : public buffer
    +
    2331 {
    +
    2332 public:
    +
    2333 buffered_sys(_In_opt_ sys_handle h = invalid_handle, size_t read_buffer_size = default_buffer_size, size_t write_buffer_size = default_buffer_size) :
    +
    2334 buffer(read_buffer_size, write_buffer_size),
    +
    2335 m_source(h)
    +
    2336 {
    +
    2337 init(m_source);
    +
    2338 }
    +
    2339
    +
    2340 virtual ~buffered_sys()
    +
    2341 {
    +
    2342 done();
    +
    2343 }
    +
    2344
    +
    2345 protected:
    +
    2346 basic_sys m_source;
    +
    2347 };
    -
    2342
    -
    -
    2346 class socket : public basic
    -
    2347 {
    -
    2348 public:
    -
    2349 socket(_In_opt_ socket_t h = invalid_socket, _In_ state_t state = state_t::ok) :
    -
    2350 basic(state),
    -
    2351 m_h(h)
    -
    2352 {}
    -
    2353
    -
    2354 private:
    -
    2355 socket(_In_ const socket& other);
    -
    2356 socket& operator =(_In_ const socket& other);
    -
    2357
    -
    2358 public:
    -
    2359 socket(_Inout_ socket&& other) noexcept : m_h(other.m_h)
    -
    2360 {
    -
    2361 other.m_h = invalid_socket;
    -
    2362 }
    +
    2348
    +
    +
    2352 class socket : public basic
    +
    2353 {
    +
    2354 public:
    +
    2355 socket(_In_opt_ socket_t h = invalid_socket, _In_ state_t state = state_t::ok) :
    +
    2356 basic(state),
    +
    2357 m_h(h)
    +
    2358 {}
    +
    2359
    +
    2360 private:
    +
    2361 socket(_In_ const socket& other);
    +
    2362 socket& operator =(_In_ const socket& other);
    2363
    -
    2364 socket& operator =(_Inout_ socket&& other) noexcept
    -
    2365 {
    -
    2366 if (this != std::addressof(other)) {
    -
    2367 if (m_h != invalid_socket)
    -
    2368 closesocket(m_h);
    -
    2369 m_h = other.m_h;
    -
    2370 other.m_h = invalid_socket;
    -
    2371 }
    -
    2372 return *this;
    -
    2373 }
    -
    2374
    -
    -
    2382 socket(_In_ int af, _In_ int type, _In_ int protocol)
    -
    2383 {
    -
    2384 m_h = ::socket(af, type, protocol);
    -
    2385 if (m_h == invalid_socket) _Unlikely_
    -
    2386 m_state = state_t::fail;
    -
    2387 }
    -
    -
    2388
    -
    2389 virtual ~socket()
    -
    2390 {
    -
    2391 if (m_h != invalid_socket)
    -
    2392 closesocket(m_h);
    +
    2364 public:
    +
    2365 socket(_Inout_ socket&& other) noexcept : m_h(other.m_h)
    +
    2366 {
    +
    2367 other.m_h = invalid_socket;
    +
    2368 }
    +
    2369
    +
    2370 socket& operator =(_Inout_ socket&& other) noexcept
    +
    2371 {
    +
    2372 if (this != std::addressof(other)) {
    +
    2373 if (m_h != invalid_socket)
    +
    2374 closesocket(m_h);
    +
    2375 m_h = other.m_h;
    +
    2376 other.m_h = invalid_socket;
    +
    2377 }
    +
    2378 return *this;
    +
    2379 }
    +
    2380
    +
    +
    2388 socket(_In_ int af, _In_ int type, _In_ int protocol)
    +
    2389 {
    +
    2390 m_h = ::socket(af, type, protocol);
    +
    2391 if (m_h == invalid_socket) _Unlikely_
    +
    2392 m_state = state_t::fail;
    2393 }
    +
    2394
    -
    2398 inline operator bool() const noexcept { return m_h != invalid_socket; }
    -
    2399
    -
    2403 inline socket_t get() const noexcept { return m_h; }
    -
    2404
    -
    -
    2405 virtual _Success_(return != 0 || length == 0) size_t read(
    -
    2406 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    -
    2407 {
    -
    2408 _Assume_(data || !length);
    -
    2409 constexpr int block_size = 0x10000000;
    -
    2410 for (size_t to_read = length;;) {
    -
    2411 int num_read = recv(m_h, reinterpret_cast<char*>(data), static_cast<int>(std::min<size_t>(to_read, block_size)), 0);
    -
    2412 if (num_read == SOCKET_ERROR) _Unlikely_ {
    -
    2413 m_state = to_read < length ? state_t::ok : state_t::fail;
    -
    2414 return length - to_read;
    -
    2415 }
    -
    2416 if (!num_read) {
    -
    2417 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    -
    2418 return length - to_read;
    -
    2419 }
    -
    2420 to_read -= num_read;
    -
    2421 if (!to_read) {
    -
    2422 m_state = state_t::ok;
    -
    2423 return length;
    -
    2424 }
    -
    2425 reinterpret_cast<uint8_t*&>(data) += num_read;
    -
    2426 }
    -
    2427 }
    +
    2395 virtual ~socket()
    +
    2396 {
    +
    2397 if (m_h != invalid_socket)
    +
    2398 closesocket(m_h);
    +
    2399 }
    +
    2400
    +
    2404 inline operator bool() const noexcept { return m_h != invalid_socket; }
    +
    2405
    +
    2409 inline socket_t get() const noexcept { return m_h; }
    +
    2410
    +
    +
    2411 virtual _Success_(return != 0 || length == 0) size_t read(
    +
    2412 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    2413 {
    +
    2414 _Assume_(data || !length);
    +
    2415 constexpr int block_size = 0x10000000;
    +
    2416 for (size_t to_read = length;;) {
    +
    2417 int num_read = recv(m_h, reinterpret_cast<char*>(data), static_cast<int>(std::min<size_t>(to_read, block_size)), 0);
    +
    2418 if (num_read == SOCKET_ERROR) _Unlikely_ {
    +
    2419 m_state = to_read < length ? state_t::ok : state_t::fail;
    +
    2420 return length - to_read;
    +
    2421 }
    +
    2422 if (!num_read) {
    +
    2423 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    +
    2424 return length - to_read;
    +
    2425 }
    +
    2426 to_read -= num_read;
    +
    2427 if (!to_read) {
    +
    2428 m_state = state_t::ok;
    +
    2429 return length;
    +
    2430 }
    +
    2431 reinterpret_cast<uint8_t*&>(data) += num_read;
    +
    2432 }
    +
    2433 }
    -
    2428
    -
    -
    2429 virtual _Success_(return != 0) size_t write(
    -
    2430 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    -
    2431 {
    -
    2432 _Assume_(data || !length);
    -
    2433 constexpr int block_size = 0x10000000;
    -
    2434 for (size_t to_write = length;;) {
    -
    2435 int num_written = send(m_h, reinterpret_cast<const char*>(data), static_cast<int>(std::min<size_t>(to_write, block_size)), 0);
    -
    2436 if (num_written == SOCKET_ERROR) _Unlikely_ {
    -
    2437 m_state = state_t::fail;
    -
    2438 return length - to_write;
    -
    2439 }
    -
    2440 to_write -= num_written;
    -
    2441 if (!to_write) {
    -
    2442 m_state = state_t::ok;
    -
    2443 return length;
    -
    2444 }
    -
    2445 reinterpret_cast<const uint8_t*&>(data) += num_written;
    -
    2446 }
    -
    2447 }
    +
    2434
    +
    +
    2435 virtual _Success_(return != 0) size_t write(
    +
    2436 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    +
    2437 {
    +
    2438 _Assume_(data || !length);
    +
    2439 constexpr int block_size = 0x10000000;
    +
    2440 for (size_t to_write = length;;) {
    +
    2441 int num_written = send(m_h, reinterpret_cast<const char*>(data), static_cast<int>(std::min<size_t>(to_write, block_size)), 0);
    +
    2442 if (num_written == SOCKET_ERROR) _Unlikely_ {
    +
    2443 m_state = state_t::fail;
    +
    2444 return length - to_write;
    +
    2445 }
    +
    2446 to_write -= num_written;
    +
    2447 if (!to_write) {
    +
    2448 m_state = state_t::ok;
    +
    2449 return length;
    +
    2450 }
    +
    2451 reinterpret_cast<const uint8_t*&>(data) += num_written;
    +
    2452 }
    +
    2453 }
    -
    2448
    -
    -
    2449 virtual void close()
    -
    2450 {
    -
    2451 if (m_h != invalid_socket) {
    -
    2452 closesocket(m_h);
    -
    2453 m_h = invalid_socket;
    -
    2454 }
    -
    2455 m_state = state_t::ok;
    -
    2456 }
    +
    2454
    +
    +
    2455 virtual void close()
    +
    2456 {
    +
    2457 if (m_h != invalid_socket) {
    +
    2458 closesocket(m_h);
    +
    2459 m_h = invalid_socket;
    +
    2460 }
    +
    2461 m_state = state_t::ok;
    +
    2462 }
    -
    2457
    -
    2458 protected:
    -
    2459 socket_t m_h;
    -
    2460 };
    +
    2463
    +
    2464 protected:
    +
    2465 socket_t m_h;
    +
    2466 };
    -
    2461
    -
    2462#ifdef _WIN32
    -
    2466 class sequential_stream : public basic
    -
    2467 {
    -
    2468 public:
    -
    2469 sequential_stream(_In_ ISequentialStream* source) : m_source(source)
    -
    2470 {
    -
    2471 m_source->AddRef();
    -
    2472 }
    -
    2473
    -
    2474 virtual ~sequential_stream()
    -
    2475 {
    -
    2476 m_source->Release();
    -
    2477 }
    -
    2478
    -
    2479 virtual _Success_(return != 0 || length == 0) size_t read(
    -
    2480 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    2467
    +
    2468#ifdef _WIN32
    +
    2472 class sequential_stream : public basic
    +
    2473 {
    +
    2474 public:
    +
    2475 sequential_stream(_In_ ISequentialStream* source) : m_source(source)
    +
    2476 {
    +
    2477 m_source->AddRef();
    +
    2478 }
    +
    2479
    +
    2480 virtual ~sequential_stream()
    2481 {
    -
    2482 _Assume_(data || !length);
    -
    2483 for (size_t to_read = length;;) {
    -
    2484 HRESULT hr;
    -
    2485 ULONG num_read = 0;
    -
    2486 __try { hr = m_source->Read(data, (ULONG)std::min<size_t>(to_read, ULONG_MAX), &num_read); }
    -
    2487 __except (EXCEPTION_EXECUTE_HANDLER) { hr = E_FAIL; }
    -
    2488 if (FAILED(hr)) _Unlikely_ {
    -
    2489 m_state = to_read < length ? state_t::ok : state_t::fail;
    -
    2490 return length - to_read;
    -
    2491 }
    -
    2492 to_read -= num_read;
    -
    2493 if (hr == S_FALSE) _Unlikely_ {
    -
    2494 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    -
    2495 return length - to_read;
    -
    2496 }
    -
    2497 if (!to_read) {
    -
    2498 m_state = state_t::ok;
    -
    2499 return length;
    -
    2500 }
    -
    2501 reinterpret_cast<uint8_t*&>(data) += num_read;
    -
    2502 }
    -
    2503 }
    -
    2504
    -
    2505 virtual _Success_(return != 0) size_t write(
    -
    2506 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    -
    2507 {
    -
    2508 _Assume_(data || !length);
    -
    2509 for (size_t to_write = length;;) {
    -
    2510 HRESULT hr;
    -
    2511 ULONG num_written = 0;
    -
    2512 __try { hr = m_source->Write(data, static_cast<ULONG>(std::min<size_t>(to_write, ULONG_MAX)), &num_written); }
    -
    2513 __except (EXCEPTION_EXECUTE_HANDLER) { hr = E_FAIL; }
    -
    2514 // In abscence of documentation whether num_written gets set when FAILED(hr) (i.e. partially succesful writes),
    -
    2515 // assume write failed completely.
    -
    2516 if (FAILED(hr)) _Unlikely_ {
    -
    2517 m_state = state_t::fail;
    -
    2518 return length - to_write;
    -
    2519 }
    -
    2520 to_write -= num_written;
    -
    2521 if (!to_write) {
    -
    2522 m_state = state_t::ok;
    -
    2523 return length;
    -
    2524 }
    -
    2525 reinterpret_cast<const uint8_t*&>(data) += num_written;
    -
    2526 }
    -
    2527 }
    -
    2528
    -
    2529 protected:
    -
    2530 ISequentialStream* m_source;
    -
    2531 };
    -
    2532
    -
    2536 class asp : public basic
    -
    2537 {
    -
    2538 public:
    -
    2539 asp(_In_opt_ IRequest* request, _In_opt_ IResponse* response) :
    -
    2540 m_request(request),
    -
    2541 m_response(response)
    -
    2542 {
    -
    2543 if (m_request)
    -
    2544 m_request->AddRef();
    -
    2545 if (m_response)
    -
    2546 m_response->AddRef();
    -
    2547 }
    -
    2548
    -
    2549 virtual ~asp()
    -
    2550 {
    -
    2551 if (m_request)
    -
    2552 m_request->Release();
    -
    2553 if (m_response)
    -
    2554 m_response->Release();
    -
    2555 }
    -
    2556
    -
    2557 virtual _Success_(return != 0 || length == 0) size_t read(
    -
    2558 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    -
    2559 {
    -
    2560 _Assume_(data || !length);
    -
    2561 if (!m_request) _Unlikely_ {
    -
    2562 m_state = state_t::fail;
    -
    2563 return 0;
    -
    2564 }
    -
    2565 for (size_t to_read = length;;) {
    -
    2566 VARIANT var_amount, var_data;
    -
    2567 V_VT(&var_amount) = VT_I4;
    -
    2568 V_I4(&var_amount) = (LONG)std::min<size_t>(to_read, LONG_MAX);
    -
    2569 V_VT(&var_data) = VT_EMPTY;
    -
    2570 HRESULT hr = [&]() {
    -
    2571 __try { return m_request->BinaryRead(&var_amount, &var_data); }
    -
    2572 __except (EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
    -
    2573 }();
    -
    2574 if (FAILED(hr)) _Unlikely_ {
    -
    2575 m_state = to_read < length ? state_t::ok : state_t::fail;
    -
    2576 return length - to_read;
    -
    2577 }
    -
    2578 _Assume_(V_VT(&var_amount) == VT_I4);
    -
    2579 _Assume_(V_VT(&var_data) == (VT_ARRAY | VT_UI1));
    -
    2580 std::unique_ptr<SAFEARRAY, SafeArrayDestroy_delete> sa(V_ARRAY(&var_data));
    -
    2581 if (!V_I4(&var_amount)) _Unlikely_ {
    -
    2582 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    -
    2583 return length - to_read;
    -
    2584 }
    -
    2585 safearray_accessor<uint8_t> a(sa.get());
    -
    2586 memcpy(data, a.data(), V_I4(&var_amount));
    -
    2587 to_read -= V_I4(&var_amount);
    -
    2588 if (!to_read) {
    -
    2589 m_state = state_t::ok;
    -
    2590 return length;
    -
    2591 }
    -
    2592 reinterpret_cast<uint8_t*&>(data) += V_I4(&var_amount);
    -
    2593 }
    -
    2594 }
    -
    2595
    -
    2596 virtual _Success_(return != 0) size_t write(
    -
    2597 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    -
    2598 {
    -
    2599 if (!m_response) {
    -
    2600 m_state = state_t::fail;
    -
    2601 return 0;
    -
    2602 }
    -
    2603 for (size_t to_write = length;;) {
    -
    2604 UINT num_written = static_cast<UINT>(std::min<size_t>(to_write, UINT_MAX));
    -
    2605 std::unique_ptr<OLECHAR, SysFreeString_delete> bstr_data(SysAllocStringByteLen(reinterpret_cast<LPCSTR>(data), num_written));
    -
    2606 VARIANT var_data;
    -
    2607 V_VT(&var_data) = VT_BSTR;
    -
    2608 V_BSTR(&var_data) = bstr_data.get();
    -
    2609 HRESULT hr = [&]() {
    -
    2610 __try { return m_response->BinaryWrite(var_data); }
    -
    2611 __except (EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
    -
    2612 }();
    -
    2613 if (FAILED(hr)) _Unlikely_ {
    -
    2614 m_state = state_t::fail;
    -
    2615 return length - to_write;
    -
    2616 }
    -
    2617 to_write -= num_written;
    -
    2618 if (!to_write) {
    -
    2619 m_state = state_t::ok;
    -
    2620 return length;
    -
    2621 }
    -
    2622 reinterpret_cast<const uint8_t*&>(data) += num_written;
    -
    2623 }
    -
    2624 }
    -
    2625
    -
    2626 virtual void close()
    -
    2627 {
    -
    2628 if (m_response) {
    -
    2629 __try { m_response->End(); }
    -
    2630 __except (EXCEPTION_EXECUTE_HANDLER) {}
    -
    2631 }
    -
    2632 m_state = state_t::ok;
    -
    2633 }
    -
    2634
    -
    2635 virtual void flush()
    -
    2636 {
    -
    2637 if (m_response) {
    -
    2638 HRESULT hr;
    -
    2639 __try { hr = m_response->Flush(); }
    -
    2640 __except (EXCEPTION_EXECUTE_HANDLER) { hr = E_FAIL; }
    -
    2641 m_state = SUCCEEDED(hr) ? state_t::ok : state_t::fail;
    -
    2642 }
    -
    2643 }
    -
    2644
    -
    2645 protected:
    -
    2646 IRequest* m_request;
    -
    2647 IResponse* m_response;
    -
    2648 };
    -
    2649#endif
    +
    2482 m_source->Release();
    +
    2483 }
    +
    2484
    +
    2485 virtual _Success_(return != 0 || length == 0) size_t read(
    +
    2486 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    2487 {
    +
    2488 _Assume_(data || !length);
    +
    2489 for (size_t to_read = length;;) {
    +
    2490 HRESULT hr;
    +
    2491 ULONG num_read = 0;
    +
    2492 __try { hr = m_source->Read(data, (ULONG)std::min<size_t>(to_read, ULONG_MAX), &num_read); }
    +
    2493 __except (EXCEPTION_EXECUTE_HANDLER) { hr = E_FAIL; }
    +
    2494 if (FAILED(hr)) _Unlikely_ {
    +
    2495 m_state = to_read < length ? state_t::ok : state_t::fail;
    +
    2496 return length - to_read;
    +
    2497 }
    +
    2498 to_read -= num_read;
    +
    2499 if (hr == S_FALSE) _Unlikely_ {
    +
    2500 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    +
    2501 return length - to_read;
    +
    2502 }
    +
    2503 if (!to_read) {
    +
    2504 m_state = state_t::ok;
    +
    2505 return length;
    +
    2506 }
    +
    2507 reinterpret_cast<uint8_t*&>(data) += num_read;
    +
    2508 }
    +
    2509 }
    +
    2510
    +
    2511 virtual _Success_(return != 0) size_t write(
    +
    2512 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    +
    2513 {
    +
    2514 _Assume_(data || !length);
    +
    2515 for (size_t to_write = length;;) {
    +
    2516 HRESULT hr;
    +
    2517 ULONG num_written = 0;
    +
    2518 __try { hr = m_source->Write(data, static_cast<ULONG>(std::min<size_t>(to_write, ULONG_MAX)), &num_written); }
    +
    2519 __except (EXCEPTION_EXECUTE_HANDLER) { hr = E_FAIL; }
    +
    2520 // In abscence of documentation whether num_written gets set when FAILED(hr) (i.e. partially succesful writes),
    +
    2521 // assume write failed completely.
    +
    2522 if (FAILED(hr)) _Unlikely_ {
    +
    2523 m_state = state_t::fail;
    +
    2524 return length - to_write;
    +
    2525 }
    +
    2526 to_write -= num_written;
    +
    2527 if (!to_write) {
    +
    2528 m_state = state_t::ok;
    +
    2529 return length;
    +
    2530 }
    +
    2531 reinterpret_cast<const uint8_t*&>(data) += num_written;
    +
    2532 }
    +
    2533 }
    +
    2534
    +
    2535 protected:
    +
    2536 ISequentialStream* m_source;
    +
    2537 };
    +
    2538
    +
    2542 class asp : public basic
    +
    2543 {
    +
    2544 public:
    +
    2545 asp(_In_opt_ IRequest* request, _In_opt_ IResponse* response) :
    +
    2546 m_request(request),
    +
    2547 m_response(response)
    +
    2548 {
    +
    2549 if (m_request)
    +
    2550 m_request->AddRef();
    +
    2551 if (m_response)
    +
    2552 m_response->AddRef();
    +
    2553 }
    +
    2554
    +
    2555 virtual ~asp()
    +
    2556 {
    +
    2557 if (m_request)
    +
    2558 m_request->Release();
    +
    2559 if (m_response)
    +
    2560 m_response->Release();
    +
    2561 }
    +
    2562
    +
    2563 virtual _Success_(return != 0 || length == 0) size_t read(
    +
    2564 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    2565 {
    +
    2566 _Assume_(data || !length);
    +
    2567 if (!m_request) _Unlikely_ {
    +
    2568 m_state = state_t::fail;
    +
    2569 return 0;
    +
    2570 }
    +
    2571 for (size_t to_read = length;;) {
    +
    2572 VARIANT var_amount, var_data;
    +
    2573 V_VT(&var_amount) = VT_I4;
    +
    2574 V_I4(&var_amount) = (LONG)std::min<size_t>(to_read, LONG_MAX);
    +
    2575 V_VT(&var_data) = VT_EMPTY;
    +
    2576 HRESULT hr = [&]() {
    +
    2577 __try { return m_request->BinaryRead(&var_amount, &var_data); }
    +
    2578 __except (EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
    +
    2579 }();
    +
    2580 if (FAILED(hr)) _Unlikely_ {
    +
    2581 m_state = to_read < length ? state_t::ok : state_t::fail;
    +
    2582 return length - to_read;
    +
    2583 }
    +
    2584 _Assume_(V_VT(&var_amount) == VT_I4);
    +
    2585 _Assume_(V_VT(&var_data) == (VT_ARRAY | VT_UI1));
    +
    2586 std::unique_ptr<SAFEARRAY, SafeArrayDestroy_delete> sa(V_ARRAY(&var_data));
    +
    2587 if (!V_I4(&var_amount)) _Unlikely_ {
    +
    2588 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    +
    2589 return length - to_read;
    +
    2590 }
    +
    2591 safearray_accessor<uint8_t> a(sa.get());
    +
    2592 memcpy(data, a.data(), V_I4(&var_amount));
    +
    2593 to_read -= V_I4(&var_amount);
    +
    2594 if (!to_read) {
    +
    2595 m_state = state_t::ok;
    +
    2596 return length;
    +
    2597 }
    +
    2598 reinterpret_cast<uint8_t*&>(data) += V_I4(&var_amount);
    +
    2599 }
    +
    2600 }
    +
    2601
    +
    2602 virtual _Success_(return != 0) size_t write(
    +
    2603 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    +
    2604 {
    +
    2605 if (!m_response) {
    +
    2606 m_state = state_t::fail;
    +
    2607 return 0;
    +
    2608 }
    +
    2609 for (size_t to_write = length;;) {
    +
    2610 UINT num_written = static_cast<UINT>(std::min<size_t>(to_write, UINT_MAX));
    +
    2611 std::unique_ptr<OLECHAR, SysFreeString_delete> bstr_data(SysAllocStringByteLen(reinterpret_cast<LPCSTR>(data), num_written));
    +
    2612 VARIANT var_data;
    +
    2613 V_VT(&var_data) = VT_BSTR;
    +
    2614 V_BSTR(&var_data) = bstr_data.get();
    +
    2615 HRESULT hr = [&]() {
    +
    2616 __try { return m_response->BinaryWrite(var_data); }
    +
    2617 __except (EXCEPTION_EXECUTE_HANDLER) { return E_FAIL; }
    +
    2618 }();
    +
    2619 if (FAILED(hr)) _Unlikely_ {
    +
    2620 m_state = state_t::fail;
    +
    2621 return length - to_write;
    +
    2622 }
    +
    2623 to_write -= num_written;
    +
    2624 if (!to_write) {
    +
    2625 m_state = state_t::ok;
    +
    2626 return length;
    +
    2627 }
    +
    2628 reinterpret_cast<const uint8_t*&>(data) += num_written;
    +
    2629 }
    +
    2630 }
    +
    2631
    +
    2632 virtual void close()
    +
    2633 {
    +
    2634 if (m_response) {
    +
    2635 __try { m_response->End(); }
    +
    2636 __except (EXCEPTION_EXECUTE_HANDLER) {}
    +
    2637 }
    +
    2638 m_state = state_t::ok;
    +
    2639 }
    +
    2640
    +
    2641 virtual void flush()
    +
    2642 {
    +
    2643 if (m_response) {
    +
    2644 HRESULT hr;
    +
    2645 __try { hr = m_response->Flush(); }
    +
    2646 __except (EXCEPTION_EXECUTE_HANDLER) { hr = E_FAIL; }
    +
    2647 m_state = SUCCEEDED(hr) ? state_t::ok : state_t::fail;
    +
    2648 }
    +
    2649 }
    2650
    -
    2654 enum mode_t
    -
    2655 {
    -
    2656 mode_for_reading = 1 << 0,
    -
    2657 mode_for_writing = 1 << 1,
    -
    2658 mode_for_chmod = 1 << 2,
    -
    2659
    -
    2660 mode_open_existing = 0 << 3,
    -
    2661 mode_truncate_existing = 1 << 3,
    -
    2662 mode_preserve_existing = 2 << 3,
    -
    2663 mode_create_new = 3 << 3,
    -
    2664 mode_create = 4 << 3,
    -
    2665 mode_disposition_mask = 7 << 3,
    -
    2666
    -
    2667 mode_append = 1 << 6,
    -
    2668 mode_text = 0,
    -
    2669 mode_binary = 1 << 7,
    -
    2670
    -
    2671 share_none = 0,
    -
    2672 share_reading = 1 << 8,
    -
    2673 share_writing = 1 << 9,
    -
    2674 share_deleting = 1 << 10,
    -
    2675 share_all = share_reading | share_writing | share_deleting, // Allow others all operations on our file
    +
    2651 protected:
    +
    2652 IRequest* m_request;
    +
    2653 IResponse* m_response;
    +
    2654 };
    +
    2655#endif
    +
    2656
    +
    2660 enum mode_t
    +
    2661 {
    +
    2662 mode_for_reading = 1 << 0,
    +
    2663 mode_for_writing = 1 << 1,
    +
    2664 mode_for_chmod = 1 << 2,
    +
    2665
    +
    2666 mode_open_existing = 0 << 3,
    +
    2667 mode_truncate_existing = 1 << 3,
    +
    2668 mode_preserve_existing = 2 << 3,
    +
    2669 mode_create_new = 3 << 3,
    +
    2670 mode_create = 4 << 3,
    +
    2671 mode_disposition_mask = 7 << 3,
    +
    2672
    +
    2673 mode_append = 1 << 6,
    +
    2674 mode_text = 0,
    +
    2675 mode_binary = 1 << 7,
    2676
    -
    2677 inherit_handle = 1 << 11,
    -
    2678
    -
    2679 hint_write_thru = 1 << 12,
    -
    2680 hint_no_buffering = 1 << 13,
    -
    2681 hint_random_access = 1 << 14,
    -
    2682 hint_sequential_access = 1 << 15,
    -
    2683 };
    +
    2677 share_none = 0,
    +
    2678 share_reading = 1 << 8,
    +
    2679 share_writing = 1 << 9,
    +
    2680 share_deleting = 1 << 10,
    +
    2681 share_all = share_reading | share_writing | share_deleting, // Allow others all operations on our file
    +
    2682
    +
    2683 inherit_handle = 1 << 11,
    2684
    -
    2685#pragma warning(push)
    -
    2686#pragma warning(disable: 4250)
    -
    -
    2690 class file : virtual public basic_file, virtual public basic_sys
    -
    2691 {
    -
    2692 public:
    -
    2693 file(_In_opt_ sys_handle h = invalid_handle, _In_ state_t state = state_t::ok) : basic_sys(h, state) {}
    -
    2694
    -
    -
    2701 file(_In_z_ const schar_t* filename, _In_ int mode)
    -
    2702 {
    -
    2703 open(filename, mode);
    -
    2704 }
    +
    2685 hint_write_thru = 1 << 12,
    +
    2686 hint_no_buffering = 1 << 13,
    +
    2687 hint_random_access = 1 << 14,
    +
    2688 hint_sequential_access = 1 << 15,
    +
    2689 };
    +
    2690
    +
    2691#pragma warning(push)
    +
    2692#pragma warning(disable: 4250)
    +
    +
    2696 class file : virtual public basic_file, virtual public basic_sys
    +
    2697 {
    +
    2698 public:
    +
    2699 file(_In_opt_ sys_handle h = invalid_handle, _In_ state_t state = state_t::ok) : basic_sys(h, state) {}
    +
    2700
    +
    +
    2707 file(_In_z_ const schar_t* filename, _In_ int mode)
    +
    2708 {
    +
    2709 open(filename, mode);
    +
    2710 }
    -
    2705
    -
    2712 inline file(_In_ const stdex::sstring& filename, _In_ int mode) : file(filename.c_str(), mode) {}
    -
    2713
    -
    -
    2720 void open(_In_z_ const schar_t* filename, _In_ int mode)
    -
    2721 {
    -
    2722 if (m_h != invalid_handle)
    -
    2723 close();
    -
    2724
    -
    2725#ifdef _WIN32
    -
    2726 DWORD dwDesiredAccess = 0;
    -
    2727 if (mode & mode_for_reading) dwDesiredAccess |= GENERIC_READ;
    -
    2728 if (mode & mode_for_writing) dwDesiredAccess |= GENERIC_WRITE;
    -
    2729 if (mode & mode_for_chmod) dwDesiredAccess |= FILE_WRITE_ATTRIBUTES;
    +
    2711
    +
    2718 inline file(_In_ const stdex::sstring& filename, _In_ int mode) : file(filename.c_str(), mode) {}
    +
    2719
    +
    +
    2726 void open(_In_z_ const schar_t* filename, _In_ int mode)
    +
    2727 {
    +
    2728 if (m_h != invalid_handle)
    +
    2729 close();
    2730
    -
    2731 DWORD dwShareMode = 0;
    -
    2732 if (mode & share_reading) dwShareMode |= FILE_SHARE_READ;
    -
    2733 if (mode & share_writing) dwShareMode |= FILE_SHARE_WRITE;
    -
    2734 if (mode & share_deleting) dwShareMode |= FILE_SHARE_DELETE;
    -
    2735
    -
    2736 SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES) };
    -
    2737 sa.bInheritHandle = mode & inherit_handle ? true : false;
    -
    2738
    -
    2739 DWORD dwCreationDisposition;
    -
    2740 switch (mode & mode_disposition_mask) {
    -
    2741 case mode_open_existing: dwCreationDisposition = OPEN_EXISTING; break;
    -
    2742 case mode_truncate_existing: dwCreationDisposition = TRUNCATE_EXISTING; break;
    -
    2743 case mode_preserve_existing: dwCreationDisposition = OPEN_ALWAYS; break;
    -
    2744 case mode_create_new: dwCreationDisposition = CREATE_NEW; break;
    -
    2745 case mode_create: dwCreationDisposition = CREATE_ALWAYS; break;
    -
    2746 default: throw std::invalid_argument("invalid mode");
    -
    2747 }
    -
    2748
    -
    2749 DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL;
    -
    2750 if (mode & hint_write_thru) dwFlagsAndAttributes |= FILE_FLAG_WRITE_THROUGH;
    -
    2751 if (mode & hint_no_buffering) dwFlagsAndAttributes |= FILE_FLAG_NO_BUFFERING;
    -
    2752 if (mode & hint_random_access) dwFlagsAndAttributes |= FILE_FLAG_RANDOM_ACCESS;
    -
    2753 if (mode & hint_sequential_access) dwFlagsAndAttributes |= FILE_FLAG_SEQUENTIAL_SCAN;
    +
    2731#ifdef _WIN32
    +
    2732 DWORD dwDesiredAccess = 0;
    +
    2733 if (mode & mode_for_reading) dwDesiredAccess |= GENERIC_READ;
    +
    2734 if (mode & mode_for_writing) dwDesiredAccess |= GENERIC_WRITE;
    +
    2735 if (mode & mode_for_chmod) dwDesiredAccess |= FILE_WRITE_ATTRIBUTES;
    +
    2736
    +
    2737 DWORD dwShareMode = 0;
    +
    2738 if (mode & share_reading) dwShareMode |= FILE_SHARE_READ;
    +
    2739 if (mode & share_writing) dwShareMode |= FILE_SHARE_WRITE;
    +
    2740 if (mode & share_deleting) dwShareMode |= FILE_SHARE_DELETE;
    +
    2741
    +
    2742 SECURITY_ATTRIBUTES sa = { sizeof(SECURITY_ATTRIBUTES) };
    +
    2743 sa.bInheritHandle = mode & inherit_handle ? true : false;
    +
    2744
    +
    2745 DWORD dwCreationDisposition;
    +
    2746 switch (mode & mode_disposition_mask) {
    +
    2747 case mode_open_existing: dwCreationDisposition = OPEN_EXISTING; break;
    +
    2748 case mode_truncate_existing: dwCreationDisposition = TRUNCATE_EXISTING; break;
    +
    2749 case mode_preserve_existing: dwCreationDisposition = OPEN_ALWAYS; break;
    +
    2750 case mode_create_new: dwCreationDisposition = CREATE_NEW; break;
    +
    2751 case mode_create: dwCreationDisposition = CREATE_ALWAYS; break;
    +
    2752 default: throw std::invalid_argument("invalid mode");
    +
    2753 }
    2754
    -
    2755 m_h = CreateFile(filename, dwDesiredAccess, dwShareMode, &sa, dwCreationDisposition, dwFlagsAndAttributes, NULL);
    -
    2756#else
    -
    2757 int flags = 0;
    -
    2758 switch (mode & (mode_for_reading | mode_for_writing)) {
    -
    2759 case mode_for_reading: flags |= O_RDONLY; break;
    -
    2760 case mode_for_writing: flags |= O_WRONLY; break;
    -
    2761 case mode_for_reading | mode_for_writing: flags |= O_RDWR; break;
    -
    2762 }
    -
    2763 switch (mode & mode_disposition_mask) {
    -
    2764 case mode_open_existing: break;
    -
    2765 case mode_truncate_existing: flags |= O_TRUNC; break;
    -
    2766 case mode_preserve_existing: flags |= O_CREAT; break;
    -
    2767 case mode_create_new: flags |= O_CREAT | O_EXCL; break;
    -
    2768 case mode_create: flags |= O_CREAT | O_TRUNC; break;
    -
    2769 default: throw std::invalid_argument("invalid mode");
    -
    2770 }
    -
    2771 if (mode & hint_write_thru) flags |= O_DSYNC;
    -
    2772#ifndef __APPLE__
    -
    2773 if (mode & hint_no_buffering) flags |= O_RSYNC;
    -
    2774#endif
    -
    2775
    -
    2776 m_h = ::open(filename, flags, DEFFILEMODE);
    -
    2777#endif
    -
    2778 if (m_h != invalid_handle) {
    -
    2779 m_state = state_t::ok;
    -
    2780 if (mode & mode_append)
    -
    2781 seek(0, seek_t::end);
    -
    2782 }
    -
    2783 else
    -
    2784 m_state = state_t::fail;
    -
    2785 }
    +
    2755 DWORD dwFlagsAndAttributes = FILE_ATTRIBUTE_NORMAL;
    +
    2756 if (mode & hint_write_thru) dwFlagsAndAttributes |= FILE_FLAG_WRITE_THROUGH;
    +
    2757 if (mode & hint_no_buffering) dwFlagsAndAttributes |= FILE_FLAG_NO_BUFFERING;
    +
    2758 if (mode & hint_random_access) dwFlagsAndAttributes |= FILE_FLAG_RANDOM_ACCESS;
    +
    2759 if (mode & hint_sequential_access) dwFlagsAndAttributes |= FILE_FLAG_SEQUENTIAL_SCAN;
    +
    2760
    +
    2761 m_h = CreateFile(filename, dwDesiredAccess, dwShareMode, &sa, dwCreationDisposition, dwFlagsAndAttributes, NULL);
    +
    2762#else
    +
    2763 int flags = 0;
    +
    2764 switch (mode & (mode_for_reading | mode_for_writing)) {
    +
    2765 case mode_for_reading: flags |= O_RDONLY; break;
    +
    2766 case mode_for_writing: flags |= O_WRONLY; break;
    +
    2767 case mode_for_reading | mode_for_writing: flags |= O_RDWR; break;
    +
    2768 }
    +
    2769 switch (mode & mode_disposition_mask) {
    +
    2770 case mode_open_existing: break;
    +
    2771 case mode_truncate_existing: flags |= O_TRUNC; break;
    +
    2772 case mode_preserve_existing: flags |= O_CREAT; break;
    +
    2773 case mode_create_new: flags |= O_CREAT | O_EXCL; break;
    +
    2774 case mode_create: flags |= O_CREAT | O_TRUNC; break;
    +
    2775 default: throw std::invalid_argument("invalid mode");
    +
    2776 }
    +
    2777 if (mode & hint_write_thru) flags |= O_DSYNC;
    +
    2778#ifndef __APPLE__
    +
    2779 if (mode & hint_no_buffering) flags |= O_RSYNC;
    +
    2780#endif
    +
    2781
    +
    2782 m_h = ::open(filename, flags, DEFFILEMODE);
    +
    2783#endif
    +
    2784 if (m_h != invalid_handle) {
    +
    2785 m_state = state_t::ok;
    +
    2786 if (mode & mode_append)
    +
    2787 seek(0, seek_t::end);
    +
    2788 }
    +
    2789 else
    +
    2790 m_state = state_t::fail;
    +
    2791 }
    -
    2786
    -
    -
    2793 inline void open(_In_ const stdex::sstring& filename, _In_ int mode)
    -
    2794 {
    -
    2795 open(filename.c_str(), mode);
    -
    2796 }
    +
    2792
    +
    +
    2799 inline void open(_In_ const stdex::sstring& filename, _In_ int mode)
    +
    2800 {
    +
    2801 open(filename.c_str(), mode);
    +
    2802 }
    -
    2797
    -
    -
    2798 virtual fpos_t seek(_In_ foff_t offset, _In_ seek_t how = seek_t::beg)
    -
    2799 {
    -
    2800#ifdef _WIN32
    -
    2801 LARGE_INTEGER li;
    -
    2802 li.QuadPart = offset;
    -
    2803 li.LowPart = SetFilePointer(m_h, li.LowPart, &li.HighPart, static_cast<DWORD>(how));
    -
    2804 if (li.LowPart != 0xFFFFFFFF || GetLastError() == NO_ERROR) {
    -
    2805 m_state = state_t::ok;
    -
    2806 return li.QuadPart;
    -
    2807 }
    -
    2808#else
    -
    2809 off64_t result = lseek64(m_h, offset, static_cast<int>(how));
    -
    2810 if (result >= 0) {
    +
    2803
    +
    +
    2804 virtual fpos_t seek(_In_ foff_t offset, _In_ seek_t how = seek_t::beg)
    +
    2805 {
    +
    2806#ifdef _WIN32
    +
    2807 LARGE_INTEGER li;
    +
    2808 li.QuadPart = offset;
    +
    2809 li.LowPart = SetFilePointer(m_h, li.LowPart, &li.HighPart, static_cast<DWORD>(how));
    +
    2810 if (li.LowPart != 0xFFFFFFFF || GetLastError() == NO_ERROR) {
    2811 m_state = state_t::ok;
    -
    2812 return result;
    +
    2812 return li.QuadPart;
    2813 }
    -
    2814#endif
    -
    2815 m_state = state_t::fail;
    -
    2816 return fpos_max;
    -
    2817 }
    +
    2814#else
    +
    2815 off64_t result = lseek64(m_h, offset, static_cast<int>(how));
    +
    2816 if (result >= 0) {
    +
    2817 m_state = state_t::ok;
    +
    2818 return result;
    +
    2819 }
    +
    2820#endif
    +
    2821 m_state = state_t::fail;
    +
    2822 return fpos_max;
    +
    2823 }
    -
    2818
    -
    -
    2819 virtual fpos_t tell() const
    -
    2820 {
    -
    2821 if (m_h != invalid_handle) {
    -
    2822#ifdef _WIN32
    -
    2823 LARGE_INTEGER li;
    -
    2824 li.QuadPart = 0;
    -
    2825 li.LowPart = SetFilePointer(m_h, 0, &li.HighPart, FILE_CURRENT);
    -
    2826 if (li.LowPart != 0xFFFFFFFF || GetLastError() == NO_ERROR)
    -
    2827 return li.QuadPart;
    -
    2828#else
    -
    2829 off64_t result = lseek64(m_h, 0, SEEK_CUR);
    -
    2830 if (result >= 0)
    -
    2831 return result;
    -
    2832#endif
    -
    2833 }
    -
    2834 return fpos_max;
    -
    2835 }
    +
    2824
    +
    +
    2825 virtual fpos_t tell() const
    +
    2826 {
    +
    2827 if (m_h != invalid_handle) {
    +
    2828#ifdef _WIN32
    +
    2829 LARGE_INTEGER li;
    +
    2830 li.QuadPart = 0;
    +
    2831 li.LowPart = SetFilePointer(m_h, 0, &li.HighPart, FILE_CURRENT);
    +
    2832 if (li.LowPart != 0xFFFFFFFF || GetLastError() == NO_ERROR)
    +
    2833 return li.QuadPart;
    +
    2834#else
    +
    2835 off64_t result = lseek64(m_h, 0, SEEK_CUR);
    +
    2836 if (result >= 0)
    +
    2837 return result;
    +
    2838#endif
    +
    2839 }
    +
    2840 return fpos_max;
    +
    2841 }
    -
    2836
    -
    -
    2837 virtual void lock(_In_ fpos_t offset, _In_ fsize_t length)
    -
    2838 {
    -
    2839#ifdef _WIN32
    -
    2840 LARGE_INTEGER liOffset;
    -
    2841 LARGE_INTEGER liSize;
    -
    2842 liOffset.QuadPart = offset;
    -
    2843 liSize.QuadPart = length;
    -
    2844 if (LockFile(m_h, liOffset.LowPart, liOffset.HighPart, liSize.LowPart, liSize.HighPart)) {
    -
    2845 m_state = state_t::ok;
    -
    2846 return;
    -
    2847 }
    -
    2848#else
    -
    2849 off64_t orig = lseek64(m_h, 0, SEEK_CUR);
    -
    2850 if (orig >= 0) {
    -
    2851 m_state = lseek64(m_h, offset, SEEK_SET) >= 0 && lockf64(m_h, F_LOCK, length) >= 0 ? state_t::ok : state_t::fail;
    -
    2852 lseek64(m_h, orig, SEEK_SET);
    -
    2853 m_state = state_t::ok;
    -
    2854 return;
    -
    2855 }
    -
    2856#endif
    -
    2857 m_state = state_t::fail;
    -
    2858 }
    +
    2842
    +
    +
    2843 virtual void lock(_In_ fpos_t offset, _In_ fsize_t length)
    +
    2844 {
    +
    2845#ifdef _WIN32
    +
    2846 LARGE_INTEGER liOffset;
    +
    2847 LARGE_INTEGER liSize;
    +
    2848 liOffset.QuadPart = offset;
    +
    2849 liSize.QuadPart = length;
    +
    2850 if (LockFile(m_h, liOffset.LowPart, liOffset.HighPart, liSize.LowPart, liSize.HighPart)) {
    +
    2851 m_state = state_t::ok;
    +
    2852 return;
    +
    2853 }
    +
    2854#else
    +
    2855 off64_t orig = lseek64(m_h, 0, SEEK_CUR);
    +
    2856 if (orig >= 0) {
    +
    2857 m_state = lseek64(m_h, offset, SEEK_SET) >= 0 && lockf64(m_h, F_LOCK, length) >= 0 ? state_t::ok : state_t::fail;
    +
    2858 lseek64(m_h, orig, SEEK_SET);
    +
    2859 m_state = state_t::ok;
    +
    2860 return;
    +
    2861 }
    +
    2862#endif
    +
    2863 m_state = state_t::fail;
    +
    2864 }
    -
    2859
    -
    -
    2860 virtual void unlock(_In_ fpos_t offset, _In_ fsize_t length)
    -
    2861 {
    -
    2862#ifdef _WIN32
    -
    2863 LARGE_INTEGER liOffset;
    -
    2864 LARGE_INTEGER liSize;
    -
    2865 liOffset.QuadPart = offset;
    -
    2866 liSize.QuadPart = length;
    -
    2867 if (UnlockFile(m_h, liOffset.LowPart, liOffset.HighPart, liSize.LowPart, liSize.HighPart)) {
    -
    2868 m_state = state_t::ok;
    -
    2869 return;
    -
    2870 }
    -
    2871#else
    -
    2872 off64_t orig = lseek64(m_h, 0, SEEK_CUR);
    -
    2873 if (orig >= 0) {
    -
    2874 if (lseek64(m_h, offset, SEEK_SET) >= 0 && lockf64(m_h, F_ULOCK, length) >= 0) {
    -
    2875 lseek64(m_h, orig, SEEK_SET);
    -
    2876 m_state = state_t::ok;
    -
    2877 return;
    -
    2878 }
    -
    2879 lseek64(m_h, orig, SEEK_SET);
    -
    2880 }
    -
    2881#endif
    -
    2882 m_state = state_t::fail;
    -
    2883 }
    +
    2865
    +
    +
    2866 virtual void unlock(_In_ fpos_t offset, _In_ fsize_t length)
    +
    2867 {
    +
    2868#ifdef _WIN32
    +
    2869 LARGE_INTEGER liOffset;
    +
    2870 LARGE_INTEGER liSize;
    +
    2871 liOffset.QuadPart = offset;
    +
    2872 liSize.QuadPart = length;
    +
    2873 if (UnlockFile(m_h, liOffset.LowPart, liOffset.HighPart, liSize.LowPart, liSize.HighPart)) {
    +
    2874 m_state = state_t::ok;
    +
    2875 return;
    +
    2876 }
    +
    2877#else
    +
    2878 off64_t orig = lseek64(m_h, 0, SEEK_CUR);
    +
    2879 if (orig >= 0) {
    +
    2880 if (lseek64(m_h, offset, SEEK_SET) >= 0 && lockf64(m_h, F_ULOCK, length) >= 0) {
    +
    2881 lseek64(m_h, orig, SEEK_SET);
    +
    2882 m_state = state_t::ok;
    +
    2883 return;
    +
    2884 }
    +
    2885 lseek64(m_h, orig, SEEK_SET);
    +
    2886 }
    +
    2887#endif
    +
    2888 m_state = state_t::fail;
    +
    2889 }
    -
    2884
    -
    -
    2885 virtual fsize_t size()
    -
    2886 {
    -
    2887#ifdef _WIN32
    -
    2888 LARGE_INTEGER li;
    -
    2889 li.LowPart = GetFileSize(m_h, (LPDWORD)&li.HighPart);
    -
    2890 if (li.LowPart == 0xFFFFFFFF && GetLastError() != NO_ERROR)
    -
    2891 li.QuadPart = -1;
    -
    2892 return li.QuadPart;
    -
    2893#else
    -
    2894 off64_t length = -1, orig = lseek64(m_h, 0, SEEK_CUR);
    -
    2895 if (orig >= 0) {
    -
    2896 length = lseek64(m_h, 0, SEEK_END);
    -
    2897 lseek64(m_h, orig, SEEK_SET);
    -
    2898 }
    -
    2899 return length;
    -
    2900#endif
    -
    2901 }
    +
    2890
    +
    +
    2891 virtual fsize_t size() const
    +
    2892 {
    +
    2893#ifdef _WIN32
    +
    2894 LARGE_INTEGER li;
    +
    2895 li.LowPart = GetFileSize(m_h, (LPDWORD)&li.HighPart);
    +
    2896 if (li.LowPart == 0xFFFFFFFF && GetLastError() != NO_ERROR)
    +
    2897 li.QuadPart = -1;
    +
    2898 return li.QuadPart;
    +
    2899#else
    +
    2900 off64_t length = -1, orig = lseek64(m_h, 0, SEEK_CUR);
    +
    2901 if (orig >= 0) {
    +
    2902 length = lseek64(m_h, 0, SEEK_END);
    +
    2903 lseek64(m_h, orig, SEEK_SET);
    +
    2904 }
    +
    2905 return length;
    +
    2906#endif
    +
    2907 }
    -
    2902
    -
    -
    2903 virtual void truncate()
    -
    2904 {
    -
    2905#ifdef _WIN32
    -
    2906 if (SetEndOfFile(m_h)) {
    -
    2907 m_state = state_t::ok;
    -
    2908 return;
    -
    2909 }
    -
    2910#else
    -
    2911 off64_t length = lseek64(m_h, 0, SEEK_CUR);
    -
    2912 if (length >= 0 && ftruncate64(m_h, length) >= 0) {
    +
    2908
    +
    +
    2909 virtual void truncate()
    +
    2910 {
    +
    2911#ifdef _WIN32
    +
    2912 if (SetEndOfFile(m_h)) {
    2913 m_state = state_t::ok;
    2914 return;
    2915 }
    -
    2916#endif
    -
    2917 m_state = state_t::fail;
    -
    2918 }
    +
    2916#else
    +
    2917 off64_t length = lseek64(m_h, 0, SEEK_CUR);
    +
    2918 if (length >= 0 && ftruncate64(m_h, length) >= 0) {
    +
    2919 m_state = state_t::ok;
    +
    2920 return;
    +
    2921 }
    +
    2922#endif
    +
    2923 m_state = state_t::fail;
    +
    2924 }
    -
    2919
    -
    2920#ifdef _WIN32
    -
    2921 static inline time_point ft2tp(_In_ const FILETIME& ft)
    -
    2922 {
    -
    2923#if _HAS_CXX20
    -
    2924 uint64_t t = (static_cast<int64_t>(ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
    -
    2925#else
    -
    2926 uint64_t t = ((static_cast<int64_t>(ft.dwHighDateTime) << 32) | ft.dwLowDateTime) - 116444736000000000ll;
    -
    2927#endif
    -
    2928 return time_point(time_point::duration(t));
    -
    2929 }
    -
    2930
    -
    2931 static inline void tp2ft(_In_ time_point tp, _Out_ FILETIME& ft)
    -
    2932 {
    -
    2933#if _HAS_CXX20
    -
    2934 uint64_t t = tp.time_since_epoch().count();
    -
    2935#else
    -
    2936 uint64_t t = tp.time_since_epoch().count() + 116444736000000000ll;
    -
    2937#endif
    -
    2938 ft.dwHighDateTime = static_cast<DWORD>((t >> 32) & 0xffffffff);
    -
    2939 ft.dwLowDateTime = static_cast<DWORD>(t & 0xffffffff);
    -
    2940 }
    -
    2941#endif
    -
    2942
    -
    -
    2943 virtual time_point ctime() const
    -
    2944 {
    -
    2945#ifdef _WIN32
    -
    2946 FILETIME ft;
    -
    2947 if (GetFileTime(m_h, &ft, nullptr, nullptr))
    -
    2948 return ft2tp(ft);
    -
    2949#endif
    -
    2950 return time_point::min();
    -
    2951 }
    +
    2925
    +
    2926#ifdef _WIN32
    +
    2927 static inline time_point ft2tp(_In_ const FILETIME& ft)
    +
    2928 {
    +
    2929#if _HAS_CXX20
    +
    2930 uint64_t t = (static_cast<int64_t>(ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
    +
    2931#else
    +
    2932 uint64_t t = ((static_cast<int64_t>(ft.dwHighDateTime) << 32) | ft.dwLowDateTime) - 116444736000000000ll;
    +
    2933#endif
    +
    2934 return time_point(time_point::duration(t));
    +
    2935 }
    +
    2936
    +
    2937 static inline void tp2ft(_In_ time_point tp, _Out_ FILETIME& ft)
    +
    2938 {
    +
    2939#if _HAS_CXX20
    +
    2940 uint64_t t = tp.time_since_epoch().count();
    +
    2941#else
    +
    2942 uint64_t t = tp.time_since_epoch().count() + 116444736000000000ll;
    +
    2943#endif
    +
    2944 ft.dwHighDateTime = static_cast<DWORD>((t >> 32) & 0xffffffff);
    +
    2945 ft.dwLowDateTime = static_cast<DWORD>(t & 0xffffffff);
    +
    2946 }
    +
    2947#endif
    +
    2948
    +
    +
    2949 virtual time_point ctime() const
    +
    2950 {
    +
    2951#ifdef _WIN32
    +
    2952 FILETIME ft;
    +
    2953 if (GetFileTime(m_h, &ft, nullptr, nullptr))
    +
    2954 return ft2tp(ft);
    +
    2955#endif
    +
    2956 return time_point::min();
    +
    2957 }
    -
    2952
    -
    -
    2953 virtual time_point atime() const
    -
    2954 {
    -
    2955#ifdef _WIN32
    -
    2956 FILETIME ft;
    -
    2957 if (GetFileTime(m_h, nullptr, &ft, nullptr))
    -
    2958 return ft2tp(ft);
    -
    2959#else
    -
    2960 struct stat buf;
    -
    2961 if (fstat(m_h, &buf) >= 0)
    -
    2962 return clock::from_time_t(buf.st_atime);
    -
    2963#endif
    -
    2964 return time_point::min();
    -
    2965 }
    +
    2958
    +
    +
    2959 virtual time_point atime() const
    +
    2960 {
    +
    2961#ifdef _WIN32
    +
    2962 FILETIME ft;
    +
    2963 if (GetFileTime(m_h, nullptr, &ft, nullptr))
    +
    2964 return ft2tp(ft);
    +
    2965#else
    +
    2966 struct stat buf;
    +
    2967 if (fstat(m_h, &buf) >= 0)
    +
    2968 return clock::from_time_t(buf.st_atime);
    +
    2969#endif
    +
    2970 return time_point::min();
    +
    2971 }
    -
    2966
    -
    -
    2967 virtual time_point mtime() const
    -
    2968 {
    -
    2969#ifdef _WIN32
    -
    2970 FILETIME ft;
    -
    2971 if (GetFileTime(m_h, nullptr, nullptr, &ft))
    -
    2972 return ft2tp(ft);
    -
    2973#else
    -
    2974 struct stat buf;
    -
    2975 if (fstat(m_h, &buf) >= 0)
    -
    2976 return clock::from_time_t(buf.st_mtime);
    -
    2977#endif
    -
    2978 return time_point::min();
    -
    2979 }
    +
    2972
    +
    +
    2973 virtual time_point mtime() const
    +
    2974 {
    +
    2975#ifdef _WIN32
    +
    2976 FILETIME ft;
    +
    2977 if (GetFileTime(m_h, nullptr, nullptr, &ft))
    +
    2978 return ft2tp(ft);
    +
    2979#else
    +
    2980 struct stat buf;
    +
    2981 if (fstat(m_h, &buf) >= 0)
    +
    2982 return clock::from_time_t(buf.st_mtime);
    +
    2983#endif
    +
    2984 return time_point::min();
    +
    2985 }
    -
    2980
    -
    -
    2981 virtual void set_ctime(time_point date)
    -
    2982 {
    -
    2983 _Assume_(m_h != invalid_handle);
    -
    2984#ifdef _WIN32
    -
    2985 FILETIME ft;
    -
    2986 tp2ft(date, ft);
    -
    2987 if (SetFileTime(m_h, &ft, nullptr, nullptr))
    -
    2988 return;
    -
    2989 throw std::system_error(GetLastError(), std::system_category(), "SetFileTime failed");
    -
    2990#else
    -
    2991 throw std::runtime_error("not supported");
    -
    2992#endif
    -
    2993 }
    +
    2986
    +
    +
    2987 virtual void set_ctime(time_point date)
    +
    2988 {
    +
    2989 _Assume_(m_h != invalid_handle);
    +
    2990#ifdef _WIN32
    +
    2991 FILETIME ft;
    +
    2992 tp2ft(date, ft);
    +
    2993 if (SetFileTime(m_h, &ft, nullptr, nullptr))
    +
    2994 return;
    +
    2995 throw std::system_error(GetLastError(), std::system_category(), "SetFileTime failed");
    +
    2996#else
    +
    2997 throw std::runtime_error("not supported");
    +
    2998#endif
    +
    2999 }
    -
    2994
    -
    -
    2995 virtual void set_atime(time_point date)
    -
    2996 {
    -
    2997 _Assume_(m_h != invalid_handle);
    -
    2998#ifdef _WIN32
    -
    2999 FILETIME ft;
    -
    3000 tp2ft(date, ft);
    -
    3001 if (SetFileTime(m_h, nullptr, &ft, nullptr))
    -
    3002 return;
    -
    3003 throw std::system_error(GetLastError(), std::system_category(), "SetFileTime failed");
    -
    3004#else
    -
    3005 struct timespec ts[2] = {
    -
    3006 { date.time_since_epoch().count(), 0 },
    -
    3007 { 0, UTIME_OMIT },
    -
    3008 };
    -
    3009 if (futimens(m_h, ts) >= 0)
    -
    3010 return;
    -
    3011 throw std::system_error(errno, std::system_category(), "futimens failed");
    -
    3012#endif
    -
    3013 }
    +
    3000
    +
    +
    3001 virtual void set_atime(time_point date)
    +
    3002 {
    +
    3003 _Assume_(m_h != invalid_handle);
    +
    3004#ifdef _WIN32
    +
    3005 FILETIME ft;
    +
    3006 tp2ft(date, ft);
    +
    3007 if (SetFileTime(m_h, nullptr, &ft, nullptr))
    +
    3008 return;
    +
    3009 throw std::system_error(GetLastError(), std::system_category(), "SetFileTime failed");
    +
    3010#else
    +
    3011 struct timespec ts[2] = {
    +
    3012 { date.time_since_epoch().count(), 0 },
    +
    3013 { 0, UTIME_OMIT },
    +
    3014 };
    +
    3015 if (futimens(m_h, ts) >= 0)
    +
    3016 return;
    +
    3017 throw std::system_error(errno, std::system_category(), "futimens failed");
    +
    3018#endif
    +
    3019 }
    -
    3014
    -
    -
    3015 virtual void set_mtime(time_point date)
    -
    3016 {
    -
    3017#ifdef _WIN32
    -
    3018 FILETIME ft;
    -
    3019 tp2ft(date, ft);
    -
    3020 if (SetFileTime(m_h, nullptr, nullptr, &ft))
    -
    3021 return;
    -
    3022 throw std::system_error(GetLastError(), std::system_category(), "SetFileTime failed");
    -
    3023#else
    -
    3024 struct timespec ts[2] = {
    -
    3025 { 0, UTIME_OMIT },
    -
    3026 { date.time_since_epoch().count(), 0 },
    -
    3027 };
    -
    3028 if (futimens(m_h, ts) >= 0)
    -
    3029 return;
    -
    3030 throw std::system_error(errno, std::system_category(), "futimens failed");
    -
    3031#endif
    -
    3032 }
    +
    3020
    +
    +
    3021 virtual void set_mtime(time_point date)
    +
    3022 {
    +
    3023#ifdef _WIN32
    +
    3024 FILETIME ft;
    +
    3025 tp2ft(date, ft);
    +
    3026 if (SetFileTime(m_h, nullptr, nullptr, &ft))
    +
    3027 return;
    +
    3028 throw std::system_error(GetLastError(), std::system_category(), "SetFileTime failed");
    +
    3029#else
    +
    3030 struct timespec ts[2] = {
    +
    3031 { 0, UTIME_OMIT },
    +
    3032 { date.time_since_epoch().count(), 0 },
    +
    3033 };
    +
    3034 if (futimens(m_h, ts) >= 0)
    +
    3035 return;
    +
    3036 throw std::system_error(errno, std::system_category(), "futimens failed");
    +
    3037#endif
    +
    3038 }
    -
    3033
    -
    -
    3039 static bool exists(_In_z_ const stdex::schar_t* filename)
    -
    3040 {
    -
    3041#ifdef _WIN32
    -
    3042 return GetFileAttributes(filename) != INVALID_FILE_ATTRIBUTES;
    -
    3043#else
    -
    3044 struct stat s;
    -
    3045 return stat(filename, &s) == 0;
    -
    3046#endif
    -
    3047 }
    +
    3039
    +
    +
    3045 static bool exists(_In_z_ const stdex::schar_t* filename)
    +
    3046 {
    +
    3047#ifdef _WIN32
    +
    3048 return GetFileAttributes(filename) != INVALID_FILE_ATTRIBUTES;
    +
    3049#else
    +
    3050 struct stat s;
    +
    3051 return stat(filename, &s) == 0;
    +
    3052#endif
    +
    3053 }
    -
    3048
    -
    -
    3054 static inline bool exists(_In_ const stdex::sstring& filename)
    -
    3055 {
    -
    3056 return exists(filename.c_str());
    -
    3057 }
    +
    3054
    +
    +
    3060 static inline bool exists(_In_ const stdex::sstring& filename)
    +
    3061 {
    +
    3062 return exists(filename.c_str());
    +
    3063 }
    -
    3058
    -
    -
    3066 static bool readonly(_In_z_ const stdex::schar_t* filename)
    -
    3067 {
    -
    3068#ifdef _WIN32
    -
    3069 DWORD dwAttr = GetFileAttributes(filename);
    -
    3070 return dwAttr != INVALID_FILE_ATTRIBUTES && (dwAttr & FILE_ATTRIBUTE_READONLY) != 0;
    -
    3071#else
    -
    3072 struct stat s;
    -
    3073 return stat(filename, &s) == 0 && (s.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH)) == 0;
    -
    3074#endif
    -
    3075 }
    +
    3064
    +
    +
    3072 static bool readonly(_In_z_ const stdex::schar_t* filename)
    +
    3073 {
    +
    3074#ifdef _WIN32
    +
    3075 DWORD dwAttr = GetFileAttributes(filename);
    +
    3076 return dwAttr != INVALID_FILE_ATTRIBUTES && (dwAttr & FILE_ATTRIBUTE_READONLY) != 0;
    +
    3077#else
    +
    3078 struct stat s;
    +
    3079 return stat(filename, &s) == 0 && (s.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH)) == 0;
    +
    3080#endif
    +
    3081 }
    -
    3076
    -
    -
    3084 static inline bool readonly(_In_ const stdex::sstring& filename)
    -
    3085 {
    -
    3086 return readonly(filename.c_str());
    -
    3087 }
    +
    3082
    +
    +
    3090 static inline bool readonly(_In_ const stdex::sstring& filename)
    +
    3091 {
    +
    3092 return readonly(filename.c_str());
    +
    3093 }
    -
    3088 };
    +
    3094 };
    -
    3089#pragma warning(pop)
    -
    3090
    -
    -
    3094 class cached_file : public cache
    -
    3095 {
    -
    3096 public:
    -
    3097 cached_file(_In_opt_ sys_handle h = invalid_handle, _In_ state_t state = state_t::ok, _In_ size_t cache_size = default_cache_size) :
    -
    3098 cache(cache_size),
    -
    3099 m_source(h, state)
    -
    3100 {
    -
    3101 init(m_source);
    -
    3102 }
    -
    3103
    -
    -
    3111 cached_file(_In_z_ const schar_t* filename, _In_ int mode, _In_ size_t cache_size = default_cache_size) :
    -
    3112 cache(cache_size),
    -
    3113 m_source(filename, mode & mode_for_writing ? mode | mode_for_reading : mode)
    -
    3114 {
    -
    3115 init(m_source);
    -
    3116 }
    +
    3095#pragma warning(pop)
    +
    3096
    +
    +
    3100 class cached_file : public cache
    +
    3101 {
    +
    3102 public:
    +
    3103 cached_file(_In_opt_ sys_handle h = invalid_handle, _In_ state_t state = state_t::ok, _In_ size_t cache_size = default_cache_size) :
    +
    3104 cache(cache_size),
    +
    3105 m_source(h, state)
    +
    3106 {
    +
    3107 init(m_source);
    +
    3108 }
    +
    3109
    +
    +
    3117 cached_file(_In_z_ const schar_t* filename, _In_ int mode, _In_ size_t cache_size = default_cache_size) :
    +
    3118 cache(cache_size),
    +
    3119 m_source(filename, mode & mode_for_writing ? mode | mode_for_reading : mode)
    +
    3120 {
    +
    3121 init(m_source);
    +
    3122 }
    -
    3117
    -
    3125 inline cached_file(_In_ const stdex::sstring& filename, _In_ int mode, _In_ size_t cache_size = default_cache_size) : cached_file(filename.c_str(), mode, cache_size) {}
    -
    3126
    -
    3127 virtual ~cached_file()
    -
    3128 {
    -
    3129 done();
    -
    3130 }
    -
    3131
    -
    -
    3138 void open(_In_z_ const schar_t* filename, _In_ int mode)
    -
    3139 {
    -
    3140 invalidate_cache();
    -
    3141 if (!ok()) _Unlikely_{
    -
    3142 m_state = state_t::fail;
    -
    3143 return;
    -
    3144 }
    -
    3145 m_source.open(filename, mode & mode_for_writing ? mode | mode_for_reading : mode);
    -
    3146 if (m_source.ok()) {
    -
    3147 init();
    -
    3148 return;
    -
    3149 }
    -
    3150 m_state = state_t::fail;
    -
    3151 }
    +
    3123
    +
    3131 inline cached_file(_In_ const stdex::sstring& filename, _In_ int mode, _In_ size_t cache_size = default_cache_size) : cached_file(filename.c_str(), mode, cache_size) {}
    +
    3132
    +
    3133 virtual ~cached_file()
    +
    3134 {
    +
    3135 done();
    +
    3136 }
    +
    3137
    +
    +
    3144 void open(_In_z_ const schar_t* filename, _In_ int mode)
    +
    3145 {
    +
    3146 invalidate_cache();
    +
    3147 if (!ok()) _Unlikely_{
    +
    3148 m_state = state_t::fail;
    +
    3149 return;
    +
    3150 }
    +
    3151 m_source.open(filename, mode & mode_for_writing ? mode | mode_for_reading : mode);
    +
    3152 if (m_source.ok()) {
    +
    3153 init();
    +
    3154 return;
    +
    3155 }
    +
    3156 m_state = state_t::fail;
    +
    3157 }
    -
    3152
    -
    -
    3159 inline void open(_In_ const stdex::sstring& filename, _In_ int mode)
    -
    3160 {
    -
    3161 open(filename.c_str(), mode);
    -
    3162 }
    +
    3158
    +
    +
    3165 inline void open(_In_ const stdex::sstring& filename, _In_ int mode)
    +
    3166 {
    +
    3167 open(filename.c_str(), mode);
    +
    3168 }
    -
    3163
    -
    3164 protected:
    -
    3165 file m_source;
    -
    3166 };
    +
    3169
    +
    3170 protected:
    +
    3171 file m_source;
    +
    3172 };
    -
    3167
    -
    - -
    3172 {
    -
    3173 public:
    -
    3174 memory_file(_In_ state_t state = state_t::ok) :
    -
    3175 basic(state),
    -
    3176 m_data(nullptr),
    -
    3177 m_offset(0),
    -
    3178 m_size(0),
    -
    3179 m_reserved(0),
    -
    3180 m_manage(true)
    -
    3181 {
    -
    3182#if SET_FILE_OP_TIMES
    -
    3183 m_ctime = m_atime = m_mtime = time_point::now();
    -
    3184#endif
    -
    3185 }
    -
    3186
    -
    -
    3193 memory_file(_In_ size_t size, _In_ state_t state = state_t::ok) :
    -
    3194 basic(state),
    -
    3195 m_data(reinterpret_cast<uint8_t*>(malloc(size))),
    -
    3196 m_offset(0),
    -
    3197 m_size(0),
    - -
    3199 m_manage(true)
    -
    3200 {
    -
    3201 if (!m_data)
    -
    3202 throw std::bad_alloc();
    -
    3203#if SET_FILE_OP_TIMES
    -
    3204 m_ctime = m_atime = m_mtime = time_point::now();
    -
    3205#endif
    -
    3206 }
    +
    3173
    +
    + +
    3178 {
    +
    3179 public:
    +
    3180 memory_file(_In_ state_t state = state_t::ok) :
    +
    3181 basic(state),
    +
    3182 m_data(nullptr),
    +
    3183 m_offset(0),
    +
    3184 m_size(0),
    +
    3185 m_reserved(0),
    +
    3186 m_manage(true)
    +
    3187 {
    +
    3188#if SET_FILE_OP_TIMES
    +
    3189 m_ctime = m_atime = m_mtime = time_point::now();
    +
    3190#endif
    +
    3191 }
    +
    3192
    +
    +
    3199 memory_file(_In_ size_t size, _In_ state_t state = state_t::ok) :
    +
    3200 basic(state),
    +
    3201 m_data(reinterpret_cast<uint8_t*>(malloc(size))),
    +
    3202 m_offset(0),
    +
    3203 m_size(0),
    + +
    3205 m_manage(true)
    +
    3206 {
    +
    3207 if (!m_data)
    +
    3208 throw std::bad_alloc();
    +
    3209#if SET_FILE_OP_TIMES
    +
    3210 m_ctime = m_atime = m_mtime = time_point::now();
    +
    3211#endif
    +
    3212 }
    -
    3207
    -
    -
    3217 memory_file(_Inout_ void* data, _In_ size_t size, _In_ size_t reserved, _In_ bool manage = false, _In_ state_t state = state_t::ok) :
    -
    3218 basic(state),
    -
    3219 m_data(reinterpret_cast<uint8_t*>(data)),
    -
    3220 m_offset(0),
    -
    3221 m_size(size),
    -
    3222 m_reserved(reserved),
    -
    3223 m_manage(manage)
    -
    3224 {
    -
    3225 _Assume_(data || !size);
    -
    3226 _Assume_(reserved >= size);
    -
    3227#if SET_FILE_OP_TIMES
    -
    3228 m_ctime = m_atime = m_mtime = time_point::now();
    -
    3229#endif
    -
    3230 }
    +
    3213
    +
    +
    3223 memory_file(_Inout_ void* data, _In_ size_t size, _In_ size_t reserved, _In_ bool manage = false, _In_ state_t state = state_t::ok) :
    +
    3224 basic(state),
    +
    3225 m_data(reinterpret_cast<uint8_t*>(data)),
    +
    3226 m_offset(0),
    +
    3227 m_size(size),
    +
    3228 m_reserved(reserved),
    +
    3229 m_manage(manage)
    +
    3230 {
    +
    3231 _Assume_(data || !size);
    +
    3232 _Assume_(reserved >= size);
    +
    3233#if SET_FILE_OP_TIMES
    +
    3234 m_ctime = m_atime = m_mtime = time_point::now();
    +
    3235#endif
    +
    3236 }
    -
    3231
    -
    -
    3240 memory_file(_Inout_ void* data, _In_ size_t size, _In_ bool manage = false, _In_ state_t state = state_t::ok) :
    -
    3241 memory_file(data, size, size, manage, state)
    -
    3242 {}
    +
    3237
    +
    +
    3246 memory_file(_Inout_ void* data, _In_ size_t size, _In_ bool manage = false, _In_ state_t state = state_t::ok) :
    +
    3247 memory_file(data, size, size, manage, state)
    +
    3248 {}
    -
    3243
    -
    -
    3250 memory_file(_In_z_ const schar_t* filename, _In_ int mode) : memory_file()
    -
    3251 {
    -
    3252 load(filename, mode);
    -
    3253 }
    +
    3249
    +
    +
    3256 memory_file(_In_z_ const schar_t* filename, _In_ int mode) : memory_file()
    +
    3257 {
    +
    3258 load(filename, mode);
    +
    3259 }
    -
    3254
    -
    3261 inline memory_file(_In_ const stdex::sstring& filename, _In_ int mode) : memory_file(filename.c_str(), mode) {}
    -
    3262
    -
    3263 virtual ~memory_file()
    -
    3264 {
    -
    3265 if (m_manage && m_data)
    -
    3266 free(m_data);
    -
    3267 }
    +
    3260
    +
    3267 inline memory_file(_In_ const stdex::sstring& filename, _In_ int mode) : memory_file(filename.c_str(), mode) {}
    3268
    -
    -
    3275 void reserve(_In_ size_t required, _In_ bool tight = false) noexcept
    -
    3276 {
    -
    3277 if (required <= m_reserved && (!tight || required >= m_reserved)) {
    -
    3278 m_state = state_t::ok;
    -
    3279 return;
    -
    3280 }
    -
    3281 if (!m_manage) {
    -
    3282 m_state = state_t::fail;
    -
    3283 return;
    -
    3284 }
    -
    3285 size_t reserved = tight ? required : ((required + required / 4 + (default_block_size - 1)) / default_block_size) * default_block_size;
    -
    3286 auto data = reinterpret_cast<uint8_t*>(realloc(m_data, reserved));
    -
    3287 if (!data && reserved) _Unlikely_ {
    +
    3269 virtual ~memory_file()
    +
    3270 {
    +
    3271 if (m_manage && m_data)
    +
    3272 free(m_data);
    +
    3273 }
    +
    3274
    +
    +
    3281 void reserve(_In_ size_t required, _In_ bool tight = false) noexcept
    +
    3282 {
    +
    3283 if (required <= m_reserved && (!tight || required >= m_reserved)) {
    +
    3284 m_state = state_t::ok;
    +
    3285 return;
    +
    3286 }
    +
    3287 if (!m_manage) {
    3288 m_state = state_t::fail;
    3289 return;
    3290 }
    -
    3291 m_data = data;
    -
    3292 if (reserved < m_size)
    -
    3293 m_size = reserved;
    -
    3294 m_reserved = reserved;
    -
    3295 m_state = state_t::ok;
    -
    3296 }
    +
    3291 size_t reserved = tight ? required : ((required + required / 4 + (default_block_size - 1)) / default_block_size) * default_block_size;
    +
    3292 auto data = reinterpret_cast<uint8_t*>(realloc(m_data, reserved));
    +
    3293 if (!data && reserved) _Unlikely_ {
    +
    3294 m_state = state_t::fail;
    +
    3295 return;
    +
    3296 }
    +
    3297 m_data = data;
    +
    3298 if (reserved < m_size)
    +
    3299 m_size = reserved;
    +
    3300 m_reserved = reserved;
    +
    3301 m_state = state_t::ok;
    +
    3302 }
    -
    3297
    -
    -
    3304 void load(_In_z_ const schar_t* filename, _In_ int mode)
    -
    3305 {
    -
    3306 file f(filename, (mode & ~hint_random_access) | mode_for_reading | hint_sequential_access);
    -
    3307 if (!f.ok()) {
    -
    3308 m_state = state_t::fail;
    -
    3309 return;
    -
    3310 }
    -
    3311 fsize_t size = f.size();
    -
    3312 if (size > SIZE_MAX) {
    -
    3313 m_state = state_t::fail;
    -
    3314 return;
    -
    3315 }
    -
    3316 reserve(static_cast<size_t>(size), true);
    -
    3317 if (!ok()) _Unlikely_ {
    -
    3318 return;
    -
    3319 }
    -
    3320 m_offset = m_size = 0;
    -
    3321 write_stream(f);
    -
    3322 if (ok())
    -
    3323 m_offset = 0;
    -
    3324#if SET_FILE_OP_TIMES
    -
    3325 m_ctime = f.ctime();
    -
    3326 m_atime = f.atime();
    -
    3327 m_mtime = f.mtime();
    -
    3328#endif
    -
    3329 }
    +
    3303
    +
    +
    3310 void load(_In_z_ const schar_t* filename, _In_ int mode)
    +
    3311 {
    +
    3312 file f(filename, (mode & ~hint_random_access) | mode_for_reading | hint_sequential_access);
    +
    3313 if (!f.ok()) {
    +
    3314 m_state = state_t::fail;
    +
    3315 return;
    +
    3316 }
    +
    3317 fsize_t size = f.size();
    +
    3318 if (size > SIZE_MAX) {
    +
    3319 m_state = state_t::fail;
    +
    3320 return;
    +
    3321 }
    +
    3322 reserve(static_cast<size_t>(size), true);
    +
    3323 if (!ok()) _Unlikely_ {
    +
    3324 return;
    +
    3325 }
    +
    3326 m_offset = m_size = 0;
    +
    3327 write_stream(f);
    +
    3328 if (ok())
    +
    3329 m_offset = 0;
    +
    3330#if SET_FILE_OP_TIMES
    +
    3331 m_ctime = f.ctime();
    +
    3332 m_atime = f.atime();
    +
    3333 m_mtime = f.mtime();
    +
    3334#endif
    +
    3335 }
    -
    3330
    -
    -
    3337 inline void load(_In_ const stdex::sstring& filename, _In_ int mode)
    -
    3338 {
    -
    3339 load(filename.c_str(), mode);
    -
    3340 }
    +
    3336
    +
    +
    3343 inline void load(_In_ const stdex::sstring& filename, _In_ int mode)
    +
    3344 {
    +
    3345 load(filename.c_str(), mode);
    +
    3346 }
    -
    3341
    -
    -
    3348 void save(_In_z_ const schar_t* filename, _In_ int mode)
    -
    3349 {
    -
    3350 file f(filename, (mode & ~hint_random_access) | mode_for_writing | hint_sequential_access);
    -
    3351 if (!f.ok()) {
    -
    3352 m_state = state_t::fail;
    -
    3353 return;
    -
    3354 }
    -
    3355 f.write(m_data, m_size);
    -
    3356 if (!f.ok()) {
    -
    3357 m_state = state_t::fail;
    -
    3358 return;
    -
    3359 }
    -
    3360 f.truncate();
    -
    3361#if SET_FILE_OP_TIMES
    -
    3362 f.set_ctime(m_ctime);
    -
    3363 f.set_atime(m_atime);
    -
    3364 f.set_mtime(m_mtime);
    -
    3365#endif
    -
    3366 }
    +
    3347
    +
    +
    3354 void save(_In_z_ const schar_t* filename, _In_ int mode)
    +
    3355 {
    +
    3356 file f(filename, (mode & ~hint_random_access) | mode_for_writing | hint_sequential_access);
    +
    3357 if (!f.ok()) {
    +
    3358 m_state = state_t::fail;
    +
    3359 return;
    +
    3360 }
    +
    3361 f.write(m_data, m_size);
    +
    3362 if (!f.ok()) {
    +
    3363 m_state = state_t::fail;
    +
    3364 return;
    +
    3365 }
    +
    3366 f.truncate();
    +
    3367#if SET_FILE_OP_TIMES
    +
    3368 f.set_ctime(m_ctime);
    +
    3369 f.set_atime(m_atime);
    +
    3370 f.set_mtime(m_mtime);
    +
    3371#endif
    +
    3372 }
    -
    3367
    -
    -
    3374 inline void save(_In_ const stdex::sstring& filename, _In_ int mode)
    -
    3375 {
    -
    3376 save(filename.c_str(), mode);
    -
    3377 }
    +
    3373
    +
    +
    3380 inline void save(_In_ const stdex::sstring& filename, _In_ int mode)
    +
    3381 {
    +
    3382 save(filename.c_str(), mode);
    +
    3383 }
    -
    3378
    -
    3382 inline const void* data() const { return m_data; }
    -
    3383
    -
    -
    3384 virtual _Success_(return != 0 || length == 0) size_t read(
    -
    3385 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    -
    3386 {
    -
    3387 _Assume_(data || !length);
    -
    3388#if SET_FILE_OP_TIMES
    -
    3389 m_atime = time_point::now();
    -
    3390#endif
    -
    3391 size_t available = m_size - m_offset;
    -
    3392 if (length <= available) {
    -
    3393 memcpy(data, m_data + m_offset, length);
    -
    3394 m_offset += length;
    -
    3395 m_state = state_t::ok;
    -
    3396 return length;
    -
    3397 }
    -
    3398 if (length && !available) {
    -
    3399 m_state = state_t::eof;
    -
    3400 return 0;
    -
    3401 }
    -
    3402 memcpy(data, m_data + m_offset, available);
    -
    3403 m_offset += available;
    -
    3404 m_state = state_t::ok;
    -
    3405 return available;
    -
    3406 }
    +
    3384
    +
    3388 inline const void* data() const { return m_data; }
    +
    3389
    +
    +
    3390 virtual _Success_(return != 0 || length == 0) size_t read(
    +
    3391 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    3392 {
    +
    3393 _Assume_(data || !length);
    +
    3394#if SET_FILE_OP_TIMES
    +
    3395 m_atime = time_point::now();
    +
    3396#endif
    +
    3397 size_t available = m_size - m_offset;
    +
    3398 if (length <= available) {
    +
    3399 memcpy(data, m_data + m_offset, length);
    +
    3400 m_offset += length;
    +
    3401 m_state = state_t::ok;
    +
    3402 return length;
    +
    3403 }
    +
    3404 if (length && !available) {
    +
    3405 m_state = state_t::eof;
    +
    3406 return 0;
    +
    3407 }
    +
    3408 memcpy(data, m_data + m_offset, available);
    +
    3409 m_offset += available;
    +
    3410 m_state = state_t::ok;
    +
    3411 return available;
    +
    3412 }
    -
    3407
    -
    3422 template <class T>
    -
    -
    3423 inline memory_file& read_data(_Out_ T& data)
    -
    3424 {
    -
    3425#if SET_FILE_OP_TIMES
    -
    3426 m_atime = time_point::now();
    -
    3427#endif
    -
    3428 if (CHECK_STREAM_STATE && !ok()) _Unlikely_ {
    -
    3429 data = 0;
    -
    3430 return *this;
    -
    3431 }
    -
    3432 size_t end_offset = m_offset + sizeof(T);
    -
    3433 if (end_offset <= m_size) {
    -
    3434 data = LE2HE(*reinterpret_cast<T*>(m_data + m_offset));
    -
    3435 m_offset = end_offset;
    -
    3436#if !CHECK_STREAM_STATE
    -
    3437 m_state = state_t::ok;
    -
    3438#endif
    -
    3439 }
    -
    3440 else {
    -
    3441 data = 0;
    -
    3442 m_offset = m_size;
    -
    3443 m_state = state_t::eof;
    -
    3444 }
    -
    3445 return *this;
    -
    3446 }
    +
    3413
    +
    3428 template <class T>
    +
    +
    3429 inline memory_file& read_data(_Out_ T& data)
    +
    3430 {
    +
    3431#if SET_FILE_OP_TIMES
    +
    3432 m_atime = time_point::now();
    +
    3433#endif
    +
    3434 if (CHECK_STREAM_STATE && !ok()) _Unlikely_ {
    +
    3435 data = 0;
    +
    3436 return *this;
    +
    3437 }
    +
    3438 size_t end_offset = m_offset + sizeof(T);
    +
    3439 if (end_offset <= m_size) {
    +
    3440 data = LE2HE(*reinterpret_cast<T*>(m_data + m_offset));
    +
    3441 m_offset = end_offset;
    +
    3442#if !CHECK_STREAM_STATE
    +
    3443 m_state = state_t::ok;
    +
    3444#endif
    +
    3445 }
    +
    3446 else {
    +
    3447 data = 0;
    +
    3448 m_offset = m_size;
    +
    3449 m_state = state_t::eof;
    +
    3450 }
    +
    3451 return *this;
    +
    3452 }
    -
    3447
    -
    3462 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    -
    -
    3463 memory_file& read_str(_Inout_ std::basic_string<_Elem, _Traits, _Ax>&data)
    -
    3464 {
    -
    3465#if SET_FILE_OP_TIMES
    -
    3466 m_atime = time_point::now();
    -
    3467#endif
    -
    3468 if (CHECK_STREAM_STATE && !ok()) _Unlikely_ {
    -
    3469 data.clear();
    -
    3470 return *this;
    -
    3471 }
    -
    3472 size_t end_offset = m_offset + sizeof(uint32_t);
    -
    3473 if (end_offset <= m_size) {
    -
    3474 uint32_t num_chars = LE2HE(*reinterpret_cast<uint32_t*>(m_data + m_offset));
    -
    3475 m_offset = end_offset;
    -
    3476 end_offset = stdex::add(m_offset, stdex::mul(num_chars, sizeof(_Elem)));
    -
    3477 _Elem* start = reinterpret_cast<_Elem*>(m_data + m_offset);
    -
    3478 if (end_offset <= m_size) {
    -
    3479 data.assign(start, start + num_chars);
    -
    3480 m_offset = end_offset;
    -
    3481#if !CHECK_STREAM_STATE
    -
    3482 m_state = state_t::ok;
    -
    3483#endif
    -
    3484 return *this;
    -
    3485 }
    -
    3486 if (end_offset <= m_size)
    -
    3487 data.assign(start, reinterpret_cast<_Elem*>(m_data + m_size));
    -
    3488 }
    -
    3489 m_offset = m_size;
    -
    3490 m_state = state_t::eof;
    -
    3491 return *this;
    -
    3492 }
    +
    3453
    +
    3468 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    +
    +
    3469 memory_file& read_str(_Inout_ std::basic_string<_Elem, _Traits, _Ax>&data)
    +
    3470 {
    +
    3471#if SET_FILE_OP_TIMES
    +
    3472 m_atime = time_point::now();
    +
    3473#endif
    +
    3474 if (CHECK_STREAM_STATE && !ok()) _Unlikely_ {
    +
    3475 data.clear();
    +
    3476 return *this;
    +
    3477 }
    +
    3478 size_t end_offset = m_offset + sizeof(uint32_t);
    +
    3479 if (end_offset <= m_size) {
    +
    3480 uint32_t num_chars = LE2HE(*reinterpret_cast<uint32_t*>(m_data + m_offset));
    +
    3481 m_offset = end_offset;
    +
    3482 end_offset = stdex::add(m_offset, stdex::mul(num_chars, sizeof(_Elem)));
    +
    3483 _Elem* start = reinterpret_cast<_Elem*>(m_data + m_offset);
    +
    3484 if (end_offset <= m_size) {
    +
    3485 data.assign(start, start + num_chars);
    +
    3486 m_offset = end_offset;
    +
    3487#if !CHECK_STREAM_STATE
    +
    3488 m_state = state_t::ok;
    +
    3489#endif
    +
    3490 return *this;
    +
    3491 }
    +
    3492 if (end_offset <= m_size)
    +
    3493 data.assign(start, reinterpret_cast<_Elem*>(m_data + m_size));
    +
    3494 }
    +
    3495 m_offset = m_size;
    +
    3496 m_state = state_t::eof;
    +
    3497 return *this;
    +
    3498 }
    -
    3493
    -
    -
    3494 virtual _Success_(return != 0) size_t write(
    -
    3495 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    -
    3496 {
    -
    3497 _Assume_(data || !length);
    -
    3498#if SET_FILE_OP_TIMES
    -
    3499 m_atime = m_mtime = time_point::now();
    -
    3500#endif
    -
    3501 size_t end_offset = m_offset + length;
    -
    3502 if (end_offset > m_reserved) {
    -
    3503 reserve(end_offset);
    -
    3504 if (!ok()) _Unlikely_
    -
    3505 return 0;
    -
    3506 }
    -
    3507 memcpy(m_data + m_offset, data, length);
    -
    3508 m_offset = end_offset;
    -
    3509 if (m_offset > m_size)
    -
    3510 m_size = m_offset;
    -
    3511 m_state = state_t::ok;
    -
    3512 return length;
    -
    3513 }
    +
    3499
    +
    +
    3500 virtual _Success_(return != 0) size_t write(
    +
    3501 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    +
    3502 {
    +
    3503 _Assume_(data || !length);
    +
    3504#if SET_FILE_OP_TIMES
    +
    3505 m_atime = m_mtime = time_point::now();
    +
    3506#endif
    +
    3507 size_t end_offset = m_offset + length;
    +
    3508 if (end_offset > m_reserved) {
    +
    3509 reserve(end_offset);
    +
    3510 if (!ok()) _Unlikely_
    +
    3511 return 0;
    +
    3512 }
    +
    3513 memcpy(m_data + m_offset, data, length);
    +
    3514 m_offset = end_offset;
    +
    3515 if (m_offset > m_size)
    +
    3516 m_size = m_offset;
    +
    3517 m_state = state_t::ok;
    +
    3518 return length;
    +
    3519 }
    -
    3514
    -
    -
    3518 void write_byte(_In_ uint8_t byte, _In_ size_t amount = 1)
    -
    3519 {
    -
    3520#if SET_FILE_OP_TIMES
    -
    3521 m_atime = m_mtime = time_point::now();
    -
    3522#endif
    -
    3523 size_t end_offset = m_offset + amount;
    -
    3524 if (end_offset > m_reserved) {
    -
    3525 reserve(end_offset);
    -
    3526 if (!ok()) _Unlikely_
    -
    3527 return;
    -
    3528 }
    -
    3529 memset(m_data + m_offset, byte, amount);
    -
    3530 m_offset = end_offset;
    -
    3531 if (m_offset > m_size)
    -
    3532 m_size = m_offset;
    -
    3533 m_state = state_t::ok;
    -
    3534 }
    +
    3520
    +
    +
    3524 void write_byte(_In_ uint8_t byte, _In_ size_t amount = 1)
    +
    3525 {
    +
    3526#if SET_FILE_OP_TIMES
    +
    3527 m_atime = m_mtime = time_point::now();
    +
    3528#endif
    +
    3529 size_t end_offset = m_offset + amount;
    +
    3530 if (end_offset > m_reserved) {
    +
    3531 reserve(end_offset);
    +
    3532 if (!ok()) _Unlikely_
    +
    3533 return;
    +
    3534 }
    +
    3535 memset(m_data + m_offset, byte, amount);
    +
    3536 m_offset = end_offset;
    +
    3537 if (m_offset > m_size)
    +
    3538 m_size = m_offset;
    +
    3539 m_state = state_t::ok;
    +
    3540 }
    -
    3535
    -
    3550 template <class T>
    -
    -
    3551 inline memory_file& write_data(const T data)
    -
    3552 {
    -
    3553#if SET_FILE_OP_TIMES
    -
    3554 m_atime = m_mtime = time_point::now();
    -
    3555#endif
    -
    3556 if (CHECK_STREAM_STATE && !ok()) _Unlikely_
    -
    3557 return *this;
    -
    3558 size_t end_offset = m_offset + sizeof(T);
    -
    3559 if (end_offset > m_reserved) {
    -
    3560 reserve(end_offset);
    -
    3561 if (!ok()) _Unlikely_
    -
    3562 return *this;
    -
    3563 }
    -
    3564 (*reinterpret_cast<T*>(m_data + m_offset)) = HE2LE(data);
    -
    3565 m_offset = end_offset;
    -
    3566 if (m_offset > m_size)
    -
    3567 m_size = m_offset;
    -
    3568#if !CHECK_STREAM_STATE
    -
    3569 m_state = state_t::ok;
    -
    3570#endif
    -
    3571 return *this;
    -
    3572 }
    +
    3541
    +
    3556 template <class T>
    +
    +
    3557 inline memory_file& write_data(const T data)
    +
    3558 {
    +
    3559#if SET_FILE_OP_TIMES
    +
    3560 m_atime = m_mtime = time_point::now();
    +
    3561#endif
    +
    3562 if (CHECK_STREAM_STATE && !ok()) _Unlikely_
    +
    3563 return *this;
    +
    3564 size_t end_offset = m_offset + sizeof(T);
    +
    3565 if (end_offset > m_reserved) {
    +
    3566 reserve(end_offset);
    +
    3567 if (!ok()) _Unlikely_
    +
    3568 return *this;
    +
    3569 }
    +
    3570 (*reinterpret_cast<T*>(m_data + m_offset)) = HE2LE(data);
    +
    3571 m_offset = end_offset;
    +
    3572 if (m_offset > m_size)
    +
    3573 m_size = m_offset;
    +
    3574#if !CHECK_STREAM_STATE
    +
    3575 m_state = state_t::ok;
    +
    3576#endif
    +
    3577 return *this;
    +
    3578 }
    -
    3573
    -
    3588 template <class T>
    -
    -
    3589 inline memory_file& write_str(_In_z_ const T * data)
    -
    3590 {
    -
    3591#if SET_FILE_OP_TIMES
    -
    3592 m_atime = m_mtime = time_point::now();
    -
    3593#endif
    -
    3594 if (CHECK_STREAM_STATE && !ok()) _Unlikely_
    -
    3595 return *this;
    -
    3596 size_t num_chars = stdex::strlen(data);
    -
    3597 if (num_chars > UINT32_MAX)
    -
    3598 throw std::invalid_argument("string too long");
    -
    3599 size_t size_chars = num_chars * sizeof(T);
    -
    3600 size_t size = sizeof(uint32_t) + size_chars;
    -
    3601 size_t end_offset = m_offset + size;
    -
    3602 if (end_offset > m_reserved) {
    -
    3603 reserve(end_offset);
    -
    3604 if (!ok()) _Unlikely_
    -
    3605 return *this;
    -
    3606 }
    -
    3607 auto p = m_data + m_offset;
    -
    3608 *reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
    -
    3609 memcpy(p + sizeof(uint32_t), data, size_chars);
    -
    3610 m_offset = end_offset;
    -
    3611 if (m_offset > m_size)
    -
    3612 m_size = m_offset;
    -
    3613#if !CHECK_STREAM_STATE
    -
    3614 m_state = state_t::ok;
    -
    3615#endif
    -
    3616 return *this;
    -
    3617 }
    +
    3579
    +
    3594 template <class T>
    +
    +
    3595 inline memory_file& write_str(_In_z_ const T * data)
    +
    3596 {
    +
    3597#if SET_FILE_OP_TIMES
    +
    3598 m_atime = m_mtime = time_point::now();
    +
    3599#endif
    +
    3600 if (CHECK_STREAM_STATE && !ok()) _Unlikely_
    +
    3601 return *this;
    +
    3602 size_t num_chars = stdex::strlen(data);
    +
    3603 if (num_chars > UINT32_MAX)
    +
    3604 throw std::invalid_argument("string too long");
    +
    3605 size_t size_chars = num_chars * sizeof(T);
    +
    3606 size_t size = sizeof(uint32_t) + size_chars;
    +
    3607 size_t end_offset = m_offset + size;
    +
    3608 if (end_offset > m_reserved) {
    +
    3609 reserve(end_offset);
    +
    3610 if (!ok()) _Unlikely_
    +
    3611 return *this;
    +
    3612 }
    +
    3613 auto p = m_data + m_offset;
    +
    3614 *reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
    +
    3615 memcpy(p + sizeof(uint32_t), data, size_chars);
    +
    3616 m_offset = end_offset;
    +
    3617 if (m_offset > m_size)
    +
    3618 m_size = m_offset;
    +
    3619#if !CHECK_STREAM_STATE
    +
    3620 m_state = state_t::ok;
    +
    3621#endif
    +
    3622 return *this;
    +
    3623 }
    -
    3618
    -
    3633 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    -
    -
    3634 inline memory_file& write_str(_In_ const std::basic_string<_Elem, _Traits, _Ax>& data)
    -
    3635 {
    -
    3636#if SET_FILE_OP_TIMES
    -
    3637 m_atime = m_mtime = time_point::now();
    -
    3638#endif
    -
    3639 if (CHECK_STREAM_STATE && !ok()) _Unlikely_
    -
    3640 return *this;
    -
    3641 size_t num_chars = data.size();
    -
    3642 if (num_chars > UINT32_MAX)
    -
    3643 throw std::invalid_argument("string too long");
    -
    3644 size_t size_chars = num_chars * sizeof(_Elem);
    -
    3645 size_t size = sizeof(uint32_t) + size_chars;
    -
    3646 size_t end_offset = m_offset + size;
    -
    3647 if (end_offset > m_reserved) {
    -
    3648 reserve(end_offset);
    -
    3649 if (!ok()) _Unlikely_
    -
    3650 return *this;
    -
    3651 }
    -
    3652 auto p = m_data + m_offset;
    -
    3653 *reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
    -
    3654 memcpy(p + sizeof(uint32_t), data.data(), size_chars);
    -
    3655 m_offset = end_offset;
    -
    3656 if (m_offset > m_size)
    -
    3657 m_size = m_offset;
    -
    3658#if !CHECK_STREAM_STATE
    -
    3659 m_state = state_t::ok;
    -
    3660#endif
    -
    3661 return *this;
    -
    3662 }
    +
    3624
    +
    3639 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    +
    +
    3640 inline memory_file& write_str(_In_ const std::basic_string<_Elem, _Traits, _Ax>& data)
    +
    3641 {
    +
    3642#if SET_FILE_OP_TIMES
    +
    3643 m_atime = m_mtime = time_point::now();
    +
    3644#endif
    +
    3645 if (CHECK_STREAM_STATE && !ok()) _Unlikely_
    +
    3646 return *this;
    +
    3647 size_t num_chars = data.size();
    +
    3648 if (num_chars > UINT32_MAX)
    +
    3649 throw std::invalid_argument("string too long");
    +
    3650 size_t size_chars = num_chars * sizeof(_Elem);
    +
    3651 size_t size = sizeof(uint32_t) + size_chars;
    +
    3652 size_t end_offset = m_offset + size;
    +
    3653 if (end_offset > m_reserved) {
    +
    3654 reserve(end_offset);
    +
    3655 if (!ok()) _Unlikely_
    +
    3656 return *this;
    +
    3657 }
    +
    3658 auto p = m_data + m_offset;
    +
    3659 *reinterpret_cast<uint32_t*>(p) = HE2LE((uint32_t)num_chars);
    +
    3660 memcpy(p + sizeof(uint32_t), data.data(), size_chars);
    +
    3661 m_offset = end_offset;
    +
    3662 if (m_offset > m_size)
    +
    3663 m_size = m_offset;
    +
    3664#if !CHECK_STREAM_STATE
    +
    3665 m_state = state_t::ok;
    +
    3666#endif
    +
    3667 return *this;
    +
    3668 }
    -
    3663
    -
    -
    3669 size_t write_stream(_Inout_ basic & stream, _In_ size_t amount = SIZE_MAX)
    -
    3670 {
    -
    3671#if SET_FILE_OP_TIMES
    -
    3672 m_atime = m_mtime = time_point::now();
    -
    3673#endif
    -
    3674 size_t num_read, dst_offset = m_offset, dst_size = m_offset;
    -
    3675 size_t num_copied = 0, to_write = amount;
    -
    3676 m_state = state_t::ok;
    -
    3677 if (amount != SIZE_MAX) {
    -
    3678 dst_size = stdex::add(dst_size, amount);
    -
    3679 reserve(dst_size);
    -
    3680 if (!ok()) _Unlikely_
    -
    3681 return 0;
    -
    3682 while (to_write) {
    -
    3683 num_read = stream.read(m_data + dst_offset, to_write);
    -
    3684 dst_size = dst_offset += num_read;
    -
    3685 num_copied += num_read;
    -
    3686 to_write -= num_read;
    -
    3687 if (!stream.ok()) {
    -
    3688 if (stream.state() != state_t::eof)
    -
    3689 m_state = state_t::fail;
    -
    3690 break;
    -
    3691 }
    -
    3692 };
    -
    3693 }
    -
    3694 else {
    -
    3695 size_t block_size;
    -
    3696 while (to_write) {
    -
    3697 block_size = std::min(to_write, default_block_size);
    -
    3698 dst_size = stdex::add(dst_size, block_size);
    -
    3699 reserve(dst_size);
    -
    3700 if (!ok()) _Unlikely_
    -
    3701 break;
    -
    3702 num_read = stream.read(m_data + dst_offset, block_size);
    -
    3703 dst_size = dst_offset += num_read;
    -
    3704 num_copied += num_read;
    -
    3705 to_write -= num_read;
    -
    3706 if (!stream.ok()) {
    -
    3707 if (stream.state() != state_t::eof)
    -
    3708 m_state = state_t::fail;
    -
    3709 break;
    -
    3710 }
    -
    3711 };
    -
    3712 }
    -
    3713 m_offset = dst_offset;
    -
    3714 if (m_offset > m_size)
    -
    3715 m_size = m_offset;
    -
    3716 return num_copied;
    -
    3717 }
    +
    3669
    +
    +
    3675 size_t write_stream(_Inout_ basic & stream, _In_ size_t amount = SIZE_MAX)
    +
    3676 {
    +
    3677#if SET_FILE_OP_TIMES
    +
    3678 m_atime = m_mtime = time_point::now();
    +
    3679#endif
    +
    3680 size_t num_read, dst_offset = m_offset, dst_size = m_offset;
    +
    3681 size_t num_copied = 0, to_write = amount;
    +
    3682 m_state = state_t::ok;
    +
    3683 if (amount != SIZE_MAX) {
    +
    3684 dst_size = stdex::add(dst_size, amount);
    +
    3685 reserve(dst_size);
    +
    3686 if (!ok()) _Unlikely_
    +
    3687 return 0;
    +
    3688 while (to_write) {
    +
    3689 num_read = stream.read(m_data + dst_offset, to_write);
    +
    3690 dst_size = dst_offset += num_read;
    +
    3691 num_copied += num_read;
    +
    3692 to_write -= num_read;
    +
    3693 if (!stream.ok()) {
    +
    3694 if (stream.state() != state_t::eof)
    +
    3695 m_state = state_t::fail;
    +
    3696 break;
    +
    3697 }
    +
    3698 };
    +
    3699 }
    +
    3700 else {
    +
    3701 size_t block_size;
    +
    3702 while (to_write) {
    +
    3703 block_size = std::min(to_write, default_block_size);
    +
    3704 dst_size = stdex::add(dst_size, block_size);
    +
    3705 reserve(dst_size);
    +
    3706 if (!ok()) _Unlikely_
    +
    3707 break;
    +
    3708 num_read = stream.read(m_data + dst_offset, block_size);
    +
    3709 dst_size = dst_offset += num_read;
    +
    3710 num_copied += num_read;
    +
    3711 to_write -= num_read;
    +
    3712 if (!stream.ok()) {
    +
    3713 if (stream.state() != state_t::eof)
    +
    3714 m_state = state_t::fail;
    +
    3715 break;
    +
    3716 }
    +
    3717 };
    +
    3718 }
    +
    3719 m_offset = dst_offset;
    +
    3720 if (m_offset > m_size)
    +
    3721 m_size = m_offset;
    +
    3722 return num_copied;
    +
    3723 }
    -
    3718
    -
    -
    3719 virtual void close()
    -
    3720 {
    -
    3721 if (m_manage && m_data)
    -
    3722 free(m_data);
    -
    3723 m_data = nullptr;
    -
    3724 m_manage = true;
    -
    3725 m_offset = 0;
    -
    3726 m_size = m_reserved = 0;
    -
    3727#if SET_FILE_OP_TIMES
    -
    3728 m_ctime = m_atime = m_mtime = time_point::min();
    -
    3729#endif
    -
    3730 m_state = state_t::ok;
    -
    3731 }
    +
    3724
    +
    +
    3725 virtual void close()
    +
    3726 {
    +
    3727 if (m_manage && m_data)
    +
    3728 free(m_data);
    +
    3729 m_data = nullptr;
    +
    3730 m_manage = true;
    +
    3731 m_offset = 0;
    +
    3732 m_size = m_reserved = 0;
    +
    3733#if SET_FILE_OP_TIMES
    +
    3734 m_ctime = m_atime = m_mtime = time_point::min();
    +
    3735#endif
    +
    3736 m_state = state_t::ok;
    +
    3737 }
    -
    3732
    -
    -
    3733 virtual fpos_t seek(_In_ foff_t offset, _In_ seek_t how = seek_t::beg)
    -
    3734 {
    -
    3735 fpos_t target;
    -
    3736 switch (how) {
    -
    3737 case seek_t::beg: target = offset; break;
    -
    3738 case seek_t::cur: target = static_cast<fpos_t>(m_offset) + offset; break;
    -
    3739 case seek_t::end: target = static_cast<fpos_t>(m_size) + offset; break;
    -
    3740 default: throw std::invalid_argument("unknown seek origin");
    -
    3741 }
    -
    3742 if (target <= SIZE_MAX) {
    -
    3743 m_state = state_t::ok;
    -
    3744 return m_offset = static_cast<size_t>(target);
    -
    3745 }
    -
    3746 m_state = state_t::fail;
    -
    3747 return fpos_max;
    -
    3748 }
    +
    3738
    +
    +
    3739 virtual fpos_t seek(_In_ foff_t offset, _In_ seek_t how = seek_t::beg)
    +
    3740 {
    +
    3741 fpos_t target;
    +
    3742 switch (how) {
    +
    3743 case seek_t::beg: target = offset; break;
    +
    3744 case seek_t::cur: target = static_cast<fpos_t>(m_offset) + offset; break;
    +
    3745 case seek_t::end: target = static_cast<fpos_t>(m_size) + offset; break;
    +
    3746 default: throw std::invalid_argument("unknown seek origin");
    +
    3747 }
    +
    3748 if (target <= SIZE_MAX) {
    +
    3749 m_state = state_t::ok;
    +
    3750 return m_offset = static_cast<size_t>(target);
    +
    3751 }
    +
    3752 m_state = state_t::fail;
    +
    3753 return fpos_max;
    +
    3754 }
    -
    3749
    -
    -
    3750 virtual fpos_t tell() const
    -
    3751 {
    -
    3752 return m_offset;
    -
    3753 }
    +
    3755
    +
    +
    3756 virtual fpos_t tell() const
    +
    3757 {
    +
    3758 return m_offset;
    +
    3759 }
    -
    3754
    -
    -
    3755 virtual fsize_t size()
    -
    3756 {
    -
    3757 return m_size;
    -
    3758 }
    +
    3760
    +
    +
    3761 virtual fsize_t size() const
    +
    3762 {
    +
    3763 return m_size;
    +
    3764 }
    -
    3759
    -
    -
    3760 virtual void truncate()
    -
    3761 {
    -
    3762#if SET_FILE_OP_TIMES
    -
    3763 m_atime = m_mtime = time_point::now();
    -
    3764#endif
    -
    3765 m_size = m_offset;
    - -
    3767 }
    -
    -
    3768
    -
    3769#if SET_FILE_OP_TIMES
    -
    3770 virtual time_point ctime() const
    -
    3771 {
    -
    3772 return m_ctime;
    +
    3765
    +
    +
    3766 virtual void truncate()
    +
    3767 {
    +
    3768#if SET_FILE_OP_TIMES
    +
    3769 m_atime = m_mtime = time_point::now();
    +
    3770#endif
    +
    3771 m_size = m_offset;
    +
    3773 }
    +
    3774
    -
    3775 virtual time_point atime() const
    -
    3776 {
    -
    3777 return m_atime;
    -
    3778 }
    -
    3779
    -
    3780 virtual time_point mtime() const
    -
    3781 {
    -
    3782 return m_mtime;
    -
    3783 }
    -
    3784
    -
    3785 virtual void set_ctime(time_point date)
    -
    3786 {
    -
    3787 m_ctime = date;
    -
    3788 }
    -
    3789
    -
    3790 virtual void set_atime(time_point date)
    -
    3791 {
    -
    3792 m_atime = date;
    -
    3793 }
    -
    3794
    -
    3795 virtual void set_mtime(time_point date)
    -
    3796 {
    -
    3797 m_mtime = date;
    -
    3798 }
    -
    3799#endif
    +
    3775#if SET_FILE_OP_TIMES
    +
    3776 virtual time_point ctime() const
    +
    3777 {
    +
    3778 return m_ctime;
    +
    3779 }
    +
    3780
    +
    3781 virtual time_point atime() const
    +
    3782 {
    +
    3783 return m_atime;
    +
    3784 }
    +
    3785
    +
    3786 virtual time_point mtime() const
    +
    3787 {
    +
    3788 return m_mtime;
    +
    3789 }
    +
    3790
    +
    3791 virtual void set_ctime(time_point date)
    +
    3792 {
    +
    3793 m_ctime = date;
    +
    3794 }
    +
    3795
    +
    3796 virtual void set_atime(time_point date)
    +
    3797 {
    +
    3798 m_atime = date;
    +
    3799 }
    3800
    -
    3801 protected:
    -
    3809 template <class T>
    -
    -
    3810 inline void set(_In_ fpos_t offset, _In_ const T data)
    -
    3811 {
    -
    3812#if SET_FILE_OP_TIMES
    -
    3813 m_atime = m_mtime = time_point::now();
    -
    3814#endif
    -
    3815 _Assume_(offset + sizeof(T) < m_size);
    -
    3816 (*reinterpret_cast<T*>(m_data + offset)) = HE2LE(data);
    -
    3817 }
    +
    3801 virtual void set_mtime(time_point date)
    +
    3802 {
    +
    3803 m_mtime = date;
    +
    3804 }
    +
    3805#endif
    +
    3806
    +
    3807 protected:
    +
    3815 template <class T>
    +
    +
    3816 inline void set(_In_ fpos_t offset, _In_ const T data)
    +
    3817 {
    +
    3818#if SET_FILE_OP_TIMES
    +
    3819 m_atime = m_mtime = time_point::now();
    +
    3820#endif
    +
    3821 _Assume_(offset + sizeof(T) < m_size);
    +
    3822 (*reinterpret_cast<T*>(m_data + offset)) = HE2LE(data);
    +
    3823 }
    -
    3818
    -
    3819 public:
    -
    3820 inline void set(_In_ fpos_t offset, _In_ const int8_t data) { set<int8_t>(offset, data); }
    -
    3821 inline void set(_In_ fpos_t offset, _In_ const int16_t data) { set<int16_t>(offset, data); }
    -
    3822 inline void set(_In_ fpos_t offset, _In_ const int32_t data) { set<int32_t>(offset, data); }
    -
    3823 inline void set(_In_ fpos_t offset, _In_ const int64_t data) { set<int64_t>(offset, data); }
    -
    3824 inline void set(_In_ fpos_t offset, _In_ const uint8_t data) { set<uint8_t>(offset, data); }
    -
    3825 inline void set(_In_ fpos_t offset, _In_ const uint16_t data) { set<uint16_t>(offset, data); }
    -
    3826 inline void set(_In_ fpos_t offset, _In_ const uint32_t data) { set<uint32_t>(offset, data); }
    -
    3827 inline void set(_In_ fpos_t offset, _In_ const uint64_t data) { set<uint64_t>(offset, data); }
    -
    3828 inline void set(_In_ fpos_t offset, _In_ const float data) { set<float>(offset, data); }
    -
    3829 inline void set(_In_ fpos_t offset, _In_ const double data) { set<double>(offset, data); }
    -
    3830 inline void set(_In_ fpos_t offset, _In_ const char data) { set<char>(offset, data); }
    -
    3831#ifdef _NATIVE_WCHAR_T_DEFINED
    -
    3832 inline void set(_In_ fpos_t offset, _In_ const wchar_t data) { set<wchar_t>(offset, data); }
    -
    3833#endif
    -
    3834
    -
    3842 protected:
    -
    3843 template <class T>
    -
    -
    3844 inline void get(_In_ fpos_t offset, _Out_ T & data)
    -
    3845 {
    -
    3846 _Assume_(offset + sizeof(T) < m_size);
    -
    3847 data = LE2HE(*(T*)(m_data + offset));
    -
    3848#if SET_FILE_OP_TIMES
    -
    3849 m_atime = time_point::now();
    -
    3850#endif
    -
    3851 }
    +
    3824
    +
    3825 public:
    +
    3826 inline void set(_In_ fpos_t offset, _In_ const int8_t data) { set<int8_t>(offset, data); }
    +
    3827 inline void set(_In_ fpos_t offset, _In_ const int16_t data) { set<int16_t>(offset, data); }
    +
    3828 inline void set(_In_ fpos_t offset, _In_ const int32_t data) { set<int32_t>(offset, data); }
    +
    3829 inline void set(_In_ fpos_t offset, _In_ const int64_t data) { set<int64_t>(offset, data); }
    +
    3830 inline void set(_In_ fpos_t offset, _In_ const uint8_t data) { set<uint8_t>(offset, data); }
    +
    3831 inline void set(_In_ fpos_t offset, _In_ const uint16_t data) { set<uint16_t>(offset, data); }
    +
    3832 inline void set(_In_ fpos_t offset, _In_ const uint32_t data) { set<uint32_t>(offset, data); }
    +
    3833 inline void set(_In_ fpos_t offset, _In_ const uint64_t data) { set<uint64_t>(offset, data); }
    +
    3834 inline void set(_In_ fpos_t offset, _In_ const float data) { set<float>(offset, data); }
    +
    3835 inline void set(_In_ fpos_t offset, _In_ const double data) { set<double>(offset, data); }
    +
    3836 inline void set(_In_ fpos_t offset, _In_ const char data) { set<char>(offset, data); }
    +
    3837#ifdef _NATIVE_WCHAR_T_DEFINED
    +
    3838 inline void set(_In_ fpos_t offset, _In_ const wchar_t data) { set<wchar_t>(offset, data); }
    +
    3839#endif
    +
    3840
    +
    3848 protected:
    +
    3849 template <class T>
    +
    +
    3850 inline void get(_In_ fpos_t offset, _Out_ T & data)
    +
    3851 {
    +
    3852 _Assume_(offset + sizeof(T) < m_size);
    +
    3853 data = LE2HE(*(T*)(m_data + offset));
    +
    3854#if SET_FILE_OP_TIMES
    +
    3855 m_atime = time_point::now();
    +
    3856#endif
    +
    3857 }
    -
    3852
    -
    3853 public:
    -
    3854 inline void get(_In_ fpos_t offset, _Out_ int8_t & data) { get<int8_t>(offset, data); }
    -
    3855 inline void get(_In_ fpos_t offset, _Out_ int16_t & data) { get<int16_t>(offset, data); }
    -
    3856 inline void get(_In_ fpos_t offset, _Out_ int32_t & data) { get<int32_t>(offset, data); }
    -
    3857 inline void get(_In_ fpos_t offset, _Out_ int64_t & data) { get<int64_t>(offset, data); }
    -
    3858 inline void get(_In_ fpos_t offset, _Out_ uint8_t & data) { get<uint8_t>(offset, data); }
    -
    3859 inline void get(_In_ fpos_t offset, _Out_ uint16_t & data) { get<uint16_t>(offset, data); }
    -
    3860 inline void get(_In_ fpos_t offset, _Out_ uint32_t & data) { get<uint32_t>(offset, data); }
    -
    3861 inline void get(_In_ fpos_t offset, _Out_ uint64_t & data) { get<uint64_t>(offset, data); }
    -
    3862 inline void get(_In_ fpos_t offset, _Out_ float& data) { get<float>(offset, data); }
    -
    3863 inline void get(_In_ fpos_t offset, _Out_ double& data) { get<double>(offset, data); }
    -
    3864 inline void get(_In_ fpos_t offset, _Out_ char& data) { get<char>(offset, data); }
    -
    3865#ifdef _NATIVE_WCHAR_T_DEFINED
    -
    3866 inline void get(_In_ fpos_t offset, _Out_ wchar_t& data) { get<wchar_t>(offset, data); }
    -
    3867#endif
    -
    3868
    -
    3869 inline memory_file& operator <<(_In_ const int8_t data) { return write_data(data); }
    -
    3870 inline memory_file& operator >>(_Out_ int8_t & data) { return read_data(data); }
    -
    3871 inline memory_file& operator <<(_In_ const int16_t data) { return write_data(data); }
    -
    3872 inline memory_file& operator >>(_Out_ int16_t & data) { return read_data(data); }
    -
    3873 inline memory_file& operator <<(_In_ const int32_t data) { return write_data(data); }
    -
    3874 inline memory_file& operator >>(_Out_ int32_t & data) { return read_data(data); }
    -
    3875 inline memory_file& operator <<(_In_ const int64_t data) { return write_data(data); }
    -
    3876 inline memory_file& operator >>(_Out_ int64_t & data) { return read_data(data); }
    -
    3877 inline memory_file& operator <<(_In_ const uint8_t data) { return write_data(data); }
    -
    3878 inline memory_file& operator >>(_Out_ uint8_t & data) { return read_data(data); }
    -
    3879 inline memory_file& operator <<(_In_ const uint16_t data) { return write_data(data); }
    -
    3880 inline memory_file& operator >>(_Out_ uint16_t & data) { return read_data(data); }
    -
    3881 inline memory_file& operator <<(_In_ const uint32_t data) { return write_data(data); }
    -
    3882 inline memory_file& operator >>(_Out_ uint32_t & data) { return read_data(data); }
    -
    3883 inline memory_file& operator <<(_In_ const uint64_t data) { return write_data(data); }
    -
    3884 inline memory_file& operator >>(_Out_ uint64_t & data) { return read_data(data); }
    -
    3885 inline memory_file& operator <<(_In_ const float data) { return write_data(data); }
    -
    3886 inline memory_file& operator >>(_Out_ float& data) { return read_data(data); }
    -
    3887 inline memory_file& operator <<(_In_ const double data) { return write_data(data); }
    -
    3888 inline memory_file& operator >>(_Out_ double& data) { return read_data(data); }
    -
    3889 inline memory_file& operator <<(_In_ const char data) { return write_data(data); }
    -
    3890 inline memory_file& operator >>(_Out_ char& data) { return read_data(data); }
    -
    3891#ifdef _NATIVE_WCHAR_T_DEFINED
    -
    3892 inline memory_file& operator <<(_In_ const wchar_t data) { return write_data(data); }
    -
    3893 inline memory_file& operator >>(_Out_ wchar_t& data) { return read_data(data); }
    -
    3894#endif
    -
    3895 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    -
    3896 inline memory_file& operator >>(_Out_ std::basic_string<_Elem, _Traits, _Ax>&data) { return read_str(data); }
    -
    3897 template <class T>
    -
    3898 inline memory_file& operator <<(_In_ const T * data) { return write_str(data); }
    -
    3899 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    -
    3900 inline memory_file& operator <<(_In_ const std::basic_string<_Elem, _Traits, _Ax>& data) { return write_str(data); }
    -
    3901
    -
    3902 protected:
    -
    3903 uint8_t* m_data;
    - -
    3905 size_t m_offset;
    -
    3906 size_t m_size;
    -
    3907 size_t m_reserved;
    -
    3908#if SET_FILE_OP_TIMES
    -
    3909 time_point
    -
    3910 m_ctime,
    -
    3911 m_atime,
    -
    3912 m_mtime;
    -
    3913#endif
    -
    3914 };
    +
    3858
    +
    3859 public:
    +
    3860 inline void get(_In_ fpos_t offset, _Out_ int8_t & data) { get<int8_t>(offset, data); }
    +
    3861 inline void get(_In_ fpos_t offset, _Out_ int16_t & data) { get<int16_t>(offset, data); }
    +
    3862 inline void get(_In_ fpos_t offset, _Out_ int32_t & data) { get<int32_t>(offset, data); }
    +
    3863 inline void get(_In_ fpos_t offset, _Out_ int64_t & data) { get<int64_t>(offset, data); }
    +
    3864 inline void get(_In_ fpos_t offset, _Out_ uint8_t & data) { get<uint8_t>(offset, data); }
    +
    3865 inline void get(_In_ fpos_t offset, _Out_ uint16_t & data) { get<uint16_t>(offset, data); }
    +
    3866 inline void get(_In_ fpos_t offset, _Out_ uint32_t & data) { get<uint32_t>(offset, data); }
    +
    3867 inline void get(_In_ fpos_t offset, _Out_ uint64_t & data) { get<uint64_t>(offset, data); }
    +
    3868 inline void get(_In_ fpos_t offset, _Out_ float& data) { get<float>(offset, data); }
    +
    3869 inline void get(_In_ fpos_t offset, _Out_ double& data) { get<double>(offset, data); }
    +
    3870 inline void get(_In_ fpos_t offset, _Out_ char& data) { get<char>(offset, data); }
    +
    3871#ifdef _NATIVE_WCHAR_T_DEFINED
    +
    3872 inline void get(_In_ fpos_t offset, _Out_ wchar_t& data) { get<wchar_t>(offset, data); }
    +
    3873#endif
    +
    3874
    +
    3875 inline memory_file& operator <<(_In_ const int8_t data) { return write_data(data); }
    +
    3876 inline memory_file& operator >>(_Out_ int8_t & data) { return read_data(data); }
    +
    3877 inline memory_file& operator <<(_In_ const int16_t data) { return write_data(data); }
    +
    3878 inline memory_file& operator >>(_Out_ int16_t & data) { return read_data(data); }
    +
    3879 inline memory_file& operator <<(_In_ const int32_t data) { return write_data(data); }
    +
    3880 inline memory_file& operator >>(_Out_ int32_t & data) { return read_data(data); }
    +
    3881 inline memory_file& operator <<(_In_ const int64_t data) { return write_data(data); }
    +
    3882 inline memory_file& operator >>(_Out_ int64_t & data) { return read_data(data); }
    +
    3883 inline memory_file& operator <<(_In_ const uint8_t data) { return write_data(data); }
    +
    3884 inline memory_file& operator >>(_Out_ uint8_t & data) { return read_data(data); }
    +
    3885 inline memory_file& operator <<(_In_ const uint16_t data) { return write_data(data); }
    +
    3886 inline memory_file& operator >>(_Out_ uint16_t & data) { return read_data(data); }
    +
    3887 inline memory_file& operator <<(_In_ const uint32_t data) { return write_data(data); }
    +
    3888 inline memory_file& operator >>(_Out_ uint32_t & data) { return read_data(data); }
    +
    3889 inline memory_file& operator <<(_In_ const uint64_t data) { return write_data(data); }
    +
    3890 inline memory_file& operator >>(_Out_ uint64_t & data) { return read_data(data); }
    +
    3891 inline memory_file& operator <<(_In_ const float data) { return write_data(data); }
    +
    3892 inline memory_file& operator >>(_Out_ float& data) { return read_data(data); }
    +
    3893 inline memory_file& operator <<(_In_ const double data) { return write_data(data); }
    +
    3894 inline memory_file& operator >>(_Out_ double& data) { return read_data(data); }
    +
    3895 inline memory_file& operator <<(_In_ const char data) { return write_data(data); }
    +
    3896 inline memory_file& operator >>(_Out_ char& data) { return read_data(data); }
    +
    3897#ifdef _NATIVE_WCHAR_T_DEFINED
    +
    3898 inline memory_file& operator <<(_In_ const wchar_t data) { return write_data(data); }
    +
    3899 inline memory_file& operator >>(_Out_ wchar_t& data) { return read_data(data); }
    +
    3900#endif
    +
    3901 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    +
    3902 inline memory_file& operator >>(_Out_ std::basic_string<_Elem, _Traits, _Ax>&data) { return read_str(data); }
    +
    3903 template <class T>
    +
    3904 inline memory_file& operator <<(_In_ const T * data) { return write_str(data); }
    +
    3905 template<class _Elem, class _Traits = std::char_traits<_Elem>, class _Ax = std::allocator<_Elem>>
    +
    3906 inline memory_file& operator <<(_In_ const std::basic_string<_Elem, _Traits, _Ax>& data) { return write_str(data); }
    +
    3907
    +
    3908 protected:
    +
    3909 uint8_t* m_data;
    + +
    3911 size_t m_offset;
    +
    3912 size_t m_size;
    +
    3913 size_t m_reserved;
    +
    3914#if SET_FILE_OP_TIMES
    +
    3915 time_point
    +
    3916 m_ctime,
    +
    3917 m_atime,
    +
    3918 m_mtime;
    +
    3919#endif
    +
    3920 };
    -
    3915
    -
    -
    3919 class fifo : public basic {
    -
    3920 public:
    -
    3921 fifo() :
    -
    3922 m_offset(0),
    -
    3923 m_size(0),
    -
    3924 m_head(nullptr),
    -
    3925 m_tail(nullptr)
    -
    3926 {}
    -
    3927
    -
    3928 virtual ~fifo()
    -
    3929 {
    -
    3930 while (m_head) {
    -
    3931 auto p = m_head;
    -
    3932 m_head = p->next;
    -
    3933 delete p;
    -
    3934 }
    -
    3935 }
    -
    3936
    -
    3937#pragma warning(suppress: 6101) // See [2] below
    -
    -
    3938 virtual _Success_(return != 0 || length == 0) size_t read(
    -
    3939 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    -
    3940 {
    -
    3941 _Assume_(data || !length);
    -
    3942 for (size_t to_read = length;;) {
    -
    3943 if (!m_head) _Unlikely_ {
    -
    3944 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    -
    3945 return length - to_read; // [2] Code analysis misses `length - to_read` bytes were written to data in previous loop iterations.
    -
    3946 }
    -
    3947 size_t remaining = m_head->size - m_offset;
    -
    3948 if (remaining > to_read) {
    -
    3949 memcpy(data, m_head->data + m_offset, to_read);
    -
    3950 m_offset += to_read;
    -
    3951 m_size -= to_read;
    -
    3952 m_state = state_t::ok;
    -
    3953 return length;
    -
    3954 }
    -
    3955 memcpy(data, m_head->data + m_offset, remaining);
    -
    3956 m_offset = 0;
    -
    3957 m_size -= remaining;
    -
    3958 reinterpret_cast<uint8_t*&>(data) += remaining;
    -
    3959 to_read -= remaining;
    -
    3960 auto p = m_head;
    -
    3961 m_head = p->next;
    -
    3962 delete p;
    -
    3963 }
    -
    3964 }
    +
    3921
    +
    +
    3925 class fifo : public basic {
    +
    3926 public:
    +
    3927 fifo() :
    +
    3928 m_offset(0),
    +
    3929 m_size(0),
    +
    3930 m_head(nullptr),
    +
    3931 m_tail(nullptr)
    +
    3932 {}
    +
    3933
    +
    3934 virtual ~fifo()
    +
    3935 {
    +
    3936 while (m_head) {
    +
    3937 auto p = m_head;
    +
    3938 m_head = p->next;
    +
    3939 delete p;
    +
    3940 }
    +
    3941 }
    +
    3942
    +
    3943#pragma warning(suppress: 6101) // See [2] below
    +
    +
    3944 virtual _Success_(return != 0 || length == 0) size_t read(
    +
    3945 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    3946 {
    +
    3947 _Assume_(data || !length);
    +
    3948 for (size_t to_read = length;;) {
    +
    3949 if (!m_head) _Unlikely_ {
    +
    3950 m_state = to_read < length || !length ? state_t::ok : state_t::eof;
    +
    3951 return length - to_read; // [2] Code analysis misses `length - to_read` bytes were written to data in previous loop iterations.
    +
    3952 }
    +
    3953 size_t remaining = m_head->size - m_offset;
    +
    3954 if (remaining > to_read) {
    +
    3955 memcpy(data, m_head->data + m_offset, to_read);
    +
    3956 m_offset += to_read;
    +
    3957 m_size -= to_read;
    +
    3958 m_state = state_t::ok;
    +
    3959 return length;
    +
    3960 }
    +
    3961 memcpy(data, m_head->data + m_offset, remaining);
    +
    3962 m_offset = 0;
    +
    3963 m_size -= remaining;
    +
    3964 reinterpret_cast<uint8_t*&>(data) += remaining;
    +
    3965 to_read -= remaining;
    +
    3966 auto p = m_head;
    +
    3967 m_head = p->next;
    +
    3968 delete p;
    +
    3969 }
    +
    3970 }
    -
    3965
    -
    -
    3966 virtual _Success_(return != 0) size_t write(
    -
    3967 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    -
    3968 {
    -
    3969 _Assume_(data || !length);
    -
    3970 try {
    -
    3971 std::unique_ptr<node_t> n(reinterpret_cast<node_t*>(new uint8_t[sizeof(node_t) + length]));
    -
    3972 n->next = nullptr;
    -
    3973 n->size = length;
    -
    3974 memcpy(n->data, data, length);
    -
    3975 m_size += length;
    -
    3976 if (m_head)
    -
    3977 m_tail = m_tail->next = n.release();
    -
    3978 else
    -
    3979 m_head = m_tail = n.release();
    -
    3980 m_state = state_t::ok;
    -
    3981 return length;
    -
    3982 }
    -
    3983 catch (const std::bad_alloc&) {
    -
    3984 m_state = state_t::fail;
    -
    3985 return 0;
    -
    3986 }
    -
    3987 }
    +
    3971
    +
    +
    3972 virtual _Success_(return != 0) size_t write(
    +
    3973 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    +
    3974 {
    +
    3975 _Assume_(data || !length);
    +
    3976 try {
    +
    3977 std::unique_ptr<node_t> n(reinterpret_cast<node_t*>(new uint8_t[sizeof(node_t) + length]));
    +
    3978 n->next = nullptr;
    +
    3979 n->size = length;
    +
    3980 memcpy(n->data, data, length);
    +
    3981 m_size += length;
    +
    3982 if (m_head)
    +
    3983 m_tail = m_tail->next = n.release();
    +
    3984 else
    +
    3985 m_head = m_tail = n.release();
    +
    3986 m_state = state_t::ok;
    +
    3987 return length;
    +
    3988 }
    +
    3989 catch (const std::bad_alloc&) {
    +
    3990 m_state = state_t::fail;
    +
    3991 return 0;
    +
    3992 }
    +
    3993 }
    -
    3988
    -
    -
    3989 virtual void close()
    -
    3990 {
    -
    3991 m_size = m_offset = 0;
    -
    3992 while (m_head) {
    -
    3993 auto p = m_head;
    -
    3994 m_head = p->next;
    -
    3995 delete p;
    -
    3996 }
    -
    3997 m_state = state_t::ok;
    -
    3998 }
    +
    3994
    +
    +
    3995 virtual void close()
    +
    3996 {
    +
    3997 m_size = m_offset = 0;
    +
    3998 while (m_head) {
    +
    3999 auto p = m_head;
    +
    4000 m_head = p->next;
    +
    4001 delete p;
    +
    4002 }
    +
    4003 m_state = state_t::ok;
    +
    4004 }
    -
    3999
    -
    4003 inline size_t size() const { return m_size; };
    -
    4004
    -
    4005 protected:
    -
    4006 size_t m_offset, m_size;
    -
    -
    4007 struct node_t {
    -
    4008 node_t* next;
    -
    4009 size_t size;
    -
    4010#pragma warning(suppress:4200)
    -
    4011 uint8_t data[0];
    -
    4012 } *m_head, * m_tail;
    +
    4005
    +
    4009 inline size_t size() const { return m_size; };
    +
    4010
    +
    4011 protected:
    +
    4012 size_t m_offset, m_size;
    +
    +
    4013 struct node_t {
    +
    4014 node_t* next;
    +
    4015 size_t size;
    +
    4016#pragma warning(suppress:4200)
    +
    4017 uint8_t data[0];
    +
    4018 } *m_head, * m_tail;
    -
    4013 };
    +
    4019 };
    -
    4014
    -
    -
    4018 class diag_file : public basic_file {
    -
    4019 public:
    -
    4020 diag_file(_In_count_(num_files) basic_file* const* files, _In_ size_t num_files) :
    -
    4021 basic(num_files ? files[0]->state() : state_t::fail),
    -
    4022 m_files(files, files + num_files)
    -
    4023 {}
    -
    4024
    -
    -
    4025 virtual _Success_(return != 0 || length == 0) size_t read(
    -
    4026 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    -
    4027 {
    -
    4028 _Assume_(data || !length);
    -
    4029 if (m_files.empty()) {
    -
    4030 m_state = state_t::fail;
    -
    4031 return 0;
    -
    4032 }
    -
    4033 size_t result = m_files[0]->read(data, length);
    -
    4034 _Assume_(result <= length);
    -
    4035 m_state = m_files[0]->state();
    -
    4036 if (length > m_tmp.size())
    -
    4037 m_tmp.resize(length);
    -
    4038 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4039 if (m_files[i]->read(m_tmp.data(), length) != result ||
    -
    4040 memcmp(m_tmp.data(), data, result))
    -
    4041 throw std::runtime_error("read mismatch");
    -
    4042 if (m_files[i]->state() != m_state)
    -
    4043 throw std::runtime_error("state mismatch");
    -
    4044 }
    -
    4045 return result;
    -
    4046 }
    +
    4020
    +
    +
    4024 class diag_file : public basic_file {
    +
    4025 public:
    +
    4026 diag_file(_In_count_(num_files) basic_file* const* files, _In_ size_t num_files) :
    +
    4027 basic(num_files ? files[0]->state() : state_t::fail),
    +
    4028 m_files(files, files + num_files)
    +
    4029 {}
    +
    4030
    +
    +
    4031 virtual _Success_(return != 0 || length == 0) size_t read(
    +
    4032 _Out_writes_bytes_to_opt_(length, return) void* data, _In_ size_t length)
    +
    4033 {
    +
    4034 _Assume_(data || !length);
    +
    4035 if (m_files.empty()) {
    +
    4036 m_state = state_t::fail;
    +
    4037 return 0;
    +
    4038 }
    +
    4039 size_t result = m_files[0]->read(data, length);
    +
    4040 _Assume_(result <= length);
    +
    4041 m_state = m_files[0]->state();
    +
    4042 if (length > m_tmp.size())
    +
    4043 m_tmp.resize(length);
    +
    4044 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4045 if (m_files[i]->read(m_tmp.data(), length) != result ||
    +
    4046 memcmp(m_tmp.data(), data, result))
    +
    4047 throw std::runtime_error("read mismatch");
    +
    4048 if (m_files[i]->state() != m_state)
    +
    4049 throw std::runtime_error("state mismatch");
    +
    4050 }
    +
    4051 return result;
    +
    4052 }
    -
    4047
    -
    -
    4048 virtual _Success_(return != 0) size_t write(
    -
    4049 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    -
    4050 {
    -
    4051 if (m_files.empty()) {
    -
    4052 m_state = state_t::fail;
    -
    4053 return 0;
    -
    4054 }
    -
    4055 size_t result = m_files[0]->write(data, length);
    -
    4056 m_state = m_files[0]->state();
    -
    4057 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4058 if (m_files[i]->write(data, length) != result)
    -
    4059 throw std::runtime_error("write mismatch");
    -
    4060 if (m_files[i]->state() != m_state)
    -
    4061 throw std::runtime_error("state mismatch");
    -
    4062 }
    -
    4063 return result;
    -
    4064 }
    +
    4053
    +
    +
    4054 virtual _Success_(return != 0) size_t write(
    +
    4055 _In_reads_bytes_opt_(length) const void* data, _In_ size_t length)
    +
    4056 {
    +
    4057 if (m_files.empty()) {
    +
    4058 m_state = state_t::fail;
    +
    4059 return 0;
    +
    4060 }
    +
    4061 size_t result = m_files[0]->write(data, length);
    +
    4062 m_state = m_files[0]->state();
    +
    4063 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4064 if (m_files[i]->write(data, length) != result)
    +
    4065 throw std::runtime_error("write mismatch");
    +
    4066 if (m_files[i]->state() != m_state)
    +
    4067 throw std::runtime_error("state mismatch");
    +
    4068 }
    +
    4069 return result;
    +
    4070 }
    -
    4065
    -
    -
    4066 virtual void flush()
    -
    4067 {
    -
    4068 if (m_files.empty()) {
    -
    4069 m_state = state_t::ok;
    -
    4070 return;
    -
    4071 }
    -
    4072 m_files[0]->flush();
    -
    4073 m_state = m_files[0]->state();
    -
    4074 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4075 m_files[i]->flush();
    -
    4076 if (m_files[i]->state() != m_state)
    -
    4077 throw std::runtime_error("state mismatch");
    -
    4078 }
    -
    4079 }
    +
    4071
    +
    +
    4072 virtual void flush()
    +
    4073 {
    +
    4074 if (m_files.empty()) {
    +
    4075 m_state = state_t::ok;
    +
    4076 return;
    +
    4077 }
    +
    4078 m_files[0]->flush();
    +
    4079 m_state = m_files[0]->state();
    +
    4080 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4081 m_files[i]->flush();
    +
    4082 if (m_files[i]->state() != m_state)
    +
    4083 throw std::runtime_error("state mismatch");
    +
    4084 }
    +
    4085 }
    -
    4080
    -
    -
    4081 virtual void close()
    -
    4082 {
    -
    4083 if (m_files.empty()) {
    -
    4084 m_state = state_t::ok;
    -
    4085 return;
    -
    4086 }
    -
    4087 m_files[0]->close();
    -
    4088 m_state = m_files[0]->state();
    -
    4089 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4090 m_files[i]->close();
    -
    4091 if (m_files[i]->state() != m_state)
    -
    4092 throw std::runtime_error("state mismatch");
    -
    4093 }
    -
    4094 m_tmp.clear();
    -
    4095 m_tmp.shrink_to_fit();
    -
    4096 }
    +
    4086
    +
    +
    4087 virtual void close()
    +
    4088 {
    +
    4089 if (m_files.empty()) {
    +
    4090 m_state = state_t::ok;
    +
    4091 return;
    +
    4092 }
    +
    4093 m_files[0]->close();
    +
    4094 m_state = m_files[0]->state();
    +
    4095 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4096 m_files[i]->close();
    +
    4097 if (m_files[i]->state() != m_state)
    +
    4098 throw std::runtime_error("state mismatch");
    +
    4099 }
    +
    4100 m_tmp.clear();
    +
    4101 m_tmp.shrink_to_fit();
    +
    4102 }
    -
    4097
    -
    -
    4098 virtual fpos_t seek(_In_ foff_t offset, _In_ seek_t how = seek_t::beg)
    -
    4099 {
    -
    4100 if (m_files.empty()) {
    -
    4101 m_state = state_t::fail;
    -
    4102 return fpos_max;
    -
    4103 }
    -
    4104 fpos_t result = m_files[0]->seek(offset, how);
    -
    4105 m_state = m_files[0]->state();
    -
    4106 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4107 if (m_files[i]->seek(offset, how) != result)
    -
    4108 throw std::runtime_error("seek mismatch");
    -
    4109 if (m_files[i]->state() != m_state)
    -
    4110 throw std::runtime_error("state mismatch");
    -
    4111 }
    -
    4112 return result;
    -
    4113 }
    +
    4103
    +
    +
    4104 virtual fpos_t seek(_In_ foff_t offset, _In_ seek_t how = seek_t::beg)
    +
    4105 {
    +
    4106 if (m_files.empty()) {
    +
    4107 m_state = state_t::fail;
    +
    4108 return fpos_max;
    +
    4109 }
    +
    4110 fpos_t result = m_files[0]->seek(offset, how);
    +
    4111 m_state = m_files[0]->state();
    +
    4112 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4113 if (m_files[i]->seek(offset, how) != result)
    +
    4114 throw std::runtime_error("seek mismatch");
    +
    4115 if (m_files[i]->state() != m_state)
    +
    4116 throw std::runtime_error("state mismatch");
    +
    4117 }
    +
    4118 return result;
    +
    4119 }
    -
    4114
    -
    -
    4115 virtual fpos_t tell() const
    -
    4116 {
    -
    4117 if (m_files.empty())
    -
    4118 return fpos_max;
    -
    4119 fpos_t result = m_files[0]->tell();
    -
    4120 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4121 if (m_files[i]->tell() != result)
    -
    4122 throw std::runtime_error("tell mismatch");
    -
    4123 }
    -
    4124 return result;
    -
    4125 }
    +
    4120
    +
    +
    4121 virtual fpos_t tell() const
    +
    4122 {
    +
    4123 if (m_files.empty())
    +
    4124 return fpos_max;
    +
    4125 fpos_t result = m_files[0]->tell();
    +
    4126 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4127 if (m_files[i]->tell() != result)
    +
    4128 throw std::runtime_error("tell mismatch");
    +
    4129 }
    +
    4130 return result;
    +
    4131 }
    -
    4126
    -
    -
    4127 virtual void lock(_In_ fpos_t offset, _In_ fsize_t length)
    -
    4128 {
    -
    4129 if (m_files.empty())
    -
    4130 m_state = state_t::fail;
    -
    4131 m_files[0]->lock(offset, length);
    -
    4132 m_state = m_files[0]->state();
    -
    4133 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4134 m_files[i]->lock(offset, length);
    -
    4135 if (m_files[i]->state() != m_state)
    -
    4136 throw std::runtime_error("state mismatch");
    -
    4137 }
    -
    4138 }
    +
    4132
    +
    +
    4133 virtual void lock(_In_ fpos_t offset, _In_ fsize_t length)
    +
    4134 {
    +
    4135 if (m_files.empty())
    +
    4136 m_state = state_t::fail;
    +
    4137 m_files[0]->lock(offset, length);
    +
    4138 m_state = m_files[0]->state();
    +
    4139 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4140 m_files[i]->lock(offset, length);
    +
    4141 if (m_files[i]->state() != m_state)
    +
    4142 throw std::runtime_error("state mismatch");
    +
    4143 }
    +
    4144 }
    -
    4139
    -
    -
    4140 virtual void unlock(_In_ fpos_t offset, _In_ fsize_t length)
    -
    4141 {
    -
    4142 if (m_files.empty())
    -
    4143 m_state = state_t::fail;
    -
    4144 m_files[0]->unlock(offset, length);
    -
    4145 m_state = m_files[0]->state();
    -
    4146 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4147 m_files[i]->unlock(offset, length);
    -
    4148 if (m_files[i]->state() != m_state)
    -
    4149 throw std::runtime_error("state mismatch");
    -
    4150 }
    -
    4151 }
    +
    4145
    +
    +
    4146 virtual void unlock(_In_ fpos_t offset, _In_ fsize_t length)
    +
    4147 {
    +
    4148 if (m_files.empty())
    +
    4149 m_state = state_t::fail;
    +
    4150 m_files[0]->unlock(offset, length);
    +
    4151 m_state = m_files[0]->state();
    +
    4152 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4153 m_files[i]->unlock(offset, length);
    +
    4154 if (m_files[i]->state() != m_state)
    +
    4155 throw std::runtime_error("state mismatch");
    +
    4156 }
    +
    4157 }
    -
    4152
    -
    -
    4153 virtual fsize_t size()
    -
    4154 {
    -
    4155 if (m_files.empty()) {
    -
    4156 m_state = state_t::fail;
    -
    4157 return 0;
    -
    4158 }
    -
    4159 fsize_t result = m_files[0]->size();
    -
    4160 m_state = m_files[0]->state();
    -
    4161 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4162 if (m_files[i]->size() != result)
    -
    4163 throw std::runtime_error("size mismatch");
    -
    4164 if (m_files[i]->state() != m_state)
    -
    4165 throw std::runtime_error("state mismatch");
    -
    4166 }
    -
    4167 return result;
    -
    4168 }
    +
    4158
    +
    +
    4159 virtual fsize_t size() const
    +
    4160 {
    +
    4161 if (m_files.empty())
    +
    4162 return fsize_max;
    +
    4163 fsize_t result = m_files[0]->size();
    +
    4164 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4165 if (m_files[i]->size() != result)
    +
    4166 throw std::runtime_error("size mismatch");
    +
    4167 }
    +
    4168 return result;
    +
    4169 }
    -
    4169
    -
    -
    4170 virtual void truncate()
    -
    4171 {
    -
    4172 if (m_files.empty())
    -
    4173 m_state = state_t::fail;
    -
    4174 m_files[0]->truncate();
    -
    4175 m_state = m_files[0]->state();
    -
    4176 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    -
    4177 m_files[i]->truncate();
    -
    4178 if (m_files[i]->state() != m_state)
    -
    4179 throw std::runtime_error("state mismatch");
    -
    4180 }
    -
    4181 }
    +
    4170
    +
    +
    4171 virtual void truncate()
    +
    4172 {
    +
    4173 if (m_files.empty())
    +
    4174 m_state = state_t::fail;
    +
    4175 m_files[0]->truncate();
    +
    4176 m_state = m_files[0]->state();
    +
    4177 for (size_t i = 1, n = m_files.size(); i < n; ++i) {
    +
    4178 m_files[i]->truncate();
    +
    4179 if (m_files[i]->state() != m_state)
    +
    4180 throw std::runtime_error("state mismatch");
    +
    4181 }
    +
    4182 }
    -
    4182
    -
    4183 protected:
    -
    4184 std::vector<basic_file*> m_files;
    -
    4185 std::vector<uint8_t> m_tmp;
    -
    4186 };
    +
    4183
    +
    4184 protected:
    +
    4185 std::vector<basic_file*> m_files;
    +
    4186 std::vector<uint8_t> m_tmp;
    +
    4187 };
    -
    4187 }
    -
    4188}
    +
    4188 }
    +
    4189}
    Encoding converter context.
    Definition unicode.hpp:133
    Provides read-ahead stream capability.
    Definition stream.hpp:1256
    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
    @@ -4021,6 +4022,7 @@ $(document).ready(function() { init_codefold(0); });
    virtual time_point ctime() const
    Returns file creation time.
    Definition stream.hpp:914
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:883
    virtual void truncate()=0
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    +
    virtual fsize_t size() const =0
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    charset_id read_charset(charset_id default_charset=charset_id::system)
    Attempts to detect textfile charset based on UTF-32, UTF-16 or UTF-8 BOM.
    Definition stream.hpp:987
    fpos_t seekbeg(fpos_t offset)
    Seeks to absolute file position.
    Definition stream.hpp:851
    virtual std::vector< uint8_t > read_remainder(size_t max_length=SIZE_MAX)
    Reads and returns remainder of the stream.
    Definition stream.hpp:826
    @@ -4028,18 +4030,17 @@ $(document).ready(function() { init_codefold(0); });
    fpos_t seekcur(foff_t offset)
    Seeks to relative from current file position.
    Definition stream.hpp:858
    virtual time_point atime() const
    Returns file access time.
    Definition stream.hpp:922
    virtual void set_ctime(time_point date)
    Sets file create time.
    Definition stream.hpp:938
    -
    virtual fsize_t size()=0
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:893
    virtual fpos_t tell() const =0
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    virtual time_point mtime() const
    Returns file modification time.
    Definition stream.hpp:930
    fpos_t seekend(foff_t offset)
    Seeks to relative from end file position.
    Definition stream.hpp:865
    virtual void set_atime(time_point date)
    Sets file access time.
    Definition stream.hpp:947
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)=0
    Seeks to specified relative file position.
    -
    OS data stream (file, pipe, socket...)
    Definition stream.hpp:2196
    -
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:2253
    -
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:2311
    -
    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:2203
    -
    virtual void close()
    Closes the stream.
    Definition stream.hpp:2300
    +
    OS data stream (file, pipe, socket...)
    Definition stream.hpp:2202
    +
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:2259
    +
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:2317
    +
    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:2209
    +
    virtual void close()
    Closes the stream.
    Definition stream.hpp:2306
    ‍UTF-8 byte-order-mark
    Definition stream.hpp:79
    bool ok() const
    Returns true if the stream state is clean i.e. previous operation was succesful.
    Definition stream.hpp:175
    size_t write_vsprintf(_Printf_format_string_params_(2) const char *format, locale_t locale, va_list params)
    Writes formatted string to the stream.
    Definition stream.hpp:637
    @@ -4076,121 +4077,121 @@ $(document).ready(function() { init_codefold(0); });
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:1503
    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:1424
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:1460
    -
    Buffered OS data stream (file, pipe, socket...)
    Definition stream.hpp:2325
    +
    Buffered OS data stream (file, pipe, socket...)
    Definition stream.hpp:2331
    Cached file.
    Definition stream.hpp:1804
    -
    virtual time_point ctime() const
    Returns file creation time.
    Definition stream.hpp:2066
    -
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:2045
    +
    virtual time_point ctime() const
    Returns file creation time.
    Definition stream.hpp:2072
    +
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:2051
    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:1871
    -
    virtual time_point atime() const
    Returns file access time.
    Definition stream.hpp:2071
    -
    virtual fsize_t size()
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:2038
    -
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:2032
    -
    virtual time_point mtime() const
    Returns file modification time.
    Definition stream.hpp:2080
    +
    virtual time_point atime() const
    Returns file access time.
    Definition stream.hpp:2077
    +
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:2038
    +
    virtual time_point mtime() const
    Returns file modification time.
    Definition stream.hpp:2086
    virtual void close()
    Closes the stream.
    Definition stream.hpp:1986
    -
    virtual void set_mtime(time_point date)
    Sets file modification time.
    Definition stream.hpp:2102
    -
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:2026
    +
    virtual void set_mtime(time_point date)
    Sets file modification time.
    Definition stream.hpp:2108
    +
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:2032
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:1995
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:1933
    -
    virtual void set_ctime(time_point date)
    Sets file create time.
    Definition stream.hpp:2089
    -
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:2021
    -
    virtual void set_atime(time_point date)
    Sets file access time.
    Definition stream.hpp:2094
    +
    virtual fsize_t size() const
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:2044
    +
    virtual void set_ctime(time_point date)
    Sets file create time.
    Definition stream.hpp:2095
    +
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:2027
    +
    virtual void set_atime(time_point date)
    Sets file access time.
    Definition stream.hpp:2100
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:2006
    -
    Cached file-system file.
    Definition stream.hpp:3095
    -
    cached_file(const stdex::sstring &filename, int mode, size_t cache_size=default_cache_size)
    Opens file.
    Definition stream.hpp:3125
    -
    void open(const stdex::sstring &filename, int mode)
    Opens file.
    Definition stream.hpp:3159
    -
    void open(const schar_t *filename, int mode)
    Opens file.
    Definition stream.hpp:3138
    -
    cached_file(const schar_t *filename, int mode, size_t cache_size=default_cache_size)
    Opens file.
    Definition stream.hpp:3111
    +
    Cached file-system file.
    Definition stream.hpp:3101
    +
    cached_file(const stdex::sstring &filename, int mode, size_t cache_size=default_cache_size)
    Opens file.
    Definition stream.hpp:3131
    +
    void open(const stdex::sstring &filename, int mode)
    Opens file.
    Definition stream.hpp:3165
    +
    void open(const schar_t *filename, int mode)
    Opens file.
    Definition stream.hpp:3144
    +
    cached_file(const schar_t *filename, int mode, size_t cache_size=default_cache_size)
    Opens file.
    Definition stream.hpp:3117
    Modifies data on the fly when reading from/writing to a source stream. Could also be used to modify r...
    Definition stream.hpp:1022
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:1073
    virtual void close()
    Closes the stream.
    Definition stream.hpp:1067
    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:1051
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:1059
    -
    Compares multiple files to perform the same.
    Definition stream.hpp:4018
    -
    virtual fsize_t size()
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:4153
    -
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:4170
    -
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:4048
    -
    virtual void close()
    Closes the stream.
    Definition stream.hpp:4081
    -
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:4127
    -
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:4140
    -
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:4098
    -
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:4115
    -
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:4066
    -
    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:4025
    -
    In-memory FIFO queue.
    Definition stream.hpp:3919
    -
    virtual void close()
    Closes the stream.
    Definition stream.hpp:3989
    -
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:3966
    -
    size_t size() const
    Returns total size of pending data in the queue.
    Definition stream.hpp:4003
    -
    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:3938
    +
    Compares multiple files to perform the same.
    Definition stream.hpp:4024
    +
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:4171
    +
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:4054
    +
    virtual void close()
    Closes the stream.
    Definition stream.hpp:4087
    +
    virtual fsize_t size() const
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:4159
    +
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:4133
    +
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:4146
    +
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:4104
    +
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:4121
    +
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:4072
    +
    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:4031
    +
    In-memory FIFO queue.
    Definition stream.hpp:3925
    +
    virtual void close()
    Closes the stream.
    Definition stream.hpp:3995
    +
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:3972
    +
    size_t size() const
    Returns total size of pending data in the queue.
    Definition stream.hpp:4009
    +
    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:3944
    Limits file reading/writing to a predefined window.
    Definition stream.hpp:1694
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:1787
    virtual void flush()
    Persists volatile element data.
    Definition stream.hpp:1737
    virtual void skip(fsize_t amount)
    Skips given amount of bytes of data on the stream.
    Definition stream.hpp:1750
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:1743
    -
    virtual fsize_t size()
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:1782
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:1717
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:1762
    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:1703
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:1772
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:1756
    virtual void close()
    Closes the stream.
    Definition stream.hpp:1731
    -
    File-system file.
    Definition stream.hpp:2691
    -
    file(const stdex::sstring &filename, int mode)
    Opens file.
    Definition stream.hpp:2712
    -
    static bool readonly(const stdex::sstring &filename)
    Checks if file/folder/symlink is read-only.
    Definition stream.hpp:3084
    -
    virtual time_point mtime() const
    Returns file modification time.
    Definition stream.hpp:2967
    -
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:2860
    -
    file(const schar_t *filename, int mode)
    Opens file.
    Definition stream.hpp:2701
    -
    virtual void set_ctime(time_point date)
    Sets file create time.
    Definition stream.hpp:2981
    -
    static bool readonly(const stdex::schar_t *filename)
    Checks if file/folder/symlink is read-only.
    Definition stream.hpp:3066
    -
    static bool exists(const stdex::sstring &filename)
    Checks if file/folder/symlink likely exists.
    Definition stream.hpp:3054
    -
    virtual time_point atime() const
    Returns file access time.
    Definition stream.hpp:2953
    -
    void open(const schar_t *filename, int mode)
    Opens file.
    Definition stream.hpp:2720
    -
    virtual void set_mtime(time_point date)
    Sets file modification time.
    Definition stream.hpp:3015
    -
    virtual void set_atime(time_point date)
    Sets file access time.
    Definition stream.hpp:2995
    -
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:2837
    -
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:2903
    -
    virtual time_point ctime() const
    Returns file creation time.
    Definition stream.hpp:2943
    -
    void open(const stdex::sstring &filename, int mode)
    Opens file.
    Definition stream.hpp:2793
    -
    virtual fsize_t size()
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:2885
    -
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:2798
    -
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:2819
    -
    static bool exists(const stdex::schar_t *filename)
    Checks if file/folder/symlink likely exists.
    Definition stream.hpp:3039
    +
    virtual fsize_t size() const
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:1782
    +
    File-system file.
    Definition stream.hpp:2697
    +
    virtual fsize_t size() const
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:2891
    +
    file(const stdex::sstring &filename, int mode)
    Opens file.
    Definition stream.hpp:2718
    +
    static bool readonly(const stdex::sstring &filename)
    Checks if file/folder/symlink is read-only.
    Definition stream.hpp:3090
    +
    virtual time_point mtime() const
    Returns file modification time.
    Definition stream.hpp:2973
    +
    virtual void unlock(fpos_t offset, fsize_t length)
    Unlocks file section for exclusive access.
    Definition stream.hpp:2866
    +
    file(const schar_t *filename, int mode)
    Opens file.
    Definition stream.hpp:2707
    +
    virtual void set_ctime(time_point date)
    Sets file create time.
    Definition stream.hpp:2987
    +
    static bool readonly(const stdex::schar_t *filename)
    Checks if file/folder/symlink is read-only.
    Definition stream.hpp:3072
    +
    static bool exists(const stdex::sstring &filename)
    Checks if file/folder/symlink likely exists.
    Definition stream.hpp:3060
    +
    virtual time_point atime() const
    Returns file access time.
    Definition stream.hpp:2959
    +
    void open(const schar_t *filename, int mode)
    Opens file.
    Definition stream.hpp:2726
    +
    virtual void set_mtime(time_point date)
    Sets file modification time.
    Definition stream.hpp:3021
    +
    virtual void set_atime(time_point date)
    Sets file access time.
    Definition stream.hpp:3001
    +
    virtual void lock(fpos_t offset, fsize_t length)
    Locks file section for exclusive access.
    Definition stream.hpp:2843
    +
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:2909
    +
    virtual time_point ctime() const
    Returns file creation time.
    Definition stream.hpp:2949
    +
    void open(const stdex::sstring &filename, int mode)
    Opens file.
    Definition stream.hpp:2799
    +
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:2804
    +
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:2825
    +
    static bool exists(const stdex::schar_t *filename)
    Checks if file/folder/symlink likely exists.
    Definition stream.hpp:3045
    Limits reading from/writing to stream to a predefined number of bytes.
    Definition stream.hpp:1551
    fsize_t read_limit
    Number of bytes left that may be read from the stream.
    Definition stream.hpp:1603
    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:1559
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:1580
    fsize_t write_limit
    Number of bytes left, that can be written to the stream.
    Definition stream.hpp:1604
    -
    In-memory file.
    Definition stream.hpp:3172
    -
    memory_file(const schar_t *filename, int mode)
    Loads content from file-system file.
    Definition stream.hpp:3250
    -
    memory_file & write_str(const std::basic_string< _Elem, _Traits, _Ax > &data)
    Writes string to the stream length-prefixed.
    Definition stream.hpp:3634
    -
    size_t m_size
    file size
    Definition stream.hpp:3906
    -
    void get(fpos_t offset, T &data)
    Reads data from specified file location This does not move file pointer. It checks for data size Assu...
    Definition stream.hpp:3844
    -
    size_t write_stream(basic &stream, size_t amount=SIZE_MAX)
    Writes content of another stream.
    Definition stream.hpp:3669
    -
    uint8_t * m_data
    file data
    Definition stream.hpp:3903
    -
    memory_file & read_data(T &data)
    Reads one primitive data type.
    Definition stream.hpp:3423
    -
    virtual void close()
    Closes the stream.
    Definition stream.hpp:3719
    -
    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:3384
    -
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:3750
    -
    size_t m_reserved
    reserved file size
    Definition stream.hpp:3907
    -
    memory_file(size_t size, state_t state=state_t::ok)
    Creates an empty file of reserved size.
    Definition stream.hpp:3193
    -
    void reserve(size_t required, bool tight=false) noexcept
    Reallocates memory.
    Definition stream.hpp:3275
    -
    memory_file(const stdex::sstring &filename, int mode)
    Loads content from file-system file.
    Definition stream.hpp:3261
    -
    memory_file & read_str(std::basic_string< _Elem, _Traits, _Ax > &data)
    Reads length-prefixed string from the stream.
    Definition stream.hpp:3463
    -
    void write_byte(uint8_t byte, size_t amount=1)
    Writes a byte of data.
    Definition stream.hpp:3518
    -
    void set(fpos_t offset, const T data)
    Writes data to specified file location This does not move file pointer nor update file size....
    Definition stream.hpp:3810
    -
    void load(const stdex::sstring &filename, int mode)
    Loads content from a file-system file.
    Definition stream.hpp:3337
    -
    size_t m_offset
    file pointer
    Definition stream.hpp:3905
    -
    void save(const schar_t *filename, int mode)
    Saves content to a file-system file.
    Definition stream.hpp:3348
    -
    void load(const schar_t *filename, int mode)
    Loads content from a file-system file.
    Definition stream.hpp:3304
    -
    virtual fsize_t size()
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:3755
    -
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:3733
    -
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:3760
    -
    memory_file & write_data(const T data)
    Writes one primitive data type.
    Definition stream.hpp:3551
    -
    memory_file & write_str(const T *data)
    Writes string to the stream length-prefixed.
    Definition stream.hpp:3589
    -
    void save(const stdex::sstring &filename, int mode)
    Saves content to a file-system file.
    Definition stream.hpp:3374
    -
    bool m_manage
    may reallocate m_data?
    Definition stream.hpp:3904
    -
    memory_file(void *data, size_t size, bool manage=false, state_t state=state_t::ok)
    Creates a file based on available data.
    Definition stream.hpp:3240
    -
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:3494
    -
    memory_file(void *data, size_t size, size_t reserved, bool manage=false, state_t state=state_t::ok)
    Creates a file based on available data.
    Definition stream.hpp:3217
    -
    const void * data() const
    Returns pointer to data.
    Definition stream.hpp:3382
    +
    In-memory file.
    Definition stream.hpp:3178
    +
    virtual fsize_t size() const
    Returns file size Should the file size cannot be determined, the method returns fsize_max and it does...
    Definition stream.hpp:3761
    +
    memory_file(const schar_t *filename, int mode)
    Loads content from file-system file.
    Definition stream.hpp:3256
    +
    memory_file & write_str(const std::basic_string< _Elem, _Traits, _Ax > &data)
    Writes string to the stream length-prefixed.
    Definition stream.hpp:3640
    +
    size_t m_size
    file size
    Definition stream.hpp:3912
    +
    void get(fpos_t offset, T &data)
    Reads data from specified file location This does not move file pointer. It checks for data size Assu...
    Definition stream.hpp:3850
    +
    size_t write_stream(basic &stream, size_t amount=SIZE_MAX)
    Writes content of another stream.
    Definition stream.hpp:3675
    +
    uint8_t * m_data
    file data
    Definition stream.hpp:3909
    +
    memory_file & read_data(T &data)
    Reads one primitive data type.
    Definition stream.hpp:3429
    +
    virtual void close()
    Closes the stream.
    Definition stream.hpp:3725
    +
    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:3390
    +
    virtual fpos_t tell() const
    Returns absolute file position in file or fpos_max if fails. This method does not update stream state...
    Definition stream.hpp:3756
    +
    size_t m_reserved
    reserved file size
    Definition stream.hpp:3913
    +
    memory_file(size_t size, state_t state=state_t::ok)
    Creates an empty file of reserved size.
    Definition stream.hpp:3199
    +
    void reserve(size_t required, bool tight=false) noexcept
    Reallocates memory.
    Definition stream.hpp:3281
    +
    memory_file(const stdex::sstring &filename, int mode)
    Loads content from file-system file.
    Definition stream.hpp:3267
    +
    memory_file & read_str(std::basic_string< _Elem, _Traits, _Ax > &data)
    Reads length-prefixed string from the stream.
    Definition stream.hpp:3469
    +
    void write_byte(uint8_t byte, size_t amount=1)
    Writes a byte of data.
    Definition stream.hpp:3524
    +
    void set(fpos_t offset, const T data)
    Writes data to specified file location This does not move file pointer nor update file size....
    Definition stream.hpp:3816
    +
    void load(const stdex::sstring &filename, int mode)
    Loads content from a file-system file.
    Definition stream.hpp:3343
    +
    size_t m_offset
    file pointer
    Definition stream.hpp:3911
    +
    void save(const schar_t *filename, int mode)
    Saves content to a file-system file.
    Definition stream.hpp:3354
    +
    void load(const schar_t *filename, int mode)
    Loads content from a file-system file.
    Definition stream.hpp:3310
    +
    virtual fpos_t seek(foff_t offset, seek_t how=seek_t::beg)
    Seeks to specified relative file position.
    Definition stream.hpp:3739
    +
    virtual void truncate()
    Sets file size - truncates the remainder of file content from the current file position to the end of...
    Definition stream.hpp:3766
    +
    memory_file & write_data(const T data)
    Writes one primitive data type.
    Definition stream.hpp:3557
    +
    memory_file & write_str(const T *data)
    Writes string to the stream length-prefixed.
    Definition stream.hpp:3595
    +
    void save(const stdex::sstring &filename, int mode)
    Saves content to a file-system file.
    Definition stream.hpp:3380
    +
    bool m_manage
    may reallocate m_data?
    Definition stream.hpp:3910
    +
    memory_file(void *data, size_t size, bool manage=false, state_t state=state_t::ok)
    Creates a file based on available data.
    Definition stream.hpp:3246
    +
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:3500
    +
    memory_file(void *data, size_t size, size_t reserved, bool manage=false, state_t state=state_t::ok)
    Creates a file based on available data.
    Definition stream.hpp:3223
    +
    const void * data() const
    Returns pointer to data.
    Definition stream.hpp:3388
    Definition stream.hpp:1170
    enum stdex::stream::replicator::worker::op_t op
    Operation to perform.
    size_t num_written
    Number of bytes written.
    Definition stream.hpp:1219
    @@ -4202,12 +4203,12 @@ $(document).ready(function() { init_codefold(0); });
    void remove(basic *source)
    Removes stream from the list.
    Definition stream.hpp:1114
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:1131
    virtual void close()
    Closes the stream.
    Definition stream.hpp:1158
    -
    Socket stream.
    Definition stream.hpp:2347
    -
    socket_t get() const noexcept
    Returns socket handle.
    Definition stream.hpp:2403
    -
    virtual void close()
    Closes the stream.
    Definition stream.hpp:2449
    -
    socket(int af, int type, int protocol)
    Creates a socket.
    Definition stream.hpp:2382
    -
    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:2405
    -
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:2429
    +
    Socket stream.
    Definition stream.hpp:2353
    +
    socket_t get() const noexcept
    Returns socket handle.
    Definition stream.hpp:2409
    +
    virtual void close()
    Closes the stream.
    Definition stream.hpp:2455
    +
    socket(int af, int type, int protocol)
    Creates a socket.
    Definition stream.hpp:2388
    +
    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:2411
    +
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:2435
    Limits reading from/writing to stream to a predefined window.
    Definition stream.hpp:1611
    fpos_t write_offset
    Number of bytes to discard on write.
    Definition stream.hpp:1687
    virtual size_t write(_In_reads_bytes_opt_(length) const void *data, size_t length)
    Writes block of data to the stream.
    Definition stream.hpp:1648
    @@ -4221,11 +4222,11 @@ $(document).ready(function() { init_codefold(0); });
    T end
    interval end
    Definition interval.hpp:20
    T start
    interval start
    Definition interval.hpp:19
    Definition stream.hpp:1528
    -
    Definition stream.hpp:4007
    +
    Definition stream.hpp:4013
    diff --git a/string_8hpp_source.html b/string_8hpp_source.html index b727c054d..5e26481d5 100644 --- a/string_8hpp_source.html +++ b/string_8hpp_source.html @@ -1470,7 +1470,7 @@ $(document).ready(function() { init_codefold(0); });
    diff --git a/structstdex_1_1chrono_1_1aosn__date-members.html b/structstdex_1_1chrono_1_1aosn__date-members.html index d3ad72686..168a6caed 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 0a8153ed5..493100682 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 a5b98f0e7..562c79ff1 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 7c1a6ae48..79b270e5b 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 632c88866..7f2a930a1 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 47fe6ac9c..0fc13854a 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 6fef347ad..fb7bc34a7 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 073b3539f..bdf3de08e 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 035919c73..cc10e45b9 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 46f850f99..baa895a28 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 5bdd5743d..999941ee0 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 9bc3fecf7..012ed8aaa 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 19188df5c..4145559be 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 db3a75d87..33504ef99 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 79073729d..4dd7f7c4f 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 10e948e1f..b6e4d3269 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 c8efd7bbe..1010fd200 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 47d711936..55135525b 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 dd959827b..640845ff7 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 c86c8dfcd..522d89aa5 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 fb7a523ac..727a86f5a 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 85ca0bd70..9c8c3c4dd 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 882e6c7cf..ae082fc67 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 f3725c92f..2212d4548 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 19fe2d515..086fb1af6 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 ebfa1d6cf..2327b6243 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 f6221bf5e..0bfcf8d39 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 f9a0794ae..b98609c8c 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 185be4bcd..a54144850 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 dc3755f86..fc8053e82 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 d13bce379..e28fb5436 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 ee46217ba..b1f14267c 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 598c13eea..c14525e2e 100644 --- a/unicode_8cpp_source.html +++ b/unicode_8cpp_source.html @@ -181,7 +181,7 @@ $(document).ready(function() { init_codefold(0); });
    diff --git a/unicode_8hpp_source.html b/unicode_8hpp_source.html index 38390d1d1..3b6b275b9 100644 --- a/unicode_8hpp_source.html +++ b/unicode_8hpp_source.html @@ -715,7 +715,7 @@ $(document).ready(function() { init_codefold(0); });
    diff --git a/unionstdex_1_1md2__t-members.html b/unionstdex_1_1md2__t-members.html index 21566fa91..6f835cdd2 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 d3fef3d34..eebab281a 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 4eae0e7fc..298673035 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 84a4b6573..b7b81f5fa 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 e44938a53..ebc98fdf4 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 d0d13e243..17893ed51 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 8f3405bda..f93250f47 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 596d43353..3272fb04e 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 5d6bf77b6..b69fba5ec 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 2aa973db1..5634bb8f6 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 2c718988d..1ec80dcee 100644 --- a/windows_8h_source.html +++ b/windows_8h_source.html @@ -109,7 +109,7 @@ $(document).ready(function() { init_codefold(0); });