diff --git a/docs/api.md b/docs/api.md new file mode 100644 index 000000000..e86bcdb9a --- /dev/null +++ b/docs/api.md @@ -0,0 +1,74 @@ +--- +hide: + - navigation + - toc +--- + + + + + + + diff --git a/docs/api/gen/14882.css b/docs/api/gen/14882.css new file mode 100644 index 000000000..b0dc16e97 --- /dev/null +++ b/docs/api/gen/14882.css @@ -0,0 +1,1343 @@ +body { + margin: 5em; + font-family: serif; + /* Necessary because operators such as 'xor' and 'lshift' stand out + from surrounding text by virtue of being sans serif. */ + hyphens: auto; + line-height: 1.35; +} + +div.wrapper { + max-width: 60em; + margin: auto; +} + +ul { + list-style-type: none; + padding-left: 2em; + margin-top: -0.2em; + margin-bottom: -0.2em; +} + +a { + text-decoration: none; +} + +a.hidden_link { + text-decoration: none; + color: inherit; +} + +li { + margin-top: 0.6em; + margin-bottom: 0.6em; +} + +h1 { + line-height: 1; +} + +h2 { + line-height: 1; +} + +h3 { + line-height: 1; +} + +h4 { + line-height: 1; +} + +ul>li:before { + content: "\2014"; + position: absolute; + margin-left: -1.5em; +} + +:target { + background-color: #C9FBC9; +} + +:target .codeblock { + background-color: #C9FBC9; +} + +:target ul { + background-color: #C9FBC9; +} + +.abbr_ref { + float: right; +} + +.folded_abbr_ref { + float: right; +} + +:target .folded_abbr_ref { + display: none; +} + +:target .unfolded_abbr_ref { + float: right; + display: inherit; +} + +.unfolded_abbr_ref { + display: none; +} + +.secnum { + display: inline-block; + min-width: 35pt; +} + +.annexnum { + display: block; +} + +div.sourceLinkParent { + float: right; +} + +a.sourceLink { + position: absolute; + opacity: 0; + margin-left: 10pt; +} + +a.sourceLink:hover { + opacity: 1; +} + +a.itemDeclLink { + position: absolute; + font-size: 75%; + text-align: right; + width: 5em; + opacity: 0; +} + +a.itemDeclLink:hover { + opacity: 1; +} + +div.marginalizedparent { + position: relative; + left: -5em; +} + +div.footnoteNumberParent { + position: relative; + left: -4.7em; +} + +a.marginalized { + position: absolute; + font-size: 75%; + text-align: right; + width: 5em; +} + +a.enumerated_item_num { + position: relative; + left: -3.5em; + display: inline-block; + margin-right: -3em; + text-align: right; + width: 3em; +} + +div.para { + margin-bottom: 0.6em; + margin-top: 0.6em; + text-align: justify; +} + +div.section { + text-align: justify; +} + +div.sentence { + display: inline; +} + +span.indexparent { + display: inline; + position: relative; + float: right; + right: -1em; +} + +a.index { + position: absolute; + display: none; +} + +a.index:before { + content: "⟵"; +} + +/* this way the content is not selectable */ + +a.index:target { + display: inline; +} + +.indexitems { + margin-left: 2em; + text-indent: -2em; +} + +div.itemdescr { + margin-left: 3em; +} + +.bnf { + font-family: sans-serif; + font-style: italic; + margin-left: 40pt; + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +.ncbnf { + font-family: sans-serif; + font-style: italic; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 40pt; +} + +.ncrebnf { + font-family: serif; + font-style: italic; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 40pt; +} + +.ncsimplebnf { + font-family: serif; + font-style: italic; + margin-top: 0.5em; + margin-bottom: 0.5em; + margin-left: 40pt; + background: inherit; + /* no idea why this doesn't appear to be the default */ +} + +span.textnormal { + font-style: normal; + font-family: serif; + white-space: normal; + display: inline-block; +} + +span.rlap { + display: inline-block; + width: 0px; +} + +span.descr { + font-style: normal; + font-family: serif; +} + +.grammarterm { + font-style: italic; + font-family: sans-serif; +} + +.ncrebnf .grammarterm { + font-style: italic; + font-family: serif; +} + +span.term { + font-style: italic; +} + +span.terminal { + font-family: monospace; + font-style: normal; +} + +span.tcode { + font-family: monospace; + font-style: normal; +} + +span.textbf { + font-weight: bold; +} + +span.textsf { + font-family: sans-serif; +} + +span.textsc { + font-variant: small-caps; +} + +a.nontermdef { + font-style: italic; + font-family: sans-serif; +} + +.ncrebnf a.nontermdef { + font-style: italic; + font-family: serif; +} + +span.emph { + font-style: italic; +} + +span.techterm { + font-style: italic; +} + +span.mathit { + font-style: italic; +} + +span.mathsf { + font-family: sans-serif; +} + +span.mathrm { + font-family: serif; + font-style: normal; +} + +span.textrm { + font-family: serif; +} + +span.textsl { + font-style: italic; +} + +span.mathtt { + font-family: monospace; + font-style: normal; +} + +span.mbox { + font-family: serif; + font-style: normal; +} + +span.ungap { + display: inline-block; + width: 2pt; +} + +span.textit { + font-style: italic; +} + +span.texttt { + font-family: monospace; +} + +span.tcode_in_codeblock { + font-family: monospace; + font-style: normal; +} + +span.phantom { + color: white; +} + +/* Unfortunately, this way the text is still selectable. Another + option is display:none, but then we lose the nice layout. + Todo: find proper solution. */ + +span.math { + font-style: normal; +} + +span.mathblock { + display: block; + margin-left: auto; + margin-right: auto; + margin-top: 1.2em; + margin-bottom: 1.2em; + text-align: center; +} + +span.mathalpha { + font-style: italic; +} + +span.synopsis { + font-weight: bold; + margin-top: 0.5em; + display: block; +} + +span.definition { + font-weight: bold; + display: block; +} + +.codeblock { + margin-left: 1.2em; + line-height: 127%; +} + +.outputblock { + margin-left: 1.2em; + line-height: 127%; +} + +code { + font-family: monospace; + font-style: normal; +} + +div.itemdecl { + margin-top: 2ex; +} + +code.itemdeclcode { + white-space: pre; + display: block; +} + +span.comment { + color: green; + font-style: italic; + font-family: serif; +} + +span.keyword { + color: #00607c; + font-style: normal; +} + +span.parenthesis { + color: #af1915; +} + +span.curlybracket { + color: #af1915; +} + +span.squarebracket { + color: #af1915; +} + +span.literal { + color: #9F6807; +} + +span.operator { + color: #570057; +} + +span.anglebracket { + color: #570057; +} + +span.preprocessordirective { + color: #6F4E37; +} + +span.textsuperscript { + vertical-align: super; + font-size: smaller; + line-height: 0; +} + +.footnotenum { + vertical-align: super; + font-size: smaller; + line-height: 0; +} + +.footnote { + font-size: small; + margin-left: 2em; + margin-right: 2em; + margin-top: 0.6em; + margin-bottom: 0.6em; +} + +div.minipage { + display: inline-block; + margin-right: 3em; +} + +div.numberedTable { + text-align: center; + margin: 2em; +} + +div.figure { + text-align: center; + margin: 2em; +} + +table { + border: 1px solid black; + border-collapse: collapse; + margin-left: auto; + margin-right: auto; + margin-top: 0.8em; + text-align: left; + hyphens: none; + /* otherwise some columns get very narrow, e.g. [tab:hash] */ +} + +td, +th { + padding-left: 1em; + padding-right: 1em; + vertical-align: top; +} + +td.empty { + padding: 0px; + padding-left: 1px; +} + +td.left { + text-align: left; +} + +td.right { + text-align: right; +} + +td.center { + text-align: center; +} + +td.justify { + text-align: justify; +} + +td.border { + border-left: 1px solid black; +} + +tr.rowsep, +td.cline { + border-top: 1px solid black; +} + +tr.capsep { + border-top: 3px solid black; + border-top-style: double; +} + +th { + border-bottom: 1px solid black; +} + +span.centry { + font-weight: bold; +} + +div.table { + display: block; + margin-left: auto; + margin-right: auto; + text-align: center; + width: 90%; +} + +span.indented { + background: inherit; + display: block; + margin-left: 2em; + margin-bottom: 1em; + margin-top: 1em; +} + +ol.enumeratea { + list-style-type: none; + background: inherit; +} + +ol.enumerate { + list-style-type: none; + background: inherit; +} + +.mjx-chtml { + display: inline-block; + line-height: 0; + text-indent: 0; + text-align: left; + text-transform: none; + font-style: normal; + font-weight: normal; + font-size: 100%; + font-size-adjust: none; + letter-spacing: normal; + word-wrap: normal; + word-spacing: normal; + white-space: nowrap; + float: none; + direction: ltr; + max-width: none; + max-height: none; + min-width: 0; + min-height: 0; + border: 0; + margin: 0; + padding: 1px 0 +} + +.MJXc-display { + display: block; + background: inherit; + text-align: center; + margin: 1em 0; + padding: 0 +} + +.mjx-chtml[tabindex]:focus, +body :focus .mjx-chtml[tabindex] { + display: inline-table +} + +.mjx-full-width { + text-align: center; + display: table-cell !important; + width: 10000em +} + +.mjx-math { + display: inline-block; + border-collapse: separate; + border-spacing: 0 +} + +.mjx-math * { + display: inline-block; + -webkit-box-sizing: content-box !important; + -moz-box-sizing: content-box !important; + box-sizing: content-box !important; + text-align: left +} + +.mjx-numerator { + display: block; + background: inherit; + text-align: center +} + +.mjx-denominator { + display: block; + background: inherit; + text-align: center +} + +.MJXc-stacked { + height: 0; + position: relative +} + +.MJXc-stacked>* { + position: absolute +} + +.MJXc-bevelled>* { + display: inline-block +} + +.mjx-stack { + display: inline-block +} + +.mjx-op { + display: block; + background: inherit +} + +.mjx-under { + display: table-cell +} + +.mjx-over { + display: block; + background: inherit +} + +.mjx-over>* { + padding-left: 0px !important; + padding-right: 0px !important +} + +.mjx-under>* { + padding-left: 0px !important; + padding-right: 0px !important +} + +.mjx-stack>.mjx-sup { + display: block; + background: inherit +} + +.mjx-stack>.mjx-sub { + display: block; + background: inherit +} + +.mjx-prestack>.mjx-presup { + display: block; + background: inherit +} + +.mjx-prestack>.mjx-presub { + display: block; + background: inherit +} + +.mjx-delim-h>.mjx-char { + display: inline-block +} + +.mjx-surd { + vertical-align: top +} + +.mjx-surd+.mjx-box { + display: inline-flex +} + +.mjx-mphantom * { + visibility: hidden +} + +.mjx-merror { + background-color: #FFFF88; + color: #CC0000; + border: 1px solid #CC0000; + padding: 2px 3px; + font-style: normal; + font-size: 90% +} + +.mjx-annotation-xml { + line-height: normal +} + +.mjx-menclose>svg { + fill: none; + stroke: currentColor; + overflow: visible +} + +.mjx-mtr { + display: table-row +} + +.mjx-mlabeledtr { + display: table-row +} + +.mjx-mtd { + display: table-cell; + text-align: center +} + +.mjx-label { + display: table-row +} + +.mjx-box { + display: inline-block +} + +.mjx-block { + display: block; + background: inherit +} + +.mjx-span { + display: inline +} + +.mjx-char { + display: block; + background: inherit; + white-space: pre +} + +.mjx-itable { + display: inline-table; + width: auto +} + +.mjx-row { + display: table-row +} + +.mjx-cell { + display: table-cell +} + +.mjx-table { + display: table; + width: 100% +} + +.mjx-line { + display: block; + background: inherit; + height: 0 +} + +.mjx-strut { + width: 0; + padding-top: 1em +} + +.mjx-vsize { + width: 0 +} + +.MJXc-space1 { + margin-left: .167em +} + +.MJXc-space2 { + margin-left: .222em +} + +.MJXc-space3 { + margin-left: .278em +} + +.mjx-test.mjx-test-display { + display: table !important +} + +.mjx-test.mjx-test-inline { + display: inline !important; + margin-right: -1px +} + +.mjx-test.mjx-test-default { + display: block; + background: inherit !important; + clear: both +} + +.mjx-ex-box { + display: inline-block !important; + position: absolute; + overflow: hidden; + min-height: 0; + max-height: none; + padding: 0; + border: 0; + margin: 0; + width: 1px; + height: 60ex +} + +.mjx-test-inline .mjx-left-box { + display: inline-block; + width: 0; + float: left +} + +.mjx-test-inline .mjx-right-box { + display: inline-block; + width: 0; + float: right +} + +.mjx-test-display .mjx-right-box { + display: table-cell !important; + width: 10000em !important; + min-width: 0; + max-width: none; + padding: 0; + border: 0; + margin: 0 +} + +.MJXc-TeX-unknown-R { + font-family: monospace; + font-style: normal; + font-weight: normal +} + +.MJXc-TeX-unknown-I { + font-family: monospace; + font-style: italic; + font-weight: normal +} + +.MJXc-TeX-unknown-B { + font-family: monospace; + font-style: normal; + font-weight: bold +} + +.MJXc-TeX-unknown-BI { + font-family: monospace; + font-style: italic; + font-weight: bold +} + +.MJXc-TeX-ams-R { + font-family: MJXc-TeX-ams-R, MJXc-TeX-ams-Rw +} + +.MJXc-TeX-cal-B { + font-family: MJXc-TeX-cal-B, MJXc-TeX-cal-Bx, MJXc-TeX-cal-Bw +} + +.MJXc-TeX-frak-R { + font-family: MJXc-TeX-frak-R, MJXc-TeX-frak-Rw +} + +.MJXc-TeX-frak-B { + font-family: MJXc-TeX-frak-B, MJXc-TeX-frak-Bx, MJXc-TeX-frak-Bw +} + +.MJXc-TeX-math-BI { + font-family: MJXc-TeX-math-BI, MJXc-TeX-math-BIx, MJXc-TeX-math-BIw +} + +.MJXc-TeX-sans-R { + font-family: sans-serif +} + +.MJXc-TeX-sans-B { + font-family: MJXc-TeX-sans-B, MJXc-TeX-sans-Bx, MJXc-TeX-sans-Bw +} + +.MJXc-TeX-sans-I { + font-family: MJXc-TeX-sans-I, MJXc-TeX-sans-Ix, MJXc-TeX-sans-Iw +} + +.MJXc-TeX-script-R { + font-family: MJXc-TeX-script-R, MJXc-TeX-script-Rw +} + +.MJXc-TeX-type-R { + font-family: monospace +} + +.MJXc-TeX-cal-R { + font-family: MJXc-TeX-cal-R, MJXc-TeX-cal-Rw +} + +.MJXc-TeX-main-B { + font-family: MJXc-TeX-main-B, MJXc-TeX-main-Bx, MJXc-TeX-main-Bw +} + +.MJXc-TeX-main-I { + font-style: italic +} + +.MJXc-TeX-main-R {} + +.MJXc-TeX-math-I { + font-style: italic +} + +.MJXc-TeX-size1-R { + font-family: MJXc-TeX-size1-R, MJXc-TeX-size1-Rw +} + +.MJXc-TeX-size2-R { + font-family: MJXc-TeX-size2-R, MJXc-TeX-size2-Rw +} + +.MJXc-TeX-size3-R { + font-family: MJXc-TeX-size3-R, MJXc-TeX-size3-Rw +} + +.MJXc-TeX-size4-R { + font-family: MJXc-TeX-size4-R, MJXc-TeX-size4-Rw +} + +.MJXc-TeX-vec-R { + font-family: MJXc-TeX-vec-R, MJXc-TeX-vec-Rw +} + +.MJXc-TeX-vec-B { + font-family: MJXc-TeX-vec-B, MJXc-TeX-vec-Bx, MJXc-TeX-vec-Bw +} + +@font-face { + font-family: MJXc-TeX-ams-R; + src: local('MathJax_AMS'), local('MathJax_AMS-Regular') +} + +@font-face { + font-family: MJXc-TeX-ams-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_AMS-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_AMS-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-cal-B; + src: local('MathJax_Caligraphic Bold'), local('MathJax_Caligraphic-Bold') +} + +@font-face { + font-family: MJXc-TeX-cal-Bx; + src: local('MathJax_Caligraphic'); + font-weight: bold +} + +@font-face { + font-family: MJXc-TeX-cal-Bw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Caligraphic-Bold.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Bold.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Bold.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-frak-R; + src: local('MathJax_Fraktur'), local('MathJax_Fraktur-Regular') +} + +@font-face { + font-family: MJXc-TeX-frak-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Fraktur-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-frak-B; + src: local('MathJax_Fraktur Bold'), local('MathJax_Fraktur-Bold') +} + +@font-face { + font-family: MJXc-TeX-frak-Bx; + src: local('MathJax_Fraktur'); + font-weight: bold +} + +@font-face { + font-family: MJXc-TeX-frak-Bw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Fraktur-Bold.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Fraktur-Bold.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Fraktur-Bold.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-math-BI; + src: local('MathJax_Math BoldItalic'), local('MathJax_Math-BoldItalic') +} + +@font-face { + font-family: MJXc-TeX-math-BIx; + src: local('MathJax_Math'); + font-weight: bold; + font-style: italic +} + +@font-face { + font-family: MJXc-TeX-math-BIw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Math-BoldItalic.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Math-BoldItalic.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Math-BoldItalic.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-sans-R; + src: local('MathJax_SansSerif'), local('MathJax_SansSerif-Regular') +} + +@font-face { + font-family: MJXc-TeX-sans-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-sans-B; + src: local('MathJax_SansSerif Bold'), local('MathJax_SansSerif-Bold') +} + +@font-face { + font-family: MJXc-TeX-sans-Bx; + src: local('MathJax_SansSerif'); + font-weight: bold +} + +@font-face { + font-family: MJXc-TeX-sans-Bw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Bold.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Bold.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Bold.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-sans-I; + src: local('MathJax_SansSerif Italic'), local('MathJax_SansSerif-Italic') +} + +@font-face { + font-family: MJXc-TeX-sans-Ix; + src: local('MathJax_SansSerif'); + font-style: italic +} + +@font-face { + font-family: MJXc-TeX-sans-Iw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_SansSerif-Italic.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_SansSerif-Italic.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_SansSerif-Italic.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-script-R; + src: local('MathJax_Script'), local('MathJax_Script-Regular') +} + +@font-face { + font-family: MJXc-TeX-script-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Script-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Script-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Script-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-type-R; + src: local('MathJax_Typewriter'), local('MathJax_Typewriter-Regular') +} + +@font-face { + font-family: MJXc-TeX-type-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Typewriter-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Typewriter-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Typewriter-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-cal-R; + src: local('MathJax_Caligraphic'), local('MathJax_Caligraphic-Regular') +} + +@font-face { + font-family: MJXc-TeX-cal-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Caligraphic-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Caligraphic-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Caligraphic-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-main-B; + src: local('MathJax_Main Bold'), local('MathJax_Main-Bold') +} + +@font-face { + font-family: MJXc-TeX-main-Bx; + src: local('MathJax_Main'); + font-weight: bold +} + +@font-face { + font-family: MJXc-TeX-main-Bw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Main-Bold.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Main-Bold.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-main-I; + src: local('MathJax_Main Italic'), local('MathJax_Main-Italic') +} + +@font-face { + font-family: MJXc-TeX-main-Ix; + src: local('MathJax_Main'); + font-style: italic +} + +@font-face { + font-family: MJXc-TeX-main-Iw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Main-Italic.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Main-Italic.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-main-R; + src: local('MathJax_Main'), local('MathJax_Main-Regular') +} + +@font-face { + font-family: MJXc-TeX-main-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Main-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Main-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-math-I; + src: local('MathJax_Math Italic'), local('MathJax_Math-Italic') +} + +@font-face { + font-family: MJXc-TeX-math-Ix; + src: local('MathJax_Math'); + font-style: italic +} + +@font-face { + font-family: MJXc-TeX-math-Iw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Math-Italic.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Math-Italic.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Math-Italic.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-size1-R; + src: local('MathJax_Size1'), local('MathJax_Size1-Regular') +} + +@font-face { + font-family: MJXc-TeX-size1-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Size1-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Size1-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Size1-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-size2-R; + src: local('MathJax_Size2'), local('MathJax_Size2-Regular') +} + +@font-face { + font-family: MJXc-TeX-size2-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Size2-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Size2-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Size2-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-size3-R; + src: local('MathJax_Size3'), local('MathJax_Size3-Regular') +} + +@font-face { + font-family: MJXc-TeX-size3-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Size3-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Size3-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Size3-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-size4-R; + src: local('MathJax_Size4'), local('MathJax_Size4-Regular') +} + +@font-face { + font-family: MJXc-TeX-size4-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Size4-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Size4-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Size4-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-vec-R; + src: local('MathJax_Vector'), local('MathJax_Vector-Regular') +} + +@font-face { + font-family: MJXc-TeX-vec-Rw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Vector-Regular.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Vector-Regular.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Vector-Regular.otf') format('opentype') +} + +@font-face { + font-family: MJXc-TeX-vec-B; + src: local('MathJax_Vector Bold'), local('MathJax_Vector-Bold') +} + +@font-face { + font-family: MJXc-TeX-vec-Bx; + src: local('MathJax_Vector'); + font-weight: bold +} + +@font-face { + font-family: MJXc-TeX-vec-Bw; + src + /*1*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/eot/MathJax_Vector-Bold.eot'); + src + /*2*/ + : url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/woff/MathJax_Vector-Bold.woff') format('woff'), url('https://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/MathJax_Vector-Bold.otf') format('opentype') +} \ No newline at end of file diff --git a/docs/api/gen/colored.css b/docs/api/gen/colored.css new file mode 100644 index 000000000..f721a8329 --- /dev/null +++ b/docs/api/gen/colored.css @@ -0,0 +1,8 @@ +div.example { display: inline; color: #bb00bb; } +div.note { display: inline; color: #bb00bb; } + +div.exampleBody { display: inline; background-color: inherit; } +div.noteBody { display: inline; background-color: inherit; } + +a.example_link { text-decoration: none; color: inherit; } +a.note_link { text-decoration: none; color: inherit; } diff --git a/docs/api/gen/contents.html b/docs/api/gen/contents.html new file mode 100644 index 000000000..2bb5cdceb --- /dev/null +++ b/docs/api/gen/contents.html @@ -0,0 +1 @@ +[contents]

3 Introduction [intro]

3.2 Library-wide requirements [requirements]

3.2.1 Library contents [contents]

Whenever a name is qualified with X​::​, ​::​X​::​ is meant.
Example
:
When std​::​Y is mentioned, ​::​std​::​Y is meant.
— end example
 ]
\ No newline at end of file diff --git a/docs/api/gen/expanded.css b/docs/api/gen/expanded.css new file mode 100644 index 000000000..f4f3bf47d --- /dev/null +++ b/docs/api/gen/expanded.css @@ -0,0 +1,8 @@ +div.example { display: inline; } +div.note { display: inline; } + +div.exampleBody { display: inline; } +div.noteBody { display: inline; } + +a.example_link { text-decoration: none; color: inherit; } +a.note_link { text-decoration: none; color: inherit; } diff --git a/docs/api/gen/fig.html b/docs/api/gen/fig.html new file mode 100644 index 000000000..d9944ece8 --- /dev/null +++ b/docs/api/gen/fig.html @@ -0,0 +1 @@ +JEGP Library: Figures

List of Figures [fig]

\ No newline at end of file diff --git a/docs/api/gen/footnotes.html b/docs/api/gen/footnotes.html new file mode 100644 index 000000000..2093d27f5 --- /dev/null +++ b/docs/api/gen/footnotes.html @@ -0,0 +1 @@ +JEGP Library: Footnotes

List of Footnotes

\ No newline at end of file diff --git a/docs/api/gen/full.html b/docs/api/gen/full.html new file mode 100644 index 000000000..ea9d8c37b --- /dev/null +++ b/docs/api/gen/full.html @@ -0,0 +1,476 @@ + + + + + JEGP Library + + + + + + + + +
+
+

