Current File : //kunden/kunden/proc/thread-self/root/usr/share/doc/libdatrie-devel/trie_8h.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libdatrie: datrie/trie.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">libdatrie
   &#160;<span id="projectnumber">0.2.13</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_23cbef3b1b2df757deb7708cc4a2d793.html">datrie</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#define-members">Macros</a> &#124;
<a href="#typedef-members">Typedefs</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">trie.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Trie data type and functions.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:adfbfb4a5252ad25e5e24e59a125b12de"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#adfbfb4a5252ad25e5e24e59a125b12de">trie_state_is_terminal</a>(s)&#160;&#160;&#160;<a class="el" href="trie_8h.html#aa55cd635e4a6d84c2b9f1bfd2a10e9b5">trie_state_is_walkable</a>((s),0)</td></tr>
<tr class="memdesc:adfbfb4a5252ad25e5e24e59a125b12de"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for terminal state.  <a href="trie_8h.html#adfbfb4a5252ad25e5e24e59a125b12de">More...</a><br /></td></tr>
<tr class="separator:adfbfb4a5252ad25e5e24e59a125b12de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94151b9c8f39285d21dd141bbf54a388"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a94151b9c8f39285d21dd141bbf54a388">trie_state_is_leaf</a>(s)&#160;&#160;&#160;    (<a class="el" href="trie_8h.html#ae0376122b287b023478efdc3d4754f9c">trie_state_is_single</a>(s) &amp;&amp; <a class="el" href="trie_8h.html#adfbfb4a5252ad25e5e24e59a125b12de">trie_state_is_terminal</a>(s))</td></tr>
<tr class="memdesc:a94151b9c8f39285d21dd141bbf54a388"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for leaf state.  <a href="trie_8h.html#a94151b9c8f39285d21dd141bbf54a388">More...</a><br /></td></tr>
<tr class="separator:a94151b9c8f39285d21dd141bbf54a388"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:af5808be7fb71b1ef0b1dcbe55da603ce"><td class="memItemLeft" align="right" valign="top"><a id="af5808be7fb71b1ef0b1dcbe55da603ce"></a>
typedef struct <a class="el" href="struct__Trie.html">_Trie</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a></td></tr>
<tr class="memdesc:af5808be7fb71b1ef0b1dcbe55da603ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trie data type. <br /></td></tr>
<tr class="separator:af5808be7fb71b1ef0b1dcbe55da603ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aabf107e364a3621a71464f0ce79c4e61"><td class="memItemLeft" align="right" valign="top">typedef Bool(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#aabf107e364a3621a71464f0ce79c4e61">TrieEnumFunc</a>) (const <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *key, <a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a> key_data, void *user_data)</td></tr>
<tr class="memdesc:aabf107e364a3621a71464f0ce79c4e61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trie enumeration function.  <a href="trie_8h.html#aabf107e364a3621a71464f0ce79c4e61">More...</a><br /></td></tr>
<tr class="separator:aabf107e364a3621a71464f0ce79c4e61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b6aa870c546b566c3f3a4d13f74d066"><td class="memItemLeft" align="right" valign="top"><a id="a2b6aa870c546b566c3f3a4d13f74d066"></a>
typedef struct <a class="el" href="struct__TrieState.html">_TrieState</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a></td></tr>
<tr class="memdesc:a2b6aa870c546b566c3f3a4d13f74d066"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trie walking state. <br /></td></tr>
<tr class="separator:a2b6aa870c546b566c3f3a4d13f74d066"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af3700d259062e7755f16f7112378f825"><td class="memItemLeft" align="right" valign="top"><a id="af3700d259062e7755f16f7112378f825"></a>
typedef struct <a class="el" href="struct__TrieIterator.html">_TrieIterator</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a></td></tr>
<tr class="memdesc:af3700d259062e7755f16f7112378f825"><td class="mdescLeft">&#160;</td><td class="mdescRight">Trie iteration state. <br /></td></tr>
<tr class="separator:af3700d259062e7755f16f7112378f825"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a33fad5408b54070b8c1ee27ee1d1e5c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a33fad5408b54070b8c1ee27ee1d1e5c3">trie_new</a> (const <a class="el" href="alpha-map_8h.html#ab369cb9c893b9f233b97173e0c63d25e">AlphaMap</a> *alpha_map)</td></tr>
<tr class="memdesc:a33fad5408b54070b8c1ee27ee1d1e5c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new trie.  <a href="trie_8h.html#a33fad5408b54070b8c1ee27ee1d1e5c3">More...</a><br /></td></tr>
<tr class="separator:a33fad5408b54070b8c1ee27ee1d1e5c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a035aebcfa3b8f61404a1735bc62b8ca6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a035aebcfa3b8f61404a1735bc62b8ca6">trie_new_from_file</a> (const char *path)</td></tr>
<tr class="memdesc:a035aebcfa3b8f61404a1735bc62b8ca6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new trie by loading from a file.  <a href="trie_8h.html#a035aebcfa3b8f61404a1735bc62b8ca6">More...</a><br /></td></tr>
<tr class="separator:a035aebcfa3b8f61404a1735bc62b8ca6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5778e920582cc17d770bfffc91c5fbda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a5778e920582cc17d770bfffc91c5fbda">trie_fread</a> (FILE *file)</td></tr>
<tr class="memdesc:a5778e920582cc17d770bfffc91c5fbda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new trie by reading from an open file.  <a href="trie_8h.html#a5778e920582cc17d770bfffc91c5fbda">More...</a><br /></td></tr>
<tr class="separator:a5778e920582cc17d770bfffc91c5fbda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fe9ae638ae3f97e27e089bff41ab27a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a7fe9ae638ae3f97e27e089bff41ab27a">trie_free</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie)</td></tr>
<tr class="memdesc:a7fe9ae638ae3f97e27e089bff41ab27a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free a trie object.  <a href="trie_8h.html#a7fe9ae638ae3f97e27e089bff41ab27a">More...</a><br /></td></tr>
<tr class="separator:a7fe9ae638ae3f97e27e089bff41ab27a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a036b569a3840512ed3914d251721ec98"><td class="memItemLeft" align="right" valign="top">size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a036b569a3840512ed3914d251721ec98">trie_get_serialized_size</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie)</td></tr>
<tr class="memdesc:a036b569a3840512ed3914d251721ec98"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get trie serialized size.  <a href="trie_8h.html#a036b569a3840512ed3914d251721ec98">More...</a><br /></td></tr>
<tr class="separator:a036b569a3840512ed3914d251721ec98"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2845528dd4f0877b61c65973879f121d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a2845528dd4f0877b61c65973879f121d">trie_serialize</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, uint8 *ptr)</td></tr>
<tr class="memdesc:a2845528dd4f0877b61c65973879f121d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Serializes trie data into a memory buffer (including mapping)  <a href="trie_8h.html#a2845528dd4f0877b61c65973879f121d">More...</a><br /></td></tr>
<tr class="separator:a2845528dd4f0877b61c65973879f121d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e3ad1b0542305e5047d3f29bd309581"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a5e3ad1b0542305e5047d3f29bd309581">trie_save</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, const char *path)</td></tr>
<tr class="memdesc:a5e3ad1b0542305e5047d3f29bd309581"><td class="mdescLeft">&#160;</td><td class="mdescRight">Save a trie to file.  <a href="trie_8h.html#a5e3ad1b0542305e5047d3f29bd309581">More...</a><br /></td></tr>
<tr class="separator:a5e3ad1b0542305e5047d3f29bd309581"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7eb06267315d158463f2e856a617cdf4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a7eb06267315d158463f2e856a617cdf4">trie_fwrite</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, FILE *file)</td></tr>
<tr class="memdesc:a7eb06267315d158463f2e856a617cdf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Write trie data to an open file.  <a href="trie_8h.html#a7eb06267315d158463f2e856a617cdf4">More...</a><br /></td></tr>
<tr class="separator:a7eb06267315d158463f2e856a617cdf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a320eb50f7393401f8a5159a1c858c0ba"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a320eb50f7393401f8a5159a1c858c0ba">trie_is_dirty</a> (const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie)</td></tr>
<tr class="memdesc:a320eb50f7393401f8a5159a1c858c0ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check pending changes.  <a href="trie_8h.html#a320eb50f7393401f8a5159a1c858c0ba">More...</a><br /></td></tr>
<tr class="separator:a320eb50f7393401f8a5159a1c858c0ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a38ad6c891f2825d525db8c33c61329f4"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a38ad6c891f2825d525db8c33c61329f4">trie_retrieve</a> (const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, const <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *key, <a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a> *o_data)</td></tr>
<tr class="memdesc:a38ad6c891f2825d525db8c33c61329f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieve an entry from trie.  <a href="trie_8h.html#a38ad6c891f2825d525db8c33c61329f4">More...</a><br /></td></tr>
<tr class="separator:a38ad6c891f2825d525db8c33c61329f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af15c00ee43980d7cbd15614c068b0061"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#af15c00ee43980d7cbd15614c068b0061">trie_store</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, const <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *key, <a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a> data)</td></tr>
<tr class="memdesc:af15c00ee43980d7cbd15614c068b0061"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a value for an entry to trie.  <a href="trie_8h.html#af15c00ee43980d7cbd15614c068b0061">More...</a><br /></td></tr>
<tr class="separator:af15c00ee43980d7cbd15614c068b0061"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a246e0db0f4f409bae437b93bc141474d"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a246e0db0f4f409bae437b93bc141474d">trie_store_if_absent</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, const <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *key, <a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a> data)</td></tr>
<tr class="memdesc:a246e0db0f4f409bae437b93bc141474d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Store a value for an entry to trie only if the key is not present.  <a href="trie_8h.html#a246e0db0f4f409bae437b93bc141474d">More...</a><br /></td></tr>
<tr class="separator:a246e0db0f4f409bae437b93bc141474d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a83f43538cea08a52baa7aed728332923"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a83f43538cea08a52baa7aed728332923">trie_delete</a> (<a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, const <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *key)</td></tr>
<tr class="memdesc:a83f43538cea08a52baa7aed728332923"><td class="mdescLeft">&#160;</td><td class="mdescRight">Delete an entry from trie.  <a href="trie_8h.html#a83f43538cea08a52baa7aed728332923">More...</a><br /></td></tr>
<tr class="separator:a83f43538cea08a52baa7aed728332923"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b199a9fdcbbba88dd5009fde6b25bca"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a0b199a9fdcbbba88dd5009fde6b25bca">trie_enumerate</a> (const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie, <a class="el" href="trie_8h.html#aabf107e364a3621a71464f0ce79c4e61">TrieEnumFunc</a> enum_func, void *user_data)</td></tr>
<tr class="memdesc:a0b199a9fdcbbba88dd5009fde6b25bca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Enumerate entries in trie.  <a href="trie_8h.html#a0b199a9fdcbbba88dd5009fde6b25bca">More...</a><br /></td></tr>
<tr class="separator:a0b199a9fdcbbba88dd5009fde6b25bca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77ab422ee6a301e8569a9cbb3befcde3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a77ab422ee6a301e8569a9cbb3befcde3">trie_root</a> (const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *trie)</td></tr>
<tr class="memdesc:a77ab422ee6a301e8569a9cbb3befcde3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get root state of a trie.  <a href="trie_8h.html#a77ab422ee6a301e8569a9cbb3befcde3">More...</a><br /></td></tr>
<tr class="separator:a77ab422ee6a301e8569a9cbb3befcde3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59c254bb5e1d69031f2fa6203418b576"><td class="memItemLeft" align="right" valign="top"><a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a59c254bb5e1d69031f2fa6203418b576">trie_state_clone</a> (const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s)</td></tr>
<tr class="memdesc:a59c254bb5e1d69031f2fa6203418b576"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clone a trie state.  <a href="trie_8h.html#a59c254bb5e1d69031f2fa6203418b576">More...</a><br /></td></tr>
<tr class="separator:a59c254bb5e1d69031f2fa6203418b576"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b5a16f4c3f2b4dbd2062002c94008b0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a2b5a16f4c3f2b4dbd2062002c94008b0">trie_state_copy</a> (<a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *dst, const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *src)</td></tr>
<tr class="memdesc:a2b5a16f4c3f2b4dbd2062002c94008b0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy trie state to another.  <a href="trie_8h.html#a2b5a16f4c3f2b4dbd2062002c94008b0">More...</a><br /></td></tr>
<tr class="separator:a2b5a16f4c3f2b4dbd2062002c94008b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0cebb9a610314c2bb8348c73c4303ce"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#ac0cebb9a610314c2bb8348c73c4303ce">trie_state_free</a> (<a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s)</td></tr>
<tr class="memdesc:ac0cebb9a610314c2bb8348c73c4303ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free a trie state.  <a href="trie_8h.html#ac0cebb9a610314c2bb8348c73c4303ce">More...</a><br /></td></tr>
<tr class="separator:ac0cebb9a610314c2bb8348c73c4303ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84e7cb79d0bf4d078a762cdec6be9419"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a84e7cb79d0bf4d078a762cdec6be9419">trie_state_rewind</a> (<a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s)</td></tr>
<tr class="memdesc:a84e7cb79d0bf4d078a762cdec6be9419"><td class="mdescLeft">&#160;</td><td class="mdescRight">Rewind a trie state.  <a href="trie_8h.html#a84e7cb79d0bf4d078a762cdec6be9419">More...</a><br /></td></tr>
<tr class="separator:a84e7cb79d0bf4d078a762cdec6be9419"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c8768dc722b3a4ed526b1ccc5280fbb"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a1c8768dc722b3a4ed526b1ccc5280fbb">trie_state_walk</a> (<a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s, <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> c)</td></tr>
<tr class="memdesc:a1c8768dc722b3a4ed526b1ccc5280fbb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Walk the trie from the state.  <a href="trie_8h.html#a1c8768dc722b3a4ed526b1ccc5280fbb">More...</a><br /></td></tr>
<tr class="separator:a1c8768dc722b3a4ed526b1ccc5280fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa55cd635e4a6d84c2b9f1bfd2a10e9b5"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#aa55cd635e4a6d84c2b9f1bfd2a10e9b5">trie_state_is_walkable</a> (const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s, <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> c)</td></tr>
<tr class="memdesc:aa55cd635e4a6d84c2b9f1bfd2a10e9b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Test walkability of character from state.  <a href="trie_8h.html#aa55cd635e4a6d84c2b9f1bfd2a10e9b5">More...</a><br /></td></tr>
<tr class="separator:aa55cd635e4a6d84c2b9f1bfd2a10e9b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0964c5f5a71708c5262e1599930604a9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a0964c5f5a71708c5262e1599930604a9">trie_state_walkable_chars</a> (const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s, <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> chars[], int chars_nelm)</td></tr>
<tr class="memdesc:a0964c5f5a71708c5262e1599930604a9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get all walkable characters from state.  <a href="trie_8h.html#a0964c5f5a71708c5262e1599930604a9">More...</a><br /></td></tr>
<tr class="separator:a0964c5f5a71708c5262e1599930604a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae0376122b287b023478efdc3d4754f9c"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#ae0376122b287b023478efdc3d4754f9c">trie_state_is_single</a> (const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s)</td></tr>
<tr class="memdesc:ae0376122b287b023478efdc3d4754f9c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check for single path.  <a href="trie_8h.html#ae0376122b287b023478efdc3d4754f9c">More...</a><br /></td></tr>
<tr class="separator:ae0376122b287b023478efdc3d4754f9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4716911c7afa919b0e20132e19b7baf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#ad4716911c7afa919b0e20132e19b7baf">trie_state_get_data</a> (const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s)</td></tr>
<tr class="memdesc:ad4716911c7afa919b0e20132e19b7baf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get data from terminal state.  <a href="trie_8h.html#ad4716911c7afa919b0e20132e19b7baf">More...</a><br /></td></tr>
<tr class="separator:ad4716911c7afa919b0e20132e19b7baf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84bdf48a371decf45d4735a2b343a670"><td class="memItemLeft" align="right" valign="top"><a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a84bdf48a371decf45d4735a2b343a670">trie_iterator_new</a> (<a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *s)</td></tr>
<tr class="memdesc:a84bdf48a371decf45d4735a2b343a670"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new trie iterator.  <a href="trie_8h.html#a84bdf48a371decf45d4735a2b343a670">More...</a><br /></td></tr>
<tr class="separator:a84bdf48a371decf45d4735a2b343a670"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af00b91999fc7f358092f578c21ea95b5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#af00b91999fc7f358092f578c21ea95b5">trie_iterator_free</a> (<a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *iter)</td></tr>
<tr class="memdesc:af00b91999fc7f358092f578c21ea95b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Free a trie iterator.  <a href="trie_8h.html#af00b91999fc7f358092f578c21ea95b5">More...</a><br /></td></tr>
<tr class="separator:af00b91999fc7f358092f578c21ea95b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc25cec01c2656d1f8b497889ccb92bd"><td class="memItemLeft" align="right" valign="top">Bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#afc25cec01c2656d1f8b497889ccb92bd">trie_iterator_next</a> (<a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *iter)</td></tr>
<tr class="memdesc:afc25cec01c2656d1f8b497889ccb92bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Move trie iterator to the next entry.  <a href="trie_8h.html#afc25cec01c2656d1f8b497889ccb92bd">More...</a><br /></td></tr>
<tr class="separator:afc25cec01c2656d1f8b497889ccb92bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2fac752866cc6a65411d6f98128bd106"><td class="memItemLeft" align="right" valign="top"><a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a2fac752866cc6a65411d6f98128bd106">trie_iterator_get_key</a> (const <a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *iter)</td></tr>
<tr class="memdesc:a2fac752866cc6a65411d6f98128bd106"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get key for a trie iterator.  <a href="trie_8h.html#a2fac752866cc6a65411d6f98128bd106">More...</a><br /></td></tr>
<tr class="separator:a2fac752866cc6a65411d6f98128bd106"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50fa579c2e5e86cbeebebc717b4833be"><td class="memItemLeft" align="right" valign="top"><a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="trie_8h.html#a50fa579c2e5e86cbeebebc717b4833be">trie_iterator_get_data</a> (const <a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *iter)</td></tr>
<tr class="memdesc:a50fa579c2e5e86cbeebebc717b4833be"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get data for the entry referenced by an iterator.  <a href="trie_8h.html#a50fa579c2e5e86cbeebebc717b4833be">More...</a><br /></td></tr>
<tr class="separator:a50fa579c2e5e86cbeebebc717b4833be"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Trie data type and functions. </p>
<p>Trie is a kind of digital search tree, an efficient indexing method with O(1) time complexity for searching. Comparably as efficient as hashing, trie also provides flexibility on incremental matching and key spelling manipulation. This makes it ideal for lexical analyzers, as well as spelling dictionaries.</p>
<p>This library is an implementation of double-array structure for representing trie, as proposed by Junichi Aoe. The details of the implementation can be found at <a href="http://linux.thai.net/~thep/datrie/datrie.html">http://linux.thai.net/~thep/datrie/datrie.html</a></p>
<p>A Trie is associated with an AlphaMap, a map between actual alphabet characters and the raw characters used to walk through trie. You can define the alphabet set by adding ranges of character codes to it before associating it to a trie. And the keys to be added to the trie must comprise only characters in such ranges. Note that the size of the alphabet set is limited to 256 (TRIE_CHAR_MAX + 1), and the AlphaMap will map the alphabet characters to raw codes in the range 0..255 (0..TRIE_CHAR_MAX). The alphabet character ranges need not be continuous, but the mapped raw codes will be continuous, for the sake of compactness of the trie.</p>
<p>A new Trie can be created in memory using <a class="el" href="trie_8h.html#a33fad5408b54070b8c1ee27ee1d1e5c3" title="Create a new trie.">trie_new()</a>, saved to file using <a class="el" href="trie_8h.html#a5e3ad1b0542305e5047d3f29bd309581" title="Save a trie to file.">trie_save()</a>, and loaded later with <a class="el" href="trie_8h.html#a035aebcfa3b8f61404a1735bc62b8ca6" title="Create a new trie by loading from a file.">trie_new_from_file()</a>. It can even be embeded in another file using <a class="el" href="trie_8h.html#a7eb06267315d158463f2e856a617cdf4" title="Write trie data to an open file.">trie_fwrite()</a> and read back using <a class="el" href="trie_8h.html#a5778e920582cc17d770bfffc91c5fbda" title="Create a new trie by reading from an open file.">trie_fread()</a>. After use, Trie objects must be freed using <a class="el" href="trie_8h.html#a7fe9ae638ae3f97e27e089bff41ab27a" title="Free a trie object.">trie_free()</a>.</p>
<p>Operations on trie include:</p>
<ul>
<li>Add/delete entries with <a class="el" href="trie_8h.html#af15c00ee43980d7cbd15614c068b0061" title="Store a value for an entry to trie.">trie_store()</a> and <a class="el" href="trie_8h.html#a83f43538cea08a52baa7aed728332923" title="Delete an entry from trie.">trie_delete()</a></li>
<li>Retrieve entries with <a class="el" href="trie_8h.html#a38ad6c891f2825d525db8c33c61329f4" title="Retrieve an entry from trie.">trie_retrieve()</a></li>
<li>Walk through trie stepwise with TrieState and its functions (<a class="el" href="trie_8h.html#a77ab422ee6a301e8569a9cbb3befcde3" title="Get root state of a trie.">trie_root()</a>, <a class="el" href="trie_8h.html#a1c8768dc722b3a4ed526b1ccc5280fbb" title="Walk the trie from the state.">trie_state_walk()</a>, <a class="el" href="trie_8h.html#a84e7cb79d0bf4d078a762cdec6be9419" title="Rewind a trie state.">trie_state_rewind()</a>, <a class="el" href="trie_8h.html#a59c254bb5e1d69031f2fa6203418b576" title="Clone a trie state.">trie_state_clone()</a>, <a class="el" href="trie_8h.html#a2b5a16f4c3f2b4dbd2062002c94008b0" title="Copy trie state to another.">trie_state_copy()</a>, <a class="el" href="trie_8h.html#aa55cd635e4a6d84c2b9f1bfd2a10e9b5" title="Test walkability of character from state.">trie_state_is_walkable()</a>, <a class="el" href="trie_8h.html#a0964c5f5a71708c5262e1599930604a9" title="Get all walkable characters from state.">trie_state_walkable_chars()</a>, <a class="el" href="trie_8h.html#ae0376122b287b023478efdc3d4754f9c" title="Check for single path.">trie_state_is_single()</a>, <a class="el" href="trie_8h.html#ad4716911c7afa919b0e20132e19b7baf" title="Get data from terminal state.">trie_state_get_data()</a>. And do not forget to free TrieState objects with <a class="el" href="trie_8h.html#ac0cebb9a610314c2bb8348c73c4303ce" title="Free a trie state.">trie_state_free()</a> after use.)</li>
<li>Enumerate all keys using <a class="el" href="trie_8h.html#a0b199a9fdcbbba88dd5009fde6b25bca" title="Enumerate entries in trie.">trie_enumerate()</a></li>
<li>Iterate entries using TrieIterator and its functions (<a class="el" href="trie_8h.html#a84bdf48a371decf45d4735a2b343a670" title="Create a new trie iterator.">trie_iterator_new()</a>, <a class="el" href="trie_8h.html#afc25cec01c2656d1f8b497889ccb92bd" title="Move trie iterator to the next entry.">trie_iterator_next()</a>, <a class="el" href="trie_8h.html#a2fac752866cc6a65411d6f98128bd106" title="Get key for a trie iterator.">trie_iterator_get_key()</a>, <a class="el" href="trie_8h.html#a50fa579c2e5e86cbeebebc717b4833be" title="Get data for the entry referenced by an iterator.">trie_iterator_get_data()</a>. And do not forget to free TrieIterator objects with <a class="el" href="trie_8h.html#af00b91999fc7f358092f578c21ea95b5" title="Free a trie iterator.">trie_iterator_free()</a> after use.) </li>
</ul>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a id="a94151b9c8f39285d21dd141bbf54a388"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94151b9c8f39285d21dd141bbf54a388">&#9670;&nbsp;</a></span>trie_state_is_leaf</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define trie_state_is_leaf</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s</td><td>)</td>
          <td>&#160;&#160;&#160;    (<a class="el" href="trie_8h.html#ae0376122b287b023478efdc3d4754f9c">trie_state_is_single</a>(s) &amp;&amp; <a class="el" href="trie_8h.html#adfbfb4a5252ad25e5e24e59a125b12de">trie_state_is_terminal</a>(s))</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check for leaf state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to check</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating whether it is a leaf state</dd></dl>
