diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/highlight.pack.js b/highlight.pack.js new file mode 100644 index 0000000..2e55d49 --- /dev/null +++ b/highlight.pack.js @@ -0,0 +1,2 @@ +/*! highlight.js v9.15.8 | BSD3 License | git.io/hljslicense */ +!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(a){var f=[],u=Object.keys,N={},c={},n=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&").replace(//g,">")}function E(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function l(e){return n.test(e)}function g(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function R(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),E(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(o){function s(e){return e&&e.source||e}function c(e,n){return new RegExp(s(e),"m"+(o.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){function r(t,e){o.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})}var a={};"string"==typeof t.k?r("keyword",t.k):u(t.k).forEach(function(e){r(e,t.k[e])}),t.k=a}t.lR=c(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=c(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=c(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=c(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return function(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return g(n,{v:null},e)})),n.cached_variants||n.eW&&[g(n)]||[n]}("self"===e?t:e)})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?c(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i')+n+(t?"":b):n}function o(){E+=null!=l.sL?function(){var e="string"==typeof l.sL;if(e&&!N[l.sL])return _(g);var n=e?C(l.sL,g,!0,f[l.sL]):O(g,l.sL.length?l.sL:void 0);return 0")+'"');return g+=n,n.length||1}var s=B(e);if(!s)throw new Error('Unknown language: "'+e+'"');m(s);var a,l=t||s,f={},E="";for(a=l;a!==s;a=a.parent)a.cN&&(E=c(a.cN,"",!0)+E);var g="",R=0;try{for(var d,p,M=0;l.t.lastIndex=M,d=l.t.exec(n);)p=r(n.substring(M,d.index),d[0]),M=d.index+p;for(r(n.substr(M)),a=l;a.parent;a=a.parent)a.cN&&(E+=b);return{r:R,value:E,language:e,top:l}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(B).filter(M).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function d(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?"
":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function o(e){var n,t,r,a,i,o=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=s.exec(i))return B(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=o?C(o,i,!0):O(i),(t=R(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){a+=""}function s(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var l=o();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=o())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(c)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,R(a),i)),r.value=d(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?c[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,o)}}function B(e){return e=(e||"").toLowerCase(),N[e]||N[c[e]]}function M(e){var n=B(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=d,a.highlightBlock=o,a.configure=function(e){h=g(h,e)},a.initHighlighting=p,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){c[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=B,a.autoDetection=M,a.inherit=g,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\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/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{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"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*",r:0},e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\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_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("reasonml",function(r){var e="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",c="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(r){return r.split("").map(function(r){return"\\"+r}).join("")}).join("|")+"|==|===)",n="\\s+"+c+"\\s+",t={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject 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"},i="\\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_]+)?)?)",s={cN:"number",r:0,v:[{b:i},{b:"\\(\\-"+i+"\\)"}]},b={cN:"operator",r:0,b:c},o=[{cN:"identifier",r:0,b:e},b,s],l=[r.QSM,b,{cN:"module",b:"\\b"+a,rB:!0,e:".",c:[{cN:"identifier",b:a,r:0}]}],u=[{cN:"module",b:"\\b"+a,rB:!0,e:".",r:0,c:[{cN:"identifier",b:a,r:0}]}],_={cN:"function",r:0,k:t,v:[{b:"\\s(\\(\\.?.*?\\)|"+e+")\\s*=>",e:"\\s*=>",rB:!0,r:0,c:[{cN:"params",v:[{b:e},{b:"~?[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*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{b:/\(\s*\)/}]}]},{b:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",e:"\\s=>",rB:!0,r:0,c:[{cN:"params",r:0,v:[{b:e,e:"(,|\\n|\\))",r:0,c:[b,{cN:"typing",b:":",e:"(,|\\n)",rB:!0,r:0,c:u}]}]}]},{b:"\\(\\.\\s"+e+"\\)\\s*=>"}]};l.push(_);var N={cN:"constructor",b:a+"\\(",e:"\\)",i:"\\n",k:t,c:[r.QSM,b,{cN:"params",b:"\\b"+e}]},d={cN:"pattern-match",b:"\\|",rB:!0,k:t,e:"=>",r:0,c:[N,b,{r:0,cN:"constructor",b:a}]},z={cN:"module-access",k:t,rB:!0,v:[{b:"\\b("+a+"\\.)+"+e},{b:"\\b("+a+"\\.)+\\(",e:"\\)",rB:!0,c:[_,{b:"\\(",e:"\\)",skip:!0}].concat(l)},{b:"\\b("+a+"\\.)+{",e:"}"}],c:l};return u.push(z),{aliases:["re"],k:t,i:"(:\\-|:=|\\${|\\+=)",c:[r.C("/\\*","\\*/",{i:"^(\\#,\\/\\/)"}),{cN:"character",b:"'(\\\\[^']+|[^'])'",i:"\\n",r:0},r.QSM,{cN:"literal",b:"\\(\\)",r:0},{cN:"literal",b:"\\[\\|",e:"\\|\\]",r:0,c:o},{cN:"literal",b:"\\[",e:"\\]",r:0,c:o},N,{cN:"operator",b:n,i:"\\-\\->",r:0},s,r.CLCM,d,_,{cN:"module-def",b:"\\bmodule\\s+"+e+"\\s+"+a+"\\s+=\\s+{",e:"}",rB:!0,k:t,r:0,c:[{cN:"module",r:0,b:a},{b:"{",e:"}",skip:!0}].concat(l)},z]}}); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..a4a6b17 --- /dev/null +++ b/index.html @@ -0,0 +1,23 @@ + + + + index + + + + + +
+
+

OCaml package documentation

+
    +
  1. ocsipersist 1.0.1
  2. +
  3. ocsipersist-dbm 1.0.1
  4. +
  5. ocsipersist-lib 1.0.3
  6. +
  7. ocsipersist-pgsql 1.0.5
  8. +
  9. ocsipersist-sqlite 1.0
  10. +
+
+
+ + \ No newline at end of file diff --git a/ocsipersist-dbm/Ocsidbmtypes/.dune-keep b/ocsipersist-dbm/Ocsidbmtypes/.dune-keep new file mode 100644 index 0000000..e69de29 diff --git a/ocsipersist-dbm/Ocsidbmtypes/index.html b/ocsipersist-dbm/Ocsidbmtypes/index.html new file mode 100644 index 0000000..1688604 --- /dev/null +++ b/ocsipersist-dbm/Ocsidbmtypes/index.html @@ -0,0 +1,2 @@ + +Ocsidbmtypes (ocsipersist-dbm.Ocsidbmtypes)

Module Ocsidbmtypes

exception Ocsidbm_error
type query =
| Get of string * string
| Remove of string * string
| Replace of string * string * string
| Replace_if_exists of string * string * string
| Nextkey of string
| Firstkey of string
| Length of string
type answer =
| Ok
| Dbm_not_found
| Value of string
| End
| Key of string
| Error of exn
\ No newline at end of file diff --git a/ocsipersist-dbm/index.html b/ocsipersist-dbm/index.html new file mode 100644 index 0000000..c81af98 --- /dev/null +++ b/ocsipersist-dbm/index.html @@ -0,0 +1,6 @@ + +index (ocsipersist-dbm.index)

ocsipersist-dbm

For the API documentation see OPAM package ocsipersist.

Here we document the configuration options of the ocsigenserver extension. All sub-tags of the extension tag are optional.

<extension findlib-package="ocsipersist.dbm">
+  <delayloading val="false"/>
+  <store dir="store"/>
+  <ocsidbm name="ocsidbm"/>
+</extension>
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/.dune-keep b/ocsipersist-lib/Ocsipersist_lib/.dune-keep new file mode 100644 index 0000000..e69de29 diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Float/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Float/index.html new file mode 100644 index 0000000..a96ad05 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Float/index.html @@ -0,0 +1,2 @@ + +Float (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Column.Float)

Module Column.Float

type t = float
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Marshal/argument-1-C/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Marshal/argument-1-C/index.html new file mode 100644 index 0000000..4eaf5df --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Marshal/argument-1-C/index.html @@ -0,0 +1,2 @@ + +C (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Column.Marshal.1-C)

Parameter Marshal.1-C

type t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Marshal/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Marshal/index.html new file mode 100644 index 0000000..1b19c27 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/Marshal/index.html @@ -0,0 +1,2 @@ + +Marshal (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Column.Marshal)

Module Column.Marshal

Parameters

module C : sig ... end

Signature

type t = C.t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/String/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/String/index.html new file mode 100644 index 0000000..14445cb --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/String/index.html @@ -0,0 +1,2 @@ + +String (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Column.String)

Module Column.String

type t = string
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/index.html new file mode 100644 index 0000000..7791598 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Column/index.html @@ -0,0 +1,2 @@ + +Column (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Column)

Module 1-Functorial.Column

module String : COLUMN with type t = string
module Float : COLUMN with type t = float
module Marshal (C : sig ... end) : COLUMN with type t = C.t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/Variable/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/Variable/index.html new file mode 100644 index 0000000..bcba33b --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/Variable/index.html @@ -0,0 +1,2 @@ + +Variable (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Table.Variable)

Module Table.Variable

type t
val make : name:key -> default:value -> t
val make_lazy : name:key -> default:(unit -> value) -> t
val make_lazy_lwt : name:key -> default:(unit -> value Lwt.t) -> t
val get : t -> value Lwt.t
val set : t -> value -> unit Lwt.t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-1-T/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-1-T/index.html new file mode 100644 index 0000000..317aabb --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-1-T/index.html @@ -0,0 +1,2 @@ + +T (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Table.1-T)

Parameter Table.1-T

val name : string
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-2-Key/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-2-Key/index.html new file mode 100644 index 0000000..76742d0 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-2-Key/index.html @@ -0,0 +1,2 @@ + +Key (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Table.2-Key)

Parameter Table.2-Key

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-3-Value/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-3-Value/index.html new file mode 100644 index 0000000..5592c95 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/argument-3-Value/index.html @@ -0,0 +1,2 @@ + +Value (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Table.3-Value)

Parameter Table.3-Value

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/index.html new file mode 100644 index 0000000..5065231 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/Table/index.html @@ -0,0 +1,3 @@ + +Table (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.Table)

Module 1-Functorial.Table

Parameters

module T : sig ... end
module Key : COLUMN
module Value : COLUMN

Signature

type key = Key.t
type value = Value.t
val name : string
val find : key -> value Lwt.t
val add : key -> value -> unit Lwt.t
val replace_if_exists : key -> value -> unit Lwt.t
val remove : key -> unit Lwt.t
val modify_opt : key -> (value option -> value option) -> unit Lwt.t
val length : unit -> int Lwt.t
val iter : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit Lwt.t) -> unit Lwt.t
val fold : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> 'a -> 'a Lwt.t) -> 'a -> 'a Lwt.t
val iter_block : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit) -> unit Lwt.t
val iter_batch : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> +((key * value) list -> unit Lwt.t) -> unit Lwt.t
module Variable : sig ... end
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/index.html new file mode 100644 index 0000000..fcc5606 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/index.html @@ -0,0 +1,2 @@ + +Functorial (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial)