1 Scope [scope]

+
+ +
# +
+
This document describes the contents of the JEGP library.
+
+
+
+

2 References [refs]

+
+ +
# +
+
The following documents are referred to in the text + in such a way that some or all of their content + constitutes requirements of this document.
+
    +
  • + +
    ISO/IEC 14882:2020, Programming + Languages — C++
    +
  • +
+
+
+ +
# +
+
ISO/IEC 14882 is herein called the C++ Standard.
+
+
+
+

3 Introduction [intro] +

+
+

3.1 General [intro.general]

+
+ +
# +
+
The library specification subsumes the C++ Standard's [library], + assumingly amended to the context of this library.
+
Example +
: +
    +
  • +
    Per C++ Standard's [namespace.future], ​::​jegp2 is reserved.
    +
  • +
  • +
    Per C++ Standard's [contents]#3, a name x means + ​::​jegp​::​x. +
    +
  • +
— end example +
 ] +
+
+ The following subclauses describe additions to it.
+
Table 1: Library + categories   [tab:library.categories]
+ + + + + + + + + +
+
Clause
+
+
Category
+
+ + +
General utilities library
+
+
+
+
+
+

3.2 Library-wide requirements [requirements]

+
+

3.2.1 Library contents [contents]

+
+ +
# +
+
Whenever a name is qualified with X​::​, ​::​X​::​ is + meant.
+
Example +
: +
When std​::​Y is mentioned, ​::​std​::​Y is meant.
— end example +
 ] +
