Sophie

Sophie

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

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/trie.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/trie.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2>
Trie data type and functions. 
<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="trie_8h.html#dfbfb4a5252ad25e5e24e59a125b12de">trie_state_is_terminal</a>(s)&nbsp;&nbsp;&nbsp;trie_state_is_walkable((s),TRIE_CHAR_TERM)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for terminal state.  <a href="#dfbfb4a5252ad25e5e24e59a125b12de"></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="f5808be7fb71b1ef0b1dcbe55da603ce"></a><!-- doxytag: member="trie.h::Trie" ref="f5808be7fb71b1ef0b1dcbe55da603ce" args="" -->
typedef <a class="el" href="struct__Trie.html">_Trie</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#f5808be7fb71b1ef0b1dcbe55da603ce">Trie</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Trie data 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="trie_8h.html#d683c531df730771bca5ee4eb2b370e9">TrieEnumFunc</a> (const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> key_data, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Trie enumeration function.  <a href="#d683c531df730771bca5ee4eb2b370e9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2b6aa870c546b566c3f3a4d13f74d066"></a><!-- doxytag: member="trie.h::TrieState" ref="2b6aa870c546b566c3f3a4d13f74d066" args="" -->
typedef <a class="el" href="struct__TrieState.html">_TrieState</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#2b6aa870c546b566c3f3a4d13f74d066">TrieState</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Trie walking state. <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="struct__Trie.html">Trie</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#235b27eefdd26b7279de37e6577b45af">trie_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 a trie.  <a href="#235b27eefdd26b7279de37e6577b45af"></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="trie_8h.html#59a6350520466fa615099fdd2670aee2">trie_close</a> (<a class="el" href="struct__Trie.html">Trie</a> *trie)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close a trie.  <a href="#59a6350520466fa615099fdd2670aee2"></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="trie_8h.html#7f53ba1b78c9e2743255034568726e6b">trie_save</a> (<a class="el" href="struct__Trie.html">Trie</a> *trie)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save a trie.  <a href="#7f53ba1b78c9e2743255034568726e6b"></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="trie_8h.html#22721418148010c465c28c6c07847c7c">trie_retrieve</a> (<a class="el" href="struct__Trie.html">Trie</a> *trie, const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> *o_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve an entry from trie.  <a href="#22721418148010c465c28c6c07847c7c"></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="trie_8h.html#787c3d78e789acb864fd0e9e446c20aa">trie_store</a> (<a class="el" href="struct__Trie.html">Trie</a> *trie, const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store a value for an entry to trie.  <a href="#787c3d78e789acb864fd0e9e446c20aa"></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="trie_8h.html#d62f21df004c2e8a75093885becaa6c7">trie_delete</a> (<a class="el" href="struct__Trie.html">Trie</a> *trie, const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an entry from trie.  <a href="#d62f21df004c2e8a75093885becaa6c7"></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="trie_8h.html#8c8e623d850e57bcccb8bf7f7b4b708e">trie_enumerate</a> (<a class="el" href="struct__Trie.html">Trie</a> *trie, <a class="el" href="trie_8h.html#d683c531df730771bca5ee4eb2b370e9">TrieEnumFunc</a> enum_func, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate entries in trie.  <a href="#8c8e623d850e57bcccb8bf7f7b4b708e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct__TrieState.html">TrieState</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a8227cd999db4750b7a557cc653ea7c0">trie_root</a> (<a class="el" href="struct__Trie.html">Trie</a> *trie)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get root state of a trie.  <a href="#a8227cd999db4750b7a557cc653ea7c0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="struct__TrieState.html">TrieState</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#59c254bb5e1d69031f2fa6203418b576">trie_state_clone</a> (const <a class="el" href="struct__TrieState.html">TrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clone a trie state.  <a href="#59c254bb5e1d69031f2fa6203418b576"></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="trie_8h.html#c0cebb9a610314c2bb8348c73c4303ce">trie_state_free</a> (<a class="el" href="struct__TrieState.html">TrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free a trie state.  <a href="#c0cebb9a610314c2bb8348c73c4303ce"></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="trie_8h.html#84e7cb79d0bf4d078a762cdec6be9419">trie_state_rewind</a> (<a class="el" href="struct__TrieState.html">TrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rewind a trie state.  <a href="#84e7cb79d0bf4d078a762cdec6be9419"></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="trie_8h.html#f22cadd94d58aaf4e07780da705d016f">trie_state_walk</a> (<a class="el" href="struct__TrieState.html">TrieState</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 the trie from the state.  <a href="#f22cadd94d58aaf4e07780da705d016f"></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="trie_8h.html#c4d64eaebbba333dc375fdd4b07387d2">trie_state_is_walkable</a> (const <a class="el" href="struct__TrieState.html">TrieState</a> *s, <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test walkability of character from state.  <a href="#c4d64eaebbba333dc375fdd4b07387d2"></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="trie_8h.html#a5d19b09795aef0e17ddc1398d50120f">trie_state_is_leaf</a> (const <a class="el" href="struct__TrieState.html">TrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for leaf state.  <a href="#a5d19b09795aef0e17ddc1398d50120f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#d4716911c7afa919b0e20132e19b7baf">trie_state_get_data</a> (const <a class="el" href="struct__TrieState.html">TrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get data from leaf state.  <a href="#d4716911c7afa919b0e20132e19b7baf"></a><br></td></tr>
</table>
<hr><h2>Define Documentation</h2>
<a class="anchor" name="dfbfb4a5252ad25e5e24e59a125b12de"></a><!-- doxytag: member="trie.h::trie_state_is_terminal" ref="dfbfb4a5252ad25e5e24e59a125b12de" args="(s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define trie_state_is_terminal          </td>
          <td>(</td>
          <td class="paramtype">s&nbsp;</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%">&nbsp;&nbsp;&nbsp;trie_state_is_walkable((s),TRIE_CHAR_TERM)</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check for terminal 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>s</em>&nbsp;</td><td>: the state to check</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating whether it is a terminal state</dd></dl>
Check if the given state is a terminal state. A leaf state is a trie state that terminates a key, and stores a value associated with the key. 
</div>
</div><p>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="d683c531df730771bca5ee4eb2b370e9"></a><!-- doxytag: member="trie.h::TrieEnumFunc" ref="d683c531df730771bca5ee4eb2b370e9" args="(const TrieChar *key, TrieData key_data, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef Bool(*) <a class="el" href="trie_8h.html#d683c531df730771bca5ee4eb2b370e9">TrieEnumFunc</a>(const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> key_data, void *user_data)          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Trie 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 </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>: the data of the entry</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="59a6350520466fa615099fdd2670aee2"></a><!-- doxytag: member="trie.h::trie_close" ref="59a6350520466fa615099fdd2670aee2" args="(Trie *trie)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int trie_close           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Trie.html">Trie</a> *&nbsp;</td>
          <td class="paramname"> <em>trie</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close a trie. 
<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>trie,:</em>&nbsp;</td><td>the trie</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 trie. If <em>trie</em> was openned for writing, all pending changes will be saved to file. 
</div>
</div><p>
<a class="anchor" name="d62f21df004c2e8a75093885becaa6c7"></a><!-- doxytag: member="trie.h::trie_delete" ref="d62f21df004c2e8a75093885becaa6c7" args="(Trie *trie, const TrieChar *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_delete           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Trie.html">Trie</a> *&nbsp;</td>
          <td class="paramname"> <em>trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *&nbsp;</td>
          <td class="paramname"> <em>key</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>
Delete an entry from trie. 
<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>trie</em>&nbsp;</td><td>: the trie </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>: the key for the entry to delete</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating whether the key exists and is removed</dd></dl>
Delete an entry for the given <em>key</em> from <em>trie</em>. 
</div>
</div><p>
<a class="anchor" name="8c8e623d850e57bcccb8bf7f7b4b708e"></a><!-- doxytag: member="trie.h::trie_enumerate" ref="8c8e623d850e57bcccb8bf7f7b4b708e" args="(Trie *trie, TrieEnumFunc enum_func, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_enumerate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Trie.html">Trie</a> *&nbsp;</td>
          <td class="paramname"> <em>trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="trie_8h.html#d683c531df730771bca5ee4eb2b370e9">TrieEnumFunc</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 in trie. 
<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>trie</em>&nbsp;</td><td>: the trie </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 key </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 entries in trie. For each entry, the user-supplied <em>enum_func</em> callback function is called, with the entry key and data. Returning FALSE from such callback will stop enumeration and return FALSE. 
</div>
</div><p>
<a class="anchor" name="235b27eefdd26b7279de37e6577b45af"></a><!-- doxytag: member="trie.h::trie_open" ref="235b27eefdd26b7279de37e6577b45af" 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="struct__Trie.html">Trie</a>* trie_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 a trie. 
<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 trie files </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>: the name of the trie (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 trie, NULL on failure</dd></dl>
Open a trie 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="22721418148010c465c28c6c07847c7c"></a><!-- doxytag: member="trie.h::trie_retrieve" ref="22721418148010c465c28c6c07847c7c" args="(Trie *trie, const TrieChar *key, TrieData *o_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_retrieve           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Trie.html">Trie</a> *&nbsp;</td>
          <td class="paramname"> <em>trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> *&nbsp;</td>
          <td class="paramname"> <em>o_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>
Retrieve an entry from trie. 
<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>trie</em>&nbsp;</td><td>: the trie </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>: the key for the entry to retrieve </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>o_data</em>&nbsp;</td><td>: the storage for storing the entry data on return</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating the existence of the entry.</dd></dl>
Retrieve an entry for the given <em>key</em> from <em>trie</em>. On return, if <em>key</em> is found and <em>o_val</em> is not NULL, <em>*o_val</em> is set to the data associated to <em>key</em>. 
</div>
</div><p>
<a class="anchor" name="a8227cd999db4750b7a557cc653ea7c0"></a><!-- doxytag: member="trie.h::trie_root" ref="a8227cd999db4750b7a557cc653ea7c0" args="(Trie *trie)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="struct__TrieState.html">TrieState</a>* trie_root           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Trie.html">Trie</a> *&nbsp;</td>
          <td class="paramname"> <em>trie</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get root state of a trie. 
<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>trie</em>&nbsp;</td><td>: the trie</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the root state of the trie</dd></dl>
Get root state of <em>trie</em>, for stepwise walking.<p>
The returned state is allocated and must be freed with <a class="el" href="trie_8h.html#c0cebb9a610314c2bb8348c73c4303ce">trie_state_free()</a> 
</div>
</div><p>
<a class="anchor" name="7f53ba1b78c9e2743255034568726e6b"></a><!-- doxytag: member="trie.h::trie_save" ref="7f53ba1b78c9e2743255034568726e6b" args="(Trie *trie)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int trie_save           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Trie.html">Trie</a> *&nbsp;</td>
          <td class="paramname"> <em>trie</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Save a trie. 
<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>trie,:</em>&nbsp;</td><td>the trie</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>trie</em> was openned for writing, save all pending data to file. 
</div>
</div><p>
<a class="anchor" name="59c254bb5e1d69031f2fa6203418b576"></a><!-- doxytag: member="trie.h::trie_state_clone" ref="59c254bb5e1d69031f2fa6203418b576" args="(const TrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="struct__TrieState.html">TrieState</a>* trie_state_clone           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct__TrieState.html">TrieState</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clone a trie 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>s</em>&nbsp;</td><td>: the state to clone</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>an duplicated instance of <em>s</em> </dd></dl>
Make a copy of trie state.<p>
The returned state is allocated and must be freed with <a class="el" href="trie_8h.html#c0cebb9a610314c2bb8348c73c4303ce">trie_state_free()</a> 
</div>
</div><p>
<a class="anchor" name="c0cebb9a610314c2bb8348c73c4303ce"></a><!-- doxytag: member="trie.h::trie_state_free" ref="c0cebb9a610314c2bb8348c73c4303ce" args="(TrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void trie_state_free           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__TrieState.html">TrieState</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Free a trie 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>s</em>&nbsp;</td><td>: the state to free</td></tr>
  </table>
</dl>
Free the trie state. 
</div>
</div><p>
<a class="anchor" name="d4716911c7afa919b0e20132e19b7baf"></a><!-- doxytag: member="trie.h::trie_state_get_data" ref="d4716911c7afa919b0e20132e19b7baf" args="(const TrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> trie_state_get_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct__TrieState.html">TrieState</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get data from leaf 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>s</em>&nbsp;</td><td>: the leaf state</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the data associated with the leaf state <em>s</em>, or TRIE_DATA_ERROR if <em>s</em> is not a leaf state</dd></dl>
Get value from a leaf state of trie. Getting the value from leaf state will result in TRIE_DATA_ERROR. 
</div>
</div><p>
<a class="anchor" name="a5d19b09795aef0e17ddc1398d50120f"></a><!-- doxytag: member="trie.h::trie_state_is_leaf" ref="a5d19b09795aef0e17ddc1398d50120f" args="(const TrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_state_is_leaf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct__TrieState.html">TrieState</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check for leaf 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>s</em>&nbsp;</td><td>: the state to check</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating whether it is a leaf state</dd></dl>
Check if the given state is a leaf state. A leaf state is a terminal state that has no other branch. 
</div>
</div><p>
<a class="anchor" name="c4d64eaebbba333dc375fdd4b07387d2"></a><!-- doxytag: member="trie.h::trie_state_is_walkable" ref="c4d64eaebbba333dc375fdd4b07387d2" args="(const TrieState *s, TrieChar c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_state_is_walkable           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="struct__TrieState.html">TrieState</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>
Test walkability of character from 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>s</em>&nbsp;</td><td>: the state to check </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>
<a class="anchor" name="84e7cb79d0bf4d078a762cdec6be9419"></a><!-- doxytag: member="trie.h::trie_state_rewind" ref="84e7cb79d0bf4d078a762cdec6be9419" args="(TrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void trie_state_rewind           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__TrieState.html">TrieState</a> *&nbsp;</td>
          <td class="paramname"> <em>s</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Rewind a trie 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>s</em>&nbsp;</td><td>: the state to rewind</td></tr>
  </table>
</dl>
Put the state at root. 
</div>
</div><p>
<a class="anchor" name="f22cadd94d58aaf4e07780da705d016f"></a><!-- doxytag: member="trie.h::trie_state_walk" ref="f22cadd94d58aaf4e07780da705d016f" args="(TrieState *s, TrieChar c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_state_walk           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__TrieState.html">TrieState</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 the trie from the 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>s</em>&nbsp;</td><td>: current state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>c</em>&nbsp;</td><td>: key character for walking</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating the success of the walk</dd></dl>
Walk the trie stepwise, using a given character <em>c</em>. On return, the state <em>s</em> is updated to the new state if successfully walked. 
</div>
</div><p>
<a class="anchor" name="787c3d78e789acb864fd0e9e446c20aa"></a><!-- doxytag: member="trie.h::trie_store" ref="787c3d78e789acb864fd0e9e446c20aa" args="(Trie *trie, const TrieChar *key, TrieData data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_store           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct__Trie.html">Trie</a> *&nbsp;</td>
          <td class="paramname"> <em>trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a>&nbsp;</td>
          <td class="paramname"> <em>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>
Store a value for an entry to trie. 
<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>trie</em>&nbsp;</td><td>: the trie </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>: the key for the entry to retrieve </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>data</em>&nbsp;</td><td>: the data associated to the entry</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating the success of the process</dd></dl>
Store a data <em>data</em> for the given <em>key</em> in <em>trie</em>. If <em>key</em> does not exist in <em>trie</em>, it will be appended. 
</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>