Parameter Polymorphic.1-Functorial

type internal
module type COLUMN = sig ... end
module Table (T : sig ... end) (Key : COLUMN) (Value : COLUMN) : Sigs.TABLE with type key = Key.t and type value = Value.t
module Column : sig ... end
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/module-type-COLUMN/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/module-type-COLUMN/index.html new file mode 100644 index 0000000..88ff8a8 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/argument-1-Functorial/module-type-COLUMN/index.html @@ -0,0 +1,2 @@ + +COLUMN (ocsipersist-lib.Ocsipersist_lib.Polymorphic.1-Functorial.COLUMN)

Module type 1-Functorial.COLUMN

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Polymorphic/index.html b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/index.html new file mode 100644 index 0000000..c41798b --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Polymorphic/index.html @@ -0,0 +1,2 @@ + +Polymorphic (ocsipersist-lib.Ocsipersist_lib.Polymorphic)

Module Ocsipersist_lib.Polymorphic

deriving polymorphic interface from the functorial one

Parameters

Signature

type 'value table

Type of persistent table

val table_name : 'value table -> string Lwt.t

returns the name of the table

val open_table : string -> 'value table Lwt.t

Open a table (and create it if it does not exist)

val find : 'value table -> string -> 'value Lwt.t

find table key gives the value associated to key. Fails with Not_found if not found.

val add : 'value table -> string -> 'value -> unit Lwt.t

add table key value associates value to key. If the database already contains data associated with key, that data is discarded and silently replaced by the new data.

val replace_if_exists : 'value table -> string -> 'value -> unit Lwt.t

replace_if_exists table key value associates value to key only if key is already bound. If the database does not contain any data associated with key, fails with Not_found.

val remove : 'value table -> string -> unit Lwt.t

remove table key removes the entry in the table if it exists

val length : 'value table -> int Lwt.t

Size of a table.

val iter_step : (string -> 'a -> unit Lwt.t) -> 'a table -> unit Lwt.t

Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).

val fold_step : (string -> 'a -> 'b -> 'b Lwt.t) -> 'a table -> 'b -> 'b Lwt.t

Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).