+
+
+
+

3.2.2 Reserved names [reserved.names]

+
+ +
# +
+
The JEGP library reserves macro names starting with + JEGP_­. +
+
+
+
+
+
+

4 General utilities library [utilities]

+
+

4.1 General [utilities.general]

+
+ +
# +
+
This clause describes generally useful utilities.
+
These utilities are summarized in Table 2. +
+
Table 2: General + utilities library summary   [tab:utilities.summary]
+ + + + + + + + + + + +
+
Subclause
+
+
Header
+
+ + +
Utility components
+
+
<jegp/utility.hpp>
+
+
+
+
+
+

4.2 Utility components [utility]

+
+

4.2.1 Header <jegp/utility.hpp> synopsis [utility.syn]

+
+ +
# +
+
The header <jegp/utility.hpp> + contains some basic constructs.
+
+namespace jegp
+{
+// [utility.underlying], underlying
+template <class Enum>
+constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept;
+
+// [static.downcast], static_­downcast
+template <class DerivedRef, class Base>
+constexpr DerivedRef static_downcast(Base&& base) noexcept;
+
+// [hash.combine], hash_­combine
+template <class... Args>
+constexpr std::size_t hash_combine(const Args&... args) noexcept(see below);
+
+} // namespace jegp
+
+
+
+
+

