Current section
Files
Jump to
Current section
Files
doc/key2value.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Module key2value</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="EDoc">
</head>
<body bgcolor="white">
<div class="navbar"><a name="#navbar_top"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<hr>
<h1>Module key2value</h1>
<ul class="index"><li><a href="#description">Description</a></li><li><a href="#types">Data Types</a></li><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
<h3><a name="Key2Value">Key2Value</a></h3>
Maintain 2 lookups for 2 separate keys and 1 value.
<p>Copyright © 2011-2020 Michael Truog</p>
<p><b>Version:</b> 2.0.2 May 26 2021 18:41:37
------------------------------------------------------------------------</p>
<p><b>Authors:</b> Michael Truog (<a href="mailto:mjtruog at protonmail dot com"><tt>mjtruog at protonmail dot com</tt></a>).</p>
<h2><a name="description">Description</a></h2>
<h3><a name="Key2Value">Key2Value</a></h3>
Maintain 2 lookups for 2 separate keys and 1 value.
The interface creates a bidirectional lookup where key1 can store
multiple key2 associations to the same value.
The supplied data structure module must have dict interface functions
(unless the module is maps).
<h2><a name="types">Data Types</a></h2>
<h3 class="typedecl"><a name="type-dict_proxy">dict_proxy()</a></h3>
<p><tt>dict_proxy(Key, Value) = <a href="dict.html#type-dict">dict:dict</a>(Key, Value)</tt></p>
<h3 class="typedecl"><a name="type-key1">key1()</a></h3>
<p><tt>key1() = any()</tt></p>
<h3 class="typedecl"><a name="type-key2">key2()</a></h3>
<p><tt>key2() = any()</tt></p>
<h3 class="typedecl"><a name="type-key2value">key2value()</a></h3>
<p><tt>key2value(Key1, Key2, Value) = <a href="#type-key2value_dict">key2value_dict</a>(Key1, Key2, Value) | #key2value{module = module(), lookup1 = any(), lookup2 = any()}</tt></p>
<h3 class="typedecl"><a name="type-key2value_dict">key2value_dict()</a></h3>
<p><tt>key2value_dict(Key1, Key2, Value) = {key2value, dict, <a href="#type-dict_proxy">dict_proxy</a>(Key1, {[Key2], Value}), <a href="#type-dict_proxy">dict_proxy</a>(Key2, {[Key1], Value})}</tt></p>
<h3 class="typedecl"><a name="type-value">value()</a></h3>
<p><tt>value() = any()</tt></p>
<h2><a name="index">Function Index</a></h2>
<table width="100%" border="1" cellspacing="0" cellpadding="2" summary="function index"><tr><td valign="top"><a href="#erase-3">erase/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#erase1-2">erase1/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#erase2-2">erase2/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#fetch1-2">fetch1/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#fetch2-2">fetch2/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#find1-2">find1/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#find2-2">find2/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#fold1-3">fold1/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#fold2-3">fold2/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#is_key1-2">is_key1/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#is_key2-2">is_key2/2</a></td><td></td></tr>
<tr><td valign="top"><a href="#new-0">new/0</a></td><td></td></tr>
<tr><td valign="top"><a href="#new-1">new/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#size1-1">size1/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#size2-1">size2/1</a></td><td></td></tr>
<tr><td valign="top"><a href="#store-4">store/4</a></td><td></td></tr>
<tr><td valign="top"><a href="#update1-3">update1/3</a></td><td></td></tr>
<tr><td valign="top"><a href="#update2-3">update2/3</a></td><td></td></tr>
</table>
<h2><a name="functions">Function Details</a></h2>
<h3 class="function"><a name="erase-3">erase/3</a></h3>
<div class="spec">
<p><tt>erase(K1::<a href="#type-key1">key1()</a>, K2::<a href="#type-key2">key2()</a>, State::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> <a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="erase1-2">erase1/2</a></h3>
<div class="spec">
<p><tt>erase1(K::<a href="#type-key1">key1()</a>, State::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> <a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="erase2-2">erase2/2</a></h3>
<div class="spec">
<p><tt>erase2(K::<a href="#type-key2">key2()</a>, State::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> <a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="fetch1-2">fetch1/2</a></h3>
<div class="spec">
<p><tt>fetch1(K::<a href="#type-key1">key1()</a>, Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> {list(), any()}</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="fetch2-2">fetch2/2</a></h3>
<div class="spec">
<p><tt>fetch2(K::<a href="#type-key2">key2()</a>, Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> {list(), any()}</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="find1-2">find1/2</a></h3>
<div class="spec">
<p><tt>find1(K::<a href="#type-key1">key1()</a>, State::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> {ok, {list(), any()}} | error</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="find2-2">find2/2</a></h3>
<div class="spec">
<p><tt>find2(K::<a href="#type-key2">key2()</a>, State::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> {ok, {list(), any()}} | error</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="fold1-3">fold1/3</a></h3>
<div class="spec">
<p><tt>fold1(F::fun((<a href="#type-key1">key1()</a>, [<a href="#type-key2">key2()</a>], <a href="#type-value">value()</a>, any()) -> any()), A0::any(), State::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> any()</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="fold2-3">fold2/3</a></h3>
<div class="spec">
<p><tt>fold2(F::fun(([<a href="#type-key1">key1()</a>], <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>, any()) -> any()), A0::any(), State::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> any()</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="is_key1-2">is_key1/2</a></h3>
<div class="spec">
<p><tt>is_key1(K::<a href="#type-key1">key1()</a>, Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> boolean()</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="is_key2-2">is_key2/2</a></h3>
<div class="spec">
<p><tt>is_key2(K::<a href="#type-key2">key2()</a>, Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> boolean()</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="new-0">new/0</a></h3>
<div class="spec">
<p><tt>new() -> <a href="#type-key2value_dict">key2value_dict</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="new-1">new/1</a></h3>
<div class="spec">
<p><tt>new(Module::atom()) -> <a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="size1-1">size1/1</a></h3>
<div class="spec">
<p><tt>size1(Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> non_neg_integer()</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="size2-1">size2/1</a></h3>
<div class="spec">
<p><tt>size2(Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> non_neg_integer()</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="store-4">store/4</a></h3>
<div class="spec">
<p><tt>store(K1::<a href="#type-key1">key1()</a>, K2::<a href="#type-key2">key2()</a>, V::<a href="#type-value">value()</a>, Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> <a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="update1-3">update1/3</a></h3>
<div class="spec">
<p><tt>update1(K1::<a href="#type-key1">key1()</a>, F::fun((<a href="#type-value">value()</a>) -> <a href="#type-value">value()</a>), Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> <a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<h3 class="function"><a name="update2-3">update2/3</a></h3>
<div class="spec">
<p><tt>update2(K2::<a href="#type-key2">key2()</a>, F::fun((<a href="#type-value">value()</a>) -> <a href="#type-value">value()</a>), Key2value::<a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)) -> <a href="#type-key2value">key2value</a>(<a href="#type-key1">key1()</a>, <a href="#type-key2">key2()</a>, <a href="#type-value">value()</a>)</tt><br></p>
<p> </p>
</div>
<hr>
<div class="navbar"><a name="#navbar_bottom"></a><table width="100%" border="0" cellspacing="0" cellpadding="2" summary="navigation bar"><tr><td><a href="overview-summary.html" target="overviewFrame">Overview</a></td><td><a href="http://www.erlang.org/"><img src="erlang.png" align="right" border="0" alt="erlang logo"></a></td></tr></table></div>
<p><i>Generated by EDoc</i></p>
</body>
</html>