val iter_block : (string -> 'a -> unit) -> 'a table -> unit Lwt.t

MAJOR WARNING: Unlike iter_step, this iterator won't miss any entry and will run in one shot. It is therefore more efficient, BUT: it will lock the WHOLE database during its execution, thus preventing ANYBODY from accessing it (including the function f which is iterated). As a consequence: you MUST NOT use any function from ocsipersist in f, otherwise you would lock yourself and everybody else! Be VERY cautious.

\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/index.html new file mode 100644 index 0000000..ff360b6 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/index.html @@ -0,0 +1,2 @@ + +Sigs (ocsipersist-lib.Ocsipersist_lib.Sigs)

Module Ocsipersist_lib.Sigs

module type TABLE = sig ... end
module type FUNCTORIAL = sig ... end
module type POLYMORPHIC = sig ... end
module type STORE = sig ... end
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Float/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Float/index.html new file mode 100644 index 0000000..dc9016d --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Float/index.html @@ -0,0 +1,2 @@ + +Float (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Column.Float)

Module Column.Float

type t = float
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Marshal/argument-1-C/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Marshal/argument-1-C/index.html new file mode 100644 index 0000000..d5c5026 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Marshal/argument-1-C/index.html @@ -0,0 +1,2 @@ + +C (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Column.Marshal.1-C)

Parameter Marshal.1-C

type t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Marshal/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Marshal/index.html new file mode 100644 index 0000000..0e85853 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/Marshal/index.html @@ -0,0 +1,2 @@ + +Marshal (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Column.Marshal)

Module Column.Marshal

Parameters

module C : sig ... end

Signature

type t = C.t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/String/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/String/index.html new file mode 100644 index 0000000..ba4e987 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/String/index.html @@ -0,0 +1,2 @@ + +String (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Column.String)

Module Column.String

type t = string
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/index.html new file mode 100644 index 0000000..d8fa55c --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Column/index.html @@ -0,0 +1,2 @@ + +Column (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Column)

Module FUNCTORIAL.Column

module String : COLUMN with type t = string
module Float : COLUMN with type t = float
module Marshal (C : sig ... end) : COLUMN with type t = C.t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/Variable/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/Variable/index.html new file mode 100644 index 0000000..a534e90 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/Variable/index.html @@ -0,0 +1,2 @@ + +Variable (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Table.Variable)

Module Table.Variable

type t
val make : name:key -> default:value -> t
val make_lazy : name:key -> default:(unit -> value) -> t
val make_lazy_lwt : name:key -> default:(unit -> value Lwt.t) -> t
val get : t -> value Lwt.t
val set : t -> value -> unit Lwt.t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-1-T/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-1-T/index.html new file mode 100644 index 0000000..96820ee --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-1-T/index.html @@ -0,0 +1,2 @@ + +T (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Table.1-T)

Parameter Table.1-T

val name : string
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-2-Key/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-2-Key/index.html new file mode 100644 index 0000000..1312172 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-2-Key/index.html @@ -0,0 +1,2 @@ + +Key (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Table.2-Key)

Parameter Table.2-Key

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-3-Value/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-3-Value/index.html new file mode 100644 index 0000000..835fc02 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/argument-3-Value/index.html @@ -0,0 +1,2 @@ + +Value (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Table.3-Value)

Parameter Table.3-Value

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/index.html new file mode 100644 index 0000000..1fc14d0 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/Table/index.html @@ -0,0 +1,3 @@ + +Table (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.Table)

Module FUNCTORIAL.Table

Parameters

module T : sig ... end
module Key : COLUMN
module Value : COLUMN

Signature

type key = Key.t
type value = Value.t
val name : string
val find : key -> value Lwt.t
val add : key -> value -> unit Lwt.t
val replace_if_exists : key -> value -> unit Lwt.t
val remove : key -> unit Lwt.t
val modify_opt : key -> (value option -> value option) -> unit Lwt.t
val length : unit -> int Lwt.t
val iter : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit Lwt.t) -> unit Lwt.t
val fold : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> 'a -> 'a Lwt.t) -> 'a -> 'a Lwt.t
val iter_block : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit) -> unit Lwt.t
val iter_batch : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> +((key * value) list -> unit Lwt.t) -> unit Lwt.t
module Variable : sig ... end
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/index.html new file mode 100644 index 0000000..6610d1b --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/index.html @@ -0,0 +1,2 @@ + +FUNCTORIAL (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL)

Module type Sigs.FUNCTORIAL

type internal
module type COLUMN = sig ... end
module Table (T : sig ... end) (Key : COLUMN) (Value : COLUMN) : TABLE with type key = Key.t and type value = Value.t
module Column : sig ... end
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/module-type-COLUMN/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/module-type-COLUMN/index.html new file mode 100644 index 0000000..07e56db --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-FUNCTORIAL/module-type-COLUMN/index.html @@ -0,0 +1,2 @@ + +COLUMN (ocsipersist-lib.Ocsipersist_lib.Sigs.FUNCTORIAL.COLUMN)

Module type FUNCTORIAL.COLUMN

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-POLYMORPHIC/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-POLYMORPHIC/index.html new file mode 100644 index 0000000..02e4bcc --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-POLYMORPHIC/index.html @@ -0,0 +1,2 @@ + +POLYMORPHIC (ocsipersist-lib.Ocsipersist_lib.Sigs.POLYMORPHIC)

Module type Sigs.POLYMORPHIC

type 'value table

Type of persistent table

val table_name : 'value table -> string Lwt.t

returns the name of the table

val open_table : string -> 'value table Lwt.t

Open a table (and create it if it does not exist)

val find : 'value table -> string -> 'value Lwt.t

find table key gives the value associated to key. Fails with Not_found if not found.

val add : 'value table -> string -> 'value -> unit Lwt.t

add table key value associates value to key. If the database already contains data associated with key, that data is discarded and silently replaced by the new data.

val replace_if_exists : 'value table -> string -> 'value -> unit Lwt.t

replace_if_exists table key value associates value to key only if key is already bound. If the database does not contain any data associated with key, fails with Not_found.

val remove : 'value table -> string -> unit Lwt.t

remove table key removes the entry in the table if it exists

val length : 'value table -> int Lwt.t

Size of a table.

val iter_step : (string -> 'a -> unit Lwt.t) -> 'a table -> unit Lwt.t

Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).

val fold_step : (string -> 'a -> 'b -> 'b Lwt.t) -> 'a table -> 'b -> 'b Lwt.t

Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).