4.2.2 underlying [utility.underlying]

+
+ + template <class Enum> +constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept; + +
+
+
+ +
+
# +
+
Constraints: + std​::​is_­enum_­v<Enum> is true. +
+
+
+
+ +
+
# +
+
Returns: + static_­cast<std​::​underlying_­type_­t<Enum>>(e). +
+
+
+
+
+

4.2.3 static_­downcast [static.downcast]

+
+ +
# +
+
A static_­cast that performs a downcast.
+
+
+ template <class DerivedRef, class Base> +constexpr DerivedRef static_downcast(Base&& base) noexcept; + +
+
+
+ +
+
# +
+
Let derived-ref be + static_­cast<DerivedRef>(std​::​forward<Base>(base)). +
+
+
+
+ +
+
# +
+
Constraints: +
    +
  • + DerivedRef is a reference + type, +
  • +
  • + std​::​remove_­cvref_­t<DerivedRef> is + derived from + std​::​remove_­cvref_­t<Base>, and +
  • +
  • + derived-ref is well-formed. +
  • +
+
+
+
+
+ +
+
# +
+
Preconditions: + derived-ref has well-defined behavior. +
+
+
+
+ +
+
# +
+
Returns: + derived-ref. +
+
+
+
+
+

4.2.4 hash_­combine [hash.combine]