<p>Check if the given state is a leaf state. A leaf state is a terminal state that has no other branch. </p>

</div>
</div>
<a id="adfbfb4a5252ad25e5e24e59a125b12de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#adfbfb4a5252ad25e5e24e59a125b12de">&#9670;&nbsp;</a></span>trie_state_is_terminal</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define trie_state_is_terminal</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">s</td><td>)</td>
          <td>&#160;&#160;&#160;<a class="el" href="trie_8h.html#aa55cd635e4a6d84c2b9f1bfd2a10e9b5">trie_state_is_walkable</a>((s),0)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check for terminal state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to check</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating whether it is a terminal state</dd></dl>
<p>Check if the given state is a terminal state. A terminal state is a trie state that terminates a key, and stores a value associated with it. </p>

</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="aabf107e364a3621a71464f0ce79c4e61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aabf107e364a3621a71464f0ce79c4e61">&#9670;&nbsp;</a></span>TrieEnumFunc</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">typedef Bool(* TrieEnumFunc) (const <a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *key, <a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a> key_data, void *user_data)</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Trie enumeration function. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">key</td><td>: the key of the entry </td></tr>
    <tr><td class="paramname">data</td><td>: the data of the entry </td></tr>
    <tr><td class="paramname">user_data</td><td>: the user-supplied data on enumerate call</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>TRUE to continue enumeration, FALSE to stop </dd></dl>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="a83f43538cea08a52baa7aed728332923"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a83f43538cea08a52baa7aed728332923">&#9670;&nbsp;</a></span>trie_delete()</h2>