val iter_block : (string -> 'a -> unit) -> 'a table -> unit Lwt.t

MAJOR WARNING: Unlike iter_step, this iterator won't miss any entry and will run in one shot. It is therefore more efficient, BUT: it will lock the WHOLE database during its execution, thus preventing ANYBODY from accessing it (including the function f which is iterated). As a consequence: you MUST NOT use any function from ocsipersist in f, otherwise you would lock yourself and everybody else! Be VERY cautious.

\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-STORE/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-STORE/index.html new file mode 100644 index 0000000..309b310 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-STORE/index.html @@ -0,0 +1,3 @@ + +STORE (ocsipersist-lib.Ocsipersist_lib.Sigs.STORE)

Module type Sigs.STORE

type 'a t

Type of persistent data

type store

Data are divided into stores. Create one store for your project, where you will save all your data.

val open_store : string -> store Lwt.t

Open a store (and create it if it does not exist)

val make_persistent : store:store -> name:string -> default:'a -> 'a t Lwt.t

make_persistent store name default find a persistent value named name in store store from database, or create it with the default value default if it does not exist.

val make_persistent_lazy : store:store -> name:string -> default:(unit -> 'a) -> 'a t Lwt.t

Same as make_persistent but the default value is evaluated only if needed

val make_persistent_lazy_lwt : store:store -> name:string -> default:(unit -> 'a Lwt.t) -> +'a t Lwt.t

Lwt version of make_persistent_lazy.

val get : 'a t -> 'a Lwt.t

get pv gives the value of pv

val set : 'a t -> 'a -> unit Lwt.t

set pv value sets a persistent value pv to value

\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-TABLE/Variable/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-TABLE/Variable/index.html new file mode 100644 index 0000000..2b0af86 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-TABLE/Variable/index.html @@ -0,0 +1,2 @@ + +Variable (ocsipersist-lib.Ocsipersist_lib.Sigs.TABLE.Variable)

Module TABLE.Variable

type t
val make : name:key -> default:value -> t
val make_lazy : name:key -> default:(unit -> value) -> t
val make_lazy_lwt : name:key -> default:(unit -> value Lwt.t) -> t
val get : t -> value Lwt.t
val set : t -> value -> unit Lwt.t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-TABLE/index.html b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-TABLE/index.html new file mode 100644 index 0000000..edd6230 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Sigs/module-type-TABLE/index.html @@ -0,0 +1,3 @@ + +TABLE (ocsipersist-lib.Ocsipersist_lib.Sigs.TABLE)

Module type Sigs.TABLE

type key
type value
val name : string
val find : key -> value Lwt.t
val add : key -> value -> unit Lwt.t
val replace_if_exists : key -> value -> unit Lwt.t
val remove : key -> unit Lwt.t
val modify_opt : key -> (value option -> value option) -> unit Lwt.t
val length : unit -> int Lwt.t
val iter : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit Lwt.t) -> unit Lwt.t
val fold : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> 'a -> 'a Lwt.t) -> 'a -> 'a Lwt.t
val iter_block : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit) -> unit Lwt.t
val iter_batch : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> +((key * value) list -> unit Lwt.t) -> unit Lwt.t
module Variable : sig ... end
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Variable/argument-1-T/index.html b/ocsipersist-lib/Ocsipersist_lib/Variable/argument-1-T/index.html new file mode 100644 index 0000000..991644c --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Variable/argument-1-T/index.html @@ -0,0 +1,2 @@ + +T (ocsipersist-lib.Ocsipersist_lib.Variable.1-T)

Parameter Variable.1-T

type k
type v
val find : k -> v Lwt.t
val add : k -> v -> unit Lwt.t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/Variable/index.html b/ocsipersist-lib/Ocsipersist_lib/Variable/index.html new file mode 100644 index 0000000..bd956b0 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/Variable/index.html @@ -0,0 +1,2 @@ + +Variable (ocsipersist-lib.Ocsipersist_lib.Variable)

Module Ocsipersist_lib.Variable

Parameters

module T : sig ... end

Signature

type t = {
name : T.k;
default : unit -> T.v Lwt.t;
}
val make_lazy_lwt : name:T.k -> default:(unit -> T.v Lwt.t) -> t
val make_lazy : name:T.k -> default:(unit -> T.v) -> t
val make : name:T.k -> default:T.v -> t
val get : t -> T.v Lwt.t
val set : t -> T.v -> unit Lwt.t
\ No newline at end of file diff --git a/ocsipersist-lib/Ocsipersist_lib/index.html b/ocsipersist-lib/Ocsipersist_lib/index.html new file mode 100644 index 0000000..6984c13 --- /dev/null +++ b/ocsipersist-lib/Ocsipersist_lib/index.html @@ -0,0 +1,2 @@ + +Ocsipersist_lib (ocsipersist-lib.Ocsipersist_lib)

Module Ocsipersist_lib

This modules provides tools for creating more implementations of the Ocsipersist virtual module.

module Sigs : sig ... end

deriving polymorphic interface from the functorial one

module Variable (T : sig ... end) : sig ... end
\ No newline at end of file diff --git a/ocsipersist-lib/index.html b/ocsipersist-lib/index.html new file mode 100644 index 0000000..dbbbb79 --- /dev/null +++ b/ocsipersist-lib/index.html @@ -0,0 +1,2 @@ + +index (ocsipersist-lib.index)

ocsipersist-lib index

Library ocsipersist-lib

The entry point of this library is the module: Ocsipersist_lib.

\ No newline at end of file diff --git a/ocsipersist-pgsql/index.html b/ocsipersist-pgsql/index.html new file mode 100644 index 0000000..0af6b35 --- /dev/null +++ b/ocsipersist-pgsql/index.html @@ -0,0 +1,17 @@ + +index (ocsipersist-pgsql.index)

ocsipersist-pgsql

For the API documentation see OPAM package ocsipersist.

Here we document the configuration options of the ocsigenserver extension. All attributes of the database tag are optional.

One can either define a host to connect to:

<extension findlib-package="ocsipersist.pgsql">
+  <database
+     host="localhost"
+     port="3000"
+     user="ocsipersist"
+     password="<secret>"
+     size_conn_pool = "16"
+  />
+</extension>

Or a UNIX domain socket:

<extension findlib-package="ocsipersist.pgsql">
+  <database
+    unix_domain_socket_dir = "pgsql_socket"
+    user="ocsipersist"
+    password="<secret>"
+    size_conn_pool = "16"
+  />
+</extension>
\ No newline at end of file diff --git a/ocsipersist-sqlite/index.html b/ocsipersist-sqlite/index.html new file mode 100644 index 0000000..a6a25a3 --- /dev/null +++ b/ocsipersist-sqlite/index.html @@ -0,0 +1,4 @@ + +index (ocsipersist-sqlite.index)

ocsipersist-sqlite

For the API documentation see OPAM package ocsipersist.