+
+ +
# +
+
Insipred by Boost.ContainerHash.
+
Useful in the specializations of std​::​hash + whose Key's salient parts consist of two or more objects.
+
+
+ template <class... Args> +constexpr std::size_t hash_combine(const Args&... args) noexcept(see below); + +
+
+
+ +
+
# +
+
Constraints: +
    +
  • + + and +
  • +
  • + std​::​hash<T> is enabled (C++ Standard's [unord.hash]) + for all T in Args. +
  • +
+
+
+
+
+ +
+
# +
+
Effects: + Equivalent to: +
+std::size_t seed{0};
+return (..., (seed ^= std::hash<Args>{}(args) + (seed << 6) + (seed >> 2)));
+
+
+
+
+
+ +
+
# +
+
Remarks: + The expression inside noexcept is equivalent to +
+(noexcept(std::hash<Args>{}(args)) && ...)
+
+
+
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/docs/api/gen/generalindex.html b/docs/api/gen/generalindex.html new file mode 100644 index 000000000..80dbbf87a --- /dev/null +++ b/docs/api/gen/generalindex.html @@ -0,0 +1 @@ +JEGP Library: Index

Index

C++ Standard, [refs]
JEGP library, [scope]
<jegp/utility.hpp>, [utility.syn]
\ No newline at end of file diff --git a/docs/api/gen/hash.combine.html b/docs/api/gen/hash.combine.html new file mode 100644 index 000000000..b89b054a2 --- /dev/null +++ b/docs/api/gen/hash.combine.html @@ -0,0 +1,15 @@ +[hash.combine]

4 General utilities library [utilities]

4.2 Utility components [utility]

4.2.4 hash_­combine [hash.combine]

Insipred by Boost.ContainerHash.
Useful in the specializations of std​::​hash +whose Key's salient parts consist of two or more objects.
template <class... Args> +constexpr std::size_t hash_combine(const Args&... args) noexcept(see below); +
Constraints: +
Effects: +Equivalent to: +
+std::size_t seed{0};
+return (..., (seed ^= std::hash<Args>{}(args) + (seed << 6) + (seed >> 2)));
+
Remarks: +The expression inside noexcept is equivalent to +
+(noexcept(std::hash<Args>{}(args)) && ...)
+
\ No newline at end of file diff --git a/docs/api/gen/headerindex.html b/docs/api/gen/headerindex.html new file mode 100644 index 000000000..e7955fb82 --- /dev/null +++ b/docs/api/gen/headerindex.html @@ -0,0 +1 @@ +JEGP Library: Index of library headers

Index of library headers

<jegp/utility.hpp>, [utility.syn]
\ No newline at end of file diff --git a/docs/api/gen/icon.png b/docs/api/gen/icon.png new file mode 100644 index 000000000..3acaef025 Binary files /dev/null and b/docs/api/gen/icon.png differ diff --git a/docs/api/gen/index.html b/docs/api/gen/index.html new file mode 100644 index 000000000..e0fe1140f --- /dev/null +++ b/docs/api/gen/index.html @@ -0,0 +1,9 @@ +JEGP Library: Contents

JEGP Library


(Generated on 2020-05-20 from the LaTeX sources by cxxdraft-htmlgen.)

Contents

1 Scope [scope][scope]

2 References [refs][refs]

3 Introduction [intro][intro]

3.2 Library-wide requirements [requirements]

3.2.1 Library contents [contents]

3.2.2 Reserved names [reserved.names]

4 General utilities library [utilities][utilities]

4.2 Utility components [utility]

4.2.1 Header <jegp/utility.hpp> synopsis [utility.syn]

4.2.3 static_­downcast [static.downcast]

4.2.4 hash_­combine [hash.combine]

Index

Index of library headers

Index of library names

\ No newline at end of file diff --git a/docs/api/gen/intro.general.html b/docs/api/gen/intro.general.html new file mode 100644 index 000000000..741e9c9eb --- /dev/null +++ b/docs/api/gen/intro.general.html @@ -0,0 +1,3 @@ +[intro.general]

3 Introduction [intro]

3.1 General [intro.general]

The library specification subsumes the C++ Standard's [library], +assumingly amended to the context of this library.
Example
: — end example
 ]
+The following subclauses describe additions to it.
Table 1: Library categories   [tab:library.categories]
Clause
Category
General utilities library
\ No newline at end of file diff --git a/docs/api/gen/intro.html b/docs/api/gen/intro.html new file mode 100644 index 000000000..e4025a2ae --- /dev/null +++ b/docs/api/gen/intro.html @@ -0,0 +1,3 @@ +[intro]

3 Introduction [intro]

3.1 General [intro.general]

The library specification subsumes the C++ Standard's [library], +assumingly amended to the context of this library.
Example
: — end example
 ]
+The following subclauses describe additions to it.
Table 1: Library categories   [tab:library.categories]
Clause
Category
General utilities library

3.2 Library-wide requirements [requirements]

3.2.1 Library contents [contents]

Whenever a name is qualified with X​::​, ​::​X​::​ is meant.
Example
:
When std​::​Y is mentioned, ​::​std​::​Y is meant.
— end example
 ]

3.2.2 Reserved names [reserved.names]

The JEGP library reserves macro names starting with JEGP_­.
\ No newline at end of file diff --git a/docs/api/gen/jegp.pdf b/docs/api/gen/jegp.pdf new file mode 100644 index 000000000..aca4b6c4f Binary files /dev/null and b/docs/api/gen/jegp.pdf differ diff --git a/docs/api/gen/libraryindex.html b/docs/api/gen/libraryindex.html new file mode 100644 index 000000000..d0db186a6 --- /dev/null +++ b/docs/api/gen/libraryindex.html @@ -0,0 +1 @@ +JEGP Library: Index of library names

Index of library names

hash_­combine, [hash.combine]
static_­downcast, [static.downcast]
\ No newline at end of file diff --git a/docs/api/gen/refs.html b/docs/api/gen/refs.html new file mode 100644 index 000000000..d2f2ab8d5 --- /dev/null +++ b/docs/api/gen/refs.html @@ -0,0 +1,3 @@ +[refs]

2 References [refs]

The following documents are referred to in the text +in such a way that some or all of their content +constitutes requirements of this document.
ISO/IEC 14882 is herein called the C++ Standard.
\ No newline at end of file diff --git a/docs/api/gen/requirements.html b/docs/api/gen/requirements.html new file mode 100644 index 000000000..f63e99688 --- /dev/null +++ b/docs/api/gen/requirements.html @@ -0,0 +1 @@ +[requirements]

3 Introduction [intro]

3.2 Library-wide requirements [requirements]

3.2.1 Library contents [contents]

Whenever a name is qualified with X​::​, ​::​X​::​ is meant.
Example
:
When std​::​Y is mentioned, ​::​std​::​Y is meant.
— end example
 ]

3.2.2 Reserved names [reserved.names]

The JEGP library reserves macro names starting with JEGP_­.
\ No newline at end of file diff --git a/docs/api/gen/reserved.names.html b/docs/api/gen/reserved.names.html new file mode 100644 index 000000000..dbb2ae4cb --- /dev/null +++ b/docs/api/gen/reserved.names.html @@ -0,0 +1 @@ +[reserved.names]

3 Introduction [intro]

3.2 Library-wide requirements [requirements]

3.2.2 Reserved names [reserved.names]

The JEGP library reserves macro names starting with JEGP_­.
\ No newline at end of file diff --git a/docs/api/gen/scope.html b/docs/api/gen/scope.html new file mode 100644 index 000000000..0df45c8f1 --- /dev/null +++ b/docs/api/gen/scope.html @@ -0,0 +1 @@ +[scope]

1 Scope [scope]

This document describes the contents of the JEGP library.
\ No newline at end of file diff --git a/docs/api/gen/static.downcast.html b/docs/api/gen/static.downcast.html new file mode 100644 index 000000000..6d2c8f47c --- /dev/null +++ b/docs/api/gen/static.downcast.html @@ -0,0 +1,8 @@ +[static.downcast]

4 General utilities library [utilities]