<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="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</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#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *&#160;</td>
          <td class="paramname"><em>key</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Delete an entry from trie. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie </td></tr>
    <tr><td class="paramname">key</td><td>: the key for the entry to delete</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating whether the key exists and is removed</dd></dl>
<p>Delete an entry for the given <em>key</em> from <em>trie</em>. </p>

</div>
</div>
<a id="a0b199a9fdcbbba88dd5009fde6b25bca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b199a9fdcbbba88dd5009fde6b25bca">&#9670;&nbsp;</a></span>trie_enumerate()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_enumerate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</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#aabf107e364a3621a71464f0ce79c4e61">TrieEnumFunc</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 in trie. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie </td></tr>
    <tr><td class="paramname">enum_func</td><td>: the callback function to be called on each key </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="section return"><dt>Returns</dt><dd>boolean value indicating whether all the keys are visited</dd></dl>
<p>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. </p>

</div>
</div>
<a id="a5778e920582cc17d770bfffc91c5fbda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5778e920582cc17d770bfffc91c5fbda">&#9670;&nbsp;</a></span>trie_fread()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a>* trie_fread </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>Create a new trie by reading from an open file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">file</td><td>: the handle of the open file</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the created trie, NULL on failure</dd></dl>
<p>Create a new trie and initialize its contents by reading from the open <em>file</em>. After reading, the file pointer is left at the end of the trie data. This can be useful for reading embedded trie index as part of a file data.</p>
<p>The created object must be freed with <a class="el" href="trie_8h.html#a7fe9ae638ae3f97e27e089bff41ab27a" title="Free a trie object.">trie_free()</a>.</p>
<p>Available since: 0.2.4 </p>