Here we document the configuration options of the ocsigenserver extension. All sub-tags of the extension tag are optional.

<extension findlib-package="ocsipersist.sqlite">
+  <database file="data/ocsidb"/>
+</extension>
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/.dune-keep b/ocsipersist/Ocsipersist/.dune-keep new file mode 100644 index 0000000..e69de29 diff --git a/ocsipersist/Ocsipersist/Functorial/Column/Float/index.html b/ocsipersist/Ocsipersist/Functorial/Column/Float/index.html new file mode 100644 index 0000000..c87dbe4 --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Column/Float/index.html @@ -0,0 +1,2 @@ + +Float (ocsipersist.Ocsipersist.Functorial.Column.Float)

Module Column.Float

type t = float
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Column/Marshal/argument-1-C/index.html b/ocsipersist/Ocsipersist/Functorial/Column/Marshal/argument-1-C/index.html new file mode 100644 index 0000000..de6017a --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Column/Marshal/argument-1-C/index.html @@ -0,0 +1,2 @@ + +C (ocsipersist.Ocsipersist.Functorial.Column.Marshal.1-C)

Parameter Marshal.1-C

type t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Column/Marshal/index.html b/ocsipersist/Ocsipersist/Functorial/Column/Marshal/index.html new file mode 100644 index 0000000..e28514d --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Column/Marshal/index.html @@ -0,0 +1,2 @@ + +Marshal (ocsipersist.Ocsipersist.Functorial.Column.Marshal)

Module Column.Marshal

Parameters

module C : sig ... end

Signature

type t = C.t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Column/String/index.html b/ocsipersist/Ocsipersist/Functorial/Column/String/index.html new file mode 100644 index 0000000..320f46b --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Column/String/index.html @@ -0,0 +1,2 @@ + +String (ocsipersist.Ocsipersist.Functorial.Column.String)

Module Column.String

type t = string
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Column/index.html b/ocsipersist/Ocsipersist/Functorial/Column/index.html new file mode 100644 index 0000000..d16747c --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Column/index.html @@ -0,0 +1,2 @@ + +Column (ocsipersist.Ocsipersist.Functorial.Column)

Module Functorial.Column

module String : COLUMN with type t = string
module Float : COLUMN with type t = float
module Marshal (C : sig ... end) : COLUMN with type t = C.t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Table/Variable/index.html b/ocsipersist/Ocsipersist/Functorial/Table/Variable/index.html new file mode 100644 index 0000000..c068de1 --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Table/Variable/index.html @@ -0,0 +1,2 @@ + +Variable (ocsipersist.Ocsipersist.Functorial.Table.Variable)

Module Table.Variable

type t
val make : name:key -> default:value -> t
val make_lazy : name:key -> default:(unit -> value) -> t
val make_lazy_lwt : name:key -> default:(unit -> value Lwt.t) -> t
val get : t -> value Lwt.t
val set : t -> value -> unit Lwt.t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Table/argument-1-T/index.html b/ocsipersist/Ocsipersist/Functorial/Table/argument-1-T/index.html new file mode 100644 index 0000000..ce928e1 --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Table/argument-1-T/index.html @@ -0,0 +1,2 @@ + +T (ocsipersist.Ocsipersist.Functorial.Table.1-T)

Parameter Table.1-T

val name : string
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Table/argument-2-Key/index.html b/ocsipersist/Ocsipersist/Functorial/Table/argument-2-Key/index.html new file mode 100644 index 0000000..6a79899 --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Table/argument-2-Key/index.html @@ -0,0 +1,2 @@ + +Key (ocsipersist.Ocsipersist.Functorial.Table.2-Key)

Parameter Table.2-Key

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Table/argument-3-Value/index.html b/ocsipersist/Ocsipersist/Functorial/Table/argument-3-Value/index.html new file mode 100644 index 0000000..4cee42e --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Table/argument-3-Value/index.html @@ -0,0 +1,2 @@ + +Value (ocsipersist.Ocsipersist.Functorial.Table.3-Value)

Parameter Table.3-Value

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/Table/index.html b/ocsipersist/Ocsipersist/Functorial/Table/index.html new file mode 100644 index 0000000..07fdf15 --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/Table/index.html @@ -0,0 +1,3 @@ + +Table (ocsipersist.Ocsipersist.Functorial.Table)

Module Functorial.Table

Parameters

module T : sig ... end
module Key : COLUMN
module Value : COLUMN

Signature

type key = Key.t
type value = Value.t
val name : string
val find : key -> value Lwt.t
val add : key -> value -> unit Lwt.t
val replace_if_exists : key -> value -> unit Lwt.t
val remove : key -> unit Lwt.t
val modify_opt : key -> (value option -> value option) -> unit Lwt.t
val length : unit -> int Lwt.t
val iter : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit Lwt.t) -> unit Lwt.t
val fold : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> 'a -> 'a Lwt.t) -> 'a -> 'a Lwt.t
val iter_block : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> (key -> value -> unit) -> unit Lwt.t
val iter_batch : ?count:int64 -> ?gt:key -> ?geq:key -> ?lt:key -> ?leq:key -> +((key * value) list -> unit Lwt.t) -> unit Lwt.t
module Variable : sig ... end
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/index.html b/ocsipersist/Ocsipersist/Functorial/index.html new file mode 100644 index 0000000..03c7230 --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/index.html @@ -0,0 +1,2 @@ + +Functorial (ocsipersist.Ocsipersist.Functorial)

Module Ocsipersist.Functorial

Functorial frontent. Allows for custom (de)serialisation functions, which keeps data human-readable in the backend.

type internal
module type COLUMN = sig ... end
module Table (T : sig ... end) (Key : COLUMN) (Value : COLUMN) : Ocsipersist_lib.Sigs.TABLE with type key = Key.t and type value = Value.t
module Column : sig ... end
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Functorial/module-type-COLUMN/index.html b/ocsipersist/Ocsipersist/Functorial/module-type-COLUMN/index.html new file mode 100644 index 0000000..a91c13f --- /dev/null +++ b/ocsipersist/Ocsipersist/Functorial/module-type-COLUMN/index.html @@ -0,0 +1,2 @@ + +COLUMN (ocsipersist.Ocsipersist.Functorial.COLUMN)

Module type Functorial.COLUMN

type t
val column_type : string
val encode : t -> internal
val decode : internal -> t
\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Polymorphic/index.html b/ocsipersist/Ocsipersist/Polymorphic/index.html new file mode 100644 index 0000000..a977f08 --- /dev/null +++ b/ocsipersist/Ocsipersist/Polymorphic/index.html @@ -0,0 +1,2 @@ + +Polymorphic (ocsipersist.Ocsipersist.Polymorphic)