4.2 Utility components [utility]

4.2.3 static_­downcast [static.downcast]

A static_­cast that performs a downcast.
template <class DerivedRef, class Base> +constexpr DerivedRef static_downcast(Base&& base) noexcept; +
Let derived-ref be +static_­cast<DerivedRef>(std​::​forward<Base>(base)).
Constraints: +
  • DerivedRef is a reference type,
  • std​::​remove_­cvref_­t<DerivedRef> is derived from + std​::​remove_­cvref_­t<Base>, and
  • derived-ref is well-formed.
Preconditions: +derived-ref has well-defined behavior.
Returns: +derived-ref.
\ No newline at end of file diff --git a/docs/api/gen/tab.html b/docs/api/gen/tab.html new file mode 100644 index 000000000..128feff8a --- /dev/null +++ b/docs/api/gen/tab.html @@ -0,0 +1 @@ +JEGP Library: Tables

List of Tables [tab]


3.1 General [intro.general]

Table 1: Library categories   [tab:library.categories]
Clause
Category
General utilities library

4.1 General [utilities.general]

Table 2: General utilities library summary   [tab:utilities.summary]
Subclause
Header
Utility components
<jegp/utility.hpp>
\ No newline at end of file diff --git a/docs/api/gen/utilities.general.html b/docs/api/gen/utilities.general.html new file mode 100644 index 000000000..de8d14b65 --- /dev/null +++ b/docs/api/gen/utilities.general.html @@ -0,0 +1 @@ +[utilities.general]

4 General utilities library [utilities]

4.1 General [utilities.general]

This clause describes generally useful utilities.
These utilities are summarized in Table 2.
Table 2: General utilities library summary   [tab:utilities.summary]
Subclause
Header
Utility components
<jegp/utility.hpp>
\ No newline at end of file diff --git a/docs/api/gen/utilities.html b/docs/api/gen/utilities.html new file mode 100644 index 000000000..3212627c7 --- /dev/null +++ b/docs/api/gen/utilities.html @@ -0,0 +1,43 @@ +[utilities]

4 General utilities library [utilities]

4.1 General [utilities.general]

This clause describes generally useful utilities.
These utilities are summarized in Table 2.
Table 2: General utilities library summary   [tab:utilities.summary]
Subclause
Header
Utility components
<jegp/utility.hpp>

4.2 Utility components [utility]

4.2.1 Header <jegp/utility.hpp> synopsis [utility.syn]

The header <jegp/utility.hpp> +contains some basic constructs.
+namespace jegp
+{
+// [utility.underlying], underlying
+template <class Enum>
+constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept;
+
+// [static.downcast], static_­downcast
+template <class DerivedRef, class Base>
+constexpr DerivedRef static_downcast(Base&& base) noexcept;
+
+// [hash.combine], hash_­combine
+template <class... Args>
+constexpr std::size_t hash_combine(const Args&... args) noexcept(see below);
+
+} // namespace jegp
+

4.2.2 underlying [utility.underlying]

template <class Enum> +constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept; +
Constraints: +std​::​is_­enum_­v<Enum> is true.
Returns: +static_­cast<std​::​underlying_­type_­t<Enum>>(e).

4.2.3 static_­downcast [static.downcast]

A static_­cast that performs a downcast.
template <class DerivedRef, class Base> +constexpr DerivedRef static_downcast(Base&& base) noexcept; +
Let derived-ref be +static_­cast<DerivedRef>(std​::​forward<Base>(base)).
Constraints: +
  • DerivedRef is a reference type,
  • std​::​remove_­cvref_­t<DerivedRef> is derived from + std​::​remove_­cvref_­t<Base>, and
  • derived-ref is well-formed.
Preconditions: +derived-ref has well-defined behavior.
Returns: +derived-ref.

4.2.4 hash_­combine [hash.combine]

Insipred by Boost.ContainerHash.
Useful in the specializations of std​::​hash +whose Key's salient parts consist of two or more objects.
template <class... Args> +constexpr std::size_t hash_combine(const Args&... args) noexcept(see below); +
Constraints: +
Effects: +Equivalent to: +
+std::size_t seed{0};
+return (..., (seed ^= std::hash<Args>{}(args) + (seed << 6) + (seed >> 2)));
+
Remarks: +The expression inside noexcept is equivalent to +
+(noexcept(std::hash<Args>{}(args)) && ...)
+
\ No newline at end of file diff --git a/docs/api/gen/utility.html b/docs/api/gen/utility.html new file mode 100644 index 000000000..41ec9542b --- /dev/null +++ b/docs/api/gen/utility.html @@ -0,0 +1,43 @@ +[utility]

4 General utilities library [utilities]

4.2 Utility components [utility]

4.2.1 Header <jegp/utility.hpp> synopsis [utility.syn]

The header <jegp/utility.hpp> +contains some basic constructs.
+namespace jegp
+{
+// [utility.underlying], underlying
+template <class Enum>
+constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept;
+
+// [static.downcast], static_­downcast
+template <class DerivedRef, class Base>
+constexpr DerivedRef static_downcast(Base&& base) noexcept;
+
+// [hash.combine], hash_­combine
+template <class... Args>
+constexpr std::size_t hash_combine(const Args&... args) noexcept(see below);
+
+} // namespace jegp
+

4.2.2 underlying [utility.underlying]

template <class Enum> +constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept; +
Constraints: +std​::​is_­enum_­v<Enum> is true.
Returns: +static_­cast<std​::​underlying_­type_­t<Enum>>(e).

4.2.3 static_­downcast [static.downcast]

A static_­cast that performs a downcast.
template <class DerivedRef, class Base> +constexpr DerivedRef static_downcast(Base&& base) noexcept; +
Let derived-ref be +static_­cast<DerivedRef>(std​::​forward<Base>(base)).
Constraints: +
  • DerivedRef is a reference type,
  • std​::​remove_­cvref_­t<DerivedRef> is derived from + std​::​remove_­cvref_­t<Base>, and
  • derived-ref is well-formed.
Preconditions: +derived-ref has well-defined behavior.
Returns: +derived-ref.

4.2.4 hash_­combine [hash.combine]