</div>
</div>
<a id="a7fe9ae638ae3f97e27e089bff41ab27a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fe9ae638ae3f97e27e089bff41ab27a">&#9670;&nbsp;</a></span>trie_free()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void trie_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td>
          <td class="paramname"><em>trie</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Free a trie object. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie object to free</td></tr>
  </table>
  </dd>
</dl>
<p>Destruct the <em>trie</em> and free its allocated memory. </p>

</div>
</div>
<a id="a7eb06267315d158463f2e856a617cdf4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7eb06267315d158463f2e856a617cdf4">&#9670;&nbsp;</a></span>trie_fwrite()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int trie_fwrite </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td>
          <td class="paramname"><em>trie</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 trie data to an open file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie</td></tr>
    <tr><td class="paramname">file</td><td>: the open file</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure</dd></dl>
<p>Write <em>trie</em> data to <em>file</em> which is opened for writing. After writing, the file pointer is left at the end of the trie data. This can be useful for embedding trie index as part of a file data.</p>
<p>Available since: 0.2.4 </p>

</div>
</div>
<a id="a036b569a3840512ed3914d251721ec98"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a036b569a3840512ed3914d251721ec98">&#9670;&nbsp;</a></span>trie_get_serialized_size()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t trie_get_serialized_size </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td>
          <td class="paramname"><em>trie</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get trie serialized size. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>size of the trie in bytes</dd></dl>
