<!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/tail.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 Page</span></a></li> <li><a href="annotated.html"><span>Data 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 List</span></a></li> <li><a href="globals.html"><span>Globals</span></a></li> </ul></div> <h1>datrie/tail.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2> trie tail for keeping suffixes <p> <p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#6c18411372028dc3dc6e74fc0e09db25">tail_is_walkable_char</a>(t, s, suffix_idx, c) (tail_get_suffix ((t), (s)) [suffix_idx] == (c))</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test walkability in tail with a character. <a href="#6c18411372028dc3dc6e74fc0e09db25"></a><br></td></tr> <tr><td colspan="2"><br><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="57310a081de76a2bf1be2cf3513afd93"></a><!-- doxytag: member="tail.h::Tail" ref="57310a081de76a2bf1be2cf3513afd93" args="" --> typedef _Tail </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Double-array structure type. <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="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#f450c48aefcfe921eccc89cca0a24c0b">tail_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"> </td><td class="mdescRight">Open tail data from file. <a href="#f450c48aefcfe921eccc89cca0a24c0b"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#eab3e6e147336a54f518c1ad10eccfe1">tail_close</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Close tail data. <a href="#eab3e6e147336a54f518c1ad10eccfe1"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#fa3a26dc07040f117bb26408a905b1c6">tail_save</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Save tail data. <a href="#fa3a26dc07040f117bb26408a905b1c6"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#b477450dd2939774336ac7905433bc40">tail_get_suffix</a> (const <a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> index)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get suffix. <a href="#b477450dd2939774336ac7905433bc40"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#99b0035b411e6913451dec06fd1f1b23">tail_set_suffix</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> index, const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *suffix)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set suffix of existing entry. <a href="#99b0035b411e6913451dec06fd1f1b23"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#fd08e82e06f71fff7eb5cf15f7dbc1dd">tail_add_suffix</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *suffix)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add a new suffix. <a href="#fd08e82e06f71fff7eb5cf15f7dbc1dd"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#83ad25365e450a7be6917d0d0d998136">tail_get_data</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> index)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get data associated to suffix entry. <a href="#83ad25365e450a7be6917d0d0d998136"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#6a952e452716e1f1898fd005d8652aea">tail_set_data</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> index, <a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set data associated to suffix entry. <a href="#6a952e452716e1f1898fd005d8652aea"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#0fdd2d0f42491c977d494c98c5ecc732">tail_delete</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> index)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete suffix entry. <a href="#0fdd2d0f42491c977d494c98c5ecc732"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#ee65cb612074824f65a37c1a1dba0bf5">tail_walk_str</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, short *suffix_idx, const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *str, int len)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Walk in tail with a string. <a href="#ee65cb612074824f65a37c1a1dba0bf5"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="tail_8h.html#e5e3635cb9f8f53986e3a4ce9abbe8bd">tail_walk_char</a> (<a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> *t, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, short *suffix_idx, <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Walk in tail with a character. <a href="#e5e3635cb9f8f53986e3a4ce9abbe8bd"></a><br></td></tr> </table> <hr><h2>Define Documentation</h2> <a class="anchor" name="6c18411372028dc3dc6e74fc0e09db25"></a><!-- doxytag: member="tail.h::tail_is_walkable_char" ref="6c18411372028dc3dc6e74fc0e09db25" args="(t, s, suffix_idx, c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define tail_is_walkable_char </td> <td>(</td> <td class="paramtype">t, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">s, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">suffix_idx, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (tail_get_suffix ((t), (s)) [suffix_idx] == (c))</td> </tr> </table> </div> <div class="memdoc"> <p> Test walkability in tail with a character. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the tail data index </td></tr> <tr><td valign="top"></td><td valign="top"><em>suffix_idx</em> </td><td>: current character index in suffix </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the character to test walkability</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean indicating walkability</dd></dl> Test if the character <em>c</em> can be used to walk from given character position <em>suffix_idx</em> of entry <em>s</em> of the tail data <em>t</em>. </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="fd08e82e06f71fff7eb5cf15f7dbc1dd"></a><!-- doxytag: member="tail.h::tail_add_suffix" ref="fd08e82e06f71fff7eb5cf15f7dbc1dd" args="(Tail *t, const TrieChar *suffix)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> tail_add_suffix </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> * </td> <td class="paramname"> <em>suffix</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Add a new suffix. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>suffix</em> </td><td>: the new suffix</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the newly added suffix.</dd></dl> Add a new suffix entry to tail. </div> </div><p> <a class="anchor" name="eab3e6e147336a54f518c1ad10eccfe1"></a><!-- doxytag: member="tail.h::tail_close" ref="eab3e6e147336a54f518c1ad10eccfe1" args="(Tail *t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int tail_close </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Close tail data. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>: the tail data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non-zero on failure</dd></dl> Close the given tail data. If <em>d</em> was openned for writing, all pending changes will be saved to file. </div> </div><p> <a class="anchor" name="0fdd2d0f42491c977d494c98c5ecc732"></a><!-- doxytag: member="tail.h::tail_delete" ref="0fdd2d0f42491c977d494c98c5ecc732" args="(Tail *t, TrieIndex index)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void tail_delete </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>index</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Delete suffix entry. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>: the index of the suffix to delete</td></tr> </table> </dl> Delete suffix entry from the tail data. </div> </div><p> <a class="anchor" name="83ad25365e450a7be6917d0d0d998136"></a><!-- doxytag: member="tail.h::tail_get_data" ref="83ad25365e450a7be6917d0d0d998136" args="(Tail *t, TrieIndex index)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> tail_get_data </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>index</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Get data associated to suffix entry. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>: the index of the suffix</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the data associated to the suffix entry</dd></dl> Get data associated to suffix entry <em>index</em> in tail data. </div> </div><p> <a class="anchor" name="b477450dd2939774336ac7905433bc40"></a><!-- doxytag: member="tail.h::tail_get_suffix" ref="b477450dd2939774336ac7905433bc40" args="(const Tail *t, TrieIndex index)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a>* tail_get_suffix </td> <td>(</td> <td class="paramtype">const <a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>index</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Get suffix. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>: the index of the suffix</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>an allocated string of the indexed suffix.</dd></dl> Get suffix from tail with given <em>index</em>. The returned string is allocated. The caller should free it with free(). </div> </div><p> <a class="anchor" name="f450c48aefcfe921eccc89cca0a24c0b"></a><!-- doxytag: member="tail.h::tail_open" ref="f450c48aefcfe921eccc89cca0a24c0b" 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="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a>* tail_open </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </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> </td> <td class="paramname"> <em>mode</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Open tail data from file. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>: the path that stores the tail files </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>: the name of the tail data (not actual file name) </td></tr> <tr><td valign="top"></td><td valign="top"><em>mode</em> </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 tail data, NULL on failure</dd></dl> Open a tail data 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="fa3a26dc07040f117bb26408a905b1c6"></a><!-- doxytag: member="tail.h::tail_save" ref="fa3a26dc07040f117bb26408a905b1c6" args="(Tail *t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int tail_save </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Save tail data. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>t</em> </td><td>: the tail data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on success, non-zero on failure</dd></dl> If <em>t</em> data was openned for writing, save all pending changes to file. </div> </div><p> <a class="anchor" name="6a952e452716e1f1898fd005d8652aea"></a><!-- doxytag: member="tail.h::tail_set_data" ref="6a952e452716e1f1898fd005d8652aea" args="(Tail *t, TrieIndex index, TrieData data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Bool tail_set_data </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>index</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#808716c3c0e2da1883d79243523e701b">TrieData</a> </td> <td class="paramname"> <em>data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Set data associated to suffix entry. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>: the index of the suffix </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>: the data to set</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean indicating success</dd></dl> Set data associated to suffix entry <em>index</em> in tail data. </div> </div><p> <a class="anchor" name="99b0035b411e6913451dec06fd1f1b23"></a><!-- doxytag: member="tail.h::tail_set_suffix" ref="99b0035b411e6913451dec06fd1f1b23" args="(Tail *t, TrieIndex index, const TrieChar *suffix)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Bool tail_set_suffix </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>index</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> * </td> <td class="paramname"> <em>suffix</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Set suffix of existing entry. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>index</em> </td><td>: the index of the suffix </td></tr> <tr><td valign="top"></td><td valign="top"><em>suffix</em> </td><td>: the new suffix</td></tr> </table> </dl> Set suffix of existing entry of given <em>index</em> in tail. </div> </div><p> <a class="anchor" name="e5e3635cb9f8f53986e3a4ce9abbe8bd"></a><!-- doxytag: member="tail.h::tail_walk_char" ref="e5e3635cb9f8f53986e3a4ce9abbe8bd" args="(Tail *t, TrieIndex s, short *suffix_idx, TrieChar c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Bool tail_walk_char </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">short * </td> <td class="paramname"> <em>suffix_idx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> </td> <td class="paramname"> <em>c</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Walk in tail with a character. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the tail data index </td></tr> <tr><td valign="top"></td><td valign="top"><em>suffix_idx</em> </td><td>: pointer to current character index in suffix </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the character to use in walking</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean indicating success</dd></dl> Walk in the tail data <em>t</em> at entry <em>s</em>, from given character position <em>*suffix_idx</em>, using given character <em>c</em>. If the walk is successful, it returns TRUE, and <em>*suffix_idx</em> is updated to the next character. Otherwise, it returns FALSE, and <em>*suffix_idx</em> is left unchanged. </div> </div><p> <a class="anchor" name="ee65cb612074824f65a37c1a1dba0bf5"></a><!-- doxytag: member="tail.h::tail_walk_str" ref="ee65cb612074824f65a37c1a1dba0bf5" args="(Tail *t, TrieIndex s, short *suffix_idx, const TrieChar *str, int len)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int tail_walk_str </td> <td>(</td> <td class="paramtype"><a class="el" href="tail_8h.html#57310a081de76a2bf1be2cf3513afd93">Tail</a> * </td> <td class="paramname"> <em>t</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">short * </td> <td class="paramname"> <em>suffix_idx</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> * </td> <td class="paramname"> <em>str</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>len</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Walk in tail with a string. <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>t</em> </td><td>: the tail data </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the tail data index </td></tr> <tr><td valign="top"></td><td valign="top"><em>suffix_idx</em> </td><td>: pointer to current character index in suffix </td></tr> <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>: the string to use in walking </td></tr> <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>: total characters in <em>str</em> to walk</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>total number of characters successfully walked</dd></dl> Walk in the tail data <em>t</em> at entry <em>s</em>, from given character position <em>*suffix_idx</em>, using <em>len</em> characters of given string <em>str</em>. On return, <em>*suffix_idx</em> is updated to the position after the last successful walk, and the function returns the total number of character succesfully walked. </div> </div><p> <hr size="1"><address style="align: right;"><small>Generated on Mon Jan 22 12:43:28 2007 for libdatrie by <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>