Insipred by Boost.ContainerHash.
Useful in the specializations of std​::​hash +whose Key's salient parts consist of two or more objects.
template <class... Args> +constexpr std::size_t hash_combine(const Args&... args) noexcept(see below); +
Constraints: +
Effects: +Equivalent to: +
+std::size_t seed{0};
+return (..., (seed ^= std::hash<Args>{}(args) + (seed << 6) + (seed >> 2)));
+
Remarks: +The expression inside noexcept is equivalent to +
+(noexcept(std::hash<Args>{}(args)) && ...)
+
\ No newline at end of file diff --git a/docs/api/gen/utility.syn.html b/docs/api/gen/utility.syn.html new file mode 100644 index 000000000..681cf352d --- /dev/null +++ b/docs/api/gen/utility.syn.html @@ -0,0 +1,18 @@ +[utility.syn]

4 General utilities library [utilities]

4.2 Utility components [utility]

4.2.1 Header <jegp/utility.hpp> synopsis [utility.syn]

The header <jegp/utility.hpp> +contains some basic constructs.
+namespace jegp
+{
+// [utility.underlying], underlying
+template <class Enum>
+constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept;
+
+// [static.downcast], static_­downcast
+template <class DerivedRef, class Base>
+constexpr DerivedRef static_downcast(Base&& base) noexcept;
+
+// [hash.combine], hash_­combine
+template <class... Args>
+constexpr std::size_t hash_combine(const Args&... args) noexcept(see below);
+
+} // namespace jegp
+
\ No newline at end of file diff --git a/docs/api/gen/utility.underlying.html b/docs/api/gen/utility.underlying.html new file mode 100644 index 000000000..999c32991 --- /dev/null +++ b/docs/api/gen/utility.underlying.html @@ -0,0 +1,5 @@ +[utility.underlying]

4 General utilities library [utilities]

4.2 Utility components [utility]

4.2.2 underlying [utility.underlying]

template <class Enum> +constexpr std::underlying_type_t<Enum> underlying(Enum e) noexcept; +
Constraints: +std​::​is_­enum_­v<Enum> is true.
Returns: +static_­cast<std​::​underlying_­type_­t<Enum>>(e).
\ No newline at end of file diff --git a/docs/javascripts/iframeResizer.contentWindow.min.js b/docs/javascripts/iframeResizer.contentWindow.min.js new file mode 100644 index 000000000..3961366cb --- /dev/null +++ b/docs/javascripts/iframeResizer.contentWindow.min.js @@ -0,0 +1,9 @@ +/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v4.3.9 - 2023-11-10 + * Desc: Include this file in any page being loaded into an iframe + * to force the iframe to resize to the content size. + * Requires: iframeResizer.min.js on host page. + * Copyright: (c) 2023 David J. Bradshaw - dave@bradshaw.net + * License: MIT + */ +!function(a){if("undefined"!=typeof window){var r=!0,P="",u=0,c="",s=null,D="",d=!1,j={resize:1,click:1},l=128,q=!0,f=1,n="bodyOffset",m=n,H=!0,W="",h={},g=32,B=null,p=!1,v=!1,y="[iFrameSizer]",J=y.length,w="",U={max:1,min:1,bodyScroll:1,documentElementScroll:1},b="child",V=!0,X=window.parent,T="*",E=0,i=!1,Y=null,O=16,S=1,K="scroll",M=K,Q=window,G=function(){x("onMessage function not defined")},Z=function(){},$=function(){},_={height:function(){return x("Custom height calculation function not defined"),document.documentElement.offsetHeight},width:function(){return x("Custom width calculation function not defined"),document.body.scrollWidth}},ee={},te=!1;try{var ne=Object.create({},{passive:{get:function(){te=!0}}});window.addEventListener("test",ae,ne),window.removeEventListener("test",ae,ne)}catch(e){}var oe,o,I,ie,N,A,C={bodyOffset:function(){return document.body.offsetHeight+ye("marginTop")+ye("marginBottom")},offset:function(){return C.bodyOffset()},bodyScroll:function(){return document.body.scrollHeight},custom:function(){return _.height()},documentElementOffset:function(){return document.documentElement.offsetHeight},documentElementScroll:function(){return document.documentElement.scrollHeight},max:function(){return Math.max.apply(null,e(C))},min:function(){return Math.min.apply(null,e(C))},grow:function(){return C.max()},lowestElement:function(){return Math.max(C.bodyOffset()||C.documentElementOffset(),we("bottom",Te()))},taggedElement:function(){return be("bottom","data-iframe-height")}},z={bodyScroll:function(){return document.body.scrollWidth},bodyOffset:function(){return document.body.offsetWidth},custom:function(){return _.width()},documentElementScroll:function(){return document.documentElement.scrollWidth},documentElementOffset:function(){return document.documentElement.offsetWidth},scroll:function(){return Math.max(z.bodyScroll(),z.documentElementScroll())},max:function(){return Math.max.apply(null,e(z))},min:function(){return Math.min.apply(null,e(z))},rightMostElement:function(){return we("right",Te())},taggedElement:function(){return be("right","data-iframe-width")}},re=(oe=Ee,N=null,A=0,function(){var e=Date.now(),t=O-(e-(A=A||e));return o=this,I=arguments,t<=0||Ok[r]["max"+e])throw new Error("Value for min"+e+" can not be greater than max"+e)}}function h(e,n){null===i&&(i=setTimeout(function(){i=null,e()},n))}function e(){"hidden"!==document.visibilityState&&(O("document","Trigger event: Visibility change"),h(function(){b("Tab Visible","resize")},16))}function b(i,t){Object.keys(k).forEach(function(e){var n;k[n=e]&&"parent"===k[n].resizeFrom&&k[n].autoResize&&!k[n].firstRun&&A(i,t,k[e].iframe,e)})}function y(){F(window,"message",w),F(window,"resize",function(){var e;O("window","Trigger event: "+(e="resize")),h(function(){b("Window "+e,"resize")},16)}),F(document,"visibilitychange",e),F(document,"-webkit-visibilitychange",e)}function n(){function t(e,n){if(n){if(!n.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==n.tagName.toUpperCase())throw new TypeError("Expected