Module Ocsipersist.Polymorphic

Polymorphic frontent. Relies on Marshal for (de)serialisation, which means that data will be stored in the backend in a fashion that is not necessarily easily readable by non-OCaml-based life forms. If this is an issue for you, you can rely on the functorial frontend instead.

type 'value table

Type of persistent table

val table_name : 'value table -> string Lwt.t

returns the name of the table

val open_table : string -> 'value table Lwt.t

Open a table (and create it if it does not exist)

val find : 'value table -> string -> 'value Lwt.t

find table key gives the value associated to key. Fails with Not_found if not found.

val add : 'value table -> string -> 'value -> unit Lwt.t

add table key value associates value to key. If the database already contains data associated with key, that data is discarded and silently replaced by the new data.

val replace_if_exists : 'value table -> string -> 'value -> unit Lwt.t

replace_if_exists table key value associates value to key only if key is already bound. If the database does not contain any data associated with key, fails with Not_found.

val remove : 'value table -> string -> unit Lwt.t

remove table key removes the entry in the table if it exists

val length : 'value table -> int Lwt.t

Size of a table.

val iter_step : (string -> 'a -> unit Lwt.t) -> 'a table -> unit Lwt.t

Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).

val fold_step : (string -> 'a -> 'b -> 'b Lwt.t) -> 'a table -> 'b -> 'b Lwt.t

Important warning: this iterator may not iter on all data of the table if another thread is modifying it in the same time. Nonetheless, it should not miss more than a very few data from time to time, except if the table is very old (at least 9 223 372 036 854 775 807 insertions).

val iter_block : (string -> 'a -> unit) -> 'a table -> unit Lwt.t

MAJOR WARNING: Unlike iter_step, this iterator won't miss any entry and will run in one shot. It is therefore more efficient, BUT: it will lock the WHOLE database during its execution, thus preventing ANYBODY from accessing it (including the function f which is iterated). As a consequence: you MUST NOT use any function from ocsipersist in f, otherwise you would lock yourself and everybody else! Be VERY cautious.

\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/Store/index.html b/ocsipersist/Ocsipersist/Store/index.html new file mode 100644 index 0000000..91c7137 --- /dev/null +++ b/ocsipersist/Ocsipersist/Store/index.html @@ -0,0 +1,3 @@ + +Store (ocsipersist.Ocsipersist.Store)

Module Ocsipersist.Store

The variable store allows for the persistent storage of individual variables. Relies on Stdlib.Marshal for (de)serialisation, which entails the same limitations as for the Polymorphic frontend. If this is an issue you can rely on Functorial frontend instead (see TABLE.Variable).

type 'a t

Type of persistent data

type store

Data are divided into stores. Create one store for your project, where you will save all your data.

val open_store : string -> store Lwt.t

Open a store (and create it if it does not exist)

val make_persistent : store:store -> name:string -> default:'a -> 'a t Lwt.t

make_persistent store name default find a persistent value named name in store store from database, or create it with the default value default if it does not exist.

val make_persistent_lazy : store:store -> name:string -> default:(unit -> 'a) -> 'a t Lwt.t

Same as make_persistent but the default value is evaluated only if needed

val make_persistent_lazy_lwt : store:store -> name:string -> default:(unit -> 'a Lwt.t) -> +'a t Lwt.t

Lwt version of make_persistent_lazy.

val get : 'a t -> 'a Lwt.t

get pv gives the value of pv

val set : 'a t -> 'a -> unit Lwt.t

set pv value sets a persistent value pv to value

\ No newline at end of file diff --git a/ocsipersist/Ocsipersist/index.html b/ocsipersist/Ocsipersist/index.html new file mode 100644 index 0000000..018befc --- /dev/null +++ b/ocsipersist/Ocsipersist/index.html @@ -0,0 +1,2 @@ + +Ocsipersist (ocsipersist.Ocsipersist)

Module Ocsipersist

Library (and extension for ocsigenserver) for storing and retrieving key/value data in a persistent manner. This module defines a unified frontend for a number of different backends.

Functorial frontent. Allows for custom (de)serialisation functions, which keeps data human-readable in the backend.

module type TABLE = Ocsipersist_lib.Sigs.TABLE

Table representation as generated by the functor Functorial.Table

Polymorphic frontent. Relies on Marshal for (de)serialisation, which means that data will be stored in the backend in a fashion that is not necessarily easily readable by non-OCaml-based life forms. If this is an issue for you, you can rely on the functorial frontend instead.

type 'value table = 'value Polymorphic.table

Table representation as generated by the function Polymorphic.open_table

The variable store allows for the persistent storage of individual variables. Relies on Stdlib.Marshal for (de)serialisation, which entails the same limitations as for the Polymorphic frontend. If this is an issue you can rely on Functorial frontend instead (see TABLE.Variable).

type store = Store.store
type 'a variable = 'a Store.t
\ No newline at end of file diff --git a/ocsipersist/index.html b/ocsipersist/index.html new file mode 100644 index 0000000..e1d6249 --- /dev/null +++ b/ocsipersist/index.html @@ -0,0 +1,2 @@ + +index (ocsipersist.index)

ocsipersist index

Library ocsipersist

The entry point of this library is the module: Ocsipersist.

\ No newline at end of file diff --git a/odoc.css b/odoc.css new file mode 100644 index 0000000..c5d2acb --- /dev/null +++ b/odoc.css @@ -0,0 +1,782 @@ +@charset "UTF-8"; +/* Copyright (c) 2016 The odoc contributors. All rights reserved. + Distributed under the ISC license, see terms at the end of the file. + odoc 2.0.2 */ + +/* Fonts */ +@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,500'); +@import url('https://fonts.googleapis.com/css?family=Noticia+Text:400,400i,700'); +@import url('https://fonts.googleapis.com/css?family=Fira+Sans:400,400i,500,500i,600,600i,700,700i'); + +:root, +.light:root { + --main-background: #FFFFFF; + + --color: #333333; + --link-color: #2C94BD; + --anchor-hover: #555; + --anchor-color: #d5d5d5; + --xref-shadow: #cc6666; + --header-shadow: #ddd; + --by-name-version-color: #aaa; + --by-name-nav-link-color: #222; + --target-background: rgba(187, 239, 253, 0.3); + --target-shadow: rgba(187, 239, 253, 0.8); + --pre-border-color: #eee; + --code-background: #f6f8fa; + + --li-code-background: #f6f8fa; + --li-code-color: #0d2b3e; + --toc-color: #1F2D3D; + --toc-before-color: #777; + --toc-background: #f6f8fa; + --toc-list-border: #ccc; + + --spec-summary-border-color: #5c9cf5; + --spec-summary-background: var(--code-background); + --spec-summary-hover-background: #ebeff2; + --spec-details-after-background: rgba(0, 4, 15, 0.05); + --spec-details-after-shadow: rgba(204, 204, 204, 0.53); +} + +.dark:root { + --main-background: #202020; + --code-background: #222; + --line-numbers-background: rgba(0, 0, 0, 0.125); + --navbar-background: #202020; + + --color: #bebebe; + --dirname-color: #666; + --underline-color: #444; + --visited-color: #002800; + --visited-number-color: #252; + --unvisited-color: #380000; + --unvisited-number-color: #622; + --somevisited-color: #303000; + --highlight-color: #303e3f; + --line-number-color: rgba(230, 230, 230, 0.3); + --unvisited-margin-color: #622; + --border: #333; + --navbar-border: #333; + --code-color: #ccc; + + --li-code-background: #373737; + --li-code-color: #999; + --toc-color: #777; + --toc-background: #252525; + + --hljs-link: #999; + --hljs-keyword: #cda869; + --hljs-regexp: #f9ee98; + --hljs-title: #dcdcaa; + --hljs-type: #ac885b; + --hljs-meta: #82aaff; + --hljs-variable: #cf6a4c; +} + +@media (prefers-color-scheme: dark) { + :root { + --main-background: #202020; + --code-background: #333; + --line-numbers-background: rgba(0, 0, 0, 0.125); + --navbar-background: #202020; + + --meter-unvisited-color: #622; + --meter-visited-color: #252; + --meter-separator-color: black; + + --color: #bebebe; + --dirname-color: #666; + --underline-color: #444; + --visited-color: #002800; + --visited-number-color: #252; + --unvisited-color: #380000; + --unvisited-number-color: #622; + --somevisited-color: #303000; + --highlight-color: #303e3f; + --line-number-color: rgba(230, 230, 230, 0.3); + --unvisited-margin-color: #622; + --border: #333; + --navbar-border: #333; + --code-color: #ccc; + --by-name-nav-link-color: var(--color); + + --li-code-background: #373737; + --li-code-color: #999; + --toc-color: #777; + --toc-before-color: #777; + --toc-background: #252525; + --toc-list-border: #ccc; + --spec-summary-hover-background: #ebeff2; + --spec-details-after-background: rgba(0, 4, 15, 0.05); + --spec-details-after-shadow: rgba(204, 204, 204, 0.53); + + --hljs-link: #999; + --hljs-keyword: #cda869; + --hljs-regexp: #f9ee98; + --hljs-title: #dcdcaa; + --hljs-type: #ac885b; + --hljs-meta: #82aaff; + --hljs-variable: #cf6a4c; + } +} + +/* 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, 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 { + margin: 0; + padding: 0; + border: 0; + font: inherit; + vertical-align: baseline; + +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +*, *:before, *:after { + box-sizing: border-box; +} + +html { + font-size: 15px; +} + +body { + text-align: left; + background: #FFFFFF; + color: var(--color); + background-color: var(--main-background); +} + +body { + max-width: 90ex; + margin-left: calc(10vw + 20ex); + margin-right: 4ex; + margin-top: 20px; + margin-bottom: 50px; + font-family: "Noticia Text", Georgia, serif; + line-height: 1.5; +} + +header { + margin-bottom: 30px; +} + +nav { + font-family: "Fira Sans", Helvetica, Arial, sans-serif; +} + +/* Basic markup elements */ + +b, strong { + font-weight: bold; +} + +i { + font-style: italic; +} + +em, i em.odd{ + font-style: italic; +} + +em.odd, i em { + font-style: normal; +} + +sup { + vertical-align: super; +} + +sub { + vertical-align: sub; +} + +sup, sub { + font-size: 12px; + line-height: 0; + margin-left: 0.2ex; +} + +pre { + margin-top: 0.8em; + margin-bottom: 1.2em; +} + +p, ul, ol { + margin-top: 0.5em; + margin-bottom: 1em; +} +ul, ol { + list-style-position: outside +} + +ul>li { + margin-left: 22px; +} + +ol>li { + margin-left: 27.2px; +} + +li>*:first-child { + margin-top: 0 +} + +/* Text alignements, this should be forbidden. */ + +.left { + text-align: left; +} + +.right { + text-align: right; +} + +.center { + text-align: center; +} + +/* Links and anchors */ + +a { + text-decoration: none; + color: var(--link-color); +} + +a:hover { + box-shadow: 0 1px 0 0 var(--link-color); +} + +/* Linked highlight */ +*:target { + background-color: var(--target-background) !important; + box-shadow: 0 0px 0 1px var(--target-shadow) !important; + border-radius: 1px; +} + +*:hover > a.anchor { + visibility: visible; +} + +a.anchor:before { + content: "#"; +} + +a.anchor:hover { + box-shadow: none; + text-decoration: none; + color: var(--anchor-hover); +} + +a.anchor { + visibility: hidden; + position: absolute; + /* top: 0px; */ + /* margin-left: -3ex; */ + margin-left: -1.3em; + font-weight: normal; + font-style: normal; + padding-right: 0.4em; + padding-left: 0.4em; + /* To remain selectable */ + color: var(--anchor-color); +} + +.spec > a.anchor { + margin-left: -2.3em; + padding-right: 0.9em; +} + +.xref-unresolved { + color: #2C94BD; +} +.xref-unresolved:hover { + box-shadow: 0 1px 0 0 var(--xref-shadow); +} + +/* Section and document divisions. + Until at least 4.03 many of the modules of the stdlib start at .h7, + we restart the sequence there like h2 */ + +h1, h2, h3, h4, h5, h6, .h7, .h8, .h9, .h10 { + font-family: "Fira Sans", Helvetica, Arial, sans-serif; + font-weight: 400; + margin: 0.5em 0 0.5em 0; + padding-top: 0.1em; + line-height: 1.2; + overflow-wrap: break-word; +} + +h1 { + font-weight: 500; + font-size: 2.441em; + margin-top: 1.214em; +} + +h1 { + font-weight: 500; + font-size: 1.953em; + box-shadow: 0 1px 0 0 var(--header-shadow); +} + +h2 { + font-size: 1.563em; +} + +h3 { + font-size: 1.25em; +} + +small, .font_small { + font-size: 0.8em; +} + +h1 code, h1 tt { + font-size: inherit; + font-weight: inherit; +} + +h2 code, h2 tt { + font-size: inherit; + font-weight: inherit; +} + +h3 code, h3 tt { + font-size: inherit; + font-weight: inherit; +} + +h3 code, h3 tt { + font-size: inherit; + font-weight: inherit; +} + +h4 { + font-size: 1.12em; +} + +/* Comment delimiters, hidden but accessible to screen readers and + selected for copy/pasting */ + +/* Taken from bootstrap */ +/* See also https://stackoverflow.com/a/27769435/4220738 */ +.comment-delim { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; +} + +/* Preformatted and code */ + +tt, code, pre { + font-family: "Fira Mono", courier; + font-weight: 400; +} + +pre { + padding: 0.1em; + border: 1px solid var(--pre-border-color); + border-radius: 5px; + overflow-x: auto; +} + +p code, +li code { + background-color: var(--li-code-background); + color: var(--li-code-color); + border-radius: 3px; + padding: 0 0.3ex; +} + +p a > code { + color: var(--link-color); +} + +/* Code blocks (e.g. Examples) */ + +pre code { + font-size: 0.893rem; +} + +/* Code lexemes */ + +.keyword { + font-weight: 500; +} + +.arrow { white-space: nowrap } + +/* Module member specification */ + +.spec { + background-color: var(--spec-summary-background); + border-radius: 3px; + border-left: 4px solid var(--spec-summary-border-color); + border-right: 5px solid transparent; + padding: 0.35em 0.5em; +} + +div.spec, .def-doc { + margin-bottom: 20px; +} + +.spec.type .variant { + margin-left: 2ch; +} +.spec.type .variant p { + margin: 0; + font-style: italic; +} +.spec.type .record { + margin-left: 2ch; +} +.spec.type .record p { + margin: 0; + font-style: italic; +} + +div.def { + margin-top: 0; + text-indent: -2ex; + padding-left: 2ex; +} + +div.def+div.def-doc { + margin-left: 1ex; + margin-top: 2.5px +} + +div.def-doc>*:first-child { + margin-top: 0; +} + +/* Collapsible inlined include and module */ + +.odoc-include details { + position: relative; +} + +.odoc-include details:after { + z-index: -100; + display: block; + content: " "; + position: absolute; + border-radius: 0 1ex 1ex 0; + right: -20px; + top: 1px; + bottom: 1px; + width: 15px; + background: var(--spec-details-after-background, rgba(0, 4, 15, 0.05)); + box-shadow: 0 0px 0 1px var(--spec-details-after-shadow, rgba(204, 204, 204, 0.53)); +} + +.odoc-include summary { + position: relative; + margin-bottom: 20px; + cursor: pointer; + outline: none; +} + +.odoc-include summary:hover { + background-color: var(--spec-summary-hover-background); +} + +/* FIXME: Does not work in Firefox. */ +.odoc-include summary::-webkit-details-marker { + color: #888; + transform: scaleX(-1); + position: absolute; + top: calc(50% - 5px); + height: 11px; + right: -29px; +} + +/* Records and variants FIXME */ + +div.def table { + text-indent: 0em; + padding: 0; + margin-left: -2ex; +} + +td.def { + padding-left: 2ex; +} + +td.def-doc *:first-child { + margin-top: 0em; +} + +/* Lists of @tags */ + +.at-tags { list-style-type: none; margin-left: -3ex; } +.at-tags li { padding-left: 3ex; text-indent: -3ex; } +.at-tags .at-tag { text-transform: capitalize } + +/* Lists of modules */ + +.modules { list-style-type: none; margin-left: -3ex; } +.modules li { padding-left: 3ex; text-indent: -3ex; margin-top: 5px } +.modules .synopsis { padding-left: 1ch; } + +/* Odig package index */ + +.packages { list-style-type: none; margin-left: -3ex; } +.packages li { padding-left: 3ex; text-indent: -3ex } +.packages li a.anchor { padding-right: 0.5ch; padding-left: 3ch; } +.packages .version { font-size: 10px; color: var(--by-name-version-color); } +.packages .synopsis { padding-left: 1ch } + +.by-name nav a { + text-transform: uppercase; + font-size: 18px; + margin-right: 1ex; + color: var(--by-name-nav-link-color,); + display: inline-block; +} + +.by-tag nav a { + margin-right: 1ex; + color: var(--by-name-nav-link-color); + 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 { text-transform: uppercase; } + +/* Odig package page */ + +.package nav { + display: inline; + font-size: 14px; + font-weight: normal; +} + +.package .version { + font-size: 14px; +} + +.package.info { + margin: 0; +} + +.package.info td:first-child { + font-style: italic; + padding-right: 2ex; +} + +.package.info ul { + list-style-type: none; + display: inline; + margin: 0; +} + +.package.info li { + display: inline-block; + margin: 0; + margin-right: 1ex; +} + +#info-authors li, #info-maintainers li { + display: block; +} + +/* Sidebar and TOC */ + +.odoc-toc:before { + display: block; + content: "Contents"; + text-transform: uppercase; + font-size: 1em; + margin: 1.414em 0 0.5em; + font-weight: 500; + color: var(--toc-before-color); + line-height: 1.2; +} + +.odoc-toc { + position: fixed; + top: 0px; + bottom: 0px; + left: 0px; + max-width: 30ex; + min-width: 26ex; + width: 20%; + background: var(--toc-background); + overflow: auto; + color: var(--toc-color); + padding-left: 2ex; + padding-right: 2ex; +} + +.odoc-toc ul li a { + font-family: "Fira Sans", sans-serif; + font-size: 0.95em; + color: var(--color); + font-weight: 400; + line-height: 1.6em; + display: block; +} + +.odoc-toc ul li a:hover { + box-shadow: none; + text-decoration: underline; +} + +/* First level titles */ + +.odoc-toc>ul>li>a { + font-weight: 500; +} + +.odoc-toc li ul { + margin: 0px; +} + +.odoc-toc ul { + list-style-type: none; +} + +.odoc-toc ul li { + margin: 0; +} +.odoc-toc>ul>li { + margin-bottom: 0.3em; +} + +.odoc-toc ul li li { + border-left: 1px solid var(--toc-list-border); + margin-left: 5px; + padding-left: 12px; +} + +/* Mobile adjustements. */ + +@media only screen and (max-width: 95ex) { + .odoc-content { + margin: auto; + padding: 2em; + } + .odoc-toc { + position: static; + width: auto; + min-width: unset; + max-width: unset; + border: none; + padding: 0.2em 1em; + border-radius: 5px; + } +} + +/* Print adjustements. */ + +@media print { + body { + color: black; + background: white; + } + body nav:first-child { + visibility: hidden; + } +} + +/* Syntax highlighting (based on github-gist) */ + +.hljs { + display: block; + background: var(--code-background); + padding: 0.5em; + color: var(--color); + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag { + color: #a71d5d; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: 500; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} + +/*--------------------------------------------------------------------------- + Copyright (c) 2016 The odoc contributors + + 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. + ---------------------------------------------------------------------------*/