mirror of
https://github.com/c-cube/moonpool.git
synced 2026-01-29 20:54:50 -05:00
deploy: 3d371b10616937e5da8072fe19406200cb497c1f
This commit is contained in:
parent
17f7125b27
commit
5e94bcf015
1122 changed files with 26417 additions and 0 deletions
BIN
dev/_odoc-theme/fonts/DejaVuSansMono-Bold.woff2
Normal file
BIN
dev/_odoc-theme/fonts/DejaVuSansMono-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/DejaVuSansMono-BoldOblique.woff2
Normal file
BIN
dev/_odoc-theme/fonts/DejaVuSansMono-BoldOblique.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/DejaVuSansMono-Oblique.woff2
Normal file
BIN
dev/_odoc-theme/fonts/DejaVuSansMono-Oblique.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/DejaVuSansMono.woff2
Normal file
BIN
dev/_odoc-theme/fonts/DejaVuSansMono.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/PTC55F.woff2
Normal file
BIN
dev/_odoc-theme/fonts/PTC55F.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/PTC75F.woff2
Normal file
BIN
dev/_odoc-theme/fonts/PTC75F.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/PTS55F.woff2
Normal file
BIN
dev/_odoc-theme/fonts/PTS55F.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/PTS56F.woff2
Normal file
BIN
dev/_odoc-theme/fonts/PTS56F.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/PTS75F.woff2
Normal file
BIN
dev/_odoc-theme/fonts/PTS75F.woff2
Normal file
Binary file not shown.
BIN
dev/_odoc-theme/fonts/PTS76F.woff2
Normal file
BIN
dev/_odoc-theme/fonts/PTS76F.woff2
Normal file
Binary file not shown.
59
dev/_odoc-theme/fonts/fonts.css
Normal file
59
dev/_odoc-theme/fonts/fonts.css
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
@charset "UTF-8";
|
||||
|
||||
/* PT Sans */
|
||||
|
||||
@font-face
|
||||
{ font-family: 'PT-Sans';
|
||||
src: url('PTS55F.woff2') format('woff2');
|
||||
font-weight: 400; font-style: normal; }
|
||||
|
||||
@font-face
|
||||
{ font-family: 'PT-Sans';
|
||||
src: url('PTS75F.woff2') format('woff2');
|
||||
font-weight: 700; font-style: normal; }
|
||||
|
||||
@font-face
|
||||
{ font-family: 'PT-Sans';
|
||||
src: url('PTS56F.woff2') format('woff2');
|
||||
font-weight: 400; font-style: italic; }
|
||||
|
||||
@font-face
|
||||
{ font-family: 'PT-Sans';
|
||||
src: url('PTS76F.woff2') format('woff2');
|
||||
font-weight: 700; font-style: italic; }
|
||||
|
||||
/* PT Sans caption */
|
||||
|
||||
@font-face
|
||||
{ font-family: 'PT-Sans-Caption';
|
||||
src: url('PTC55F.woff2') format('woff2');
|
||||
font-weight: 400; font-style: normal; }
|
||||
|
||||
@font-face
|
||||
{ font-family: 'PT-Sans-Caption';
|
||||
src: url('PTC75F.woff2') format('woff2');
|
||||
font-weight: 700; font-style: normal; }
|
||||
|
||||
/* DejaVu 400 */
|
||||
|
||||
@font-face
|
||||
{ font-family: 'DejaVu-SansMono';
|
||||
src: url('DejaVuSansMono.woff2') format('woff2');
|
||||
font-weight: 400; font-style: normal; }
|
||||
|
||||
@font-face
|
||||
{ font-family: 'DejaVu-SansMono';
|
||||
src: url('DejaVuSansMono-Oblique.woff2') format('woff2');
|
||||
font-weight: 400; font-style: oblique; }
|
||||
|
||||
/* DejaVu 700 */
|
||||
|
||||
@font-face
|
||||
{ font-family: 'DejaVu-SansMono';
|
||||
src: url('DejaVuSansMono-Bold.woff2') format('woff2');
|
||||
font-weight: 700; font-style: normal; }
|
||||
|
||||
@font-face
|
||||
{ font-family: 'DejaVu-SansMono';
|
||||
src: url('DejaVuSansMono-BoldOblique.woff2') format('woff2');
|
||||
font-weight: 700; font-style: oblique; }
|
||||
376
dev/_odoc-theme/manual.css
Normal file
376
dev/_odoc-theme/manual.css
Normal file
|
|
@ -0,0 +1,376 @@
|
|||
@charset "UTF-8";
|
||||
@import url("fonts/fonts.css");
|
||||
@import url("theme.css");
|
||||
|
||||
/* Copyright (c) 2019 The odig programmers. All rights reserved.
|
||||
Distributed under the ISC license, see terms at the end of the file.
|
||||
odig v0.0.9 */
|
||||
|
||||
:root { --font-headings: "PT-Sans-Caption";
|
||||
--font-body: "PT-Sans";
|
||||
--font-mono: "DejaVu-SansMono";
|
||||
|
||||
--size-font: 0.96875rem;
|
||||
--size-font-micro: calc(0.675 * var(--size-font));
|
||||
--size-font-tiny-ratio: 0.75;
|
||||
--size-font-tiny: calc(var(--size-font-tiny-ratio) * var(--size-font));
|
||||
--size-font-small: calc(0.875 * var(--size-font));
|
||||
--size-font-large: calc(1.25 * var(--size-font));
|
||||
--size-font-big: calc(1.5 * var(--size-font));
|
||||
--size-font-huge: calc(1.75 * var(--size-font));
|
||||
--size-font-mono-ratio: 0.87097;
|
||||
--size-line-ratio: 1.5;
|
||||
--size-line: calc(var(--size-line-ratio) * var(--size-font));
|
||||
--size-half-line: calc(0.5 * var(--size-line)); }
|
||||
|
||||
/* Reset a few things. */
|
||||
|
||||
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,
|
||||
a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,select,
|
||||
small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,
|
||||
fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,
|
||||
article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,
|
||||
menu,nav,output,ruby,section,summary,time,mark,audio,video,button,input
|
||||
{ margin: 0; padding: 0; border: 0; /* outline: 0; */
|
||||
font-size: inherit; font: inherit; font-weight: inherit;
|
||||
line-height: inherit; vertical-align: baseline;
|
||||
text-align: inherit; color: inherit; background: transparent; }
|
||||
|
||||
table { border-collapse: collapse; border-spacing: 0; }
|
||||
*, *:before, *:After { box-sizing: border-box; }
|
||||
|
||||
/* Note the stylesheet has quite hackish CSS selectors as the markup's
|
||||
classification is sometimes a bit lacking. */
|
||||
|
||||
/* Geometry.
|
||||
See also media adjustements at the end of the stylesheet. */
|
||||
|
||||
body { background-color: var(--color-bg);
|
||||
color: var(--color-fg);
|
||||
font-size: var(--size-font);
|
||||
font-family: var(--font-body), sans-serif;
|
||||
font-weight: 400;
|
||||
line-height: var(--size-line);
|
||||
text-align: left;
|
||||
position: relative;
|
||||
max-width: 120ch;
|
||||
margin: 0 auto;
|
||||
padding: calc(1.5 * var(--size-line));
|
||||
padding-top: calc(0.5 * var(--size-line)); }
|
||||
|
||||
body > * { max-width: 80ch; width: 75% }
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2) /* toc */
|
||||
{ position: absolute;
|
||||
top: 0px; right: 0px;
|
||||
width: 20%;
|
||||
margin-left: var(--size-line);
|
||||
margin-top: calc(2 * var(--size-line));
|
||||
margin-right: var(--size-line);
|
||||
border-top: solid thin var(--color-rule); }
|
||||
|
||||
/* Rules
|
||||
We remove the top one, keep the last one and add one over h1 and h2 */
|
||||
|
||||
body > hr:last-of-type {
|
||||
margin-top: var(--size-line);
|
||||
border-style: none;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
text-align: right;
|
||||
border-top: solid thin var(--color-rule); }
|
||||
|
||||
body > hr:first-of-type { display: none } /* order with last-of-type imporant */
|
||||
h1, h2 { border-top: solid thin var(--color-rule) }
|
||||
|
||||
/* Hacks */
|
||||
|
||||
body > a > img /* Navigation arrows, a bit problematic for dark themes */
|
||||
{ display: inline-block; margin:0;
|
||||
background-color: var(--color-code-block-bg); /* bof */ }
|
||||
|
||||
body > p br, h1 br { display: none; } /* brs should die */
|
||||
|
||||
/* Basic markup */
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{ font-family: var(--font-headings), sans-serif;
|
||||
font-weight: 400;
|
||||
text-transform: uppercase;
|
||||
margin-top: var(--size-line); }
|
||||
|
||||
h1, h2 { line-height: calc(1.5 * var(--size-line));
|
||||
padding-top: calc(0.75 * var(--size-line)); }
|
||||
|
||||
hr + h1, hr + h2 { margin-top: calc(0.25 * var(--size-line)) }
|
||||
|
||||
h1 { font-size: var(--size-font-huge); }
|
||||
h2 { font-size: var(--size-font-big); }
|
||||
h3 { font-size: var(--size-font-large); }
|
||||
|
||||
div, nav, p, ol, ul, dl, pre, table, blockquote
|
||||
{ margin-top: var(--size-half-line); }
|
||||
|
||||
ul, ol { list-style-position: outside }
|
||||
ul { list-style-type: square }
|
||||
ul > li { margin-left: 2.25ch; }
|
||||
ol > li { margin-left: 2ch; }
|
||||
|
||||
em { font-style: italic }
|
||||
b, strong { font-weight: 700 }
|
||||
small { font-size: var(--size-font-small); }
|
||||
|
||||
sup { vertical-align: super; }
|
||||
sub { vertical-align: sub; }
|
||||
sup, sub { font-size : calc(1em * var(--size-font-tiny-ratio));
|
||||
line-height: 0; margin-left: 0.2ex; }
|
||||
|
||||
img { display: block;
|
||||
margin-top: var(--size-half-line); margin-bottom: var(--size-half-line); }
|
||||
|
||||
blockquote { margin-left: var(--size-half-line); }
|
||||
|
||||
/* Links and anchors. Note anchors need to be refined a bit further down
|
||||
in certain cases. */
|
||||
|
||||
a { text-decoration:none; color: var(--color-link); }
|
||||
a:hover { box-shadow:0 1px 0 0 var(--color-link); }
|
||||
a.anchor:before { content: "#" }
|
||||
a.anchor:hover { box-shadow: none; text-decoration: underline; }
|
||||
*:hover > a.anchor { visibility: visible }
|
||||
a.anchor
|
||||
{ visibility: hidden; position: absolute;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
margin-left: -2.5ch;
|
||||
padding-right: 1ch; padding-left: 1ch; /* To remain selectable */
|
||||
color: var(--color-link);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
*:target /* Linked highlight */
|
||||
{ background-color: var(--color-bg-highlight);
|
||||
box-shadow: 0 0 0 3px var(--color-bg-highlight) }
|
||||
|
||||
/* Code and code highlighting */
|
||||
|
||||
.c003, .c004, .c005, .c006, .c015,
|
||||
code, pre
|
||||
{ font-family: var(--font-mono), monospace;
|
||||
font-weight: 400;
|
||||
font-size: calc(1em * var(--size-font-mono-ratio));
|
||||
color: var(--color-code-fg); }
|
||||
|
||||
.c004, .c002 { color: var(--color-code-type-id); }
|
||||
.c005 { font-style: oblique }
|
||||
.c006 { font-weight: 700 }
|
||||
.c015 { text-align: left }
|
||||
|
||||
pre .c003, pre .c004, pre .c005, pre .c006,
|
||||
pre code { font-size: inherit } /* don't apply transform twice... */
|
||||
a code { color: inherit }
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { text-transform: none; }
|
||||
|
||||
pre { background: var(--color-code-block-bg);
|
||||
padding-left: 0.8ch; padding-right: 0.8ch;
|
||||
margin-left: -0.8ch; margin-right: -0.8ch;
|
||||
padding-top: 1ch; padding-bottom: 1ch;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word; }
|
||||
|
||||
/* Table of contents, like in odoc.css except we don't have a class */
|
||||
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2)
|
||||
{ font-size: var(--size-font-small); }
|
||||
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2) a
|
||||
{ color : var(--color-fg); }
|
||||
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2) a:hover
|
||||
{ color : var(--color-link); }
|
||||
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2)
|
||||
{ font-family: var(--font-headings); text-transform: uppercase;
|
||||
list-style-type: none; padding-top: var(--size-line) }
|
||||
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2) li
|
||||
{ margin-left: 0; padding-left: 3.25ch; text-indent: -3.25ch; }
|
||||
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2) ul
|
||||
{ font-family: var(--font-body);
|
||||
text-transform: none;
|
||||
margin-top:0; }
|
||||
|
||||
/* toplevel examples */
|
||||
|
||||
div.caml-example.toplevel div.caml-input::before { content: "#" }
|
||||
div.caml-input, div.caml-output { margin-top: 0; }
|
||||
|
||||
.caml-input {}
|
||||
.caml-output { color: var(--color-code-string) /* why not */ }
|
||||
|
||||
/* Other HeVeA classes */
|
||||
|
||||
.c000 { border-spacing: 2ch; border-collapse: separate; margin: 0 auto; }
|
||||
.c001 { border-spacing: 1ch; border-collapse: separate }
|
||||
.c008 { font-size: var(--size-font-small) }
|
||||
.c009 { font-style:italic }
|
||||
.c010 { font-style:italic; color:var(--color-link) }
|
||||
.c011 { font-style:italic; font-weight:700 }
|
||||
.c012 { font-style:italic }
|
||||
.c013 { font-style:italic }
|
||||
.c018 { text-align: right }
|
||||
.c019 { text-align: left}
|
||||
.dcenter { margin: 0 auto; }
|
||||
.description { margin-left: var(--size-line) }
|
||||
.dd-description br { display: none }
|
||||
dd + dt { margin-top: var(--size-half-line) }
|
||||
|
||||
dt .c003 { font-style:normal; font-weight:700 } /* options */
|
||||
|
||||
.indexenv { list-style-type: none }
|
||||
.indexenv li { margin-left: 0 }
|
||||
|
||||
/* Page specific */
|
||||
|
||||
/* Cover page */
|
||||
|
||||
div.maintitle > span > span
|
||||
{ text-transform: uppercase;
|
||||
font-family: var(--font-headings);
|
||||
line-height: var(--size-line-ratio);
|
||||
font-size: calc(2.25 * var(--size-font)) !important;
|
||||
margin-left: -0.25ch; /* compensate nbsp */ }
|
||||
|
||||
div.maintitle > span > span > br { display: none }
|
||||
div.maintitle > span > span > span
|
||||
{ display: block;
|
||||
text-transform: none;
|
||||
font-style: italic;
|
||||
font-family: var(--font-body);
|
||||
font-size: var(--size-font-big) !important; }
|
||||
|
||||
div.maintitle > span > span > span > span /* ugh */
|
||||
{ font-style: normal;
|
||||
line-height: var(--size-line);
|
||||
font-size: var(--size-font) !important; }
|
||||
|
||||
div.maintitle > span > span > span > span > span /* ugh bis */
|
||||
{ font-size: var(--size-font-small) !important;
|
||||
font-style: italic;
|
||||
margin-left: -1.25ch; }
|
||||
|
||||
div.maintitle + blockquote hr { display : none }
|
||||
div.maintitle + blockquote
|
||||
{ margin: 0;
|
||||
/* margin-top: calc(-1 * var(--size-line)); chrome but not FF, bah... */
|
||||
font-size: var(--size-font-small);
|
||||
border-bottom: solid thin var(--color-rule);
|
||||
padding-bottom: var(--size-half-line); }
|
||||
|
||||
div.maintitle ~ blockquote:last-of-type { display: none } /* remove branding */
|
||||
|
||||
div.maintitle ~ ul:first-of-type:not(.itemize):not(.ftoc2) /* undo side toc */
|
||||
{ position: static;
|
||||
padding: 0;
|
||||
margin: 0; margin-top: var(--size-line);
|
||||
width: 100%; }
|
||||
|
||||
div.maintitle ~ br { display: none }
|
||||
div.maintitle ~ ul:first-of-type:not(.itemize):not(.ftoc2) > li { margin: 0; }
|
||||
div.maintitle ~ ul:first-of-type:not(.itemize):not(.ftoc2) a
|
||||
{ color: var(--color-link) }
|
||||
|
||||
div.maintitle ~ table { margin-top: 0 }
|
||||
div.maintitle ~ ul:first-of-type:not(.itemize):not(.ftoc2)
|
||||
{ list-style-type: none;
|
||||
font-family: inherit; text-transform: inherit;
|
||||
font-size: inherit;
|
||||
margin-top: var(--size-half-line);
|
||||
border: none; }
|
||||
|
||||
div.maintitle ~ ul { list-style-type: none }
|
||||
div.maintitle ~ ul li { margin-left: 0 }
|
||||
|
||||
/* Contents page */
|
||||
|
||||
h1#sec1 + ul:first-of-type /* undo side toc */
|
||||
{ position: static;
|
||||
list-style-type: none;
|
||||
margin: 0; margin-top: var(--size-half-line);
|
||||
width: 100%; border: none; padding: 0;
|
||||
font-size: var(--size-font-big); }
|
||||
|
||||
h1#sec1 + ul:first-of-type li
|
||||
{ margin-left: 0; padding-left: 0; text-indent: 0 }
|
||||
|
||||
h1#sec1 ~ ul ul
|
||||
{ list-style-type: none; font-size: var(--size-font-large); font-style: italic;}
|
||||
|
||||
h1#sec1 ~ ul ul ul
|
||||
{ font-size: var(--size-font); font-style: normal;
|
||||
margin-top: var(--size-half-line); }
|
||||
|
||||
h1#sec1 ~ ul ul ul ul { margin-left: 2.5ch; margin-top: 0;}
|
||||
h1#sec1 ~ ul > li { margin-top: var(--size-line); }
|
||||
h1#sec1 ~ ul > li > ul > li { margin-top: var(--size-half-line); }
|
||||
|
||||
/* Media adjustments */
|
||||
|
||||
@media only screen and (min-width:160ch) /* and (min-height: 60rem) */
|
||||
{
|
||||
:root { --size-font: 1.125rem; } /* consider using vmin units */
|
||||
}
|
||||
|
||||
@media only screen and (max-width:80ch)
|
||||
{
|
||||
body { padding: var(--size-line); }
|
||||
body > * { width: 100%; }
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2)
|
||||
{ position: static;
|
||||
margin: 0; margin-top: var(--size-line);
|
||||
width: 100%; }
|
||||
pre { font-size: var(--size-font-tiny); }
|
||||
}
|
||||
|
||||
@media print
|
||||
{
|
||||
* { -webkit-print-color-adjust: exact; }
|
||||
.content nav:first-child { visibility: hidden }
|
||||
body > * { width: 100%; }
|
||||
body > ul:first-of-type:not(.itemize):not(.ftoc2)
|
||||
{ position: static; width: 100%;
|
||||
margin: 0; margin-top: var(--size-line); }
|
||||
|
||||
/* odig.light with slight adjustements */
|
||||
:root
|
||||
{ --color-bg: white;
|
||||
--color-bg-highlight: #CAD7EF;
|
||||
--color-fg: black;
|
||||
--color-rule: #DADBDB;
|
||||
|
||||
--color-code-block-bg: #E8E8E8;
|
||||
--color-code-fg: #16191D;
|
||||
--color-code-comment: #747679;
|
||||
--color-code-keyword: #874aa9;
|
||||
--color-code-type-id: #a9874a;
|
||||
--color-code-string: #4aa987;
|
||||
|
||||
--color-link: #557dcc;
|
||||
--color-broken-link: #f71414; }
|
||||
}
|
||||
|
||||
/*
|
||||
Copyright (c) 2019 The odig programmers
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
334
dev/_odoc-theme/odoc.css
Normal file
334
dev/_odoc-theme/odoc.css
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
@charset "UTF-8";
|
||||
@import url("fonts/fonts.css");
|
||||
@import url("theme.css");
|
||||
|
||||
/* Copyright (c) 2019 The odig programmers. All rights reserved.
|
||||
Distributed under the ISC license, see terms at the end of the file. */
|
||||
|
||||
/* Reset a few things. */
|
||||
|
||||
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,
|
||||
a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,select,
|
||||
small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,
|
||||
fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,
|
||||
article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,
|
||||
menu,nav,output,ruby,section,summary,time,mark,audio,video,button,input
|
||||
{ margin: 0; padding: 0; border: 0; /* outline: 0; */
|
||||
font-size: inherit; font: inherit; font-weight: inherit;
|
||||
line-height: inherit; vertical-align: baseline;
|
||||
text-align: inherit; color: inherit; background: transparent; }
|
||||
|
||||
table { border-collapse: collapse; border-spacing: 0; }
|
||||
*, *:before, *:after { box-sizing: border-box; }
|
||||
|
||||
/* Basic geometry */
|
||||
|
||||
:root { --font-headings: "PT-Sans-Caption";
|
||||
--font-body: "PT-Sans";
|
||||
--font-mono: "DejaVu-SansMono";
|
||||
--size-font: 0.96875rem;
|
||||
--size-font-micro: calc(0.675 * var(--size-font));
|
||||
--size-font-tiny-ratio: 0.75;
|
||||
--size-font-tiny: calc(var(--size-font-tiny-ratio) * var(--size-font));
|
||||
--size-font-small: calc(0.875 * var(--size-font));
|
||||
--size-font-large: calc(1.25 * var(--size-font));
|
||||
--size-font-big: calc(1.5 * var(--size-font));
|
||||
--size-font-huge: calc(1.75 * var(--size-font));
|
||||
--size-font-mono-ratio: 0.87097;
|
||||
--size-font-mono-ratio: 0.865;
|
||||
--size-line-ratio: 1.5;
|
||||
--size-line: calc(var(--size-line-ratio) * var(--size-font));
|
||||
--size-half-line: calc(0.5 * var(--size-line));
|
||||
--size-fourth-line: calc(0.25 * var(--size-line)); }
|
||||
|
||||
.odoc { background-color: var(--color-bg);
|
||||
color: var(--color-fg);
|
||||
font-size: var(--size-font);
|
||||
font-family: var(--font-body), sans-serif;
|
||||
font-weight: 400;
|
||||
line-height: var(--size-line);
|
||||
text-align: left;
|
||||
display: grid;
|
||||
margin: 0 auto;
|
||||
max-width: 130ch;
|
||||
grid-template-columns: minmax(50ch,76ch) minmax(23ch,1fr);
|
||||
grid-column-gap: calc(2 * var(--size-line));
|
||||
grid-template-areas: "nav nav"
|
||||
"header toc"
|
||||
"content toc";
|
||||
padding: calc(1.5 * var(--size-line));
|
||||
padding-top: calc(0.5 * var(--size-line)); }
|
||||
|
||||
.odoc-nav { grid-area: nav; }
|
||||
.odoc-preamble { grid-area: header; }
|
||||
.odoc-content { grid-area: content; margin: 0 }
|
||||
.odoc-toc
|
||||
{ grid-area: toc;
|
||||
margin-top: var(--size-line);
|
||||
border-top: solid thin var(--color-rule); }
|
||||
|
||||
/* Media adjustments */
|
||||
|
||||
@media only screen and (min-width:160ch) /* and (min-height: 60rem) */
|
||||
{
|
||||
:root { --size-font: 1.125rem; } /* consider using vmin units */
|
||||
}
|
||||
|
||||
@media only screen and (max-width:80ch) /* Basically mobile */
|
||||
{
|
||||
.odoc
|
||||
{ padding: var(--size-line);
|
||||
grid-template-columns: auto;
|
||||
grid-template-rows: none;
|
||||
grid-template-areas: "nav"
|
||||
"header"
|
||||
"toc"
|
||||
"content"; }
|
||||
.odoc-toc { margin: 0; margin-top: var(--size-line); }
|
||||
pre { font-size: var(--size-font-tiny); }
|
||||
}
|
||||
|
||||
@media print
|
||||
{
|
||||
* { -webkit-print-color-adjust: exact; }
|
||||
.odoc-nav { visibility: hidden }
|
||||
.odoc-toc { margin: 0; margin-top: var(--size-line); }
|
||||
|
||||
/* odig.light with slight adjustements */
|
||||
:root
|
||||
{ --color-bg: white;
|
||||
--color-bg-highlight: #CAD7EF;
|
||||
--color-fg: black;
|
||||
--color-rule: #DADBDB;
|
||||
|
||||
--color-code-block-bg: #E8E8E8;
|
||||
--color-code-fg: #16191D;
|
||||
--color-code-comment: #747679;
|
||||
--color-code-keyword: #874aa9;
|
||||
--color-code-type-id: #a9874a;
|
||||
--color-code-string: #4aa987;
|
||||
|
||||
--color-link: #557dcc;
|
||||
--color-broken-link: #f71414; }
|
||||
}
|
||||
|
||||
/* Block level markup */
|
||||
|
||||
header > * + *, div > * + *, details > * + *
|
||||
{ margin-top: var(--size-half-line); }
|
||||
|
||||
ul + * , ol + * { margin-top: 0; }
|
||||
ul, ol { margin-top: var(--size-fourth-line);
|
||||
margin-bottom: var(--size-fourth-line);
|
||||
list-style-position: outside; }
|
||||
|
||||
li *:first-child, li ol, li ul { margin-top: 0; }
|
||||
|
||||
ul { list-style-type: square; }
|
||||
ul > li { margin-left: 2.25ch; }
|
||||
ol > li { margin-left: 2ch; }
|
||||
ol li::marker
|
||||
{ font-family: var(--font-headings), sans-serif;
|
||||
font-size: var(--size-font-small); }
|
||||
|
||||
img
|
||||
{ display: block;
|
||||
margin-top: var(--size-half-line);
|
||||
margin-bottom: var(--size-half-line); }
|
||||
|
||||
/* Headings and horizontal rulers */
|
||||
|
||||
h1, h2, .odoc-content > *:first-child
|
||||
{ border-top: solid thin var(--color-rule);
|
||||
padding-top: calc(0.75 * var(--size-line));
|
||||
margin-top: var(--size-line); }
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{ font-family: var(--font-headings), sans-serif;
|
||||
font-weight: 400;
|
||||
text-transform: uppercase;
|
||||
margin-top: var(--size-line); }
|
||||
|
||||
h1, h2 { line-height: calc(1.5 * var(--size-line)); }
|
||||
h1 { font-size: var(--size-font-huge); }
|
||||
h2 { font-size: var(--size-font-big); }
|
||||
h3 { font-size: var(--size-font-large); }
|
||||
|
||||
/* Phrasing content */
|
||||
|
||||
em { font-style: italic }
|
||||
b, strong { font-weight: 700 }
|
||||
small { font-size: var(--size-font-small); }
|
||||
|
||||
sup { vertical-align: super; }
|
||||
sub { vertical-align: sub; }
|
||||
sup, sub
|
||||
{ font-size : calc(1em * var(--size-font-tiny-ratio));
|
||||
line-height: 0; margin-left: 0.2ex; }
|
||||
|
||||
/* Code and code highlighting */
|
||||
|
||||
code, pre
|
||||
{ font-family: var(--font-mono), monospace;
|
||||
font-weight: 400;
|
||||
font-size: calc(1em * var(--size-font-mono-ratio));
|
||||
color: var(--color-code-fg);
|
||||
overflow-wrap: anywhere; }
|
||||
|
||||
code span span { white-space: nowrap } /* Do not break these units */
|
||||
|
||||
pre code { font-size: inherit } /* don't apply transform twice... */
|
||||
a code { color: inherit }
|
||||
h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { text-transform: none; }
|
||||
|
||||
pre
|
||||
{ background: var(--color-code-block-bg);
|
||||
padding-left: 0.8ch; padding-right: 0.8ch;
|
||||
margin-left: -0.8ch; margin-right: -0.8ch;
|
||||
padding-top: 1ch; padding-bottom: 1ch;
|
||||
white-space: pre-wrap;
|
||||
overflow-wrap: break-word; }
|
||||
|
||||
.arrow { white-space: nowrap }
|
||||
.keyword , .hljs-keyword { color : var(--color-code-keyword); }
|
||||
.hljs-type { color : var(--color-code-type-id); }
|
||||
.hljs-string { color : var(--color-code-string); }
|
||||
.hljs-comment { color : var(--color-code-comment); font-style: italic; }
|
||||
|
||||
/* Links and anchors. Note anchors need to be refined a bit further down
|
||||
in certain cases. */
|
||||
|
||||
a { text-decoration:none; color: var(--color-link); }
|
||||
a:hover { box-shadow:0 1px 0 0 var(--color-link); }
|
||||
a.anchor:before { content: "#" }
|
||||
a.anchor:hover { box-shadow: none; text-decoration: underline; }
|
||||
*:hover > a.anchor { visibility: visible }
|
||||
a.anchor
|
||||
{ visibility: hidden; position: absolute;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
margin-left: -2.5ch;
|
||||
padding-right: 1ch; padding-left: 1ch; /* To remain selectable */
|
||||
color: var(--color-link);
|
||||
text-align: right; }
|
||||
|
||||
*:target /* Linked highlight */
|
||||
{ background-color: var(--color-bg-highlight);
|
||||
box-shadow: 0 0 0 3px var(--color-bg-highlight) }
|
||||
|
||||
.xref-unresolved { box-shadow:0 1px 0 0 var(--color-broken-link)}
|
||||
|
||||
/* Table of contents */
|
||||
|
||||
.odoc-toc { font-size: var(--size-font-small); }
|
||||
.odoc-toc a { color : var(--color-fg); }
|
||||
.odoc-toc a:hover { color : var(--color-link) }
|
||||
.odoc-toc ul
|
||||
{ font-family: var(--font-headings); text-transform: uppercase;
|
||||
margin-top: var(--size-line);
|
||||
list-style-type: none; }
|
||||
|
||||
.odoc-toc ul ul
|
||||
{ font-family: var(--font-body); text-transform: none; margin-top:0; }
|
||||
|
||||
.odoc-toc ul ul ul { margin-left:1.5ch }
|
||||
.odoc-toc li { margin-left: 0; padding-left: 1ch; text-indent: -1ch; }
|
||||
.odoc-toc > ul > li { margin-top: calc(0.25 * var(--size-half-line)) }
|
||||
.odoc-toc > ul > li > ul > li:last-child
|
||||
{ margin-bottom: var(--size-half-line) }
|
||||
|
||||
.odoc-toc ul ul li { margin-left: 0; padding-left: 0; }
|
||||
|
||||
/* Module structure items */
|
||||
|
||||
.odoc-spec { padding-bottom: var(--size-fourth-line); }
|
||||
.spec { margin-top: 0; }
|
||||
.spec-doc { margin-top:0; padding-left: 1ch; }
|
||||
.spec-doc > *:first-child { margin-top: 0 }
|
||||
|
||||
/* Indent on wrap */
|
||||
.spec, .spec td:first-child { padding-left: 4ch; text-indent: -4ch }
|
||||
.spec td.field { padding-left: 6ch }
|
||||
|
||||
.spec .def-doc .comment-delim + * { margin-top: 0 }
|
||||
.spec .def-doc .comment-delim /* make them invisible yet copy-pastable */
|
||||
{ position: absolute; width: 1px; height: 1px; overflow: hidden; }
|
||||
|
||||
/* But we don't do it for types for now because of variants and
|
||||
records. This makes :target highlight be off. And poses
|
||||
other problems (e.g. need to indent back the last ] or }.
|
||||
A better markup strategy should be found here. */
|
||||
.spec.type { padding-left: 0; text-indent: 0 }
|
||||
.spec.type > a.anchor
|
||||
{ padding-left: 1ch; padding-right: 1ch; /* values from a.anchor */ }
|
||||
.spec li > a.anchor, .spec > a.anchor
|
||||
{ padding-right: 0.5ch; padding-left: 2ch; }
|
||||
|
||||
.spec ol { margin:0; list-style-type: none; }
|
||||
.spec li { margin-left: 0; padding-left: 4ch; text-indent: -4ch }
|
||||
.spec li.record.field { margin-left: 2ch }
|
||||
|
||||
.spec .def-doc { display: inline-block }
|
||||
.spec .def-doc { padding-left: /* 4 + 3 */ 7ch; }
|
||||
.spec .def-doc p { margin-left: -4ch; text-indent: 0 }
|
||||
|
||||
.odoc-include summary { cursor: pointer }
|
||||
|
||||
/* Package, module and @tag lists
|
||||
|
||||
Allowing indent on wrap with the anchor makes all this quite convoluted.
|
||||
Is there a better way ? */
|
||||
|
||||
.packages, .modules, .at-tags { list-style-type: none; margin-left: -2ch; }
|
||||
.packages li, .modules li, .at-tags li { padding-left: 2ch; text-indent: -2ch; }
|
||||
.modules li a.anchor, .packages li a.anchor
|
||||
{ padding-right: 0.5ch; padding-left: 2ch; }
|
||||
|
||||
.synopsis { padding-left: 1ch; }
|
||||
.version { font-size: var(--size-font-micro); }
|
||||
.at-tag { text-transform : capitalize }
|
||||
|
||||
/* Package page */
|
||||
|
||||
h1 .version, h1 nav { font-size: var(--size-font); line-height:0 }
|
||||
h1 nav
|
||||
{ display: inline-block;
|
||||
font-family: var(--font-body);
|
||||
text-transform: capitalize; }
|
||||
|
||||
.package.info td:first-child { padding-right: 2ch; min-width: 13ch}
|
||||
.package.info ul { list-style-type: none; display: inline; margin:0; padding:0}
|
||||
.package.info li { display: inline-block; margin:0; margin-right:1ex; }
|
||||
#info-authors li, #info-maintainers li { display: block; }
|
||||
|
||||
/* Package index page */
|
||||
|
||||
.by-name nav a
|
||||
{ font-family: var(--font-headings);
|
||||
font-size: var(--size-font-large);
|
||||
text-transform: uppercase;
|
||||
margin-right: 1ch;
|
||||
display: inline-block; }
|
||||
|
||||
.by-tag ol { list-style-type: none; }
|
||||
.by-tag ol.tags li { margin-left: 1ch; display: inline-block }
|
||||
.by-tag td:first-child
|
||||
{ font-family: var(--font-headings);
|
||||
font-size: var(--size-font-large);
|
||||
text-transform: uppercase; }
|
||||
|
||||
/*
|
||||
Copyright (c) 2019 The odig programmers
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
34
dev/_odoc-theme/theme.css
Normal file
34
dev/_odoc-theme/theme.css
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
:root
|
||||
{ --color-bg: #F6F6F6;
|
||||
--color-bg-highlight: #CAD7EF;
|
||||
--color-fg: #1F2227;
|
||||
--color-rule: #DADBDB;
|
||||
|
||||
--color-code-block-bg: #E8E8E8;
|
||||
--color-code-fg: #16191D;
|
||||
--color-code-comment: #747679;
|
||||
--color-code-keyword: #874aa9;
|
||||
--color-code-type-id: #a9874a;
|
||||
--color-code-string: #4aa987;
|
||||
|
||||
--color-link: #557dcc;
|
||||
--color-broken-link: #f71414; }
|
||||
|
||||
@media (prefers-color-scheme: dark)
|
||||
{
|
||||
:root
|
||||
{ --color-bg: #181B20;
|
||||
--color-bg-highlight: #303644;
|
||||
--color-fg: #8C8D90;
|
||||
--color-rule: #2F3236;
|
||||
|
||||
--color-code-block-bg: #24272A;
|
||||
--color-code-fg: #A3A4A6;
|
||||
--color-code-comment: #747679;
|
||||
--color-code-keyword: #7F668D;
|
||||
--color-code-type-id: #8D7F66;
|
||||
--color-code-string: #668d7f;
|
||||
|
||||
--color-link: #7788AA;
|
||||
--color-broken-link: #900505; }
|
||||
}
|
||||
16
dev/either/Either/index.html
Normal file
16
dev/either/Either/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/either/Either__/index.html
Normal file
2
dev/either/Either__/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Either__ (either.Either__)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">either</a> » Either__</nav><header class="odoc-preamble"><h1>Module <code><span>Either__</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/either/Either__Either_intf/index.html
Normal file
2
dev/either/Either__Either_intf/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Either__Either_intf (either.Either__Either_intf)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">either</a> » Either__Either_intf</nav><header class="odoc-preamble"><h1>Module <code><span>Either__Either_intf</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
3
dev/either/_doc-dir/CHANGES.md
Normal file
3
dev/either/_doc-dir/CHANGES.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
### 1.0.0 (2020-11-18)
|
||||
|
||||
Initial release.
|
||||
21
dev/either/_doc-dir/LICENSE
Normal file
21
dev/either/_doc-dir/LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
The MIT License
|
||||
|
||||
Copyright (c) 2020 Craig Ferguson
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
36
dev/either/_doc-dir/README.md
Normal file
36
dev/either/_doc-dir/README.md
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
## Compatibility `Either` module
|
||||
[![OCaml-CI Build Status][ci-badge]][ci-status]
|
||||
[][docs]
|
||||
|
||||
Projects that want to use the `Either` module defined in OCaml 4.12.0 while
|
||||
staying compatible with older versions of OCaml should use this library
|
||||
instead. On OCaml versions 4.12 and above, this library defines an alias
|
||||
`Either` to the standard library's definition of the module. Otherwise, it
|
||||
provides an equivalent definition of `Either`.
|
||||
|
||||
[ci-status]: https://ci.ocamllabs.io/github/mirage/either
|
||||
[ci-badge]: https://img.shields.io/endpoint?url=https%3A%2F%2Fci.ocamllabs.io%2Fbadge%2Fmirage%2Feither%2Fmain&logo=ocaml
|
||||
[docs]: https://docs.mirage.io/either/either/index.html
|
||||
|
||||
#### Depending on this library
|
||||
|
||||
Opam libraries depending on this module are encouraged to use a conditional
|
||||
dependency:
|
||||
|
||||
```
|
||||
depends: [
|
||||
("ocaml" {>= "4.12.0"} | "either")
|
||||
]
|
||||
```
|
||||
|
||||
This ensures that any dependencies of your library that _don't_ need pre-4.12
|
||||
compatibility will never transitively depend on `either`.
|
||||
|
||||
<hr/>
|
||||
|
||||
#### Acknowledgements
|
||||
|
||||
This repository structure is mostly copied from
|
||||
[`JaneStreet/result`](https://github.com/janestreet/result), which provides a
|
||||
compatibility `result` type. Thanks to the OCaml maintainers for their
|
||||
improvements to the standard library.
|
||||
2
dev/either/index.html
Normal file
2
dev/either/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (either.index)</title><link rel="stylesheet" href="../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – either</nav><header class="odoc-preamble"><h1 id="package-either"><a href="#package-either" class="anchor"></a>Package either <nav><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">changes</a> <a href="#package_info">more…</a></nav></h1><ul class="modules"><li><a href="Either/index.html"><code>Either</code></a> </li></ul></header><nav class="odoc-toc"><ul><li><a href="#package_info">Package info</a></li></ul></nav><div class="odoc-content"><h2 id="package_info"><a href="#package_info" class="anchor"></a>Package info</h2><table class="package info"><tr id="info-changes-files"><td><a href="#info-changes-files" aria-hidden="true" class="anchor"></a>changes-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">CHANGES.md</a></li></ul></td></tr><tr id="info-license-files"><td><a href="#info-license-files" aria-hidden="true" class="anchor"></a>license-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/LICENSE">LICENSE</a></li></ul></td></tr><tr id="info-readme-files"><td><a href="#info-readme-files" aria-hidden="true" class="anchor"></a>readme-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/README.md">README.md</a></li></ul></td></tr></table></div></body></html>
|
||||
BIN
dev/fonts/KaTeX_AMS-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_AMS-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Caligraphic-Bold.woff2
Normal file
BIN
dev/fonts/KaTeX_Caligraphic-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Caligraphic-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Caligraphic-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Fraktur-Bold.woff2
Normal file
BIN
dev/fonts/KaTeX_Fraktur-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Fraktur-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Fraktur-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Main-Bold.woff2
Normal file
BIN
dev/fonts/KaTeX_Main-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Main-BoldItalic.woff2
Normal file
BIN
dev/fonts/KaTeX_Main-BoldItalic.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Main-Italic.woff2
Normal file
BIN
dev/fonts/KaTeX_Main-Italic.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Main-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Main-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Math-BoldItalic.woff2
Normal file
BIN
dev/fonts/KaTeX_Math-BoldItalic.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Math-Italic.woff2
Normal file
BIN
dev/fonts/KaTeX_Math-Italic.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_SansSerif-Bold.woff2
Normal file
BIN
dev/fonts/KaTeX_SansSerif-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_SansSerif-Italic.woff2
Normal file
BIN
dev/fonts/KaTeX_SansSerif-Italic.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_SansSerif-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_SansSerif-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Script-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Script-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Size1-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Size1-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Size2-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Size2-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Size3-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Size3-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Size4-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Size4-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/fonts/KaTeX_Typewriter-Regular.woff2
Normal file
BIN
dev/fonts/KaTeX_Typewriter-Regular.woff2
Normal file
Binary file not shown.
461
dev/highlight.pack.js
Normal file
461
dev/highlight.pack.js
Normal file
|
|
@ -0,0 +1,461 @@
|
|||
/*!
|
||||
Highlight.js v11.7.0 (git: 82688fad18)
|
||||
(c) 2006-2022 undefined and other contributors
|
||||
License: BSD-3-Clause
|
||||
*/
|
||||
var hljs=function(){"use strict";var e={exports:{}};function t(e){
|
||||
return e instanceof Map?e.clear=e.delete=e.set=()=>{
|
||||
throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{
|
||||
throw Error("set is read-only")
|
||||
}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]
|
||||
;"object"!=typeof i||Object.isFrozen(i)||t(i)})),e}
|
||||
e.exports=t,e.exports.default=t;class n{constructor(e){
|
||||
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
|
||||
ignoreMatch(){this.isMatchIgnored=!0}}function i(e){
|
||||
return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")
|
||||
}function r(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
|
||||
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}
|
||||
const s=e=>!!e.scope||e.sublanguage&&e.language;class o{constructor(e,t){
|
||||
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
|
||||
this.buffer+=i(e)}openNode(e){if(!s(e))return;let t=""
|
||||
;t=e.sublanguage?"language-"+e.language:((e,{prefix:t})=>{if(e.includes(".")){
|
||||
const n=e.split(".")
|
||||
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
|
||||
}return`${t}${e}`})(e.scope,{prefix:this.classPrefix}),this.span(t)}
|
||||
closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){
|
||||
this.buffer+=`<span class="${e}">`}}const a=(e={})=>{const t={children:[]}
|
||||
;return Object.assign(t,e),t};class c{constructor(){
|
||||
this.rootNode=a(),this.stack=[this.rootNode]}get top(){
|
||||
return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
|
||||
this.top.children.push(e)}openNode(e){const t=a({scope:e})
|
||||
;this.add(t),this.stack.push(t)}closeNode(){
|
||||
if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
|
||||
for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
|
||||
walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){
|
||||
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
|
||||
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
|
||||
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
|
||||
c._collapse(e)})))}}class l extends c{constructor(e){super(),this.options=e}
|
||||
addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}
|
||||
addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root
|
||||
;n.sublanguage=!0,n.language=t,this.add(n)}toHTML(){
|
||||
return new o(this,this.options).value()}finalize(){return!0}}function g(e){
|
||||
return e?"string"==typeof e?e:e.source:null}function d(e){return p("(?=",e,")")}
|
||||
function u(e){return p("(?:",e,")*")}function h(e){return p("(?:",e,")?")}
|
||||
function p(...e){return e.map((e=>g(e))).join("")}function f(...e){const t=(e=>{
|
||||
const t=e[e.length-1]
|
||||
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
|
||||
})(e);return"("+(t.capture?"":"?:")+e.map((e=>g(e))).join("|")+")"}
|
||||
function b(e){return RegExp(e.toString()+"|").exec("").length-1}
|
||||
const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
|
||||
;function E(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
|
||||
;let i=g(e),r="";for(;i.length>0;){const e=m.exec(i);if(!e){r+=i;break}
|
||||
r+=i.substring(0,e.index),
|
||||
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+t):(r+=e[0],
|
||||
"("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}
|
||||
const x="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",y="\\b\\d+(\\.\\d+)?",_="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",O="\\b(0b[01]+)",v={
|
||||
begin:"\\\\[\\s\\S]",relevance:0},N={scope:"string",begin:"'",end:"'",
|
||||
illegal:"\\n",contains:[v]},k={scope:"string",begin:'"',end:'"',illegal:"\\n",
|
||||
contains:[v]},M=(e,t,n={})=>{const i=r({scope:"comment",begin:e,end:t,
|
||||
contains:[]},n);i.contains.push({scope:"doctag",
|
||||
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
|
||||
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
|
||||
;const s=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
|
||||
;return i.contains.push({begin:p(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i
|
||||
},S=M("//","$"),R=M("/\\*","\\*/"),j=M("#","$");var A=Object.freeze({
|
||||
__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:x,UNDERSCORE_IDENT_RE:w,
|
||||
NUMBER_RE:y,C_NUMBER_RE:_,BINARY_NUMBER_RE:O,
|
||||
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
|
||||
SHEBANG:(e={})=>{const t=/^#![ ]*\//
|
||||
;return e.binary&&(e.begin=p(t,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:t,
|
||||
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
|
||||
BACKSLASH_ESCAPE:v,APOS_STRING_MODE:N,QUOTE_STRING_MODE:k,PHRASAL_WORDS_MODE:{
|
||||
begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
|
||||
},COMMENT:M,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:R,HASH_COMMENT_MODE:j,
|
||||
NUMBER_MODE:{scope:"number",begin:y,relevance:0},C_NUMBER_MODE:{scope:"number",
|
||||
begin:_,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:O,relevance:0},
|
||||
REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,
|
||||
end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0,
|
||||
contains:[v]}]}]},TITLE_MODE:{scope:"title",begin:x,relevance:0},
|
||||
UNDERSCORE_TITLE_MODE:{scope:"title",begin:w,relevance:0},METHOD_GUARD:{
|
||||
begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{
|
||||
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
|
||||
t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function I(e,t){
|
||||
"."===e.input[e.index-1]&&t.ignoreMatch()}function T(e,t){
|
||||
void 0!==e.className&&(e.scope=e.className,delete e.className)}function L(e,t){
|
||||
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
|
||||
e.__beforeBegin=I,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
|
||||
void 0===e.relevance&&(e.relevance=0))}function B(e,t){
|
||||
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function D(e,t){
|
||||
if(e.match){
|
||||
if(e.begin||e.end)throw Error("begin & end are not supported with match")
|
||||
;e.begin=e.match,delete e.match}}function H(e,t){
|
||||
void 0===e.relevance&&(e.relevance=1)}const P=(e,t)=>{if(!e.beforeMatch)return
|
||||
;if(e.starts)throw Error("beforeMatch cannot be used with starts")
|
||||
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
|
||||
})),e.keywords=n.keywords,e.begin=p(n.beforeMatch,d(n.begin)),e.starts={
|
||||
relevance:0,contains:[Object.assign(n,{endsParent:!0})]
|
||||
},e.relevance=0,delete n.beforeMatch
|
||||
},C=["of","and","for","in","not","or","if","then","parent","list","value"]
|
||||
;function $(e,t,n="keyword"){const i=Object.create(null)
|
||||
;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{
|
||||
Object.assign(i,$(e[n],t,n))})),i;function r(e,n){
|
||||
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
|
||||
;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){
|
||||
return t?Number(t):(e=>C.includes(e.toLowerCase()))(e)?0:1}const z={},K=e=>{
|
||||
console.error(e)},W=(e,...t)=>{console.log("WARN: "+e,...t)},X=(e,t)=>{
|
||||
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)
|
||||
},G=Error();function Z(e,t,{key:n}){let i=0;const r=e[n],s={},o={}
|
||||
;for(let e=1;e<=t.length;e++)o[e+i]=r[e],s[e+i]=!0,i+=b(t[e-1])
|
||||
;e[n]=o,e[n]._emit=s,e[n]._multi=!0}function F(e){(e=>{
|
||||
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
|
||||
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
|
||||
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
|
||||
}),(e=>{if(Array.isArray(e.begin)){
|
||||
if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
|
||||
G
|
||||
;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),
|
||||
G;Z(e,e.begin,{key:"beginScope"}),e.begin=E(e.begin,{joinWith:""})}})(e),(e=>{
|
||||
if(Array.isArray(e.end)){
|
||||
if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
|
||||
G
|
||||
;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),
|
||||
G;Z(e,e.end,{key:"endScope"}),e.end=E(e.end,{joinWith:""})}})(e)}function V(e){
|
||||
function t(t,n){
|
||||
return RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))
|
||||
}class n{constructor(){
|
||||
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
|
||||
addRule(e,t){
|
||||
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
|
||||
this.matchAt+=b(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
|
||||
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(E(e,{joinWith:"|"
|
||||
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
|
||||
;const t=this.matcherRe.exec(e);if(!t)return null
|
||||
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]
|
||||
;return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){
|
||||
this.rules=[],this.multiRegexes=[],
|
||||
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
|
||||
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
|
||||
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
|
||||
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
|
||||
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
|
||||
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
|
||||
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
|
||||
;let n=t.exec(e)
|
||||
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
|
||||
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
|
||||
return n&&(this.regexIndex+=n.position+1,
|
||||
this.regexIndex===this.count&&this.considerAll()),n}}
|
||||
if(e.compilerExtensions||(e.compilerExtensions=[]),
|
||||
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
|
||||
;return e.classNameAliases=r(e.classNameAliases||{}),function n(s,o){const a=s
|
||||
;if(s.isCompiled)return a
|
||||
;[T,D,F,P].forEach((e=>e(s,o))),e.compilerExtensions.forEach((e=>e(s,o))),
|
||||
s.__beforeBegin=null,[L,B,H].forEach((e=>e(s,o))),s.isCompiled=!0;let c=null
|
||||
;return"object"==typeof s.keywords&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),
|
||||
c=s.keywords.$pattern,
|
||||
delete s.keywords.$pattern),c=c||/\w+/,s.keywords&&(s.keywords=$(s.keywords,e.case_insensitive)),
|
||||
a.keywordPatternRe=t(c,!0),
|
||||
o&&(s.begin||(s.begin=/\B|\b/),a.beginRe=t(a.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),
|
||||
s.end&&(a.endRe=t(a.end)),
|
||||
a.terminatorEnd=g(a.end)||"",s.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(s.end?"|":"")+o.terminatorEnd)),
|
||||
s.illegal&&(a.illegalRe=t(s.illegal)),
|
||||
s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>r(e,{
|
||||
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?r(e,{
|
||||
starts:e.starts?r(e.starts):null
|
||||
}):Object.isFrozen(e)?r(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{n(e,a)
|
||||
})),s.starts&&n(s.starts,o),a.matcher=(e=>{const t=new i
|
||||
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
|
||||
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
|
||||
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){
|
||||
return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{
|
||||
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}
|
||||
const Y=i,Q=r,ee=Symbol("nomatch");var te=(t=>{
|
||||
const i=Object.create(null),r=Object.create(null),s=[];let o=!0
|
||||
;const a="Could not find the language '{}', did you forget to load/include a language module?",c={
|
||||
disableAutodetect:!0,name:"Plain text",contains:[]};let g={
|
||||
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
|
||||
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
|
||||
cssSelector:"pre code",languages:null,__emitter:l};function b(e){
|
||||
return g.noHighlightRe.test(e)}function m(e,t,n){let i="",r=""
|
||||
;"object"==typeof t?(i=e,
|
||||
n=t.ignoreIllegals,r=t.language):(X("10.7.0","highlight(lang, code, ...args) has been deprecated."),
|
||||
X("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
|
||||
r=e,i=t),void 0===n&&(n=!0);const s={code:i,language:r};k("before:highlight",s)
|
||||
;const o=s.result?s.result:E(s.language,s.code,n)
|
||||
;return o.code=s.code,k("after:highlight",o),o}function E(e,t,r,s){
|
||||
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(S)
|
||||
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(S),n=""
|
||||
;for(;t;){n+=S.substring(e,t.index)
|
||||
;const r=y.case_insensitive?t[0].toLowerCase():t[0],s=(i=r,N.keywords[i]);if(s){
|
||||
const[e,i]=s
|
||||
;if(M.addText(n),n="",c[r]=(c[r]||0)+1,c[r]<=7&&(R+=i),e.startsWith("_"))n+=t[0];else{
|
||||
const n=y.classNameAliases[e]||e;M.addKeyword(t[0],n)}}else n+=t[0]
|
||||
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(S)}var i
|
||||
;n+=S.substring(e),M.addText(n)}function d(){null!=N.subLanguage?(()=>{
|
||||
if(""===S)return;let e=null;if("string"==typeof N.subLanguage){
|
||||
if(!i[N.subLanguage])return void M.addText(S)
|
||||
;e=E(N.subLanguage,S,!0,k[N.subLanguage]),k[N.subLanguage]=e._top
|
||||
}else e=x(S,N.subLanguage.length?N.subLanguage:null)
|
||||
;N.relevance>0&&(R+=e.relevance),M.addSublanguage(e._emitter,e.language)
|
||||
})():l(),S=""}function u(e,t){let n=1;const i=t.length-1;for(;n<=i;){
|
||||
if(!e._emit[n]){n++;continue}const i=y.classNameAliases[e[n]]||e[n],r=t[n]
|
||||
;i?M.addKeyword(r,i):(S=r,l(),S=""),n++}}function h(e,t){
|
||||
return e.scope&&"string"==typeof e.scope&&M.openNode(y.classNameAliases[e.scope]||e.scope),
|
||||
e.beginScope&&(e.beginScope._wrap?(M.addKeyword(S,y.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
|
||||
S=""):e.beginScope._multi&&(u(e.beginScope,t),S="")),N=Object.create(e,{parent:{
|
||||
value:N}}),N}function p(e,t,i){let r=((e,t)=>{const n=e&&e.exec(t)
|
||||
;return n&&0===n.index})(e.endRe,i);if(r){if(e["on:end"]){const i=new n(e)
|
||||
;e["on:end"](t,i),i.isMatchIgnored&&(r=!1)}if(r){
|
||||
for(;e.endsParent&&e.parent;)e=e.parent;return e}}
|
||||
if(e.endsWithParent)return p(e.parent,t,i)}function f(e){
|
||||
return 0===N.matcher.regexIndex?(S+=e[0],1):(I=!0,0)}function b(e){
|
||||
const n=e[0],i=t.substring(e.index),r=p(N,e,i);if(!r)return ee;const s=N
|
||||
;N.endScope&&N.endScope._wrap?(d(),
|
||||
M.addKeyword(n,N.endScope._wrap)):N.endScope&&N.endScope._multi?(d(),
|
||||
u(N.endScope,e)):s.skip?S+=n:(s.returnEnd||s.excludeEnd||(S+=n),
|
||||
d(),s.excludeEnd&&(S=n));do{
|
||||
N.scope&&M.closeNode(),N.skip||N.subLanguage||(R+=N.relevance),N=N.parent
|
||||
}while(N!==r.parent);return r.starts&&h(r.starts,e),s.returnEnd?0:n.length}
|
||||
let m={};function w(i,s){const a=s&&s[0];if(S+=i,null==a)return d(),0
|
||||
;if("begin"===m.type&&"end"===s.type&&m.index===s.index&&""===a){
|
||||
if(S+=t.slice(s.index,s.index+1),!o){const t=Error(`0 width match regex (${e})`)
|
||||
;throw t.languageName=e,t.badRule=m.rule,t}return 1}
|
||||
if(m=s,"begin"===s.type)return(e=>{
|
||||
const t=e[0],i=e.rule,r=new n(i),s=[i.__beforeBegin,i["on:begin"]]
|
||||
;for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return f(t)
|
||||
;return i.skip?S+=t:(i.excludeBegin&&(S+=t),
|
||||
d(),i.returnBegin||i.excludeBegin||(S=t)),h(i,e),i.returnBegin?0:t.length})(s)
|
||||
;if("illegal"===s.type&&!r){
|
||||
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"')
|
||||
;throw e.mode=N,e}if("end"===s.type){const e=b(s);if(e!==ee)return e}
|
||||
if("illegal"===s.type&&""===a)return 1
|
||||
;if(A>1e5&&A>3*s.index)throw Error("potential infinite loop, way more iterations than matches")
|
||||
;return S+=a,a.length}const y=O(e)
|
||||
;if(!y)throw K(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
|
||||
;const _=V(y);let v="",N=s||_;const k={},M=new g.__emitter(g);(()=>{const e=[]
|
||||
;for(let t=N;t!==y;t=t.parent)t.scope&&e.unshift(t.scope)
|
||||
;e.forEach((e=>M.openNode(e)))})();let S="",R=0,j=0,A=0,I=!1;try{
|
||||
for(N.matcher.considerAll();;){
|
||||
A++,I?I=!1:N.matcher.considerAll(),N.matcher.lastIndex=j
|
||||
;const e=N.matcher.exec(t);if(!e)break;const n=w(t.substring(j,e.index),e)
|
||||
;j=e.index+n}
|
||||
return w(t.substring(j)),M.closeAllNodes(),M.finalize(),v=M.toHTML(),{
|
||||
language:e,value:v,relevance:R,illegal:!1,_emitter:M,_top:N}}catch(n){
|
||||
if(n.message&&n.message.includes("Illegal"))return{language:e,value:Y(t),
|
||||
illegal:!0,relevance:0,_illegalBy:{message:n.message,index:j,
|
||||
context:t.slice(j-100,j+100),mode:n.mode,resultSoFar:v},_emitter:M};if(o)return{
|
||||
language:e,value:Y(t),illegal:!1,relevance:0,errorRaised:n,_emitter:M,_top:N}
|
||||
;throw n}}function x(e,t){t=t||g.languages||Object.keys(i);const n=(e=>{
|
||||
const t={value:Y(e),illegal:!1,relevance:0,_top:c,_emitter:new g.__emitter(g)}
|
||||
;return t._emitter.addText(e),t})(e),r=t.filter(O).filter(N).map((t=>E(t,e,!1)))
|
||||
;r.unshift(n);const s=r.sort(((e,t)=>{
|
||||
if(e.relevance!==t.relevance)return t.relevance-e.relevance
|
||||
;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1
|
||||
;if(O(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=s,l=o
|
||||
;return l.secondBest=a,l}function w(e){let t=null;const n=(e=>{
|
||||
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
|
||||
;const n=g.languageDetectRe.exec(t);if(n){const t=O(n[1])
|
||||
;return t||(W(a.replace("{}",n[1])),
|
||||
W("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
|
||||
return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return
|
||||
;if(k("before:highlightElement",{el:e,language:n
|
||||
}),e.children.length>0&&(g.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
|
||||
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
|
||||
console.warn("The element with unescaped HTML:"),
|
||||
console.warn(e)),g.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML)
|
||||
;t=e;const i=t.textContent,s=n?m(i,{language:n,ignoreIllegals:!0}):x(i)
|
||||
;e.innerHTML=s.value,((e,t,n)=>{const i=t&&r[t]||n
|
||||
;e.classList.add("hljs"),e.classList.add("language-"+i)
|
||||
})(e,n,s.language),e.result={language:s.language,re:s.relevance,
|
||||
relevance:s.relevance},s.secondBest&&(e.secondBest={
|
||||
language:s.secondBest.language,relevance:s.secondBest.relevance
|
||||
}),k("after:highlightElement",{el:e,result:s,text:i})}let y=!1;function _(){
|
||||
"loading"!==document.readyState?document.querySelectorAll(g.cssSelector).forEach(w):y=!0
|
||||
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[r[e]]}
|
||||
function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
|
||||
r[e.toLowerCase()]=t}))}function N(e){const t=O(e)
|
||||
;return t&&!t.disableAutodetect}function k(e,t){const n=e;s.forEach((e=>{
|
||||
e[n]&&e[n](t)}))}
|
||||
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
|
||||
y&&_()}),!1),Object.assign(t,{highlight:m,highlightAuto:x,highlightAll:_,
|
||||
highlightElement:w,
|
||||
highlightBlock:e=>(X("10.7.0","highlightBlock will be removed entirely in v12.0"),
|
||||
X("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{g=Q(g,e)},
|
||||
initHighlighting:()=>{
|
||||
_(),X("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
|
||||
initHighlightingOnLoad:()=>{
|
||||
_(),X("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
|
||||
},registerLanguage:(e,n)=>{let r=null;try{r=n(t)}catch(t){
|
||||
if(K("Language definition for '{}' could not be registered.".replace("{}",e)),
|
||||
!o)throw t;K(t),r=c}
|
||||
r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&v(r.aliases,{
|
||||
languageName:e})},unregisterLanguage:e=>{delete i[e]
|
||||
;for(const t of Object.keys(r))r[t]===e&&delete r[t]},
|
||||
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v,
|
||||
autoDetection:N,inherit:Q,addPlugin:e=>{(e=>{
|
||||
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
|
||||
e["before:highlightBlock"](Object.assign({block:t.el},t))
|
||||
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
|
||||
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)}
|
||||
}),t.debugMode=()=>{o=!1},t.safeMode=()=>{o=!0
|
||||
},t.versionString="11.7.0",t.regex={concat:p,lookahead:d,either:f,optional:h,
|
||||
anyNumberOfTimes:u};for(const t in A)"object"==typeof A[t]&&e.exports(A[t])
|
||||
;return Object.assign(t,A),t})({});return te}()
|
||||
;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `xml` grammar compiled for Highlight.js 11.7.0 */
|
||||
(()=>{var e=(()=>{"use strict";return e=>{
|
||||
const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={
|
||||
className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/,
|
||||
contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]
|
||||
},i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{
|
||||
className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),r={
|
||||
endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",
|
||||
begin:/[\p{L}0-9._:-]+/u,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
|
||||
className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{
|
||||
begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
|
||||
name:"HTML, XML",
|
||||
aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
|
||||
case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,
|
||||
end:/>/,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{
|
||||
className:"meta",begin:/<![a-z]/,end:/>/,contains:[t,i,l,c]}]}]
|
||||
},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,
|
||||
relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,
|
||||
relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",
|
||||
begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[r],starts:{
|
||||
end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",
|
||||
begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[r],starts:{
|
||||
end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{
|
||||
className:"tag",begin:/<>|<\/>/},{className:"tag",
|
||||
begin:a.concat(/</,a.lookahead(a.concat(n,a.either(/\/>/,/>/,/\s/)))),
|
||||
end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:r}]},{
|
||||
className:"tag",begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{
|
||||
className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}
|
||||
})();hljs.registerLanguage("xml",e)})();/*! `markdown` grammar compiled for Highlight.js 11.7.0 */
|
||||
(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/,
|
||||
end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/,
|
||||
relevance:0},{
|
||||
begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
|
||||
relevance:2},{
|
||||
begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),
|
||||
relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{
|
||||
begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/
|
||||
},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,
|
||||
returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",
|
||||
excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",
|
||||
end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[],
|
||||
variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]
|
||||
},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{
|
||||
begin:/_(?![_\s])/,end:/_/,relevance:0}]},c=e.inherit(i,{contains:[]
|
||||
}),t=e.inherit(s,{contains:[]});i.contains.push(t),s.contains.push(c)
|
||||
;let g=[n,a];return[i,s,c,t].forEach((e=>{e.contains=e.contains.concat(g)
|
||||
})),g=g.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{
|
||||
className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{
|
||||
begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",
|
||||
contains:g}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",
|
||||
end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:g,
|
||||
end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{
|
||||
begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{
|
||||
begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",
|
||||
contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{
|
||||
begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{
|
||||
className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{
|
||||
className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})()
|
||||
;hljs.registerLanguage("markdown",e)})();/*! `plaintext` grammar compiled for Highlight.js 11.7.0 */
|
||||
(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text",
|
||||
aliases:["text","txt"],disableAutodetect:!0})})()
|
||||
;hljs.registerLanguage("plaintext",t)})();/*! `ocaml` grammar compiled for Highlight.js 11.7.0 */
|
||||
(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"],
|
||||
keywords:{$pattern:"[a-z_]\\w*!?",
|
||||
keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",
|
||||
built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",
|
||||
literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal",
|
||||
begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{
|
||||
contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{
|
||||
className:"type",begin:"`[A-Z][\\w']*"},{className:"type",
|
||||
begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0
|
||||
},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0
|
||||
}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",
|
||||
begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",
|
||||
relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})();/*! `python` grammar compiled for Highlight.js 11.7.0 */
|
||||
(()=>{var e=(()=>{"use strict";return e=>{
|
||||
const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={
|
||||
$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,
|
||||
built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],
|
||||
literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],
|
||||
type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]
|
||||
},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,
|
||||
end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={
|
||||
className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{
|
||||
begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,
|
||||
contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{
|
||||
begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,
|
||||
contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{
|
||||
begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,
|
||||
contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,
|
||||
end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/,
|
||||
relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{
|
||||
begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,
|
||||
end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,
|
||||
contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,
|
||||
contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
|
||||
},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={
|
||||
className:"number",relevance:0,variants:[{
|
||||
begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{
|
||||
begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{
|
||||
begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})`
|
||||
},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})`
|
||||
}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s,
|
||||
contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={
|
||||
className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,
|
||||
end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,
|
||||
contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{
|
||||
name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s,
|
||||
illegal:/(<\/|->|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if",
|
||||
relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{
|
||||
1:"keyword",3:"title.function"},contains:[m]},{variants:[{
|
||||
match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}],
|
||||
scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{
|
||||
className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})()
|
||||
;hljs.registerLanguage("python",e)})();/*! `reasonml` grammar compiled for Highlight.js 11.7.0 */
|
||||
(()=>{var e=(()=>{"use strict";return e=>{
|
||||
const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={
|
||||
keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with",
|
||||
built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",
|
||||
literal:"true false"
|
||||
},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={
|
||||
className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={
|
||||
className:"operator",relevance:0,begin:s},o=[{className:"identifier",
|
||||
relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module",
|
||||
begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{
|
||||
className:"identifier",begin:a,relevance:0}]}],b=[{className:"module",
|
||||
begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{
|
||||
className:"identifier",begin:a,relevance:0}]}],m={className:"function",
|
||||
relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>",
|
||||
end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",
|
||||
variants:[{begin:n},{
|
||||
begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}"
|
||||
},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",
|
||||
returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{
|
||||
begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":",
|
||||
end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{
|
||||
begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor",
|
||||
begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r,
|
||||
contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={
|
||||
className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>",
|
||||
relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={
|
||||
className:"module-access",keywords:r,returnBegin:!0,variants:[{
|
||||
begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0,
|
||||
contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{
|
||||
begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{
|
||||
name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)",
|
||||
contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{
|
||||
className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0
|
||||
},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{
|
||||
className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{
|
||||
className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{
|
||||
className:"operator",begin:i,illegal:"--\x3e",relevance:0
|
||||
},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def",
|
||||
begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0,
|
||||
keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{
|
||||
begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})()
|
||||
;hljs.registerLanguage("reasonml",e)})();
|
||||
2
dev/index.html
Normal file
2
dev/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html><head><meta charset="utf-8"><meta name="generator" content="odig v0.0.9"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" type="text/css" media="screen, print" href="_odoc-theme/odoc.css"><title>_opam</title></head><body class="odoc"><nav class="odoc-nav">🐫</nav><header class="odoc-preamble"><h1>OCaml package documentation</h1><p>Browse <a href="#by-name">by name</a>, <a href="#by-tag">by tag</a>, the <a href="ocaml/Stdlib/index.html#modules">standard library</a> and the <a href="https://ocaml.org/manual/">OCaml manual</a> (online, latest version).</p><p><small>Generated for <code>/home/runner/work/moonpool/moonpool/_opam/lib</code></small></p></header><nav class="odoc-toc"><ul><li><a href="ocaml/Stdlib/index.html#modules">OCaml standard library</a></li><li><a href="https://ocaml.org/manual/">OCaml manual</a></li><li><a href="#by-name">Packages by name</a></li><li><a href="#by-tag">Packages by tag</a></li></ul></nav><div class="odoc-content"><h2 id="by-name"><a href="#by-name" aria-hidden="true" class="anchor"></a>Packages by name</h2><div class="by-name"><nav><a href="#name-e">e</a><a href="#name-m">m</a><a href="#name-o">o</a></nav><h3 id="name-e"><a href="#name-e" aria-hidden="true" class="anchor"></a>e</h3><ol class="packages"><li id="package-either"><a href="#package-either" aria-hidden="true" class="anchor"></a><a href="either/index.html">either</a> <span class="version"></span> <span class="synopsis"></span></li></ol><h3 id="name-m"><a href="#name-m" aria-hidden="true" class="anchor"></a>m</h3><ol class="packages"><li id="package-moonpool"><a href="#package-moonpool" aria-hidden="true" class="anchor"></a><a href="moonpool/index.html">moonpool</a> <span class="version"></span> <span class="synopsis"></span></li></ol><h3 id="name-o"><a href="#name-o" aria-hidden="true" class="anchor"></a>o</h3><ol class="packages"><li id="package-ocaml"><a href="#package-ocaml" aria-hidden="true" class="anchor"></a><a href="ocaml/index.html">ocaml</a> <span class="version"></span> <span class="synopsis"></span></li></ol></div><h2 id="by-tag"><a href="#by-tag" aria-hidden="true" class="anchor"></a>Packages by tag</h2><div class="by-tag"><nav><table></table></nav></div></div></body></html>
|
||||
1
dev/katex.min.css
vendored
Normal file
1
dev/katex.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dev/katex.min.js
vendored
Normal file
1
dev/katex.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
dev/moonpool/Moonpool/Atomic/index.html
Normal file
2
dev/moonpool/Moonpool/Atomic/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/moonpool/Moonpool/Blocking_queue/index.html
Normal file
2
dev/moonpool/Moonpool/Blocking_queue/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/moonpool/Moonpool/Chan/index.html
Normal file
2
dev/moonpool/Moonpool/Chan/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/moonpool/Moonpool/Fork_join/index.html
Normal file
2
dev/moonpool/Moonpool/Fork_join/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fork_join (moonpool.Moonpool.Fork_join)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">moonpool</a> » <a href="../index.html">Moonpool</a> » Fork_join</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool.Fork_join</span></code></h1><p>Fork-join primitives.</p><p><b>NOTE</b> These are only available on OCaml 5.0 and above.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool/Fut/Infix/argument-1-_/index.html
Normal file
2
dev/moonpool/Moonpool/Fut/Infix/argument-1-_/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>_ (moonpool.Moonpool.Fut.Infix._)</title><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../../index.html">moonpool</a> » <a href="../../../index.html">Moonpool</a> » <a href="../../index.html">Fut</a> » <a href="../index.html">Infix</a> » _</nav><header class="odoc-preamble"><h1>Parameter <code><span>Infix._</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-pool"><a href="#val-pool" class="anchor"></a><code><span><span class="keyword">val</span> pool : <a href="../../../Runner/index.html#type-t">Runner.t</a></span></code></div></div></div></body></html>
|
||||
2
dev/moonpool/Moonpool/Fut/Infix/index.html
Normal file
2
dev/moonpool/Moonpool/Fut/Infix/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/moonpool/Moonpool/Fut/Infix_local/index.html
Normal file
2
dev/moonpool/Moonpool/Fut/Infix_local/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Infix_local (moonpool.Moonpool.Fut.Infix_local)</title><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">moonpool</a> » <a href="../../index.html">Moonpool</a> » <a href="../index.html">Fut</a> » Infix_local</nav><header class="odoc-preamble"><h1>Module <code><span>Fut.Infix_local</span></code></h1><p>Operators that run on the same thread as the first future.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-(>|=)"><a href="#val-(>|=)" class="anchor"></a><code><span><span class="keyword">val</span> (>|=) : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(>>=)"><a href="#val-(>>=)" class="anchor"></a><code><span><span class="keyword">val</span> (>>=) : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-let+"><a href="#val-let+" class="anchor"></a><code><span><span class="keyword">val</span> let+ : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-and+"><a href="#val-and+" class="anchor"></a><code><span><span class="keyword">val</span> and+ : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-let*"><a href="#val-let*" class="anchor"></a><code><span><span class="keyword">val</span> let* : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-and*"><a href="#val-and*" class="anchor"></a><code><span><span class="keyword">val</span> and* : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="../index.html#type-t">t</a></span></span></code></div></div></div></body></html>
|
||||
2
dev/moonpool/Moonpool/Fut/index.html
Normal file
2
dev/moonpool/Moonpool/Fut/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/moonpool/Moonpool/Fut/module-type-INFIX/index.html
Normal file
2
dev/moonpool/Moonpool/Fut/module-type-INFIX/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>INFIX (moonpool.Moonpool.Fut.INFIX)</title><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">moonpool</a> » <a href="../../index.html">Moonpool</a> » <a href="../index.html">Fut</a> » INFIX</nav><header class="odoc-preamble"><h1>Module type <code><span>Fut.INFIX</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-(>|=)"><a href="#val-(>|=)" class="anchor"></a><code><span><span class="keyword">val</span> (>|=) : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(>>=)"><a href="#val-(>>=)" class="anchor"></a><code><span><span class="keyword">val</span> (>>=) : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-let+"><a href="#val-let+" class="anchor"></a><code><span><span class="keyword">val</span> let+ : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-and+"><a href="#val-and+" class="anchor"></a><code><span><span class="keyword">val</span> and+ : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-let*"><a href="#val-let*" class="anchor"></a><code><span><span class="keyword">val</span> let* : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-and*"><a href="#val-and*" class="anchor"></a><code><span><span class="keyword">val</span> and* : <span><span><span class="type-var">'a</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="../index.html#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="../index.html#type-t">t</a></span></span></code></div></div></div></body></html>
|
||||
2
dev/moonpool/Moonpool/Lock/index.html
Normal file
2
dev/moonpool/Moonpool/Lock/index.html
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>For_runner_implementors (moonpool.Moonpool.Pool.For_runner_implementors)</title><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">moonpool</a> » <a href="../../index.html">Moonpool</a> » <a href="../index.html">Pool</a> » For_runner_implementors</nav><header class="odoc-preamble"><h1>Module <code><span>Pool.For_runner_implementors</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create :
|
||||
<span>size:<span>(<span>unit <span class="arrow">-></span></span> int)</span> <span class="arrow">-></span></span>
|
||||
<span>num_tasks:<span>(<span>unit <span class="arrow">-></span></span> int)</span> <span class="arrow">-></span></span>
|
||||
<span>shutdown:<span>(<span>wait:bool <span class="arrow">-></span></span> <span>unit <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||
<span>run_async:<span>(<span><a href="../index.html#type-task">task</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||
<span>unit <span class="arrow">-></span></span>
|
||||
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <a href="../../Suspend_/index.html"><code>Suspend_</code></a> on OCaml 5.x, so that <a href="../../Fork_join/index.html"><code>Fork_join</code></a> and other 5.x features work properly.</p></div></div></div></body></html>
|
||||
15
dev/moonpool/Moonpool/Pool/index.html
Normal file
15
dev/moonpool/Moonpool/Pool/index.html
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>For_runner_implementors (moonpool.Moonpool.Runner.For_runner_implementors)</title><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">moonpool</a> » <a href="../../index.html">Moonpool</a> » <a href="../index.html">Runner</a> » For_runner_implementors</nav><header class="odoc-preamble"><h1>Module <code><span>Runner.For_runner_implementors</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create :
|
||||
<span>size:<span>(<span>unit <span class="arrow">-></span></span> int)</span> <span class="arrow">-></span></span>
|
||||
<span>num_tasks:<span>(<span>unit <span class="arrow">-></span></span> int)</span> <span class="arrow">-></span></span>
|
||||
<span>shutdown:<span>(<span>wait:bool <span class="arrow">-></span></span> <span>unit <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||
<span>run_async:<span>(<span><a href="../index.html#type-task">task</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||
<span>unit <span class="arrow">-></span></span>
|
||||
<a href="../index.html#type-t">t</a></span></code></div><div class="spec-doc"><p>Create a new runner.</p><p><b>NOTE</b>: the runner should support DLA and <a href="../../Suspend_/index.html"><code>Suspend_</code></a> on OCaml 5.x, so that <a href="../../Fork_join/index.html"><code>Fork_join</code></a> and other 5.x features work properly.</p></div></div></div></body></html>
|
||||
2
dev/moonpool/Moonpool/Runner/index.html
Normal file
2
dev/moonpool/Moonpool/Runner/index.html
Normal file
File diff suppressed because one or more lines are too long
5
dev/moonpool/Moonpool/Suspend_/index.html
Normal file
5
dev/moonpool/Moonpool/Suspend_/index.html
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Suspend_ (moonpool.Moonpool.Suspend_)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">moonpool</a> » <a href="../index.html">Moonpool</a> » Suspend_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool.Suspend_</span></code></h1><p>Suspensions.</p><p>This is only going to work on OCaml 5.x.</p><p><b>NOTE</b>: this is not stable for now.</p><ul class="at-tags"><li class="alert"><span class="at-tag">alert</span> unstable this module is an implementation detail of moonpool for now</li></ul><p>(Private) suspending tasks using Effects.</p><p>This module is an implementation detail of Moonpool and should not be used outside of it, except by experts to implement <a href="../Runner/index.html"><code>Runner</code></a>.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-suspension"><a href="#type-suspension" class="anchor"></a><code><span><span class="keyword">type</span> suspension</span><span> = <span><span><span>(unit, exn * <a href="../../../ocaml/Stdlib/Printexc/index.html#type-raw_backtrace">Stdlib.Printexc.raw_backtrace</a>)</span> <a href="../../../ocaml/Stdlib/index.html#type-result">result</a></span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>A suspended computation</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-task"><a href="#type-task" class="anchor"></a><code><span><span class="keyword">type</span> task</span><span> = <span>unit <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-suspension_handler"><a href="#type-suspension_handler" class="anchor"></a><code><span><span class="keyword">type</span> suspension_handler</span><span> = </span><span>{</span></code><ol><li id="type-suspension_handler.handle" class="def record field anchored"><a href="#type-suspension_handler.handle" class="anchor"></a><code><span>handle : <span>run:<span>(<span>with_handler:bool <span class="arrow">-></span></span> <span><a href="#type-task">task</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><a href="#type-suspension">suspension</a> <span class="arrow">-></span></span> unit;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>The handler that knows what to do with the suspended computation.</p><p>The handler is given two things:</p><ul><li>the suspended computation (which can be resumed with a result eventually);</li><li>a <code>run</code> function that can be used to start tasks to perform some computation.</li></ul><p>This means that a fork-join primitive, for example, can use a single call to <code>suspend</code> to:</p><ul><li>suspend the caller until the fork-join is done</li><li>use <code>run</code> to start all the tasks. Typically <code>run</code> is called multiple times, which is where the "fork" part comes from. Each call to <code>run</code> potentially runs in parallel with the other calls. The calls must coordinate so that, once they are all done, the suspended caller is resumed with the aggregated result of the computation.</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_suspend"><a href="#val-with_suspend" class="anchor"></a><code><span><span class="keyword">val</span> with_suspend :
|
||||
<span>run:<span>(<span>with_handler:bool <span class="arrow">-></span></span> <span><a href="#type-task">task</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||
<span><span>(<span>unit <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||
unit</span></code></div><div class="spec-doc"><p><code>with_suspend ~run f</code> runs <code>f()</code> in an environment where <code>suspend</code> will work. If <code>f()</code> suspends with suspension handler <code>h</code>, this calls <code>h ~run k</code> where <code>k</code> is the suspension.</p><p>This will not do anything on OCaml 4.x.</p></div></div></div></body></html>
|
||||
2
dev/moonpool/Moonpool/index.html
Normal file
2
dev/moonpool/Moonpool/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/moonpool/Moonpool__/index.html
Normal file
2
dev/moonpool/Moonpool__/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__ (moonpool.Moonpool__)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Atomic_/index.html
Normal file
2
dev/moonpool/Moonpool__Atomic_/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Atomic_ (moonpool.Moonpool__Atomic_)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Atomic_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Atomic_</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Bb_queue/index.html
Normal file
2
dev/moonpool/Moonpool__Bb_queue/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Bb_queue (moonpool.Moonpool__Bb_queue)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Bb_queue</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Bb_queue</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Chan/index.html
Normal file
2
dev/moonpool/Moonpool__Chan/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Chan (moonpool.Moonpool__Chan)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Chan</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Chan</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Dla_/index.html
Normal file
2
dev/moonpool/Moonpool__Dla_/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Dla_ (moonpool.Moonpool__Dla_)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Dla_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Dla_</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Domain_/index.html
Normal file
2
dev/moonpool/Moonpool__Domain_/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Domain_ (moonpool.Moonpool__Domain_)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Domain_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Domain_</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Fork_join/index.html
Normal file
2
dev/moonpool/Moonpool__Fork_join/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Fork_join (moonpool.Moonpool__Fork_join)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Fork_join</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Fork_join</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Fut/index.html
Normal file
2
dev/moonpool/Moonpool__Fut/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Fut (moonpool.Moonpool__Fut)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Fut</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Fut</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Lock/index.html
Normal file
2
dev/moonpool/Moonpool__Lock/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Lock (moonpool.Moonpool__Lock)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Lock</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Lock</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Pool/index.html
Normal file
2
dev/moonpool/Moonpool__Pool/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Pool (moonpool.Moonpool__Pool)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Pool</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Pool</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Runner/index.html
Normal file
2
dev/moonpool/Moonpool__Runner/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Runner (moonpool.Moonpool__Runner)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Runner</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Runner</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
2
dev/moonpool/Moonpool__Suspend_/index.html
Normal file
2
dev/moonpool/Moonpool__Suspend_/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Moonpool__Suspend_ (moonpool.Moonpool__Suspend_)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">moonpool</a> » Moonpool__Suspend_</nav><header class="odoc-preamble"><h1>Module <code><span>Moonpool__Suspend_</span></code></h1></header><div class="odoc-content"></div></body></html>
|
||||
60
dev/moonpool/_doc-dir/CHANGES.md
Normal file
60
dev/moonpool/_doc-dir/CHANGES.md
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
# 0.4
|
||||
|
||||
- add `Fut.{reify_error,bind_reify_error}`
|
||||
- full lifecycle for worker domains, where a domain
|
||||
will shutdown if no thread runs on it, after a
|
||||
short delay.
|
||||
|
||||
- fix: generalize type of `create_arg`
|
||||
- perf: in `Bb_queue`, only signal condition on push if queue was empty
|
||||
|
||||
# 0.3
|
||||
|
||||
- add `Fork_join` for parallelizing computations. This is only
|
||||
available on OCaml 5.x because it relies on effects.
|
||||
- add `Fork_join.{for_,map_array,map_list}`
|
||||
- add `Fork_join.all_{list,init}`
|
||||
- add `Pool.with_`
|
||||
- add a channel module
|
||||
- add `Runner`, change `Pool` to produce a `Runner.t`
|
||||
- add a `Lock` module
|
||||
- add support for domain-local-await when installed
|
||||
- add `Fut.await` for OCaml >= 5.0
|
||||
|
||||
- fix: Fork_join.both_ignore now has a more general type
|
||||
|
||||
- expose `Suspend_` and its internal effect with an unstability alert.
|
||||
This is intended for implementors of `Runner` only.
|
||||
- port `cpp.ml` from containers, replace previous codegen with it.
|
||||
This will provide better flexibility for supporting multiple versions
|
||||
of OCaml in the future.
|
||||
- add `Pool.run_wait_block`; rename `Pool.run` into `Pool.run_async`
|
||||
- fix: in blocking queue, `pop` works on a non empty closed queue
|
||||
|
||||
# 0.2
|
||||
|
||||
- add `Fut.for_list`
|
||||
- add `around_task` to `Pool.create`
|
||||
- add `Pool.shutdown_without_waiting`
|
||||
- add `Pool.num_tasks`
|
||||
- add `Fut.is_done`
|
||||
- add `Blocking_queue.size`
|
||||
- add `Fut.for_array` to easily iterate on an array in parallel
|
||||
- add `Fut.get_or_fail{,_exn}`
|
||||
|
||||
- perf: limit number of work queues in pool
|
||||
- perf: use multiple queues and non-blocking work-stealing from them, in pool
|
||||
this improves the behavior for many small tasks by reducing contention on
|
||||
each queue
|
||||
|
||||
- fix: fut: actually run all map/bind callbacks in pool if provided
|
||||
|
||||
# 0.1.1
|
||||
|
||||
- fix(fut): fix bug when calling `wait_list []`
|
||||
- fix: join_array on arrays of length=1 had a bound error
|
||||
|
||||
# 0.1
|
||||
|
||||
initial release
|
||||
278
dev/moonpool/_doc-dir/README.md
Normal file
278
dev/moonpool/_doc-dir/README.md
Normal file
|
|
@ -0,0 +1,278 @@
|
|||
# Moonpool
|
||||
|
||||
[](https://github.com/c-cube/moonpool/actions/workflows/main.yml)
|
||||
|
||||
A pool within a bigger pool (ie the ocean). Here, we're talking about
|
||||
pools of `Thread.t` which live within a fixed pool of `Domain.t`.
|
||||
|
||||
This fixed pool of domains is shared between *all* the pools in moonpool.
|
||||
The rationale is that we should not have more domains than cores, so
|
||||
it's easier to pre-allocate exactly that many domains, and run more flexible
|
||||
thread pools on top.
|
||||
|
||||
In addition, some concurrency and parallelism primitives are provided:
|
||||
- `Moonpool.Fut` provides futures/promises that execute
|
||||
on these thread pools. The futures are thread safe.
|
||||
- `Moonpool.Chan` provides simple cooperative and thread-safe channels
|
||||
to use within pool-bound tasks. They're essentially re-usable futures.
|
||||
|
||||
On OCaml 5 (meaning there's actual domains and effects, not just threads),
|
||||
a `Fut.await` primitive is provided. It's simpler and more powerful
|
||||
than the monadic combinators.
|
||||
- `Moonpool.Fork_join` provides the fork-join parallelism primitives
|
||||
to use within tasks running in the pool.
|
||||
|
||||
## Usage
|
||||
|
||||
The user can create several thread pools. These pools use regular posix threads,
|
||||
but the threads are spread across multiple domains (on OCaml 5), which enables
|
||||
parallelism.
|
||||
|
||||
The function `Pool.run_async pool task` runs `task()` on one of the workers
|
||||
of `pool`, as soon as one is available. No result is returned.
|
||||
|
||||
```ocaml
|
||||
# #require "threads";;
|
||||
# let pool = Moonpool.Pool.create ~min:4 ();;
|
||||
val pool : Moonpool.Runner.t =
|
||||
{Moonpool.Pool.run_async = <fun>; shutdown = <fun>; size = <fun>;
|
||||
num_tasks = <fun>}
|
||||
|
||||
# begin
|
||||
Moonpool.Pool.run_async pool
|
||||
(fun () ->
|
||||
Thread.delay 0.1;
|
||||
print_endline "running from the pool");
|
||||
print_endline "running from the caller";
|
||||
Thread.delay 0.3; (* wait for task to run before returning *)
|
||||
end ;;
|
||||
running from the caller
|
||||
running from the pool
|
||||
- : unit = ()
|
||||
```
|
||||
|
||||
To wait until the task is done, you can use `Pool.run_wait_block` instead:
|
||||
|
||||
```ocaml
|
||||
# begin
|
||||
Moonpool.Pool.run_wait_block pool
|
||||
(fun () ->
|
||||
Thread.delay 0.1;
|
||||
print_endline "running from the pool");
|
||||
print_endline "running from the caller (after waiting)";
|
||||
end ;;
|
||||
running from the pool
|
||||
running from the caller (after waiting)
|
||||
- : unit = ()
|
||||
```
|
||||
|
||||
The function `Fut.spawn ~on f` schedules `f ()` on the pool `on`, and immediately
|
||||
returns a _future_ which will eventually hold the result (or an exception).
|
||||
|
||||
The function `Fut.peek` will return the current value, or `None` if the future is
|
||||
still not completed.
|
||||
The functions `Fut.wait_block` and `Fut.wait_block_exn` will
|
||||
block the current thread and wait for the future to complete.
|
||||
There are some deadlock risks associated with careless use of these, so
|
||||
be sure to consult the documentation of the `Fut` module.
|
||||
|
||||
```ocaml
|
||||
# let fut = Moonpool.Fut.spawn ~on:pool
|
||||
(fun () ->
|
||||
Thread.delay 0.5;
|
||||
1+1);;
|
||||
val fut : int Moonpool.Fut.t = <abstr>
|
||||
|
||||
# Moonpool.Fut.peek fut;
|
||||
- : int Moonpool.Fut.or_error option = None
|
||||
|
||||
# Moonpool.Fut.wait_block_exn fut;;
|
||||
- : int = 2
|
||||
```
|
||||
|
||||
Some combinators on futures are also provided, e.g. to wait for all futures in
|
||||
an array to complete:
|
||||
|
||||
```ocaml
|
||||
# let rec fib x =
|
||||
if x <= 1 then 1 else fib (x-1) + fib (x-2);;
|
||||
val fib : int -> int = <fun>
|
||||
|
||||
# List.init 10 fib;;
|
||||
- : int list = [1; 1; 2; 3; 5; 8; 13; 21; 34; 55]
|
||||
|
||||
# let fibs = Array.init 35 (fun n -> Moonpool.Fut.spawn ~on:pool (fun () -> fib n));;
|
||||
val fibs : int Moonpool.Fut.t array =
|
||||
[|<abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>;
|
||||
<abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>;
|
||||
<abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>;
|
||||
<abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>; <abstr>;
|
||||
<abstr>; <abstr>; <abstr>|]
|
||||
|
||||
# Moonpool.Fut.join_array fibs |> Moonpool.Fut.wait_block;;
|
||||
- : int array Moonpool.Fut.or_error =
|
||||
Ok
|
||||
[|1; 1; 2; 3; 5; 8; 13; 21; 34; 55; 89; 144; 233; 377; 610; 987; 1597; 2584;
|
||||
4181; 6765; 10946; 17711; 28657; 46368; 75025; 121393; 196418; 317811;
|
||||
514229; 832040; 1346269; 2178309; 3524578; 5702887; 9227465|]
|
||||
```
|
||||
|
||||
### Support for `await`
|
||||
|
||||
On OCaml 5, effect handlers can be used to implement `Fut.await : 'a Fut.t -> 'a`.
|
||||
|
||||
The expression `Fut.await some_fut`, when run from inside some thread pool,
|
||||
suspends its caller task; the suspended task is then parked, and will
|
||||
be resumed when the future is completed.
|
||||
The pool worker that was executing this expression, in the mean time, moves
|
||||
on to another task.
|
||||
This means that `await` is free of the deadlock risks associated with
|
||||
`Fut.wait_block`.
|
||||
|
||||
In the following example, we bypass the need for `Fut.join_array` by simply
|
||||
using regular array functions along with `Fut.await`.
|
||||
|
||||
```ocaml
|
||||
# let main_fut =
|
||||
let open Moonpool.Fut in
|
||||
spawn ~on:pool @@ fun () ->
|
||||
(* array of sub-futures *)
|
||||
let tasks: _ Moonpool.Fut.t array = Array.init 100 (fun i ->
|
||||
spawn ~on:pool (fun () ->
|
||||
Thread.delay 0.01;
|
||||
i+1))
|
||||
in
|
||||
Array.fold_left (fun n fut -> n + await fut) 0 tasks
|
||||
;;
|
||||
val main_fut : int Moonpool.Fut.t = <abstr>
|
||||
|
||||
# let expected_sum = Array.init 100 (fun i->i+1) |> Array.fold_left (+) 0;;
|
||||
val expected_sum : int = 5050
|
||||
|
||||
# assert (expected_sum = Moonpool.Fut.wait_block_exn main_fut);;
|
||||
- : unit = ()
|
||||
```
|
||||
|
||||
### Fork-join
|
||||
|
||||
On OCaml 5, again using effect handlers, the module `Fork_join`
|
||||
implements the [fork-join model](https://en.wikipedia.org/wiki/Fork%E2%80%93join_model).
|
||||
It must run on a pool (using [Pool.run] or inside a future via [Future.spawn]).
|
||||
|
||||
```ocaml
|
||||
# let rec select_sort arr i len =
|
||||
if len >= 2 then (
|
||||
let idx = ref i in
|
||||
for j = i+1 to i+len-1 do
|
||||
if arr.(j) < arr.(!idx) then idx := j
|
||||
done;
|
||||
let tmp = arr.(!idx) in
|
||||
arr.(!idx) <- arr.(i);
|
||||
arr.(i) <- tmp;
|
||||
select_sort arr (i+1) (len-1)
|
||||
);;
|
||||
val select_sort : 'a array -> int -> int -> unit = <fun>
|
||||
|
||||
# let rec quicksort arr i len : unit =
|
||||
if len <= 10 then select_sort arr i len
|
||||
else (
|
||||
let pivot = arr.(i + (len / 2)) in
|
||||
let low = ref (i - 1) in
|
||||
let high = ref (i + len) in
|
||||
|
||||
while !low < !high do
|
||||
incr low;
|
||||
decr high;
|
||||
while arr.(!low) < pivot do
|
||||
incr low
|
||||
done;
|
||||
while arr.(!high) > pivot do
|
||||
decr high
|
||||
done;
|
||||
if !low < !high then (
|
||||
let tmp = arr.(!low) in
|
||||
arr.(!low) <- arr.(!high);
|
||||
arr.(!high) <- tmp
|
||||
)
|
||||
done;
|
||||
|
||||
Moonpool.Fork_join.both_ignore
|
||||
(fun () -> quicksort arr i (!low - i))
|
||||
(fun () -> quicksort arr !low (len - (!low - i)))
|
||||
);;
|
||||
val quicksort : 'a array -> int -> int -> unit = <fun>
|
||||
|
||||
|
||||
# let arr = [| 4;2;1;5;1;10;3 |];;
|
||||
val arr : int array = [|4; 2; 1; 5; 1; 10; 3|]
|
||||
# Moonpool.Fut.spawn
|
||||
~on:pool (fun () -> quicksort arr 0 (Array.length arr))
|
||||
|> Moonpool.Fut.wait_block_exn;;
|
||||
- : unit = ()
|
||||
# arr;;
|
||||
- : int array = [|1; 1; 2; 3; 4; 5; 10|]
|
||||
|
||||
|
||||
# let arr =
|
||||
let rand = Random.State.make [| 42 |] in
|
||||
Array.init 40 (fun _-> Random.State.int rand 300);;
|
||||
val arr : int array =
|
||||
[|64; 220; 247; 196; 51; 186; 22; 106; 58; 58; 11; 161; 243; 111; 74; 109;
|
||||
49; 135; 59; 192; 132; 38; 19; 44; 126; 147; 182; 83; 95; 231; 204; 121;
|
||||
142; 255; 72; 85; 95; 93; 73; 202|]
|
||||
# Moonpool.Fut.spawn ~on:pool
|
||||
(fun () -> quicksort arr 0 (Array.length arr))
|
||||
|> Moonpool.Fut.wait_block_exn
|
||||
;;
|
||||
- : unit = ()
|
||||
# arr;;
|
||||
- : int array =
|
||||
[|11; 19; 22; 38; 44; 49; 51; 58; 58; 59; 64; 72; 73; 74; 83; 85; 93; 95; 95;
|
||||
106; 109; 111; 121; 126; 132; 135; 142; 147; 161; 182; 186; 192; 196; 202;
|
||||
204; 220; 231; 243; 247; 255|]
|
||||
```
|
||||
|
||||
### More intuition
|
||||
|
||||
To quote [gasche](https://discuss.ocaml.org/t/ann-moonpool-0-1/12387/15):
|
||||
|
||||
<blockquote>
|
||||
You are assuming that, if pool P1 has 5000 tasks, and pool P2 has 10 other tasks, then these 10 tasks will get to run faster than if we just added them at the end of pool P1. This sounds like a “fairness” assumption: separate pools will get comparable shares of domain compute ressources, or at least no pool will be delayed too much from running their first tasks.
|
||||
|
||||
[…]
|
||||
|
||||
- each pool uses a fixed number of threads, all running simultaneously; if there are more tasks sent to the pool, they are delayed and will only get one of the pool threads when previous tasks have finished
|
||||
- separate pools run their separate threads simultaneously, so they compete for compute resources on their domain using OCaml’s systhreads scheduler – which does provide fairness in practice
|
||||
- as a result, running in a new pool enables quicker completion than adding to an existing pool (as we will be scheduled right away instead of waiting for previous tasks in our pool to free some threads)
|
||||
- the ratio of compute resources that each pool gets should be roughly proportional to its number of worker threads
|
||||
</blockquote>
|
||||
|
||||
## OCaml versions
|
||||
|
||||
This works for OCaml >= 4.08.
|
||||
- On OCaml 4.xx, there are no domains, so this is just a library for regular thread pools
|
||||
with not actual parallelism (except for threads that call C code that releases the runtime lock, that is).
|
||||
- on OCaml 5.xx, there is a fixed pool of domains (using the recommended domain count).
|
||||
These domains do not do much by themselves, but we schedule new threads on them, and group
|
||||
threads from each domain into pools.
|
||||
Each domain might thus have multiple threads that belong to distinct pools (and several threads from
|
||||
the same pool, too — this is useful for threads blocking on IO).
|
||||
|
||||
A useful analogy is that each domain is a bit like a CPU core, and `Thread.t` is a logical thread running on a core.
|
||||
Multiple threads have to share a single core and do not run in parallel on it[^1].
|
||||
We can therefore build pools that spread their worker threads on multiple cores to enable parallelism within each pool.
|
||||
|
||||
TODO: actually use https://github.com/haesbaert/ocaml-processor to pin domains to cores,
|
||||
possibly optionally using `select` in dune.
|
||||
|
||||
## License
|
||||
|
||||
MIT license.
|
||||
|
||||
## Install
|
||||
|
||||
```sh, skip
|
||||
$ opam install moonpool
|
||||
```
|
||||
|
||||
[^1]: let's not talk about hyperthreading.
|
||||
2
dev/moonpool/index.html
Normal file
2
dev/moonpool/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (moonpool.index)</title><link rel="stylesheet" href="../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – moonpool</nav><header class="odoc-preamble"><h1 id="package-moonpool"><a href="#package-moonpool" class="anchor"></a>Package moonpool <nav><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">changes</a> <a href="#package_info">more…</a></nav></h1><ul class="modules"><li><a href="Moonpool/index.html"><code>Moonpool</code></a> <span class="synopsis">Moonpool</span></li></ul></header><nav class="odoc-toc"><ul><li><a href="#package_info">Package info</a></li></ul></nav><div class="odoc-content"><h2 id="package_info"><a href="#package_info" class="anchor"></a>Package info</h2><table class="package info"><tr id="info-changes-files"><td><a href="#info-changes-files" aria-hidden="true" class="anchor"></a>changes-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/CHANGES.md">CHANGES.md</a></li></ul></td></tr><tr id="info-readme-files"><td><a href="#info-readme-files" aria-hidden="true" class="anchor"></a>readme-files</td><td><ul><li><a type="text/plain; charset=UTF-8" href="_doc-dir/README.md">README.md</a></li></ul></td></tr></table></div></body></html>
|
||||
5
dev/ocaml/Afl_instrument/index.html
Normal file
5
dev/ocaml/Afl_instrument/index.html
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Afl_instrument (ocaml.Afl_instrument)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Afl_instrument</nav><header class="odoc-preamble"><h1>Module <code><span>Afl_instrument</span></code></h1><p>Instrumentation for afl-fuzz.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-instrument_function"><a href="#val-instrument_function" class="anchor"></a><code><span><span class="keyword">val</span> instrument_function : <span><a href="../Cmm/index.html#type-expression">Cmm.expression</a> <span class="arrow">-></span></span> <span><a href="../Debuginfo/index.html#type-t">Debuginfo.t</a> <span class="arrow">-></span></span> <a href="../Cmm/index.html#type-expression">Cmm.expression</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-instrument_initialiser"><a href="#val-instrument_initialiser" class="anchor"></a><code><span><span class="keyword">val</span> instrument_initialiser :
|
||||
<span><a href="../Cmm/index.html#type-expression">Cmm.expression</a> <span class="arrow">-></span></span>
|
||||
<span><span>(<span>unit <span class="arrow">-></span></span> <a href="../Debuginfo/index.html#type-t">Debuginfo.t</a>)</span> <span class="arrow">-></span></span>
|
||||
<a href="../Cmm/index.html#type-expression">Cmm.expression</a></span></code></div></div></div></body></html>
|
||||
10
dev/ocaml/Alias_analysis/index.html
Normal file
10
dev/ocaml/Alias_analysis/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/ocaml/Allocated_const/index.html
Normal file
2
dev/ocaml/Allocated_const/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Allocated_const (ocaml.Allocated_const)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Allocated_const</nav><header class="odoc-preamble"><h1>Module <code><span>Allocated_const</span></code></h1><p>Constants that are always allocated (possibly statically). Blocks are not included here since they are always encoded using <code>Prim (Pmakeblock, ...)</code>.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span></code><ol><li id="type-t.Float" class="def variant constructor anchored"><a href="#type-t.Float" class="anchor"></a><code><span>| </span><span><span class="constructor">Float</span> <span class="keyword">of</span> float</span></code></li><li id="type-t.Int32" class="def variant constructor anchored"><a href="#type-t.Int32" class="anchor"></a><code><span>| </span><span><span class="constructor">Int32</span> <span class="keyword">of</span> int32</span></code></li><li id="type-t.Int64" class="def variant constructor anchored"><a href="#type-t.Int64" class="anchor"></a><code><span>| </span><span><span class="constructor">Int64</span> <span class="keyword">of</span> int64</span></code></li><li id="type-t.Nativeint" class="def variant constructor anchored"><a href="#type-t.Nativeint" class="anchor"></a><code><span>| </span><span><span class="constructor">Nativeint</span> <span class="keyword">of</span> nativeint</span></code></li><li id="type-t.Float_array" class="def variant constructor anchored"><a href="#type-t.Float_array" class="anchor"></a><code><span>| </span><span><span class="constructor">Float_array</span> <span class="keyword">of</span> <span>float list</span></span></code></li><li id="type-t.Immutable_float_array" class="def variant constructor anchored"><a href="#type-t.Immutable_float_array" class="anchor"></a><code><span>| </span><span><span class="constructor">Immutable_float_array</span> <span class="keyword">of</span> <span>float list</span></span></code></li><li id="type-t.String" class="def variant constructor anchored"><a href="#type-t.String" class="anchor"></a><code><span>| </span><span><span class="constructor">String</span> <span class="keyword">of</span> string</span></code></li><li id="type-t.Immutable_string" class="def variant constructor anchored"><a href="#type-t.Immutable_string" class="anchor"></a><code><span>| </span><span><span class="constructor">Immutable_string</span> <span class="keyword">of</span> string</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare_floats"><a href="#val-compare_floats" class="anchor"></a><code><span><span class="keyword">val</span> compare_floats : <span>float <span class="arrow">-></span></span> <span>float <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-print"><a href="#val-print" class="anchor"></a><code><span><span class="keyword">val</span> print : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div></div></div></body></html>
|
||||
2
dev/ocaml/Annot/index.html
Normal file
2
dev/ocaml/Annot/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Annot (ocaml.Annot)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Annot</nav><header class="odoc-preamble"><h1>Module <code><span>Annot</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-call"><a href="#type-call" class="anchor"></a><code><span><span class="keyword">type</span> call</span><span> = </span></code><ol><li id="type-call.Tail" class="def variant constructor anchored"><a href="#type-call.Tail" class="anchor"></a><code><span>| </span><span><span class="constructor">Tail</span></span></code></li><li id="type-call.Stack" class="def variant constructor anchored"><a href="#type-call.Stack" class="anchor"></a><code><span>| </span><span><span class="constructor">Stack</span></span></code></li><li id="type-call.Inline" class="def variant constructor anchored"><a href="#type-call.Inline" class="anchor"></a><code><span>| </span><span><span class="constructor">Inline</span></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-ident"><a href="#type-ident" class="anchor"></a><code><span><span class="keyword">type</span> ident</span><span> = </span></code><ol><li id="type-ident.Iref_internal" class="def variant constructor anchored"><a href="#type-ident.Iref_internal" class="anchor"></a><code><span>| </span><span><span class="constructor">Iref_internal</span> <span class="keyword">of</span> <a href="../Location/index.html#type-t">Location.t</a></span></code></li><li id="type-ident.Iref_external" class="def variant constructor anchored"><a href="#type-ident.Iref_external" class="anchor"></a><code><span>| </span><span><span class="constructor">Iref_external</span></span></code></li><li id="type-ident.Idef" class="def variant constructor anchored"><a href="#type-ident.Idef" class="anchor"></a><code><span>| </span><span><span class="constructor">Idef</span> <span class="keyword">of</span> <a href="../Location/index.html#type-t">Location.t</a></span></code></li></ol></div></div></div></body></html>
|
||||
12
dev/ocaml/Arch/index.html
Normal file
12
dev/ocaml/Arch/index.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
dev/ocaml/Arg_helper/Make/argument-1-S/Key/index.html
Normal file
2
dev/ocaml/Arg_helper/Make/argument-1-S/Key/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Key (ocaml.Arg_helper.Make.S.Key)</title><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../../index.html">ocaml</a> » <a href="../../../index.html">Arg_helper</a> » <a href="../../index.html">Make</a> » <a href="../index.html">S</a> » Key</nav><header class="odoc-preamble"><h1>Module <code><span>S.Key</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_string"><a href="#val-of_string" class="anchor"></a><code><span><span class="keyword">val</span> of_string : <span>string <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>The textual representation of a key must not contain '=' or ','.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Map"><a href="#module-Map" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Map/index.html">Map</a></span><span> : <a href="../../../../Stdlib/Map/module-type-S/index.html">Map.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <a href="../../../../Stdlib/Map/module-type-S/index.html#type-key">key</a> = <a href="#type-t">t</a></span></span></code></div></div></div></body></html>
|
||||
2
dev/ocaml/Arg_helper/Make/argument-1-S/Value/index.html
Normal file
2
dev/ocaml/Arg_helper/Make/argument-1-S/Value/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Value (ocaml.Arg_helper.Make.S.Value)</title><link rel="stylesheet" href="../../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../../index.html">ocaml</a> » <a href="../../../index.html">Arg_helper</a> » <a href="../../index.html">Make</a> » <a href="../index.html">S</a> » Value</nav><header class="odoc-preamble"><h1>Module <code><span>S.Value</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_string"><a href="#val-of_string" class="anchor"></a><code><span><span class="keyword">val</span> of_string : <span>string <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>The textual representation of a value must not contain ','.</p></div></div></div></body></html>
|
||||
2
dev/ocaml/Arg_helper/Make/argument-1-S/index.html
Normal file
2
dev/ocaml/Arg_helper/Make/argument-1-S/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>S (ocaml.Arg_helper.Make.S)</title><link rel="stylesheet" href="../../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../../index.html">ocaml</a> » <a href="../../index.html">Arg_helper</a> » <a href="../index.html">Make</a> » S</nav><header class="odoc-preamble"><h1>Parameter <code><span>Make.S</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-Key"><a href="#module-Key" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Key/index.html">Key</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Value"><a href="#module-Value" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Value/index.html">Value</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div></div></body></html>
|
||||
2
dev/ocaml/Arg_helper/Make/index.html
Normal file
2
dev/ocaml/Arg_helper/Make/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/ocaml/Arg_helper/index.html
Normal file
2
dev/ocaml/Arg_helper/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Arg_helper (ocaml.Arg_helper)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Arg_helper</nav><header class="odoc-preamble"><h1>Module <code><span>Arg_helper</span></code></h1><p>Decipher command line arguments of the form <value> | <key>=<value><code>,...</code></p><p>(as used for example for the specification of inlining parameters varying by simplification round).</p><p><b>Warning:</b> this module is unstable and part of <span class="xref-unresolved">compiler-libs</span>.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-Make"><a href="#module-Make" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Make/index.html">Make</a></span><span> (<a href="Make/argument-1-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span>) : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div></div></body></html>
|
||||
20
dev/ocaml/Asmgen/index.html
Normal file
20
dev/ocaml/Asmgen/index.html
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Asmgen (ocaml.Asmgen)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Asmgen</nav><header class="odoc-preamble"><h1>Module <code><span>Asmgen</span></code></h1><p>From Lambda to assembly code</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-middle_end"><a href="#type-middle_end" class="anchor"></a><code><span><span class="keyword">type</span> middle_end</span><span> =
|
||||
<span>backend:<span>(<span class="keyword">module</span> <a href="../Backend_intf/module-type-S/index.html">Backend_intf.S</a>)</span> <span class="arrow">-></span></span>
|
||||
<span>prefixname:string <span class="arrow">-></span></span>
|
||||
<span>ppf_dump:<a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../Lambda/index.html#type-program">Lambda.program</a> <span class="arrow">-></span></span>
|
||||
<a href="../Clambda/index.html#type-with_constants">Clambda.with_constants</a></span></code></div><div class="spec-doc"><p>The type of converters from Lambda to Clambda.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compile_implementation"><a href="#val-compile_implementation" class="anchor"></a><code><span><span class="keyword">val</span> compile_implementation :
|
||||
<span>?toplevel:<span>(<span>string <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span>
|
||||
<span>backend:<span>(<span class="keyword">module</span> <a href="../Backend_intf/module-type-S/index.html">Backend_intf.S</a>)</span> <span class="arrow">-></span></span>
|
||||
<span>prefixname:string <span class="arrow">-></span></span>
|
||||
<span>middle_end:<a href="#type-middle_end">middle_end</a> <span class="arrow">-></span></span>
|
||||
<span>ppf_dump:<a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../Lambda/index.html#type-program">Lambda.program</a> <span class="arrow">-></span></span>
|
||||
unit</span></code></div><div class="spec-doc"><p>Compile an implementation from Lambda using the given middle end.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compile_implementation_linear"><a href="#val-compile_implementation_linear" class="anchor"></a><code><span><span class="keyword">val</span> compile_implementation_linear : <span>string <span class="arrow">-></span></span> <span>progname:string <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compile_phrase"><a href="#val-compile_phrase" class="anchor"></a><code><span><span class="keyword">val</span> compile_phrase : <span>ppf_dump:<a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="../Cmm/index.html#type-phrase">Cmm.phrase</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-error"><a href="#type-error" class="anchor"></a><code><span><span class="keyword">type</span> error</span><span> = </span></code><ol><li id="type-error.Assembler_error" class="def variant constructor anchored"><a href="#type-error.Assembler_error" class="anchor"></a><code><span>| </span><span><span class="constructor">Assembler_error</span> <span class="keyword">of</span> string</span></code></li><li id="type-error.Mismatched_for_pack" class="def variant constructor anchored"><a href="#type-error.Mismatched_for_pack" class="anchor"></a><code><span>| </span><span><span class="constructor">Mismatched_for_pack</span> <span class="keyword">of</span> <span>string option</span></span></code></li><li id="type-error.Asm_generation" class="def variant constructor anchored"><a href="#type-error.Asm_generation" class="anchor"></a><code><span>| </span><span><span class="constructor">Asm_generation</span> <span class="keyword">of</span> string * <a href="../Emitaux/index.html#type-error">Emitaux.error</a></span></code></li></ol></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Error"><a href="#exception-Error" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Error</span> <span class="keyword">of</span> <a href="#type-error">error</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-report_error"><a href="#val-report_error" class="anchor"></a><code><span><span class="keyword">val</span> report_error : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-error">error</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compile_unit"><a href="#val-compile_unit" class="anchor"></a><code><span><span class="keyword">val</span> compile_unit :
|
||||
<span>output_prefix:string <span class="arrow">-></span></span>
|
||||
<span>asm_filename:string <span class="arrow">-></span></span>
|
||||
<span>keep_asm:bool <span class="arrow">-></span></span>
|
||||
<span>obj_filename:string <span class="arrow">-></span></span>
|
||||
<span><span>(<span>unit <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||
unit</span></code></div></div></div></body></html>
|
||||
2
dev/ocaml/Asmlibrarian/index.html
Normal file
2
dev/ocaml/Asmlibrarian/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Asmlibrarian (ocaml.Asmlibrarian)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Asmlibrarian</nav><header class="odoc-preamble"><h1>Module <code><span>Asmlibrarian</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-create_archive"><a href="#val-create_archive" class="anchor"></a><code><span><span class="keyword">val</span> create_archive : <span><span>string list</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-error"><a href="#type-error" class="anchor"></a><code><span><span class="keyword">type</span> error</span><span> = </span></code><ol><li id="type-error.File_not_found" class="def variant constructor anchored"><a href="#type-error.File_not_found" class="anchor"></a><code><span>| </span><span><span class="constructor">File_not_found</span> <span class="keyword">of</span> string</span></code></li><li id="type-error.Archiver_error" class="def variant constructor anchored"><a href="#type-error.Archiver_error" class="anchor"></a><code><span>| </span><span><span class="constructor">Archiver_error</span> <span class="keyword">of</span> string</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Error"><a href="#exception-Error" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Error</span> <span class="keyword">of</span> <a href="#type-error">error</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-report_error"><a href="#val-report_error" class="anchor"></a><code><span><span class="keyword">val</span> report_error : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-error">error</a> <span class="arrow">-></span></span> unit</span></code></div></div></div></body></html>
|
||||
10
dev/ocaml/Asmlink/index.html
Normal file
10
dev/ocaml/Asmlink/index.html
Normal file
File diff suppressed because one or more lines are too long
8
dev/ocaml/Asmpackager/index.html
Normal file
8
dev/ocaml/Asmpackager/index.html
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Asmpackager (ocaml.Asmpackager)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">ocaml</a> » Asmpackager</nav><header class="odoc-preamble"><h1>Module <code><span>Asmpackager</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-package_files"><a href="#val-package_files" class="anchor"></a><code><span><span class="keyword">val</span> package_files :
|
||||
<span>ppf_dump:<a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../Env/index.html#type-t">Env.t</a> <span class="arrow">-></span></span>
|
||||
<span><span>string list</span> <span class="arrow">-></span></span>
|
||||
<span>string <span class="arrow">-></span></span>
|
||||
<span>backend:<span>(<span class="keyword">module</span> <a href="../Backend_intf/module-type-S/index.html">Backend_intf.S</a>)</span> <span class="arrow">-></span></span>
|
||||
unit</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-error"><a href="#type-error" class="anchor"></a><code><span><span class="keyword">type</span> error</span><span> = </span></code><ol><li id="type-error.Illegal_renaming" class="def variant constructor anchored"><a href="#type-error.Illegal_renaming" class="anchor"></a><code><span>| </span><span><span class="constructor">Illegal_renaming</span> <span class="keyword">of</span> string * string * string</span></code></li><li id="type-error.Forward_reference" class="def variant constructor anchored"><a href="#type-error.Forward_reference" class="anchor"></a><code><span>| </span><span><span class="constructor">Forward_reference</span> <span class="keyword">of</span> string * string</span></code></li><li id="type-error.Wrong_for_pack" class="def variant constructor anchored"><a href="#type-error.Wrong_for_pack" class="anchor"></a><code><span>| </span><span><span class="constructor">Wrong_for_pack</span> <span class="keyword">of</span> string * string</span></code></li><li id="type-error.Linking_error" class="def variant constructor anchored"><a href="#type-error.Linking_error" class="anchor"></a><code><span>| </span><span><span class="constructor">Linking_error</span></span></code></li><li id="type-error.Assembler_error" class="def variant constructor anchored"><a href="#type-error.Assembler_error" class="anchor"></a><code><span>| </span><span><span class="constructor">Assembler_error</span> <span class="keyword">of</span> string</span></code></li><li id="type-error.File_not_found" class="def variant constructor anchored"><a href="#type-error.File_not_found" class="anchor"></a><code><span>| </span><span><span class="constructor">File_not_found</span> <span class="keyword">of</span> string</span></code></li></ol></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Error"><a href="#exception-Error" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Error</span> <span class="keyword">of</span> <a href="#type-error">error</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-report_error"><a href="#val-report_error" class="anchor"></a><code><span><span class="keyword">val</span> report_error : <span><a href="../Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-error">error</a> <span class="arrow">-></span></span> unit</span></code></div></div></div></body></html>
|
||||
2
dev/ocaml/Ast_helper/Attr/index.html
Normal file
2
dev/ocaml/Ast_helper/Attr/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Attr (ocaml.Ast_helper.Attr)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Attr</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Attr</span></code></h1></header><nav class="odoc-toc"><ul><li><a href="#attributes">Attributes</a></li></ul></nav><div class="odoc-content"><h2 id="attributes"><a href="#attributes" class="anchor"></a>Attributes</h2><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk : <span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span> <span><a href="../index.html#type-str">str</a> <span class="arrow">-></span></span> <span><a href="../../Parsetree/index.html#type-payload">Parsetree.payload</a> <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-attribute">Parsetree.attribute</a></span></code></div></div></div></body></html>
|
||||
44
dev/ocaml/Ast_helper/Cf/index.html
Normal file
44
dev/ocaml/Ast_helper/Cf/index.html
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Cf (ocaml.Ast_helper.Cf)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Cf</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Cf</span></code></h1><p>Class fields</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span>?docs:<a href="../../Docstrings/index.html#type-docs">Docstrings.docs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_field_desc">Parsetree.class_field_desc</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attr"><a href="#val-attr" class="anchor"></a><code><span><span class="keyword">val</span> attr :
|
||||
<span><a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-attribute">Parsetree.attribute</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-inherit_"><a href="#val-inherit_" class="anchor"></a><code><span><span class="keyword">val</span> inherit_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-override_flag">Asttypes.override_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a> <span class="arrow">-></span></span>
|
||||
<span><span><a href="../index.html#type-str">str</a> option</span> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-val_"><a href="#val-val_" class="anchor"></a><code><span><span class="keyword">val</span> val_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../index.html#type-str">str</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_field_kind">Parsetree.class_field_kind</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-method_"><a href="#val-method_" class="anchor"></a><code><span><span class="keyword">val</span> method_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../index.html#type-str">str</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_field_kind">Parsetree.class_field_kind</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-constraint_"><a href="#val-constraint_" class="anchor"></a><code><span><span class="keyword">val</span> constraint_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-initializer_"><a href="#val-initializer_" class="anchor"></a><code><span><span class="keyword">val</span> initializer_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-expression">Parsetree.expression</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension"><a href="#val-extension" class="anchor"></a><code><span><span class="keyword">val</span> extension :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-extension">Parsetree.extension</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attribute"><a href="#val-attribute" class="anchor"></a><code><span><span class="keyword">val</span> attribute : <span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span> <span><a href="../../Parsetree/index.html#type-attribute">Parsetree.attribute</a> <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-text"><a href="#val-text" class="anchor"></a><code><span><span class="keyword">val</span> text : <span><a href="../../Docstrings/index.html#type-text">Docstrings.text</a> <span class="arrow">-></span></span> <span><a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a> list</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-virtual_"><a href="#val-virtual_" class="anchor"></a><code><span><span class="keyword">val</span> virtual_ : <span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-class_field_kind">Parsetree.class_field_kind</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-concrete"><a href="#val-concrete" class="anchor"></a><code><span><span class="keyword">val</span> concrete :
|
||||
<span><a href="../../Asttypes/index.html#type-override_flag">Asttypes.override_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-expression">Parsetree.expression</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_field_kind">Parsetree.class_field_kind</a></span></code></div></div></div></body></html>
|
||||
12
dev/ocaml/Ast_helper/Ci/index.html
Normal file
12
dev/ocaml/Ast_helper/Ci/index.html
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ci (ocaml.Ast_helper.Ci)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Ci</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Ci</span></code></h1><p>Classes</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span>?docs:<a href="../../Docstrings/index.html#type-docs">Docstrings.docs</a> <span class="arrow">-></span></span>
|
||||
<span>?text:<a href="../../Docstrings/index.html#type-text">Docstrings.text</a> <span class="arrow">-></span></span>
|
||||
<span>?virt:<a href="../../Asttypes/index.html#type-virtual_flag">Asttypes.virtual_flag</a> <span class="arrow">-></span></span>
|
||||
<span>?params:
|
||||
<span><span>(<a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> * <span>(<a href="../../Asttypes/index.html#type-variance">Asttypes.variance</a> * <a href="../../Asttypes/index.html#type-injectivity">Asttypes.injectivity</a>)</span>)</span> list</span> <span class="arrow">-></span></span>
|
||||
<span><a href="../index.html#type-str">str</a> <span class="arrow">-></span></span>
|
||||
<span><span class="type-var">'a</span> <span class="arrow">-></span></span>
|
||||
<span><span class="type-var">'a</span> <a href="../../Parsetree/index.html#type-class_infos">Parsetree.class_infos</a></span></span></code></div></div></div></body></html>
|
||||
47
dev/ocaml/Ast_helper/Cl/index.html
Normal file
47
dev/ocaml/Ast_helper/Cl/index.html
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Cl (ocaml.Ast_helper.Cl)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Cl</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Cl</span></code></h1><p>Class expressions</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_expr_desc">Parsetree.class_expr_desc</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attr"><a href="#val-attr" class="anchor"></a><code><span><span class="keyword">val</span> attr : <span><a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a> <span class="arrow">-></span></span> <span><a href="../../Parsetree/index.html#type-attribute">Parsetree.attribute</a> <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-constr"><a href="#val-constr" class="anchor"></a><code><span><span class="keyword">val</span> constr :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../index.html#type-lid">lid</a> <span class="arrow">-></span></span>
|
||||
<span><span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> list</span> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-structure"><a href="#val-structure" class="anchor"></a><code><span><span class="keyword">val</span> structure :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_structure">Parsetree.class_structure</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fun_"><a href="#val-fun_" class="anchor"></a><code><span><span class="keyword">val</span> fun_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> <span class="arrow">-></span></span>
|
||||
<span><span><a href="../../Parsetree/index.html#type-expression">Parsetree.expression</a> option</span> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-pattern">Parsetree.pattern</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-apply"><a href="#val-apply" class="anchor"></a><code><span><span class="keyword">val</span> apply :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a> <span class="arrow">-></span></span>
|
||||
<span><span><span>(<a href="../../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> * <a href="../../Parsetree/index.html#type-expression">Parsetree.expression</a>)</span> list</span> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-let_"><a href="#val-let_" class="anchor"></a><code><span><span class="keyword">val</span> let_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-rec_flag">Asttypes.rec_flag</a> <span class="arrow">-></span></span>
|
||||
<span><span><a href="../../Parsetree/index.html#type-value_binding">Parsetree.value_binding</a> list</span> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-constraint_"><a href="#val-constraint_" class="anchor"></a><code><span><span class="keyword">val</span> constraint_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension"><a href="#val-extension" class="anchor"></a><code><span><span class="keyword">val</span> extension :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-extension">Parsetree.extension</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-open_"><a href="#val-open_" class="anchor"></a><code><span><span class="keyword">val</span> open_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-open_description">Parsetree.open_description</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_expr">Parsetree.class_expr</a></span></code></div></div></div></body></html>
|
||||
6
dev/ocaml/Ast_helper/Const/index.html
Normal file
6
dev/ocaml/Ast_helper/Const/index.html
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Const (ocaml.Ast_helper.Const)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Const</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Const</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-char"><a href="#val-char" class="anchor"></a><code><span><span class="keyword">val</span> char : <span>char <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-string"><a href="#val-string" class="anchor"></a><code><span><span class="keyword">val</span> string :
|
||||
<span>?quotation_delimiter:string <span class="arrow">-></span></span>
|
||||
<span>?loc:<a href="../../Location/index.html#type-t">Location.t</a> <span class="arrow">-></span></span>
|
||||
<span>string <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-integer"><a href="#val-integer" class="anchor"></a><code><span><span class="keyword">val</span> integer : <span>?suffix:char <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int"><a href="#val-int" class="anchor"></a><code><span><span class="keyword">val</span> int : <span>?suffix:char <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int32"><a href="#val-int32" class="anchor"></a><code><span><span class="keyword">val</span> int32 : <span>?suffix:char <span class="arrow">-></span></span> <span>int32 <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-int64"><a href="#val-int64" class="anchor"></a><code><span><span class="keyword">val</span> int64 : <span>?suffix:char <span class="arrow">-></span></span> <span>int64 <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nativeint"><a href="#val-nativeint" class="anchor"></a><code><span><span class="keyword">val</span> nativeint : <span>?suffix:char <span class="arrow">-></span></span> <span>nativeint <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-float"><a href="#val-float" class="anchor"></a><code><span><span class="keyword">val</span> float : <span>?suffix:char <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-constant">Parsetree.constant</a></span></code></div></div></div></body></html>
|
||||
5
dev/ocaml/Ast_helper/Csig/index.html
Normal file
5
dev/ocaml/Ast_helper/Csig/index.html
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Csig (ocaml.Ast_helper.Csig)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Csig</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Csig</span></code></h1><p>Class signatures</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk :
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<span><span><a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a> list</span> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_signature">Parsetree.class_signature</a></span></code></div></div></div></body></html>
|
||||
5
dev/ocaml/Ast_helper/Cstr/index.html
Normal file
5
dev/ocaml/Ast_helper/Cstr/index.html
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Cstr (ocaml.Ast_helper.Cstr)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Cstr</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Cstr</span></code></h1><p>Class structures</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk :
|
||||
<span><a href="../../Parsetree/index.html#type-pattern">Parsetree.pattern</a> <span class="arrow">-></span></span>
|
||||
<span><span><a href="../../Parsetree/index.html#type-class_field">Parsetree.class_field</a> list</span> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_structure">Parsetree.class_structure</a></span></code></div></div></div></body></html>
|
||||
37
dev/ocaml/Ast_helper/Ctf/index.html
Normal file
37
dev/ocaml/Ast_helper/Ctf/index.html
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Ctf (ocaml.Ast_helper.Ctf)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Ctf</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Ctf</span></code></h1><p>Class type fields</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span>?docs:<a href="../../Docstrings/index.html#type-docs">Docstrings.docs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_type_field_desc">Parsetree.class_type_field_desc</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attr"><a href="#val-attr" class="anchor"></a><code><span><span class="keyword">val</span> attr :
|
||||
<span><a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-attribute">Parsetree.attribute</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-inherit_"><a href="#val-inherit_" class="anchor"></a><code><span><span class="keyword">val</span> inherit_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-val_"><a href="#val-val_" class="anchor"></a><code><span><span class="keyword">val</span> val_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../index.html#type-str">str</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-mutable_flag">Asttypes.mutable_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-virtual_flag">Asttypes.virtual_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-method_"><a href="#val-method_" class="anchor"></a><code><span><span class="keyword">val</span> method_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../index.html#type-str">str</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-private_flag">Asttypes.private_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-virtual_flag">Asttypes.virtual_flag</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-constraint_"><a href="#val-constraint_" class="anchor"></a><code><span><span class="keyword">val</span> constraint_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension"><a href="#val-extension" class="anchor"></a><code><span><span class="keyword">val</span> extension :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-extension">Parsetree.extension</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attribute"><a href="#val-attribute" class="anchor"></a><code><span><span class="keyword">val</span> attribute : <span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span> <span><a href="../../Parsetree/index.html#type-attribute">Parsetree.attribute</a> <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-text"><a href="#val-text" class="anchor"></a><code><span><span class="keyword">val</span> text : <span><a href="../../Docstrings/index.html#type-text">Docstrings.text</a> <span class="arrow">-></span></span> <span><a href="../../Parsetree/index.html#type-class_type_field">Parsetree.class_type_field</a> list</span></span></code></div></div></div></body></html>
|
||||
30
dev/ocaml/Ast_helper/Cty/index.html
Normal file
30
dev/ocaml/Ast_helper/Cty/index.html
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Cty (ocaml.Ast_helper.Cty)</title><link rel="stylesheet" href="../../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">ocaml</a> » <a href="../index.html">Ast_helper</a> » Cty</nav><header class="odoc-preamble"><h1>Module <code><span>Ast_helper.Cty</span></code></h1><p>Class type expressions</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-mk"><a href="#val-mk" class="anchor"></a><code><span><span class="keyword">val</span> mk :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_type_desc">Parsetree.class_type_desc</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-attr"><a href="#val-attr" class="anchor"></a><code><span><span class="keyword">val</span> attr : <span><a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a> <span class="arrow">-></span></span> <span><a href="../../Parsetree/index.html#type-attribute">Parsetree.attribute</a> <span class="arrow">-></span></span> <a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-constr"><a href="#val-constr" class="anchor"></a><code><span><span class="keyword">val</span> constr :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../index.html#type-lid">lid</a> <span class="arrow">-></span></span>
|
||||
<span><span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> list</span> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-signature"><a href="#val-signature" class="anchor"></a><code><span><span class="keyword">val</span> signature :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_signature">Parsetree.class_signature</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-arrow"><a href="#val-arrow" class="anchor"></a><code><span><span class="keyword">val</span> arrow :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Asttypes/index.html#type-arg_label">Asttypes.arg_label</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-core_type">Parsetree.core_type</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-extension"><a href="#val-extension" class="anchor"></a><code><span><span class="keyword">val</span> extension :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-extension">Parsetree.extension</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-open_"><a href="#val-open_" class="anchor"></a><code><span><span class="keyword">val</span> open_ :
|
||||
<span>?loc:<a href="../index.html#type-loc">loc</a> <span class="arrow">-></span></span>
|
||||
<span>?attrs:<a href="../index.html#type-attrs">attrs</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-open_description">Parsetree.open_description</a> <span class="arrow">-></span></span>
|
||||
<span><a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a> <span class="arrow">-></span></span>
|
||||
<a href="../../Parsetree/index.html#type-class_type">Parsetree.class_type</a></span></code></div></div></div></body></html>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue