<!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/darray.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/darray.h File Reference</h1><hr><a name="_details"></a><h2>Detailed Description</h2> Double-array trie structure. <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="darray_8h.html#696a2e934ab5da03e828a407abb7f7b5">da_is_walkable</a>(d, s, c) (da_get_check ((d), da_get_base ((d), (s)) + (c)) == (s))</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test walkability in double-array structure. <a href="#696a2e934ab5da03e828a407abb7f7b5"></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="b2407c9ab6742127a7941b7526f3394d"></a><!-- doxytag: member="darray.h::DArray" ref="b2407c9ab6742127a7941b7526f3394d" args="" --> typedef _DArray </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Double-array structure type. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">typedef Bool(*) </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a> (const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> sep_node, void *user_data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Double-array entry enumeration function. <a href="#b1bb58936b16076bcb69a47c0f38b120"></a><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="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#2cd9bb4cc1007b7f25fc4cab7c2b1a1d">da_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 double-array from file. <a href="#2cd9bb4cc1007b7f25fc4cab7c2b1a1d"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#a899fdef97bebfd77ea050b2e5e28109">da_close</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Close double-array data. <a href="#a899fdef97bebfd77ea050b2e5e28109"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#9c5f97be70436ad2d231073e45f21add">da_save</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Save double-array data. <a href="#9c5f97be70436ad2d231073e45f21add"></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="darray_8h.html#83be41a66c6f5b9fed33b5cb2b46fdc1">da_get_root</a> (const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get root state. <a href="#83be41a66c6f5b9fed33b5cb2b46fdc1"></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="darray_8h.html#757b24229c390d5bcc491e55cd35c3d0">da_get_base</a> (const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get BASE cell. <a href="#757b24229c390d5bcc491e55cd35c3d0"></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="darray_8h.html#e2159ccfde584f1d40c1f9ca2e6670b4">da_get_check</a> (const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get CHECK cell. <a href="#e2159ccfde584f1d40c1f9ca2e6670b4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#c1f019557f488b1f710a2f57f2a3de2e">da_set_base</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> val)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set BASE cell. <a href="#c1f019557f488b1f710a2f57f2a3de2e"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#45e3870b86200e4849552cc9cb106785">da_set_check</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> val)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set CHECK cell. <a href="#45e3870b86200e4849552cc9cb106785"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#8c5b5fb5f16b1b6b85a47ce7afceaf4c">da_walk</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> *s, <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Walk in double-array structure. <a href="#8c5b5fb5f16b1b6b85a47ce7afceaf4c"></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="darray_8h.html#cd8329c4b927c66b21b4dab225a4ea92">da_insert_branch</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s, <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> c)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Insert a branch from trie node. <a href="#cd8329c4b927c66b21b4dab225a4ea92"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#acab185ecc4b3c88e8923902bb238b70">da_prune</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Prune the single branch. <a href="#acab185ecc4b3c88e8923902bb238b70"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">Bool </td><td class="memItemRight" valign="bottom"><a class="el" href="darray_8h.html#1b07a3a867a5fa016293295ea06880dc">da_enumerate</a> (<a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> *d, <a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a> enum_func, void *user_data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Enumerate entries stored in double-array structure. <a href="#1b07a3a867a5fa016293295ea06880dc"></a><br></td></tr> </table> <hr><h2>Define Documentation</h2> <a class="anchor" name="696a2e934ab5da03e828a407abb7f7b5"></a><!-- doxytag: member="darray.h::da_is_walkable" ref="696a2e934ab5da03e828a407abb7f7b5" args="(d, s, c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define da_is_walkable </td> <td>(</td> <td class="paramtype">d, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">s, <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">c </td> <td class="paramname"> </td> <td> ) </td> <td width="100%"> (da_get_check ((d), da_get_base ((d), (s)) + (c)) == (s))</td> </tr> </table> </div> <div class="memdoc"> <p> Test walkability in double-array structure. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>: the double-array structure </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: current state </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the input character</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean indicating walkability</dd></dl> Test if there is a transition from state <em>s</em> with input character <em>c</em>. </div> </div><p> <hr><h2>Typedef Documentation</h2> <a class="anchor" name="b1bb58936b16076bcb69a47c0f38b120"></a><!-- doxytag: member="darray.h::DAEnumFunc" ref="b1bb58936b16076bcb69a47c0f38b120" args="(const TrieChar *key, TrieIndex sep_node, void *user_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef Bool(*) <a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a>(const <a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> *key, <a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> sep_node, void *user_data) </td> </tr> </table> </div> <div class="memdoc"> <p> Double-array entry enumeration function. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>key</em> </td><td>: the key of the entry, up to <em>sep_node</em> </td></tr> <tr><td valign="top"></td><td valign="top"><em>sep_node</em> </td><td>: the separate node of the entry </td></tr> <tr><td valign="top"></td><td valign="top"><em>user_data</em> </td><td>: user-supplied data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>TRUE to continue enumeration, FALSE to stop </dd></dl> </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="a899fdef97bebfd77ea050b2e5e28109"></a><!-- doxytag: member="darray.h::da_close" ref="a899fdef97bebfd77ea050b2e5e28109" args="(DArray *d)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int da_close </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Close double-array 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>d</em> </td><td>: the double-array 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 double-array data. If <em>d</em> was openned for writing, all pending changes will be saved to file. </div> </div><p> <a class="anchor" name="1b07a3a867a5fa016293295ea06880dc"></a><!-- doxytag: member="darray.h::da_enumerate" ref="1b07a3a867a5fa016293295ea06880dc" args="(DArray *d, DAEnumFunc enum_func, void *user_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Bool da_enumerate </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="darray_8h.html#b1bb58936b16076bcb69a47c0f38b120">DAEnumFunc</a> </td> <td class="paramname"> <em>enum_func</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>user_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> Enumerate entries stored in double-array structure. <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>d</em> </td><td>: the double-array structure </td></tr> <tr><td valign="top"></td><td valign="top"><em>enum_func</em> </td><td>: the callback function to be called on each separate node </td></tr> <tr><td valign="top"></td><td valign="top"><em>user_data</em> </td><td>: user-supplied data to send as an argument to <em>enum_func</em> </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean value indicating whether all the keys are visited</dd></dl> Enumerate all keys stored in double-array structure. For each entry, the user-supplied <em>enum_func</em> callback function is called, with the entry key, the separate node, and user-supplied data. Returning FALSE from such callback will stop enumeration and return FALSE. </div> </div><p> <a class="anchor" name="757b24229c390d5bcc491e55cd35c3d0"></a><!-- doxytag: member="darray.h::da_get_base" ref="757b24229c390d5bcc491e55cd35c3d0" args="(const DArray *d, TrieIndex s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_get_base </td> <td>(</td> <td class="paramtype">const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>s</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 BASE cell. <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>d</em> </td><td>: the double-array data </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the double-array state to get data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the BASE cell value for the given state</dd></dl> Get BASE cell value for the given state. </div> </div><p> <a class="anchor" name="e2159ccfde584f1d40c1f9ca2e6670b4"></a><!-- doxytag: member="darray.h::da_get_check" ref="e2159ccfde584f1d40c1f9ca2e6670b4" args="(const DArray *d, TrieIndex s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_get_check </td> <td>(</td> <td class="paramtype">const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>s</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 CHECK cell. <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>d</em> </td><td>: the double-array data </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the double-array state to get data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the CHECK cell value for the given state</dd></dl> Get CHECK cell value for the given state. </div> </div><p> <a class="anchor" name="83be41a66c6f5b9fed33b5cb2b46fdc1"></a><!-- doxytag: member="darray.h::da_get_root" ref="83be41a66c6f5b9fed33b5cb2b46fdc1" args="(const DArray *d)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_get_root </td> <td>(</td> <td class="paramtype">const <a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Get root state. <p> <dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>d</em> </td><td>: the double-array data</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>root state of the <em>index</em> set, or TRIE_INDEX_ERROR on failure</dd></dl> Get root state for stepwise walking. </div> </div><p> <a class="anchor" name="cd8329c4b927c66b21b4dab225a4ea92"></a><!-- doxytag: member="darray.h::da_insert_branch" ref="cd8329c4b927c66b21b4dab225a4ea92" args="(DArray *d, TrieIndex s, TrieChar c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> da_insert_branch </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> </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> Insert a branch from trie node. <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>d</em> </td><td>: the double-array structure </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the state to add branch to </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the character for the branch label</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the new node</dd></dl> Insert a new arc labelled with character <em>c</em> from the trie node represented by index <em>s</em> in double-array structure <em>d</em>. Note that it assumes that no such arc exists before inserting. </div> </div><p> <a class="anchor" name="2cd9bb4cc1007b7f25fc4cab7c2b1a1d"></a><!-- doxytag: member="darray.h::da_open" ref="2cd9bb4cc1007b7f25fc4cab7c2b1a1d" 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="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a>* da_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 double-array 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 double-array files </td></tr> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>: the name of the double-array (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 double-array, NULL on failure</dd></dl> Open a double-array structure 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="acab185ecc4b3c88e8923902bb238b70"></a><!-- doxytag: member="darray.h::da_prune" ref="acab185ecc4b3c88e8923902bb238b70" args="(DArray *d, TrieIndex s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void da_prune </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>s</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> Prune the single branch. <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>d</em> </td><td>: the double-array structure </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the dangling state to prune off</td></tr> </table> </dl> Prune off a non-separate path up from the final state <em>s</em>. If <em>s</em> still has some children states, it does nothing. Otherwise, it deletes the node and all its parents which become non-separate. </div> </div><p> <a class="anchor" name="9c5f97be70436ad2d231073e45f21add"></a><!-- doxytag: member="darray.h::da_save" ref="9c5f97be70436ad2d231073e45f21add" args="(DArray *d)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int da_save </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em> </td> <td> ) </td> <td width="100%"></td> </tr> </table> </div> <div class="memdoc"> <p> Save double-array 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>d</em> </td><td>: the double-array 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>double-array</em> data was openned for writing, save all pending changes to file. </div> </div><p> <a class="anchor" name="c1f019557f488b1f710a2f57f2a3de2e"></a><!-- doxytag: member="darray.h::da_set_base" ref="c1f019557f488b1f710a2f57f2a3de2e" args="(DArray *d, TrieIndex s, TrieIndex val)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void da_set_base </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </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#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>val</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 BASE cell. <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>d</em> </td><td>: the double-array data </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the double-array state to get data </td></tr> <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>: the value to set</td></tr> </table> </dl> Set BASE cell for the given state to the given value. </div> </div><p> <a class="anchor" name="45e3870b86200e4849552cc9cb106785"></a><!-- doxytag: member="darray.h::da_set_check" ref="45e3870b86200e4849552cc9cb106785" args="(DArray *d, TrieIndex s, TrieIndex val)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void da_set_check </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </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#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> </td> <td class="paramname"> <em>val</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 CHECK cell. <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>d</em> </td><td>: the double-array data </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: the double-array state to get data </td></tr> <tr><td valign="top"></td><td valign="top"><em>val</em> </td><td>: the value to set</td></tr> </table> </dl> Set CHECK cell for the given state to the given value. </div> </div><p> <a class="anchor" name="8c5b5fb5f16b1b6b85a47ce7afceaf4c"></a><!-- doxytag: member="darray.h::da_walk" ref="8c5b5fb5f16b1b6b85a47ce7afceaf4c" args="(DArray *d, TrieIndex *s, TrieChar c)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Bool da_walk </td> <td>(</td> <td class="paramtype"><a class="el" href="darray_8h.html#b2407c9ab6742127a7941b7526f3394d">DArray</a> * </td> <td class="paramname"> <em>d</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#f69cea18ddede235f4f20121fc1de237">TrieIndex</a> * </td> <td class="paramname"> <em>s</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="triedefs_8h.html#0d28476db8e582153531f3e098e1f708">TrieChar</a> </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 double-array structure. <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>d</em> </td><td>: the double-array structure </td></tr> <tr><td valign="top"></td><td valign="top"><em>s</em> </td><td>: current state </td></tr> <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>: the input character</td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>boolean indicating success</dd></dl> Walk the double-array trie from state <em>*s</em>, using input character <em>c</em>. If there exists an edge from <em>*s</em> with arc labeled <em>c</em>, this function returns TRUE and <em>*s</em> is updated to the new state. Otherwise, it returns FALSE and <em>*s</em> is left unchanged. </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>