Sophie

Sophie

distrib > Mandriva > 2007.1 > i586 > by-pkgid > a46e28cb764f635f7b2fec044015fb1f > files > 12

libdatrie0-devel-0.1.1-2mdv2007.1.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>libdatrie: datrie/darray.h File Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.1 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
    <li id="current"><a href="files.html"><span>Files</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    <li><a href="globals.html"><span>Globals</span></a></li>
  </ul></div>
<h1>datrie/darray.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Double-array trie structure. 
<p>

<p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#696a2e934ab5da03e828a407abb7f7b5">da_is_walkable</a>(d, s, c)&nbsp;&nbsp;&nbsp;(da_get_check ((d), da_get_base ((d), (s)) + (c)) == (s))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test walkability in double-array structure.  <a href="#696a2e934ab5da03e828a407abb7f7b5"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b2407c9ab6742127a7941b7526f3394d"></a><!-- doxytag: member="darray.h::DArray" ref="b2407c9ab6742127a7941b7526f3394d" args="" -->
typedef _DArray&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Double-array structure type. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef Bool(*)&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a> (const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> sep_node, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Double-array entry enumeration function.  <a href="#b1bb58936b16076bcb69a47c0f38b120"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#2cd9bb4cc1007b7f25fc4cab7c2b1a1d">da_open</a> (const char *path, const char *name, <a class="el" href="triedefs_8h.html#4b93aa611f9dd3e908e8973520cca29e">TrieIOMode</a> mode)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open double-array from file.  <a href="#2cd9bb4cc1007b7f25fc4cab7c2b1a1d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a899fdef97bebfd77ea050b2e5e28109">da_close</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close double-array data.  <a href="#a899fdef97bebfd77ea050b2e5e28109"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#9c5f97be70436ad2d231073e45f21add">da_save</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save double-array data.  <a href="#9c5f97be70436ad2d231073e45f21add"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#83be41a66c6f5b9fed33b5cb2b46fdc1">da_get_root</a> (const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get root state.  <a href="#83be41a66c6f5b9fed33b5cb2b46fdc1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#757b24229c390d5bcc491e55cd35c3d0">da_get_base</a> (const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get BASE cell.  <a href="#757b24229c390d5bcc491e55cd35c3d0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#e2159ccfde584f1d40c1f9ca2e6670b4">da_get_check</a> (const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get CHECK cell.  <a href="#e2159ccfde584f1d40c1f9ca2e6670b4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#c1f019557f488b1f710a2f57f2a3de2e">da_set_base</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> val)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set BASE cell.  <a href="#c1f019557f488b1f710a2f57f2a3de2e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#45e3870b86200e4849552cc9cb106785">da_set_check</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> val)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set CHECK cell.  <a href="#45e3870b86200e4849552cc9cb106785"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#8c5b5fb5f16b1b6b85a47ce7afceaf4c">da_walk</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> *s, <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Walk in double-array structure.  <a href="#8c5b5fb5f16b1b6b85a47ce7afceaf4c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#cd8329c4b927c66b21b4dab225a4ea92">da_insert_branch</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Insert a branch from trie node.  <a href="#cd8329c4b927c66b21b4dab225a4ea92"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#acab185ecc4b3c88e8923902bb238b70">da_prune</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prune the single branch.  <a href="#acab185ecc4b3c88e8923902bb238b70"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#1b07a3a867a5fa016293295ea06880dc">da_enumerate</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a> enum_func, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate entries stored in double-array structure.  <a href="#1b07a3a867a5fa016293295ea06880dc"></a><br></td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="696a2e934ab5da03e828a407abb7f7b5"></a><!-- doxytag: member="darray.h::da_is_walkable" ref="696a2e934ab5da03e828a407abb7f7b5" args="(d, s, c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define da_is_walkable          </td>
          <td>(</td>
          <td class="paramtype">d,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">s,         <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">c&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;(da_get_check ((d), da_get_base ((d), (s)) + (c)) == (s))</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test walkability in double-array structure. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: current state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>: the input character</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean indicating walkability</dd></dl>
Test if there is a transition from state <em>s</em> with input character <em>c</em>. 
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="b1bb58936b16076bcb69a47c0f38b120"></a><!-- doxytag: member="darray.h::DAEnumFunc" ref="b1bb58936b16076bcb69a47c0f38b120" args="(const TrieChar *key, TrieIndex sep_node, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef Bool(*) <a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a>(const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> sep_node, void *user_data)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Double-array entry enumeration function. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>: the key of the entry, up to <em>sep_node</em> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sep_node</em>&nbsp;</td><td>: the separate node of the entry </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>: user-supplied data</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE to continue enumeration, FALSE to stop </dd></dl>

</div>
</div><p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="a899fdef97bebfd77ea050b2e5e28109"></a><!-- doxytag: member="darray.h::da_close" ref="a899fdef97bebfd77ea050b2e5e28109" args="(DArray *d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int da_close           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close double-array data. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array data</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non-zero on failure</dd></dl>
Close the given double-array data. If <em>d</em> was openned for writing, all pending changes will be saved to file. 
</div>
</div><p>
<a class="anchor" name="1b07a3a867a5fa016293295ea06880dc"></a><!-- doxytag: member="darray.h::da_enumerate" ref="1b07a3a867a5fa016293295ea06880dc" args="(DArray *d, DAEnumFunc enum_func, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool da_enumerate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a>&nbsp;</td>
          <td class="paramname"> <em>enum_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>user_data</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Enumerate entries stored in double-array structure. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enum_func</em>&nbsp;</td><td>: the callback function to be called on each separate node </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>user_data</em>&nbsp;</td><td>: user-supplied data to send as an argument to <em>enum_func</em> </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating whether all the keys are visited</dd></dl>
Enumerate all keys stored in double-array structure. For each entry, the user-supplied <em>enum_func</em> callback function is called, with the entry key, the separate node, and user-supplied data. Returning FALSE from such callback will stop enumeration and return FALSE. 
</div>
</div><p>
<a class="anchor" name="757b24229c390d5bcc491e55cd35c3d0"></a><!-- doxytag: member="darray.h::da_get_base" ref="757b24229c390d5bcc491e55cd35c3d0" args="(const DArray *d, TrieIndex s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_get_base           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get BASE cell. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: the double-array state to get data</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the BASE cell value for the given state</dd></dl>
Get BASE cell value for the given state. 
</div>
</div><p>
<a class="anchor" name="e2159ccfde584f1d40c1f9ca2e6670b4"></a><!-- doxytag: member="darray.h::da_get_check" ref="e2159ccfde584f1d40c1f9ca2e6670b4" args="(const DArray *d, TrieIndex s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_get_check           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get CHECK cell. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: the double-array state to get data</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the CHECK cell value for the given state</dd></dl>
Get CHECK cell value for the given state. 
</div>
</div><p>
<a class="anchor" name="83be41a66c6f5b9fed33b5cb2b46fdc1"></a><!-- doxytag: member="darray.h::da_get_root" ref="83be41a66c6f5b9fed33b5cb2b46fdc1" args="(const DArray *d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_get_root           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get root state. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array data</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>root state of the <em>index</em> set, or TRIE_INDEX_ERROR on failure</dd></dl>
Get root state for stepwise walking. 
</div>
</div><p>
<a class="anchor" name="cd8329c4b927c66b21b4dab225a4ea92"></a><!-- doxytag: member="darray.h::da_insert_branch" ref="cd8329c4b927c66b21b4dab225a4ea92" args="(DArray *d, TrieIndex s, TrieChar c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_insert_branch           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a>&nbsp;</td>
          <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Insert a branch from trie node. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: the state to add branch to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>: the character for the branch label</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the new node</dd></dl>
Insert a new arc labelled with character <em>c</em> from the trie node represented by index <em>s</em> in double-array structure <em>d</em>. Note that it assumes that no such arc exists before inserting. 
</div>
</div><p>
<a class="anchor" name="2cd9bb4cc1007b7f25fc4cab7c2b1a1d"></a><!-- doxytag: member="darray.h::da_open" ref="2cd9bb4cc1007b7f25fc4cab7c2b1a1d" args="(const char *path, const char *name, TrieIOMode mode)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a>* da_open           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>path</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#4b93aa611f9dd3e908e8973520cca29e">TrieIOMode</a>&nbsp;</td>
          <td class="paramname"> <em>mode</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Open double-array from file. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>path</em>&nbsp;</td><td>: the path that stores the double-array files </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>: the name of the double-array (not actual file name) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mode</em>&nbsp;</td><td>: openning mode, read or write</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>a pointer to the openned double-array, NULL on failure</dd></dl>
Open a double-array structure of given name. Note that <em>name</em> here does not mean the actual file name. Rather, the file name will be inferred by the name. 
</div>
</div><p>
<a class="anchor" name="acab185ecc4b3c88e8923902bb238b70"></a><!-- doxytag: member="darray.h::da_prune" ref="acab185ecc4b3c88e8923902bb238b70" args="(DArray *d, TrieIndex s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void da_prune           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>s</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Prune the single branch. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: the dangling state to prune off</td></tr>
  </table>
</dl>
Prune off a non-separate path up from the final state <em>s</em>. If <em>s</em> still has some children states, it does nothing. Otherwise, it deletes the node and all its parents which become non-separate. 
</div>
</div><p>
<a class="anchor" name="9c5f97be70436ad2d231073e45f21add"></a><!-- doxytag: member="darray.h::da_save" ref="9c5f97be70436ad2d231073e45f21add" args="(DArray *d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int da_save           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Save double-array data. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array data</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non-zero on failure</dd></dl>
If <em>double-array</em> data was openned for writing, save all pending changes to file. 
</div>
</div><p>
<a class="anchor" name="c1f019557f488b1f710a2f57f2a3de2e"></a><!-- doxytag: member="darray.h::da_set_base" ref="c1f019557f488b1f710a2f57f2a3de2e" args="(DArray *d, TrieIndex s, TrieIndex val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void da_set_base           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set BASE cell. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: the double-array state to get data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>: the value to set</td></tr>
  </table>
</dl>
Set BASE cell for the given state to the given value. 
</div>
</div><p>
<a class="anchor" name="45e3870b86200e4849552cc9cb106785"></a><!-- doxytag: member="darray.h::da_set_check" ref="45e3870b86200e4849552cc9cb106785" args="(DArray *d, TrieIndex s, TrieIndex val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void da_set_check           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a>&nbsp;</td>
          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set CHECK cell. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: the double-array state to get data </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>: the value to set</td></tr>
  </table>
</dl>
Set CHECK cell for the given state to the given value. 
</div>
</div><p>
<a class="anchor" name="8c5b5fb5f16b1b6b85a47ce7afceaf4c"></a><!-- doxytag: member="darray.h::da_walk" ref="8c5b5fb5f16b1b6b85a47ce7afceaf4c" args="(DArray *d, TrieIndex *s, TrieChar c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool da_walk           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *&nbsp;</td>
          <td class="paramname"> <em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a>&nbsp;</td>
          <td class="paramname"> <em>c</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Walk in double-array structure. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>: the double-array structure </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>s</em>&nbsp;</td><td>: current state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>: the input character</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean indicating success</dd></dl>
Walk the double-array trie from state <em>*s</em>, using input character <em>c</em>. If there exists an edge from <em>*s</em> with arc labeled <em>c</em>, this function returns TRUE and <em>*s</em> is updated to the new state. Otherwise, it returns FALSE and <em>*s</em> is left unchanged. 
</div>
</div><p>
<hr size="1"><address style="align: right;"><small>Generated on Mon Jan 22 12:43:28 2007 for libdatrie by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
</body>
</html>