mirror of
https://github.com/ubf/ubf.git
synced 2026-04-24 13:45:59 +00:00
193 lines
8.5 KiB
HTML
193 lines
8.5 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>Module contracts</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 contracts</h1>
|
|
<ul class="index"><li><a href="#index">Function Index</a></li><li><a href="#functions">Function Details</a></li></ul>
|
|
|
|
|
|
<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="#bad_zip-3">bad_zip/3*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#bool_fudge-1">bool_fudge/1*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#checkCallback-3">checkCallback/3</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#checkIn-3">checkIn/3</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#checkOut-4">checkOut/4</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#checkType-3">checkType/3</a></td><td>Given a contract type name, a term to check against that
|
|
contract type, and a contract module name, verify the term against
|
|
that contract's type.</td></tr>
|
|
<tr><td valign="top"><a href="#checkType2-3">checkType2/3*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#checkType_investigate_deeper-3">checkType_investigate_deeper/3*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term-4">check_term/4*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term_attr-3">check_term_attr/3*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term_attrlist-3">check_term_attrlist/3*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term_list-4">check_term_list/4*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term_predef-2">check_term_predef/2*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term_prim-6">check_term_prim/6*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term_range-3">check_term_range/3*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#check_term_seq-4">check_term_seq/4*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#getContract-1">getContract/1</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#isType-3">isType/3</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#isTypeAttr-2">isTypeAttr/2</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#is_ascii-1">is_ascii/1*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#is_asciiprintable-1">is_asciiprintable/1*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#is_nonempty-1">is_nonempty/1*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#is_nonundefined-1">is_nonundefined/1*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#is_proplist-1">is_proplist/1*</a></td><td></td></tr>
|
|
<tr><td valign="top"><a href="#is_string-1">is_string/1*</a></td><td></td></tr>
|
|
</table>
|
|
|
|
<h2><a name="functions">Function Details</a></h2>
|
|
|
|
<h3 class="function"><a name="bad_zip-3">bad_zip/3 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>bad_zip(TypesList, TermList, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="bool_fudge-1">bool_fudge/1 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>bool_fudge(L) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="checkCallback-3">checkCallback/3</a></h3>
|
|
<div class="spec">
|
|
<p><tt>checkCallback(Msg, ThisState, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="checkIn-3">checkIn/3</a></h3>
|
|
<div class="spec">
|
|
<p><tt>checkIn(Msg, State, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="checkOut-4">checkOut/4</a></h3>
|
|
<div class="spec">
|
|
<p><tt>checkOut(MsgOut, StateOut, FSM2, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="checkType-3">checkType/3</a></h3>
|
|
<div class="spec">
|
|
<p><tt>checkType(HumanType::<a href="#type-contract_type_name_atom">contract_type_name_atom()</a>, Term::term(), Mod::<a href="#type-contract_module_name_atom">contract_module_name_atom()</a>) -> yup | <a href="#type-error_hints_term_only_human_readable_sorry">error_hints_term_only_human_readable_sorry()</a></tt></p>
|
|
</div><p><p>Given a contract type name, a term to check against that
|
|
contract type, and a contract module name, verify the term against
|
|
that contract's type.</p>
|
|
|
|
Example usage from the irc_plugin.con contract:
|
|
<ul>
|
|
<li> contracts:checkType(ok, ok, irc_plugin). </li>
|
|
<li> contracts:checkType(bool, true, irc_plugin). </li>
|
|
<li> contracts:checkType(nick, {'#S', "foo"}, irc_plugin). </li>
|
|
<li> contracts:checkType(joinEvent, {joins, {'#S', "nck"}, {'#S', "grp"}}, irc_plugin). </li>
|
|
<li> contracts:checkType(joinEvent, {joins, {'#S', "nck"}, {'#S', foo_atom}}, irc_plugin). </li>
|
|
</ul>
|
|
|
|
Wow, this is a gawdawful-brute-force-don't-know-what-I'm-doing
|
|
mess. But it works, in its brute-force way, as long as you don't
|
|
try to have a computer parse the output in error cases.</p>
|
|
<p><b><font color="red">To do</font></b><ul><li><font color="red">implementation needs updating for new primitives</font></li></ul></p>
|
|
|
|
<h3 class="function"><a name="checkType2-3">checkType2/3 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>checkType2(Type, Term, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="checkType_investigate_deeper-3">checkType_investigate_deeper/3 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>checkType_investigate_deeper(Type, TermL, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term-4">check_term/4 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term(Check, X, Level, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term_attr-3">check_term_attr/3 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term_attr(Type, X2, Val) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term_attrlist-3">check_term_attrlist/3 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term_attrlist(Type, Attrs, Val) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term_list-4">check_term_list/4 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term_list(Args, T, Level, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term_predef-2">check_term_predef/2 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term_predef(X1, X) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term_prim-6">check_term_prim/6 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term_prim(X1, X2, TypeDef, X, Level, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term_range-3">check_term_range/3 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term_range(Min, Max, X) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="check_term_seq-4">check_term_seq/4 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>check_term_seq(Args, L, Level, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="getContract-1">getContract/1</a></h3>
|
|
<div class="spec">
|
|
<p><tt>getContract(Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="isType-3">isType/3</a></h3>
|
|
<div class="spec">
|
|
<p><tt>isType(Type, X, Mod) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="isTypeAttr-2">isTypeAttr/2</a></h3>
|
|
<div class="spec">
|
|
<p><tt>isTypeAttr(X1, X2) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="is_ascii-1">is_ascii/1 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>is_ascii(A) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="is_asciiprintable-1">is_asciiprintable/1 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>is_asciiprintable(A) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="is_nonempty-1">is_nonempty/1 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>is_nonempty(X1) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="is_nonundefined-1">is_nonundefined/1 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>is_nonundefined(X1) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="is_proplist-1">is_proplist/1 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>is_proplist(T) -> any()</tt></p>
|
|
</div>
|
|
|
|
<h3 class="function"><a name="is_string-1">is_string/1 *</a></h3>
|
|
<div class="spec">
|
|
<p><tt>is_string(A) -> any()</tt></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 EDoc, $Id$</i></p>
|
|
</body>
|
|
</html>
|