1
0
Fork 0
cl-sites/guile.html_node/Weak-hash-tables.html

103 lines
7.9 KiB
HTML
Raw Normal View History

2024-12-17 12:49:28 +01:00
<!DOCTYPE html>
<html>
<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This manual documents Guile version 3.0.10.
Copyright (C) 1996-1997, 2000-2005, 2009-2023 Free Software Foundation,
Inc.
Copyright (C) 2021 Maxime Devos
Copyright (C) 2024 Tomas Volf
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A
copy of the license is included in the section entitled "GNU Free
Documentation License." -->
<title>Weak hash tables (Guile Reference Manual)</title>
<meta name="description" content="Weak hash tables (Guile Reference Manual)">
<meta name="keywords" content="Weak hash tables (Guile Reference Manual)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content=".texi2any-real">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="index.html" rel="start" title="Top">
<link href="Concept-Index.html" rel="index" title="Concept Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="Weak-References.html" rel="up" title="Weak References">
<link href="Weak-vectors.html" rel="next" title="Weak vectors">
<style type="text/css">
<!--
a.copiable-link {visibility: hidden; text-decoration: none; line-height: 0em}
span:hover a.copiable-link {visibility: visible}
strong.def-name {font-family: monospace; font-weight: bold; font-size: larger}
-->
</style>
<link rel="stylesheet" type="text/css" href="https://www.gnu.org/software/gnulib/manual.css">
</head>
<body lang="en">
<div class="subsubsection-level-extent" id="Weak-hash-tables">
<div class="nav-panel">
<p>
Next: <a href="Weak-vectors.html" accesskey="n" rel="next">Weak vectors</a>, Up: <a href="Weak-References.html" accesskey="u" rel="up">Weak References</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<h4 class="subsubsection" id="Weak-hash-tables-1"><span>6.17.3.1 Weak hash tables<a class="copiable-link" href="#Weak-hash-tables-1"> &para;</a></span></h4>
<dl class="first-deffn">
<dt class="deffn" id="index-make_002dweak_002dkey_002dhash_002dtable"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">make-weak-key-hash-table</strong> <var class="def-var-arguments">[size]</var><a class="copiable-link" href="#index-make_002dweak_002dkey_002dhash_002dtable"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-make_002dweak_002dvalue_002dhash_002dtable"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">make-weak-value-hash-table</strong> <var class="def-var-arguments">[size]</var><a class="copiable-link" href="#index-make_002dweak_002dvalue_002dhash_002dtable"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-make_002ddoubly_002dweak_002dhash_002dtable"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">make-doubly-weak-hash-table</strong> <var class="def-var-arguments">[size]</var><a class="copiable-link" href="#index-make_002ddoubly_002dweak_002dhash_002dtable"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-scm_005fmake_005fweak_005fkey_005fhash_005ftable"><span class="category-def">C Function: </span><span><strong class="def-name">scm_make_weak_key_hash_table</strong> <var class="def-var-arguments">(size)</var><a class="copiable-link" href="#index-scm_005fmake_005fweak_005fkey_005fhash_005ftable"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-scm_005fmake_005fweak_005fvalue_005fhash_005ftable"><span class="category-def">C Function: </span><span><strong class="def-name">scm_make_weak_value_hash_table</strong> <var class="def-var-arguments">(size)</var><a class="copiable-link" href="#index-scm_005fmake_005fweak_005fvalue_005fhash_005ftable"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-scm_005fmake_005fdoubly_005fweak_005fhash_005ftable"><span class="category-def">C Function: </span><span><strong class="def-name">scm_make_doubly_weak_hash_table</strong> <var class="def-var-arguments">(size)</var><a class="copiable-link" href="#index-scm_005fmake_005fdoubly_005fweak_005fhash_005ftable"> &para;</a></span></dt>
<dd><p>Return a weak hash table with <var class="var">size</var> buckets. As with any
hash table, choosing a good size for the table requires some
caution.
</p>
<p>You can modify weak hash tables in exactly the same way you would modify
regular hash tables, with the exception of the routines that act on
handles. Weak tables have a different implementation behind the scenes
that doesn&rsquo;t have handles. see <a class="pxref" href="Hash-Tables.html">Hash Tables</a>, for more on
<code class="code">hashq-ref</code> et al.
</p></dd></dl>
<p>Note that in a weak-key hash table, the reference to the value is
strong. This means that if the value references the key, even
indirectly, the key will never be collected, which can lead to a memory
leak. The reverse is true for weak value tables.
</p>
<dl class="first-deffn">
<dt class="deffn" id="index-weak_002dkey_002dhash_002dtable_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">weak-key-hash-table?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-weak_002dkey_002dhash_002dtable_003f"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-weak_002dvalue_002dhash_002dtable_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">weak-value-hash-table?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-weak_002dvalue_002dhash_002dtable_003f"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-doubly_002dweak_002dhash_002dtable_003f"><span class="category-def">Scheme Procedure: </span><span><strong class="def-name">doubly-weak-hash-table?</strong> <var class="def-var-arguments">obj</var><a class="copiable-link" href="#index-doubly_002dweak_002dhash_002dtable_003f"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-scm_005fweak_005fkey_005fhash_005ftable_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_weak_key_hash_table_p</strong> <var class="def-var-arguments">(obj)</var><a class="copiable-link" href="#index-scm_005fweak_005fkey_005fhash_005ftable_005fp"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-scm_005fweak_005fvalue_005fhash_005ftable_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_weak_value_hash_table_p</strong> <var class="def-var-arguments">(obj)</var><a class="copiable-link" href="#index-scm_005fweak_005fvalue_005fhash_005ftable_005fp"> &para;</a></span></dt>
<dt class="deffnx def-cmd-deffn" id="index-scm_005fdoubly_005fweak_005fhash_005ftable_005fp"><span class="category-def">C Function: </span><span><strong class="def-name">scm_doubly_weak_hash_table_p</strong> <var class="def-var-arguments">(obj)</var><a class="copiable-link" href="#index-scm_005fdoubly_005fweak_005fhash_005ftable_005fp"> &para;</a></span></dt>
<dd><p>Return <code class="code">#t</code> if <var class="var">obj</var> is the specified weak hash
table. Note that a doubly weak hash table is neither a weak key
nor a weak value hash table.
</p></dd></dl>
</div>
<hr>
<div class="nav-panel">
<p>
Next: <a href="Weak-vectors.html">Weak vectors</a>, Up: <a href="Weak-References.html">Weak References</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
</body>
</html>