<p>Returns size that would be occupied by a trie if it was serialized into a binary blob or file.</p>
<p>Available since: 0.2.13 </p>

</div>
</div>
<a id="a320eb50f7393401f8a5159a1c858c0ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a320eb50f7393401f8a5159a1c858c0ba">&#9670;&nbsp;</a></span>trie_is_dirty()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_is_dirty </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td>
          <td class="paramname"><em>trie</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check pending changes. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie object</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>TRUE if there are pending changes, FALSE otherwise</dd></dl>
<p>Check if the <em>trie</em> is dirty with some pending changes and needs saving to keep the file synchronized. </p>

</div>
</div>
<a id="af00b91999fc7f358092f578c21ea95b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af00b91999fc7f358092f578c21ea95b5">&#9670;&nbsp;</a></span>trie_iterator_free()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void trie_iterator_free </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *&#160;</td>
          <td class="paramname"><em>iter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Free a trie iterator. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">iter</td><td>: the trie iterator to free</td></tr>
  </table>
  </dd>
</dl>
<p>Destruct the iterator <em>iter</em> and free its allocated memory.</p>
<p>Available since: 0.2.6 </p>

</div>
</div>
<a id="a50fa579c2e5e86cbeebebc717b4833be"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50fa579c2e5e86cbeebebc717b4833be">&#9670;&nbsp;</a></span>trie_iterator_get_data()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a> trie_iterator_get_data </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *&#160;</td>
          <td class="paramname"><em>iter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get data for the entry referenced by an iterator. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">iter</td><td>: an iterator</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the data associated with the entry referenced by iterator <em>iter</em>, or TRIE_DATA_ERROR if <em>iter</em> does not reference to a unique entry</dd></dl>
