Sophie

Sophie

distrib > Fedora > 16 > x86_64 > by-pkgid > a56af13763747629d8dc453763fd5281 > files > 28

libthai-devel-0.1.14-4.fc15.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>libthai: /builddir/build/BUILD/libthai-0.1.14/libdatrie/datrie/darray.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.3 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">libthai&#160;<span id="projectnumber">0.1.14</span></div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#define-members">Defines</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<h1>/builddir/build/BUILD/libthai-0.1.14/libdatrie/datrie/darray.h File Reference</h1>  </div>
</div>
<div class="contents">

<p>Double-array trie structure.  
<a href="#_details">More...</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="define-members"></a>
Defines</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a696a2e934ab5da03e828a407abb7f7b5">da_is_walkable</a>(d, s, c)&#160;&#160;&#160;(da_get_check ((d), da_get_base ((d), (s)) + (c)) == (s))</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Test walkability in double-array structure.  <a href="#a696a2e934ab5da03e828a407abb7f7b5"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab2407c9ab6742127a7941b7526f3394d"></a><!-- doxytag: member="darray.h::DArray" ref="ab2407c9ab6742127a7941b7526f3394d" args="" -->
typedef struct _DArray&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Double-array structure type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">typedef Bool(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#aa15dc449117227048b067a963a535a83">DAEnumFunc</a> )(const <a class="el" href="triedefs_8h.html#a0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> sep_node, void *user_data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Double-array entry enumeration function.  <a href="#aa15dc449117227048b067a963a535a83"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#af2cafb33339e857b7d1b9371dbc71fff">da_new</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new double-array object.  <a href="#af2cafb33339e857b7d1b9371dbc71fff"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a645ce0075ecbb5c0708f690142d77716">da_read</a> (FILE *file)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read double-array data from file.  <a href="#a645ce0075ecbb5c0708f690142d77716"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#af11a0eefc3f4bf1e7bca531a810b4464">da_free</a> (<a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Free double-array data.  <a href="#af11a0eefc3f4bf1e7bca531a810b4464"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#adbee7a2cd46dc23e2cea198a750931df">da_write</a> (const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, FILE *file)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Write double-array data.  <a href="#adbee7a2cd46dc23e2cea198a750931df"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a83be41a66c6f5b9fed33b5cb2b46fdc1">da_get_root</a> (const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get root state.  <a href="#a83be41a66c6f5b9fed33b5cb2b46fdc1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a757b24229c390d5bcc491e55cd35c3d0">da_get_base</a> (const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get BASE cell.  <a href="#a757b24229c390d5bcc491e55cd35c3d0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#ae2159ccfde584f1d40c1f9ca2e6670b4">da_get_check</a> (const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Get CHECK cell.  <a href="#ae2159ccfde584f1d40c1f9ca2e6670b4"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#ac1f019557f488b1f710a2f57f2a3de2e">da_set_base</a> (<a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> val)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set BASE cell.  <a href="#ac1f019557f488b1f710a2f57f2a3de2e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a45e3870b86200e4849552cc9cb106785">da_set_check</a> (<a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> val)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Set CHECK cell.  <a href="#a45e3870b86200e4849552cc9cb106785"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a843674fcb4cf6a490c139a9c61c085d3">da_walk</a> (const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> *s, <a class="el" href="triedefs_8h.html#a0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Walk in double-array structure.  <a href="#a843674fcb4cf6a490c139a9c61c085d3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#acd8329c4b927c66b21b4dab225a4ea92">da_insert_branch</a> (<a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#a0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Insert a branch from trie node.  <a href="#acd8329c4b927c66b21b4dab225a4ea92"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#aacab185ecc4b3c88e8923902bb238b70">da_prune</a> (<a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Prune the single branch.  <a href="#aacab185ecc4b3c88e8923902bb238b70"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#aa01a2be317578a0792b0187543f9cc71">da_prune_upto</a> (<a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> p, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> s)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Prune the single branch up to given parent.  <a href="#aa01a2be317578a0792b0187543f9cc71"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#aa3a7f6b1b60e9668326783ac2539e778">da_enumerate</a> (const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="darray_8h.html#aa15dc449117227048b067a963a535a83">DAEnumFunc</a> enum_func, void *user_data)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumerate entries stored in double-array structure.  <a href="#aa3a7f6b1b60e9668326783ac2539e778"></a><br/></td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Double-array trie structure. </p>
</div><hr/><h2>Define Documentation</h2>
<a class="anchor" id="a696a2e934ab5da03e828a407abb7f7b5"></a><!-- doxytag: member="darray.h::da_is_walkable" ref="a696a2e934ab5da03e828a407abb7f7b5" 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">&#160;</td>
          <td class="paramname">d, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">c&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(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><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array structure </td></tr>
    <tr><td class="paramname">s</td><td>: current state </td></tr>
    <tr><td class="paramname">c</td><td>: the input character</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean indicating walkability</dd></dl>
<p>Test if there is a transition from state <em>s</em> with input character <em>c</em>. </p>

</div>
</div>
<hr/><h2>Typedef Documentation</h2>
<a class="anchor" id="aa15dc449117227048b067a963a535a83"></a><!-- doxytag: member="darray.h::DAEnumFunc" ref="aa15dc449117227048b067a963a535a83" 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#aa15dc449117227048b067a963a535a83">DAEnumFunc</a>)(const <a class="el" href="triedefs_8h.html#a0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> sep_node, void *user_data)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Double-array entry enumeration function. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">key</td><td>: the key of the entry, up to <em>sep_node</em> </td></tr>
    <tr><td class="paramname">sep_node</td><td>: the separate node of the entry </td></tr>
    <tr><td class="paramname">user_data</td><td>: user-supplied data</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>TRUE to continue enumeration, FALSE to stop </dd></dl>

</div>
</div>
<hr/><h2>Function Documentation</h2>
<a class="anchor" id="aa3a7f6b1b60e9668326783ac2539e778"></a><!-- doxytag: member="darray.h::da_enumerate" ref="aa3a7f6b1b60e9668326783ac2539e778" args="(const 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">const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#aa15dc449117227048b067a963a535a83">DAEnumFunc</a>&#160;</td>
          <td class="paramname"><em>enum_func</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>user_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Enumerate entries stored in double-array structure. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array structure </td></tr>
    <tr><td class="paramname">enum_func</td><td>: the callback function to be called on each separate node </td></tr>
    <tr><td class="paramname">user_data</td><td>: user-supplied data to send as an argument to <em>enum_func</em> </td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean value indicating whether all the keys are visited</dd></dl>
<p>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. </p>

</div>
</div>
<a class="anchor" id="af11a0eefc3f4bf1e7bca531a810b4464"></a><!-- doxytag: member="darray.h::da_free" ref="af11a0eefc3f4bf1e7bca531a810b4464" args="(DArray *d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void da_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</td>
          <td class="paramname"><em>d</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Free double-array data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array data</td></tr>
  </table>
  </dd>
</dl>
<p>Free the given double-array data. </p>

</div>
</div>
<a class="anchor" id="a757b24229c390d5bcc491e55cd35c3d0"></a><!-- doxytag: member="darray.h::da_get_base" ref="a757b24229c390d5bcc491e55cd35c3d0" 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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> da_get_base </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get BASE cell. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array data </td></tr>
    <tr><td class="paramname">s</td><td>: the double-array state to get data</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the BASE cell value for the given state</dd></dl>
<p>Get BASE cell value for the given state. </p>

</div>
</div>
<a class="anchor" id="ae2159ccfde584f1d40c1f9ca2e6670b4"></a><!-- doxytag: member="darray.h::da_get_check" ref="ae2159ccfde584f1d40c1f9ca2e6670b4" 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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> da_get_check </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get CHECK cell. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array data </td></tr>
    <tr><td class="paramname">s</td><td>: the double-array state to get data</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the CHECK cell value for the given state</dd></dl>
<p>Get CHECK cell value for the given state. </p>

</div>
</div>
<a class="anchor" id="a83be41a66c6f5b9fed33b5cb2b46fdc1"></a><!-- doxytag: member="darray.h::da_get_root" ref="a83be41a66c6f5b9fed33b5cb2b46fdc1" args="(const DArray *d)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> da_get_root </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</td>
          <td class="paramname"><em>d</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Get root state. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array data</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>root state of the <em>index</em> set, or TRIE_INDEX_ERROR on failure</dd></dl>
<p>Get root state for stepwise walking. </p>

</div>
</div>
<a class="anchor" id="acd8329c4b927c66b21b4dab225a4ea92"></a><!-- doxytag: member="darray.h::da_insert_branch" ref="acd8329c4b927c66b21b4dab225a4ea92" 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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> da_insert_branch </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</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#a0d28476db8e582153531f3e098e1f708">TrieChar</a>&#160;</td>
          <td class="paramname"><em>c</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Insert a branch from trie node. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array structure </td></tr>
    <tr><td class="paramname">s</td><td>: the state to add branch to </td></tr>
    <tr><td class="paramname">c</td><td>: the character for the branch label</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the index of the new node</dd></dl>
<p>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. </p>

</div>
</div>
<a class="anchor" id="af2cafb33339e857b7d1b9371dbc71fff"></a><!-- doxytag: member="darray.h::da_new" ref="af2cafb33339e857b7d1b9371dbc71fff" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a>* da_new </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Create a new double-array object. </p>
<p>Create a new empty doubla-array object. </p>

</div>
</div>
<a class="anchor" id="aacab185ecc4b3c88e8923902bb238b70"></a><!-- doxytag: member="darray.h::da_prune" ref="aacab185ecc4b3c88e8923902bb238b70" 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#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Prune the single branch. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array structure </td></tr>
    <tr><td class="paramname">s</td><td>: the dangling state to prune off</td></tr>
  </table>
  </dd>
</dl>
<p>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. </p>

</div>
</div>
<a class="anchor" id="aa01a2be317578a0792b0187543f9cc71"></a><!-- doxytag: member="darray.h::da_prune_upto" ref="aa01a2be317578a0792b0187543f9cc71" args="(DArray *d, TrieIndex p, TrieIndex s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void da_prune_upto </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td>
          <td class="paramname"><em>p</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td>
          <td class="paramname"><em>s</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Prune the single branch up to given parent. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array structure </td></tr>
    <tr><td class="paramname">p</td><td>: the parent up to which to be pruned </td></tr>
    <tr><td class="paramname">s</td><td>: the dangling state to prune off</td></tr>
  </table>
  </dd>
</dl>
<p>Prune off a non-separate path up from the final state <em>s</em> to the given parent <em>p</em>. The prunning stop when either the parent <em>p</em> is met, or a first non-separate node is found. </p>

</div>
</div>
<a class="anchor" id="a645ce0075ecbb5c0708f690142d77716"></a><!-- doxytag: member="darray.h::da_read" ref="a645ce0075ecbb5c0708f690142d77716" args="(FILE *file)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a>* da_read </td>
          <td>(</td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>file</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read double-array data from file. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">file</td><td>: the file to read</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the openned double-array, NULL on failure</dd></dl>
<p>Read double-array data from the opened file, starting from the current file pointer until the end of double array data block. On return, the file pointer is left at the position after the read block. </p>

</div>
</div>
<a class="anchor" id="ac1f019557f488b1f710a2f57f2a3de2e"></a><!-- doxytag: member="darray.h::da_set_base" ref="ac1f019557f488b1f710a2f57f2a3de2e" 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#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set BASE cell. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array data </td></tr>
    <tr><td class="paramname">s</td><td>: the double-array state to get data </td></tr>
    <tr><td class="paramname">val</td><td>: the value to set</td></tr>
  </table>
  </dd>
</dl>
<p>Set BASE cell for the given state to the given value. </p>

</div>
</div>
<a class="anchor" id="a45e3870b86200e4849552cc9cb106785"></a><!-- doxytag: member="darray.h::da_set_check" ref="a45e3870b86200e4849552cc9cb106785" 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#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a>&#160;</td>
          <td class="paramname"><em>val</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Set CHECK cell. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array data </td></tr>
    <tr><td class="paramname">s</td><td>: the double-array state to get data </td></tr>
    <tr><td class="paramname">val</td><td>: the value to set</td></tr>
  </table>
  </dd>
</dl>
<p>Set CHECK cell for the given state to the given value. </p>

</div>
</div>
<a class="anchor" id="a843674fcb4cf6a490c139a9c61c085d3"></a><!-- doxytag: member="darray.h::da_walk" ref="a843674fcb4cf6a490c139a9c61c085d3" args="(const 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">const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</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#ad3530f975e9bcdb8ef00eb24d7f5bdbc">TrieIndex</a> *&#160;</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#a0d28476db8e582153531f3e098e1f708">TrieChar</a>&#160;</td>
          <td class="paramname"><em>c</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Walk in double-array structure. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array structure </td></tr>
    <tr><td class="paramname">s</td><td>: current state </td></tr>
    <tr><td class="paramname">c</td><td>: the input character</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean indicating success</dd></dl>
<p>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. </p>

</div>
</div>
<a class="anchor" id="adbee7a2cd46dc23e2cea198a750931df"></a><!-- doxytag: member="darray.h::da_write" ref="adbee7a2cd46dc23e2cea198a750931df" args="(const DArray *d, FILE *file)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int da_write </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="darray_8h.html#ab2407c9ab6742127a7941b7526f3394d">DArray</a> *&#160;</td>
          <td class="paramname"><em>d</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&#160;</td>
          <td class="paramname"><em>file</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Write double-array data. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">d</td><td>: the double-array data </td></tr>
    <tr><td class="paramname">file</td><td>: the file to write to</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success, non-zero on failure</dd></dl>
<p>Write double-array data to the given <em>file</em>, starting from the current file pointer. On return, the file pointer is left after the double-array data block. </p>

</div>
</div>
</div>
<hr size="1"><address style="text-align: right;"><small>
Generated for libthai by&nbsp;<a href="http://www.doxygen.org/
index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 
1.7.3</small></address>
</body>
</html>