<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>ComponentKit (infer.ASTLanguage.ComponentKit)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">ASTLanguage</a>» ComponentKit</nav><h1>Module <code>ASTLanguage.ComponentKit</code></h1></header><dl><dtclass="spec value"id="val-contains_ck_impl"><ahref="#val-contains_ck_impl"class="anchor"></a><code><spanclass="keyword">val</span> contains_ck_impl : <span><ahref="../../ATDGenerated/Clang_ast_t/index.html#type-decl">ATDGenerated.Clang_ast_t.decl</a> list</span><span>-></span> bool</code></dt><dd><p>Returns true if the passed-in list of decls contains an ObjCImplementationDecl of a descendant of CKComponent or CKComponentController.</p><p>Does not recurse into hierarchy.</p></dd></dl><dl><dtclass="spec value"id="val-mutable_local_vars_advice"><ahref="#val-mutable_local_vars_advice"class="anchor"></a><code><spanclass="keyword">val</span> mutable_local_vars_advice : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> option</span></code></dt><dtclass="spec value"id="val-component_factory_function_advice"><ahref="#val-component_factory_function_advice"class="anchor"></a><code><spanclass="keyword">val</span> component_factory_function_advice : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> option</span></code></dt><dtclass="spec value"id="val-component_with_unconventional_superclass_advice"><ahref="#val-component_with_unconventional_superclass_advice"class="anchor"></a><code><spanclass="keyword">val</span> component_with_unconventional_superclass_advice : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> option</span></code></dt><dtclass="spec value"id="val-component_with_multiple_factory_methods_advice"><ahref="#val-component_with_multiple_factory_methods_advice"class="anchor"></a><code><spanclass="keyword">val</span> component_with_multiple_factory_methods_advice : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> list</span></code></dt><dtclass="spec value"id="val-component_initializer_with_side_effects_advice"><ahref="#val-component_initializer_with_side_effects_advice"class="anchor"></a><code><spanclass="keyword">val</span> component_initializer_with_side_effects_advice : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> option</span></code></dt><dtclass="spec value"id="val-component_file_line_count_info"><ahref="#val-component_file_line_count_info"class="anchor"></a><code><spanclass="keyword">val</span> component_file_line_count_info : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> list</span></code></dt><dtclass="spec value"id="val-component_file_cyclomatic_complexity_info"><ahref="#val-component_file_cyclomatic_complexity_info"class="anchor"></a><code><spanclass="keyword">val</span> component_file_cyclomatic_complexity_info : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> option</span></code></dt></dl></div></body></html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>ComponentKit (infer.ASTLanguage.ComponentKit)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">ASTLanguage</a>» ComponentKit</nav><h1>Module <code>ASTLanguage.ComponentKit</code></h1></header><dl><dtclass="spec value"id="val-contains_ck_impl"><ahref="#val-contains_ck_impl"class="anchor"></a><code><spanclass="keyword">val</span> contains_ck_impl : <span><ahref="../../ATDGenerated/Clang_ast_t/index.html#type-decl">ATDGenerated.Clang_ast_t.decl</a> list</span><span>-></span> bool</code></dt><dd><p>Returns true if the passed-in list of decls contains an ObjCImplementationDecl of a descendant of CKComponent or CKComponentController.</p><p>Does not recurse into hierarchy.</p></dd></dl><dl><dtclass="spec value"id="val-mutable_local_vars_advice"><ahref="#val-mutable_local_vars_advice"class="anchor"></a><code><spanclass="keyword">val</span> mutable_local_vars_advice : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> option</span></code></dt><dtclass="spec value"id="val-component_with_multiple_factory_methods_advice"><ahref="#val-component_with_multiple_factory_methods_advice"class="anchor"></a><code><spanclass="keyword">val</span> component_with_multiple_factory_methods_advice : <ahref="../CLintersContext/index.html#type-context">CLintersContext.context</a><span>-></span><ahref="../Ctl_parser_types/index.html#type-ast_node">Ctl_parser_types.ast_node</a><span>-></span><span><ahref="../CIssue/index.html#type-t">CIssue.t</a> list</span></code></dt></dl></div></body></html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Objc_models (infer.Biabduction.Objc_models)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">Biabduction</a>» Objc_models</nav><h1>Module <code>Biabduction.Objc_models</code></h1></header><aside><p>This module models special c struct types from the Apple's Core Foundation libraries for which there are particular rules for memory management.</p></aside><dl><dtclass="spec value"id="val-is_malloc_model"><ahref="#val-is_malloc_model"class="anchor"></a><code><spanclass="keyword">val</span> is_malloc_model : <ahref="../../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> bool</code></dt></dl></div></body></html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>Biabduction__Objc_models (infer.Biabduction__Objc_models)</title><linkrel="stylesheet"href="../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../index.html">infer</a>» Biabduction__Objc_models</nav><h1>Module <code>Biabduction__Objc_models</code></h1></header><aside><p>This module models special c struct types from the Apple's Core Foundation libraries for which there are particular rules for memory management.</p></aside><dl><dtclass="spec value"id="val-is_malloc_model"><ahref="#val-is_malloc_model"class="anchor"></a><code><spanclass="keyword">val</span> is_malloc_model : <ahref="../IR/Typ/index.html#type-t">IR.Typ.t</a><span>-></span><ahref="../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span> bool</code></dt></dl></div></body></html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>CAddImplicitGettersSetters (infer.ClangFrontend.CAddImplicitGettersSetters)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">ClangFrontend</a>» CAddImplicitGettersSetters</nav><h1>Module <code>ClangFrontend.CAddImplicitGettersSetters</code></h1></header><dl><dtclass="spec value"id="val-process"><ahref="#val-process"class="anchor"></a><code><spanclass="keyword">val</span> process : <ahref="../../IR/Cfg/index.html#type-t">IR.Cfg.t</a><span>-></span> unit</code></dt><dd><p>In Objective-C when properties are created in the interface of a class, the compiler creates automatically the instance variable for it and also the getter and setter in the implementation of the class. In the frontend we collect the information about which method is the implicit getter and setter of which instance variable (we get the method declaration but not the implementation), and here we add the implicit implementation.</p></dd></dl></div></body></html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>ClangFrontend__CAddImplicitGettersSetters (infer.ClangFrontend__CAddImplicitGettersSetters)</title><linkrel="stylesheet"href="../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../index.html">infer</a>» ClangFrontend__CAddImplicitGettersSetters</nav><h1>Module <code>ClangFrontend__CAddImplicitGettersSetters</code></h1></header><dl><dtclass="spec value"id="val-process"><ahref="#val-process"class="anchor"></a><code><spanclass="keyword">val</span> process : <ahref="../IR/Cfg/index.html#type-t">IR.Cfg.t</a><span>-></span> unit</code></dt><dd><p>In Objective-C when properties are created in the interface of a class, the compiler creates automatically the instance variable for it and also the getter and setter in the implementation of the class. In the frontend we collect the information about which method is the implicit getter and setter of which instance variable (we get the method declaration but not the implementation), and here we add the implicit implementation.</p></dd></dl></div></body></html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>BasicCostWithReason (infer.Costlib.CostDomain.BasicCostWithReason)</title><linkrel="stylesheet"href="../../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../../index.html">infer</a>»<ahref="../../index.html">Costlib</a>»<ahref="../index.html">CostDomain</a>» BasicCostWithReason</nav><h1>Module <code>CostDomain.BasicCostWithReason</code></h1></header><aside><p>This is for <code>Call</code> instruction. Most top cost function is caused by calling top-costed function. The extension aims to find the root callee with top cost.</p><p>If the callee top cost and thus the caller has top cost, then</p><p>1. if for callee, <code>top_pname_opt</code> is <code>None</code>, then callee is itself top cost, so for the caller, we record <code>top_pname_opt = callee</code> ;</p><p>2. if for callee, <code>top_pname_opt</code> is <code>f</code>, then we know that callee calls <code>f</code>, which is top cost, so for the caller, we record <code>top_pname_opt = f</code></p></aside><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = </code><code>{</code><tableclass="record"><trid="type-t.cost"class="anchored"><tdclass="def field"><ahref="#type-t.cost"class="anchor"></a><code>cost : <ahref="../BasicCost/index.html#type-t">BasicCost.t</a>;</code></td></tr><trid="type-t.top_pname_opt"class="anchored"><tdclass="def field"><ahref="#type-t.top_pname_opt"class="anchor"></a><code>top_pname_opt : <span><ahref="../../../IR/Procname/index.html#type-t">IR.Procname.t</a> option</span>;</code></td></tr></table><code>}</code></dt></dl><dl><dtclass="spec value"id="val-is_top"><ahref="#val-is_top"class="anchor"></a><code><spanclass="keyword">val</span> is_top : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-is_unreachable"><ahref="#val-is_unreachable"class="anchor"></a><code><spanclass="keyword">val</span> is_unreachable : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-subst"><ahref="#val-subst"class="anchor"></a><code><spanclass="keyword">val</span> subst : <ahref="../../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span><ahref="../../../BO/Bounds/Bound/index.html#type-eval_sym">BO.Bounds.Bound.eval_sym</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dtclass="spec value"id="val-degree"><ahref="#val-degree"class="anchor"></a><code><spanclass="keyword">val</span> degree : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="../../../BO/Polynomials/Degree/index.html#type-t">BO.Polynomials.Degree.t</a> option</span></code></dt><dtclass="spec value"id="val-polynomial_traces"><ahref="#val-polynomial_traces"class="anchor"></a><code><spanclass="keyword">val</span> polynomial_traces : <ahref="index.html#type-t">t</a><span>-></span><ahref="../../../Absint/Errlog/index.html#type-loc_trace">Absint.Errlog.loc_trace</a></code></dt><dtclass="spec value"id="val-pp_hum"><ahref="#val-pp_hum"class="anchor"></a><code><spanclass="keyword">val</span> pp_hum : Stdlib.Format.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt></dl></div></body></html>
<htmlxmlns="http://www.w3.org/1999/xhtml"><head><title>BasicCostWithReason (infer.Costlib__CostDomain.BasicCostWithReason)</title><linkrel="stylesheet"href="../../../odoc.css"/><metacharset="utf-8"/><metaname="generator"content="odoc 1.5.0"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><scriptsrc="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divclass="content"><header><nav><ahref="../index.html">Up</a>–<ahref="../../index.html">infer</a>»<ahref="../index.html">Costlib__CostDomain</a>» BasicCostWithReason</nav><h1>Module <code>Costlib__CostDomain.BasicCostWithReason</code></h1></header><aside><p>This is for <code>Call</code> instruction. Most top cost function is caused by calling top-costed function. The extension aims to find the root callee with top cost.</p><p>If the callee top cost and thus the caller has top cost, then</p><p>1. if for callee, <code>top_pname_opt</code> is <code>None</code>, then callee is itself top cost, so for the caller, we record <code>top_pname_opt = callee</code> ;</p><p>2. if for callee, <code>top_pname_opt</code> is <code>f</code>, then we know that callee calls <code>f</code>, which is top cost, so for the caller, we record <code>top_pname_opt = f</code></p></aside><dl><dtclass="spec type"id="type-t"><ahref="#type-t"class="anchor"></a><code><spanclass="keyword">type</span> t</code><code> = </code><code>{</code><tableclass="record"><trid="type-t.cost"class="anchored"><tdclass="def field"><ahref="#type-t.cost"class="anchor"></a><code>cost : <ahref="../BasicCost/index.html#type-t">BasicCost.t</a>;</code></td></tr><trid="type-t.top_pname_opt"class="anchored"><tdclass="def field"><ahref="#type-t.top_pname_opt"class="anchor"></a><code>top_pname_opt : <span><ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a> option</span>;</code></td></tr></table><code>}</code></dt></dl><dl><dtclass="spec value"id="val-is_top"><ahref="#val-is_top"class="anchor"></a><code><spanclass="keyword">val</span> is_top : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-is_unreachable"><ahref="#val-is_unreachable"class="anchor"></a><code><spanclass="keyword">val</span> is_unreachable : <ahref="index.html#type-t">t</a><span>-></span> bool</code></dt><dtclass="spec value"id="val-subst"><ahref="#val-subst"class="anchor"></a><code><spanclass="keyword">val</span> subst : <ahref="../../IR/Procname/index.html#type-t">IR.Procname.t</a><span>-></span><ahref="../../IBase/Location/index.html#type-t">IBase.Location.t</a><span>-></span><ahref="index.html#type-t">t</a><span>-></span><ahref="../../BO/Bounds/Bound/index.html#type-eval_sym">BO.Bounds.Bound.eval_sym</a><span>-></span><ahref="index.html#type-t">t</a></code></dt><dtclass="spec value"id="val-degree"><ahref="#val-degree"class="anchor"></a><code><spanclass="keyword">val</span> degree : <ahref="index.html#type-t">t</a><span>-></span><span><ahref="../../BO/Polynomials/Degree/index.html#type-t">BO.Polynomials.Degree.t</a> option</span></code></dt><dtclass="spec value"id="val-polynomial_traces"><ahref="#val-polynomial_traces"class="anchor"></a><code><spanclass="keyword">val</span> polynomial_traces : <ahref="index.html#type-t">t</a><span>-></span><ahref="../../Absint/Errlog/index.html#type-loc_trace">Absint.Errlog.loc_trace</a></code></dt><dtclass="spec value"id="val-pp_hum"><ahref="#val-pp_hum"class="anchor"></a><code><spanclass="keyword">val</span> pp_hum : Stdlib.Format.formatter <span>-></span><ahref="index.html#type-t">t</a><span>-></span> unit</code></dt></dl></div></body></html>