<p>Get value for the entry referenced by an iterator. Getting value from an un-iterated (or broken for any reason) iterator will result in TRIE_DATA_ERROR.</p>
<p>Available since: 0.2.6 </p>

</div>
</div>
<a id="a2fac752866cc6a65411d6f98128bd106"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2fac752866cc6a65411d6f98128bd106">&#9670;&nbsp;</a></span>trie_iterator_get_key()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#acae969caa2057c6accde0e977546a5be">AlphaChar</a>* trie_iterator_get_key </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *&#160;</td>
          <td class="paramname"><em>iter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get key for a trie iterator. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">iter</td><td>: an iterator</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the allocated key string; NULL on failure</dd></dl>
<p>Get key for the current entry referenced by the trie iterator <em>iter</em>.</p>
<p>The return string must be freed with free().</p>
<p>Available since: 0.2.6 </p>

</div>
</div>
<a id="a84bdf48a371decf45d4735a2b343a670"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84bdf48a371decf45d4735a2b343a670">&#9670;&nbsp;</a></span>trie_iterator_new()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a>* trie_iterator_new </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new trie iterator. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the TrieState to start iteration from</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the newly created TrieIterator, or NULL on failure</dd></dl>
<p>Create a new trie iterator for iterating entries of a sub-trie rooted at state <em>s</em>.</p>
<p>Use it with the result of <a class="el" href="trie_8h.html#a77ab422ee6a301e8569a9cbb3befcde3" title="Get root state of a trie.">trie_root()</a> to iterate the whole trie.</p>
<p>The created object must be freed with <a class="el" href="trie_8h.html#af00b91999fc7f358092f578c21ea95b5" title="Free a trie iterator.">trie_iterator_free()</a>.</p>
<p>Available since: 0.2.6 </p>

</div>
</div>
<a id="afc25cec01c2656d1f8b497889ccb92bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc25cec01c2656d1f8b497889ccb92bd">&#9670;&nbsp;</a></span>trie_iterator_next()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_iterator_next </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#af3700d259062e7755f16f7112378f825">TrieIterator</a> *&#160;</td>
          <td class="paramname"><em>iter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Move trie iterator to the next entry. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">iter</td><td>: an iterator</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating the availability of the entry</dd></dl>
<p>Move trie iterator to the next entry. On return, the iterator <em>iter</em> is updated to reference to the new entry if successfully moved.</p>
<p>Available since: 0.2.6 </p>

