Sophie

Sophie

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

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/sb-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/sb-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>Typedefs</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a0355be682dc84a736eb342aa1344c87"></a><!-- doxytag: member="sb-trie.h::SBTrie" ref="a0355be682dc84a736eb342aa1344c87" args="" -->
typedef _SBTrie&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Single-byte domain trie data type. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="820bb6c8327cd1e00382d63cda946cc6"></a><!-- doxytag: member="sb-trie.h::SBChar" ref="820bb6c8327cd1e00382d63cda946cc6" args="" -->
typedef unsigned char&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Single-byte character 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="sb-trie_8h.html#83cc80500eb10e609cce253a8d4bcda8">SBTrieEnumFunc</a> (const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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">Single-byte domain trie enumeration function.  <a href="#83cc80500eb10e609cce253a8d4bcda8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="77cb5bae5e641457ccb628bc777f8d72"></a><!-- doxytag: member="sb-trie.h::SBTrieState" ref="77cb5bae5e641457ccb628bc777f8d72" args="" -->
typedef _SBTrieState&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Single-byte domain 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="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="sb-trie_8h.html#52ccf2611cc7638ee6ce9d53a9a9b36f">sb_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 single-byte domain trie.  <a href="#52ccf2611cc7638ee6ce9d53a9a9b36f"></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="sb-trie_8h.html#4e3d065084e4fc7b1fdb692eb6035baa">sb_trie_close</a> (<a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *sb_trie)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close a single-byte domain trie.  <a href="#4e3d065084e4fc7b1fdb692eb6035baa"></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="sb-trie_8h.html#45486af2970a33b199b22d00a22c3a10">sb_trie_save</a> (<a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *sb_trie)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save a single-byte domain trie.  <a href="#45486af2970a33b199b22d00a22c3a10"></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="sb-trie_8h.html#b0e31d8234c31f3836d0f94aca2ea0bb">sb_trie_retrieve</a> (<a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *sb_trie, const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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 single-byte domain trie.  <a href="#b0e31d8234c31f3836d0f94aca2ea0bb"></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="sb-trie_8h.html#a08b28f95ca2df031a22147fd2fb1b4f">sb_trie_store</a> (<a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *sb_trie, const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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 single-byte domain trie.  <a href="#a08b28f95ca2df031a22147fd2fb1b4f"></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="sb-trie_8h.html#6807bbe8d538a4068a4a316ba770f3f5">sb_trie_delete</a> (<a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *sb_trie, const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</a> *key)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an entry from single-byte domain trie.  <a href="#6807bbe8d538a4068a4a316ba770f3f5"></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="sb-trie_8h.html#2175ca4b204f9cca0692bfd7beed0a0a">sb_trie_enumerate</a> (<a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *sb_trie, <a class="el" href="sb-trie_8h.html#83cc80500eb10e609cce253a8d4bcda8">SBTrieEnumFunc</a> enum_func, void *user_data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enumerate entries in single-byte domain trie.  <a href="#2175ca4b204f9cca0692bfd7beed0a0a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="sb-trie_8h.html#2b0c97b565a195f503fc7cbb30ad506d">sb_trie_root</a> (<a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *sb_trie)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get root state of a single-byte domain trie.  <a href="#2b0c97b565a195f503fc7cbb30ad506d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="sb-trie_8h.html#fffc127106461aaf9bec49963f95b13b">sb_trie_state_clone</a> (const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clone a single-byte domain trie state.  <a href="#fffc127106461aaf9bec49963f95b13b"></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="sb-trie_8h.html#a3fcfeb896a7f75448b3171c40ce7df0">sb_trie_state_free</a> (<a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free a single-byte trie state.  <a href="#a3fcfeb896a7f75448b3171c40ce7df0"></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="sb-trie_8h.html#2e4ab526f1edfb86a7e37e91bee7f1ac">sb_trie_state_rewind</a> (<a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Rewind a single-byte trie state.  <a href="#2e4ab526f1edfb86a7e37e91bee7f1ac"></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="sb-trie_8h.html#32fe0edfc52e0793110254e710fef79a">sb_trie_state_walk</a> (<a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s, <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</a> c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Walk the single-byte domain trie from the state.  <a href="#32fe0edfc52e0793110254e710fef79a"></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="sb-trie_8h.html#bba35d7309f603ca415bd21d8939250b">sb_trie_state_is_walkable</a> (const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s, <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</a> c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test walkability of character from state.  <a href="#bba35d7309f603ca415bd21d8939250b"></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="sb-trie_8h.html#2e941387971e159e3ac7cf7a5cc77b1f">sb_trie_state_is_terminal</a> (const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for terminal state.  <a href="#2e941387971e159e3ac7cf7a5cc77b1f"></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="sb-trie_8h.html#8f66f0f3f5f6bf7e1f43377fc33a1423">sb_trie_state_is_leaf</a> (const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check for leaf state.  <a href="#8f66f0f3f5f6bf7e1f43377fc33a1423"></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="sb-trie_8h.html#a848047f4a10db0c748f8f77d03945db">sb_trie_state_get_data</a> (const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get data from leaf state.  <a href="#a848047f4a10db0c748f8f77d03945db"></a><br></td></tr>
</table>
<hr><h2>Typedef Documentation</h2>
<a class="anchor" name="83cc80500eb10e609cce253a8d4bcda8"></a><!-- doxytag: member="sb-trie.h::SBTrieEnumFunc" ref="83cc80500eb10e609cce253a8d4bcda8" args="(const SBChar *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="sb-trie_8h.html#83cc80500eb10e609cce253a8d4bcda8">SBTrieEnumFunc</a>(const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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>
Single-byte domain 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="4e3d065084e4fc7b1fdb692eb6035baa"></a><!-- doxytag: member="sb-trie.h::sb_trie_close" ref="4e3d065084e4fc7b1fdb692eb6035baa" args="(SBTrie *sb_trie)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sb_trie_close           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td>
          <td class="paramname"> <em>sb_trie</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close a single-byte domain 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>sb_trie,:</em>&nbsp;</td><td>the single-byte domain 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="6807bbe8d538a4068a4a316ba770f3f5"></a><!-- doxytag: member="sb-trie.h::sb_trie_delete" ref="6807bbe8d538a4068a4a316ba770f3f5" args="(SBTrie *sb_trie, const SBChar *key)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_delete           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td>
          <td class="paramname"> <em>sb_trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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 single-byte domain 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>sb_trie</em>&nbsp;</td><td>: the single-byte domain 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="2175ca4b204f9cca0692bfd7beed0a0a"></a><!-- doxytag: member="sb-trie.h::sb_trie_enumerate" ref="2175ca4b204f9cca0692bfd7beed0a0a" args="(SBTrie *sb_trie, SBTrieEnumFunc enum_func, void *user_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_enumerate           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td>
          <td class="paramname"> <em>sb_trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#83cc80500eb10e609cce253a8d4bcda8">SBTrieEnumFunc</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 single-byte domain 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>sb_trie</em>&nbsp;</td><td>: the single-byte domain 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="52ccf2611cc7638ee6ce9d53a9a9b36f"></a><!-- doxytag: member="sb-trie.h::sb_trie_open" ref="52ccf2611cc7638ee6ce9d53a9a9b36f" 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="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a>* sb_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 single-byte domain 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="b0e31d8234c31f3836d0f94aca2ea0bb"></a><!-- doxytag: member="sb-trie.h::sb_trie_retrieve" ref="b0e31d8234c31f3836d0f94aca2ea0bb" args="(SBTrie *sb_trie, const SBChar *key, TrieData *o_data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_retrieve           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td>
          <td class="paramname"> <em>sb_trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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 single-byte domain 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>sb_trie</em>&nbsp;</td><td>: the single-byte domain 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="2b0c97b565a195f503fc7cbb30ad506d"></a><!-- doxytag: member="sb-trie.h::sb_trie_root" ref="2b0c97b565a195f503fc7cbb30ad506d" args="(SBTrie *sb_trie)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a>* sb_trie_root           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td>
          <td class="paramname"> <em>sb_trie</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get root state of a single-byte domain 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>sb_trie</em>&nbsp;</td><td>: the single-byte domain 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="45486af2970a33b199b22d00a22c3a10"></a><!-- doxytag: member="sb-trie.h::sb_trie_save" ref="45486af2970a33b199b22d00a22c3a10" args="(SBTrie *sb_trie)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int sb_trie_save           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td>
          <td class="paramname"> <em>sb_trie</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Save a single-byte domain 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>sb_trie,:</em>&nbsp;</td><td>the single-byte domain 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="fffc127106461aaf9bec49963f95b13b"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_clone" ref="fffc127106461aaf9bec49963f95b13b" args="(const SBTrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</a>* sb_trie_state_clone           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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 single-byte domain 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="a3fcfeb896a7f75448b3171c40ce7df0"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_free" ref="a3fcfeb896a7f75448b3171c40ce7df0" args="(SBTrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sb_trie_state_free           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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 single-byte 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="a848047f4a10db0c748f8f77d03945db"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_get_data" ref="a848047f4a10db0c748f8f77d03945db" args="(const SBTrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> sb_trie_state_get_data           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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="8f66f0f3f5f6bf7e1f43377fc33a1423"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_is_leaf" ref="8f66f0f3f5f6bf7e1f43377fc33a1423" args="(const SBTrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_state_is_leaf           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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="2e941387971e159e3ac7cf7a5cc77b1f"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_is_terminal" ref="2e941387971e159e3ac7cf7a5cc77b1f" args="(const SBTrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_state_is_terminal           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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 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>
<a class="anchor" name="bba35d7309f603ca415bd21d8939250b"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_is_walkable" ref="bba35d7309f603ca415bd21d8939250b" args="(const SBTrieState *s, SBChar c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_state_is_walkable           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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="2e4ab526f1edfb86a7e37e91bee7f1ac"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_rewind" ref="2e4ab526f1edfb86a7e37e91bee7f1ac" args="(SBTrieState *s)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void sb_trie_state_rewind           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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 single-byte 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="32fe0edfc52e0793110254e710fef79a"></a><!-- doxytag: member="sb-trie.h::sb_trie_state_walk" ref="32fe0edfc52e0793110254e710fef79a" args="(SBTrieState *s, SBChar c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_state_walk           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#77cb5bae5e641457ccb628bc777f8d72">SBTrieState</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="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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 single-byte domain 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="a08b28f95ca2df031a22147fd2fb1b4f"></a><!-- doxytag: member="sb-trie.h::sb_trie_store" ref="a08b28f95ca2df031a22147fd2fb1b4f" args="(SBTrie *sb_trie, const SBChar *key, TrieData data)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool sb_trie_store           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="sb-trie_8h.html#a0355be682dc84a736eb342aa1344c87">SBTrie</a> *&nbsp;</td>
          <td class="paramname"> <em>sb_trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="sb-trie_8h.html#820bb6c8327cd1e00382d63cda946cc6">SBChar</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 single-byte domain 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>sb_trie</em>&nbsp;</td><td>: the single-byte domain 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>