mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-16 15:56:21 -05:00
18 lines
No EOL
25 KiB
HTML
18 lines
No EOL
25 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CamlinternalOO (ocaml.CamlinternalOO)</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> » CamlinternalOO</nav><header class="odoc-preamble"><h1>Module <code><span>CamlinternalOO</span></code></h1><p>Run-time support for objects and classes. All functions in this module are for system use only, not for the casual user.</p></header><nav class="odoc-toc"><ul><li><a href="#classes">Classes</a></li><li><a href="#objects">Objects</a></li><li><a href="#table-cache">Table cache</a></li><li><a href="#builtins-to-reduce-code-size">Builtins to reduce code size</a></li><li><a href="#parameters">Parameters</a></li><li><a href="#statistics">Statistics</a></li></ul></nav><div class="odoc-content"><h2 id="classes"><a href="#classes" class="anchor"></a>Classes</h2><div class="odoc-spec"><div class="spec type anchored" id="type-tag"><a href="#type-tag" class="anchor"></a><code><span><span class="keyword">type</span> tag</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-label"><a href="#type-label" class="anchor"></a><code><span><span class="keyword">type</span> label</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-table"><a href="#type-table" class="anchor"></a><code><span><span class="keyword">type</span> table</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-meth"><a href="#type-meth" class="anchor"></a><code><span><span class="keyword">type</span> meth</span></code></div></div><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 type anchored" id="type-obj"><a href="#type-obj" class="anchor"></a><code><span><span class="keyword">type</span> obj</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-closure"><a href="#type-closure" class="anchor"></a><code><span><span class="keyword">type</span> closure</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-public_method_label"><a href="#val-public_method_label" class="anchor"></a><code><span><span class="keyword">val</span> public_method_label : <span>string <span class="arrow">-></span></span> <a href="#type-tag">tag</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_method"><a href="#val-new_method" class="anchor"></a><code><span><span class="keyword">val</span> new_method : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <a href="#type-label">label</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_variable"><a href="#val-new_variable" class="anchor"></a><code><span><span class="keyword">val</span> new_variable : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-new_methods_variables"><a href="#val-new_methods_variables" class="anchor"></a><code><span><span class="keyword">val</span> new_methods_variables :
|
||
<span><a href="#type-table">table</a> <span class="arrow">-></span></span>
|
||
<span><span>string array</span> <span class="arrow">-></span></span>
|
||
<span><span>string array</span> <span class="arrow">-></span></span>
|
||
<span><a href="#type-label">label</a> array</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_variable"><a href="#val-get_variable" class="anchor"></a><code><span><span class="keyword">val</span> get_variable : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_variables"><a href="#val-get_variables" class="anchor"></a><code><span><span class="keyword">val</span> get_variables : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><span>string array</span> <span class="arrow">-></span></span> <span>int array</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_method_label"><a href="#val-get_method_label" class="anchor"></a><code><span><span class="keyword">val</span> get_method_label : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <a href="#type-label">label</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_method_labels"><a href="#val-get_method_labels" class="anchor"></a><code><span><span class="keyword">val</span> get_method_labels : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><span>string array</span> <span class="arrow">-></span></span> <span><a href="#type-label">label</a> array</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_method"><a href="#val-get_method" class="anchor"></a><code><span><span class="keyword">val</span> get_method : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><a href="#type-label">label</a> <span class="arrow">-></span></span> <a href="#type-meth">meth</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_method"><a href="#val-set_method" class="anchor"></a><code><span><span class="keyword">val</span> set_method : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><a href="#type-label">label</a> <span class="arrow">-></span></span> <span><a href="#type-meth">meth</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set_methods"><a href="#val-set_methods" class="anchor"></a><code><span><span class="keyword">val</span> set_methods : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><span><a href="#type-label">label</a> array</span> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-narrow"><a href="#val-narrow" class="anchor"></a><code><span><span class="keyword">val</span> narrow : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><span>string array</span> <span class="arrow">-></span></span> <span><span>string array</span> <span class="arrow">-></span></span> <span><span>string array</span> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-widen"><a href="#val-widen" class="anchor"></a><code><span><span class="keyword">val</span> widen : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_initializer"><a href="#val-add_initializer" class="anchor"></a><code><span><span class="keyword">val</span> add_initializer : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><span>(<span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-dummy_table"><a href="#val-dummy_table" class="anchor"></a><code><span><span class="keyword">val</span> dummy_table : <a href="#type-table">table</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_table"><a href="#val-create_table" class="anchor"></a><code><span><span class="keyword">val</span> create_table : <span><span>string array</span> <span class="arrow">-></span></span> <a href="#type-table">table</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-init_class"><a href="#val-init_class" class="anchor"></a><code><span><span class="keyword">val</span> init_class : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-inherits"><a href="#val-inherits" class="anchor"></a><code><span><span class="keyword">val</span> inherits :
|
||
<span><a href="#type-table">table</a> <span class="arrow">-></span></span>
|
||
<span><span>string array</span> <span class="arrow">-></span></span>
|
||
<span><span>string array</span> <span class="arrow">-></span></span>
|
||
<span><span>string array</span> <span class="arrow">-></span></span>
|
||
<span><span>(<a href="#type-t">t</a> * <span>(<span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a>)</span> * <a href="#type-t">t</a> * <a href="#type-obj">obj</a>)</span> <span class="arrow">-></span></span>
|
||
<span>bool <span class="arrow">-></span></span>
|
||
<span><a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a> array</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-make_class"><a href="#val-make_class" class="anchor"></a><code><span><span class="keyword">val</span> make_class :
|
||
<span><span>string array</span> <span class="arrow">-></span></span>
|
||
<span><span>(<span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a>)</span> <span class="arrow">-></span></span>
|
||
<a href="#type-t">t</a> * <span>(<span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a>)</span> * <span>(<span><a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a>)</span> * <a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a></span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-init_table"><a href="#type-init_table" class="anchor"></a><code><span><span class="keyword">type</span> init_table</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-make_class_store"><a href="#val-make_class_store" class="anchor"></a><code><span><span class="keyword">val</span> make_class_store : <span><span>string array</span> <span class="arrow">-></span></span> <span><span>(<span><a href="#type-table">table</a> <span class="arrow">-></span></span> <a href="#type-t">t</a>)</span> <span class="arrow">-></span></span> <span><a href="#type-init_table">init_table</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-dummy_class"><a href="#val-dummy_class" class="anchor"></a><code><span><span class="keyword">val</span> dummy_class :
|
||
<span><span>(string * int * int)</span> <span class="arrow">-></span></span>
|
||
<a href="#type-t">t</a> * <span>(<span><a href="#type-table">table</a> <span class="arrow">-></span></span> <span><a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a>)</span> * <span>(<span><a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a>)</span> * <a href="../Stdlib/Obj/index.html#type-t">Stdlib.Obj.t</a></span></code></div></div><h2 id="objects"><a href="#objects" class="anchor"></a>Objects</h2><div class="odoc-spec"><div class="spec value anchored" id="val-copy"><a href="#val-copy" class="anchor"></a><code><span><span class="keyword">val</span> copy : <span><span>< .. ></span> <span class="keyword">as</span> 'a <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_object"><a href="#val-create_object" class="anchor"></a><code><span><span class="keyword">val</span> create_object : <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <a href="#type-obj">obj</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_object_opt"><a href="#val-create_object_opt" class="anchor"></a><code><span><span class="keyword">val</span> create_object_opt : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <a href="#type-obj">obj</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-run_initializers"><a href="#val-run_initializers" class="anchor"></a><code><span><span class="keyword">val</span> run_initializers : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-table">table</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-run_initializers_opt"><a href="#val-run_initializers_opt" class="anchor"></a><code><span><span class="keyword">val</span> run_initializers_opt : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <a href="#type-obj">obj</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_object_and_run_initializers"><a href="#val-create_object_and_run_initializers" class="anchor"></a><code><span><span class="keyword">val</span> create_object_and_run_initializers : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-table">table</a> <span class="arrow">-></span></span> <a href="#type-obj">obj</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-send"><a href="#val-send" class="anchor"></a><code><span><span class="keyword">val</span> send : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-tag">tag</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sendcache"><a href="#val-sendcache" class="anchor"></a><code><span><span class="keyword">val</span> sendcache : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-tag">tag</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-sendself"><a href="#val-sendself" class="anchor"></a><code><span><span class="keyword">val</span> sendself : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-label">label</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-get_public_method"><a href="#val-get_public_method" class="anchor"></a><code><span><span class="keyword">val</span> get_public_method : <span><a href="#type-obj">obj</a> <span class="arrow">-></span></span> <span><a href="#type-tag">tag</a> <span class="arrow">-></span></span> <a href="#type-closure">closure</a></span></code></div></div><h2 id="table-cache"><a href="#table-cache" class="anchor"></a>Table cache</h2><div class="odoc-spec"><div class="spec type anchored" id="type-tables"><a href="#type-tables" class="anchor"></a><code><span><span class="keyword">type</span> tables</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lookup_tables"><a href="#val-lookup_tables" class="anchor"></a><code><span><span class="keyword">val</span> lookup_tables : <span><a href="#type-tables">tables</a> <span class="arrow">-></span></span> <span><span><a href="#type-closure">closure</a> array</span> <span class="arrow">-></span></span> <a href="#type-tables">tables</a></span></code></div></div><h2 id="builtins-to-reduce-code-size"><a href="#builtins-to-reduce-code-size" class="anchor"></a>Builtins to reduce code size</h2><div class="odoc-spec"><div class="spec type anchored" id="type-impl"><a href="#type-impl" class="anchor"></a><code><span><span class="keyword">type</span> impl</span><span> = </span></code><ol><li id="type-impl.GetConst" class="def variant constructor anchored"><a href="#type-impl.GetConst" class="anchor"></a><code><span>| </span><span><span class="constructor">GetConst</span></span></code></li><li id="type-impl.GetVar" class="def variant constructor anchored"><a href="#type-impl.GetVar" class="anchor"></a><code><span>| </span><span><span class="constructor">GetVar</span></span></code></li><li id="type-impl.GetEnv" class="def variant constructor anchored"><a href="#type-impl.GetEnv" class="anchor"></a><code><span>| </span><span><span class="constructor">GetEnv</span></span></code></li><li id="type-impl.GetMeth" class="def variant constructor anchored"><a href="#type-impl.GetMeth" class="anchor"></a><code><span>| </span><span><span class="constructor">GetMeth</span></span></code></li><li id="type-impl.SetVar" class="def variant constructor anchored"><a href="#type-impl.SetVar" class="anchor"></a><code><span>| </span><span><span class="constructor">SetVar</span></span></code></li><li id="type-impl.AppConst" class="def variant constructor anchored"><a href="#type-impl.AppConst" class="anchor"></a><code><span>| </span><span><span class="constructor">AppConst</span></span></code></li><li id="type-impl.AppVar" class="def variant constructor anchored"><a href="#type-impl.AppVar" class="anchor"></a><code><span>| </span><span><span class="constructor">AppVar</span></span></code></li><li id="type-impl.AppEnv" class="def variant constructor anchored"><a href="#type-impl.AppEnv" class="anchor"></a><code><span>| </span><span><span class="constructor">AppEnv</span></span></code></li><li id="type-impl.AppMeth" class="def variant constructor anchored"><a href="#type-impl.AppMeth" class="anchor"></a><code><span>| </span><span><span class="constructor">AppMeth</span></span></code></li><li id="type-impl.AppConstConst" class="def variant constructor anchored"><a href="#type-impl.AppConstConst" class="anchor"></a><code><span>| </span><span><span class="constructor">AppConstConst</span></span></code></li><li id="type-impl.AppConstVar" class="def variant constructor anchored"><a href="#type-impl.AppConstVar" class="anchor"></a><code><span>| </span><span><span class="constructor">AppConstVar</span></span></code></li><li id="type-impl.AppConstEnv" class="def variant constructor anchored"><a href="#type-impl.AppConstEnv" class="anchor"></a><code><span>| </span><span><span class="constructor">AppConstEnv</span></span></code></li><li id="type-impl.AppConstMeth" class="def variant constructor anchored"><a href="#type-impl.AppConstMeth" class="anchor"></a><code><span>| </span><span><span class="constructor">AppConstMeth</span></span></code></li><li id="type-impl.AppVarConst" class="def variant constructor anchored"><a href="#type-impl.AppVarConst" class="anchor"></a><code><span>| </span><span><span class="constructor">AppVarConst</span></span></code></li><li id="type-impl.AppEnvConst" class="def variant constructor anchored"><a href="#type-impl.AppEnvConst" class="anchor"></a><code><span>| </span><span><span class="constructor">AppEnvConst</span></span></code></li><li id="type-impl.AppMethConst" class="def variant constructor anchored"><a href="#type-impl.AppMethConst" class="anchor"></a><code><span>| </span><span><span class="constructor">AppMethConst</span></span></code></li><li id="type-impl.MethAppConst" class="def variant constructor anchored"><a href="#type-impl.MethAppConst" class="anchor"></a><code><span>| </span><span><span class="constructor">MethAppConst</span></span></code></li><li id="type-impl.MethAppVar" class="def variant constructor anchored"><a href="#type-impl.MethAppVar" class="anchor"></a><code><span>| </span><span><span class="constructor">MethAppVar</span></span></code></li><li id="type-impl.MethAppEnv" class="def variant constructor anchored"><a href="#type-impl.MethAppEnv" class="anchor"></a><code><span>| </span><span><span class="constructor">MethAppEnv</span></span></code></li><li id="type-impl.MethAppMeth" class="def variant constructor anchored"><a href="#type-impl.MethAppMeth" class="anchor"></a><code><span>| </span><span><span class="constructor">MethAppMeth</span></span></code></li><li id="type-impl.SendConst" class="def variant constructor anchored"><a href="#type-impl.SendConst" class="anchor"></a><code><span>| </span><span><span class="constructor">SendConst</span></span></code></li><li id="type-impl.SendVar" class="def variant constructor anchored"><a href="#type-impl.SendVar" class="anchor"></a><code><span>| </span><span><span class="constructor">SendVar</span></span></code></li><li id="type-impl.SendEnv" class="def variant constructor anchored"><a href="#type-impl.SendEnv" class="anchor"></a><code><span>| </span><span><span class="constructor">SendEnv</span></span></code></li><li id="type-impl.SendMeth" class="def variant constructor anchored"><a href="#type-impl.SendMeth" class="anchor"></a><code><span>| </span><span><span class="constructor">SendMeth</span></span></code></li><li id="type-impl.Closure" class="def variant constructor anchored"><a href="#type-impl.Closure" class="anchor"></a><code><span>| </span><span><span class="constructor">Closure</span> <span class="keyword">of</span> <a href="#type-closure">closure</a></span></code></li></ol></div></div><h2 id="parameters"><a href="#parameters" class="anchor"></a>Parameters</h2><div class="odoc-spec"><div class="spec type anchored" id="type-params"><a href="#type-params" class="anchor"></a><code><span><span class="keyword">type</span> params</span><span> = </span><span>{</span></code><ol><li id="type-params.compact_table" class="def record field anchored"><a href="#type-params.compact_table" class="anchor"></a><code><span><span class="keyword">mutable</span> compact_table : bool;</span></code></li><li id="type-params.copy_parent" class="def record field anchored"><a href="#type-params.copy_parent" class="anchor"></a><code><span><span class="keyword">mutable</span> copy_parent : bool;</span></code></li><li id="type-params.clean_when_copying" class="def record field anchored"><a href="#type-params.clean_when_copying" class="anchor"></a><code><span><span class="keyword">mutable</span> clean_when_copying : bool;</span></code></li><li id="type-params.retry_count" class="def record field anchored"><a href="#type-params.retry_count" class="anchor"></a><code><span><span class="keyword">mutable</span> retry_count : int;</span></code></li><li id="type-params.bucket_small_size" class="def record field anchored"><a href="#type-params.bucket_small_size" class="anchor"></a><code><span><span class="keyword">mutable</span> bucket_small_size : int;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-params"><a href="#val-params" class="anchor"></a><code><span><span class="keyword">val</span> params : <a href="#type-params">params</a></span></code></div></div><h2 id="statistics"><a href="#statistics" class="anchor"></a>Statistics</h2><div class="odoc-spec"><div class="spec type anchored" id="type-stats"><a href="#type-stats" class="anchor"></a><code><span><span class="keyword">type</span> stats</span><span> = </span><span>{</span></code><ol><li id="type-stats.classes" class="def record field anchored"><a href="#type-stats.classes" class="anchor"></a><code><span>classes : int;</span></code></li><li id="type-stats.methods" class="def record field anchored"><a href="#type-stats.methods" class="anchor"></a><code><span>methods : int;</span></code></li><li id="type-stats.inst_vars" class="def record field anchored"><a href="#type-stats.inst_vars" class="anchor"></a><code><span>inst_vars : int;</span></code></li></ol><code><span>}</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-stats"><a href="#val-stats" class="anchor"></a><code><span><span class="keyword">val</span> stats : <span>unit <span class="arrow">-></span></span> <a href="#type-stats">stats</a></span></code></div></div></div></body></html> |