</div>
</div>
<a id="a33fad5408b54070b8c1ee27ee1d1e5c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a33fad5408b54070b8c1ee27ee1d1e5c3">&#9670;&nbsp;</a></span>trie_new()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a>* trie_new </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="alpha-map_8h.html#ab369cb9c893b9f233b97173e0c63d25e">AlphaMap</a> *&#160;</td>
          <td class="paramname"><em>alpha_map</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new trie. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">alpha_map</td><td>: the alphabet set for the trie</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the newly created trie, NULL on failure</dd></dl>
<p>Create a new empty trie object based on the given <em>alpha_map</em> alphabet set. The trie contents can then be added and deleted with <a class="el" href="trie_8h.html#af15c00ee43980d7cbd15614c068b0061" title="Store a value for an entry to trie.">trie_store()</a> and <a class="el" href="trie_8h.html#a83f43538cea08a52baa7aed728332923" title="Delete an entry from trie.">trie_delete()</a> respectively.</p>
<p>The created object must be freed with <a class="el" href="trie_8h.html#a7fe9ae638ae3f97e27e089bff41ab27a" title="Free a trie object.">trie_free()</a>. </p>

</div>
</div>
<a id="a035aebcfa3b8f61404a1735bc62b8ca6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a035aebcfa3b8f61404a1735bc62b8ca6">&#9670;&nbsp;</a></span>trie_new_from_file()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a>* trie_new_from_file </td>
          <td>(</td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Create a new trie by loading from a file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">path</td><td>: the path to the file</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a pointer to the created trie, NULL on failure</dd></dl>
<p>Create a new trie and initialize its contents by loading from the file at given <em>path</em>.</p>
<p>The created object must be freed with <a class="el" href="trie_8h.html#a7fe9ae638ae3f97e27e089bff41ab27a" title="Free a trie object.">trie_free()</a>. </p>

</div>
</div>
<a id="a38ad6c891f2825d525db8c33c61329f4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a38ad6c891f2825d525db8c33c61329f4">&#9670;&nbsp;</a></span>trie_retrieve()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_retrieve </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</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#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *&#160;</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#ab29d7be15a1627450c0591317f56162e">TrieData</a> *&#160;</td>
          <td class="paramname"><em>o_data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Retrieve an entry from trie. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie </td></tr>
    <tr><td class="paramname">key</td><td>: the key for the entry to retrieve </td></tr>
    <tr><td class="paramname">o_data</td><td>: the storage for storing the entry data on return</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating the existence of the entry.</dd></dl>
<p>Retrieve an entry for the given <em>key</em> from <em>trie</em>. On return, if <em>key</em> is found and <em>o_data</em> is not NULL, <em>*o_data</em> is set to the data associated to <em>key</em>. </p>

</div>
</div>
<a id="a77ab422ee6a301e8569a9cbb3befcde3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77ab422ee6a301e8569a9cbb3befcde3">&#9670;&nbsp;</a></span>trie_root()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a>* trie_root </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td>
          <td class="paramname"><em>trie</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get root state of a trie. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the root state of the trie</dd></dl>
<p>Get root state of <em>trie</em>, for stepwise walking.</p>
<p>The returned state is allocated and must be freed with <a class="el" href="trie_8h.html#ac0cebb9a610314c2bb8348c73c4303ce" title="Free a trie state.">trie_state_free()</a> </p>

</div>
</div>
<a id="a5e3ad1b0542305e5047d3f29bd309581"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5e3ad1b0542305e5047d3f29bd309581">&#9670;&nbsp;</a></span>trie_save()</h2>

<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="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td>
          <td class="paramname"><em>trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>path</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Save a trie to file. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie</td></tr>
    <tr><td class="paramname">path</td><td>: the path to the file</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 on success, non-zero on failure</dd></dl>
<p>Create a new file at the given <em>path</em> and write <em>trie</em> data to it. If <em>path</em> already exists, its contents will be replaced. </p>

</div>
</div>
<a id="a2845528dd4f0877b61c65973879f121d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2845528dd4f0877b61c65973879f121d">&#9670;&nbsp;</a></span>trie_serialize()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void trie_serialize </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</td>
          <td class="paramname"><em>trie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8 *&#160;</td>
          <td class="paramname"><em>ptr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Serializes trie data into a memory buffer (including mapping) </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie</td></tr>
    <tr><td class="paramname">ptr</td><td>: a pointer to current position inside of a preallocated buffer.</td></tr>
  </table>
  </dd>
</dl>
<p>Write <em>trie</em> data to a current position in a buffer pointed by <em>ptr</em>. This can be useful for embedding trie index as part of a file data.</p>
<p>The size that the trie will occupy can be calculated using <a class="el" href="trie_8h.html#a036b569a3840512ed3914d251721ec98" title="Get trie serialized size.">trie_get_serialized_size()</a></p>
<p>Available since: 0.2.13 </p>

</div>
</div>
<a id="a59c254bb5e1d69031f2fa6203418b576"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a59c254bb5e1d69031f2fa6203418b576">&#9670;&nbsp;</a></span>trie_state_clone()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a>* trie_state_clone </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Clone a trie state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to clone</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>an duplicated instance of <em>s</em> </dd></dl>
<p>Make a copy of trie state.</p>
<p>The returned state is allocated and must be freed with <a class="el" href="trie_8h.html#ac0cebb9a610314c2bb8348c73c4303ce" title="Free a trie state.">trie_state_free()</a> </p>

</div>
</div>
<a id="a2b5a16f4c3f2b4dbd2062002c94008b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b5a16f4c3f2b4dbd2062002c94008b0">&#9670;&nbsp;</a></span>trie_state_copy()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void trie_state_copy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>dst</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>src</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Copy trie state to another. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dst</td><td>: the destination state </td></tr>
    <tr><td class="paramname">src</td><td>: the source state</td></tr>
  </table>
  </dd>
</dl>
<p>Copy trie state data from <em>src</em> to <em>dst</em>. All existing data in <em>dst</em> is overwritten. </p>

</div>
</div>
<a id="ac0cebb9a610314c2bb8348c73c4303ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac0cebb9a610314c2bb8348c73c4303ce">&#9670;&nbsp;</a></span>trie_state_free()</h2>

<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="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Free a trie state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to free</td></tr>
  </table>
  </dd>
</dl>
<p>Free the trie state. </p>

</div>
</div>
<a id="ad4716911c7afa919b0e20132e19b7baf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad4716911c7afa919b0e20132e19b7baf">&#9670;&nbsp;</a></span>trie_state_get_data()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="triedefs_8h.html#ab29d7be15a1627450c0591317f56162e">TrieData</a> trie_state_get_data </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get data from terminal state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: a terminal state</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>the data associated with the terminal state <em>s</em>, or TRIE_DATA_ERROR if <em>s</em> is not a terminal state</dd></dl>
<p>Get value from a terminal state of trie. Getting value from a non-terminal state will result in TRIE_DATA_ERROR. </p>

</div>
</div>
<a id="ae0376122b287b023478efdc3d4754f9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae0376122b287b023478efdc3d4754f9c">&#9670;&nbsp;</a></span>trie_state_is_single()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_state_is_single </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check for single path. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to check</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating whether it is in a single path</dd></dl>
<p>Check if the given state is in a single path, that is, there is no other branch from it to leaf. </p>

</div>
</div>
<a id="aa55cd635e4a6d84c2b9f1bfd2a10e9b5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa55cd635e4a6d84c2b9f1bfd2a10e9b5">&#9670;&nbsp;</a></span>trie_state_is_walkable()</h2>

<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="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</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#acae969caa2057c6accde0e977546a5be">AlphaChar</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>Test walkability of character from state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to check </td></tr>
    <tr><td class="paramname">c</td><td>: the input character</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</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>
<a id="a84e7cb79d0bf4d078a762cdec6be9419"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84e7cb79d0bf4d078a762cdec6be9419">&#9670;&nbsp;</a></span>trie_state_rewind()</h2>

<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="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</a> *&#160;</td>
          <td class="paramname"><em>s</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Rewind a trie state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to rewind</td></tr>
  </table>
  </dd>
</dl>
<p>Put the state at root. </p>

</div>
</div>
<a id="a1c8768dc722b3a4ed526b1ccc5280fbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c8768dc722b3a4ed526b1ccc5280fbb">&#9670;&nbsp;</a></span>trie_state_walk()</h2>

<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="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</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#acae969caa2057c6accde0e977546a5be">AlphaChar</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 the trie from the state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: current state </td></tr>
    <tr><td class="paramname">c</td><td>: key character for walking</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating the success of the walk</dd></dl>
<p>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. </p>

</div>
</div>
<a id="a0964c5f5a71708c5262e1599930604a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0964c5f5a71708c5262e1599930604a9">&#9670;&nbsp;</a></span>trie_state_walkable_chars()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int trie_state_walkable_chars </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="trie_8h.html#a2b6aa870c546b566c3f3a4d13f74d066">TrieState</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#acae969caa2057c6accde0e977546a5be">AlphaChar</a>&#160;</td>
          <td class="paramname"><em>chars</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>chars_nelm</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get all walkable characters from state. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">s</td><td>: the state to get </td></tr>
    <tr><td class="paramname">chars</td><td>: the storage for the result </td></tr>
    <tr><td class="paramname">chars_nelm</td><td>: the size of <em>chars</em>[] in number of elements</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>total walkable characters</dd></dl>
<p>Get the list of all walkable characters from state <em>s</em>. At most <em>chars_nelm</em> walkable characters are stored in <em>chars</em>[] on return.</p>
<p>The function returns the actual number of walkable characters from <em>s</em>. Note that this may not equal the number of characters stored in <em>chars</em>[] if <em>chars_nelm</em> is less than the actual number.</p>
<p>Available since: 0.2.6 </p>

</div>
</div>
<a id="af15c00ee43980d7cbd15614c068b0061"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af15c00ee43980d7cbd15614c068b0061">&#9670;&nbsp;</a></span>trie_store()</h2>

<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="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</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#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *&#160;</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#ab29d7be15a1627450c0591317f56162e">TrieData</a>&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Store a value for an entry to trie. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie </td></tr>
    <tr><td class="paramname">key</td><td>: the key for the entry to store </td></tr>
    <tr><td class="paramname">data</td><td>: the data associated to the entry</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating the success of the operation</dd></dl>
<p>Store a <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. If it does, its current data will be overwritten. </p>

</div>
</div>
<a id="a246e0db0f4f409bae437b93bc141474d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a246e0db0f4f409bae437b93bc141474d">&#9670;&nbsp;</a></span>trie_store_if_absent()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">Bool trie_store_if_absent </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="trie_8h.html#af5808be7fb71b1ef0b1dcbe55da603ce">Trie</a> *&#160;</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#acae969caa2057c6accde0e977546a5be">AlphaChar</a> *&#160;</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#ab29d7be15a1627450c0591317f56162e">TrieData</a>&#160;</td>
          <td class="paramname"><em>data</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Store a value for an entry to trie only if the key is not present. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">trie</td><td>: the trie </td></tr>
    <tr><td class="paramname">key</td><td>: the key for the entry to store </td></tr>
    <tr><td class="paramname">data</td><td>: the data associated to the entry</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>boolean value indicating the success of the operation</dd></dl>
<p>Store a <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 inserted. If it does, the function will return failure and the existing value will not be touched.</p>
<p>This can be useful for multi-thread applications, as race condition can be avoided.</p>
<p>Available since: 0.2.4 </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>