📄 group__gdsl__stack.html
字号:
<!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>gdsl: Stack manipulation module</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.4.6 --><div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul></div><h1>Stack manipulation module</h1><p><table border="0" cellpadding="0" cellspacing="0"><tr><td></td></tr><tr><td colspan="2"><br><h2>Typedefs</h2></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">typedef _gdsl_stack * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a></td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">GDSL stack type. <a href="#ged560443d2612fcdb10a55a51687cbbb"></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="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g226386196ca32ee4eae9441f9229a990">gdsl_stack_alloc</a> (const char *NAME, <a class="el" href="group__gdsl__types.html#g32a9b4e8b9665183c2741d28a5ced64f">gdsl_alloc_func_t</a> ALLOC_F, <a class="el" href="group__gdsl__types.html#g2c6b3f96b291b5b39d2799f93e350053">gdsl_free_func_t</a> FREE_F)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new stack. <a href="#g226386196ca32ee4eae9441f9229a990"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gc115f451db17f6509048018bdef1ffe6">gdsl_stack_free</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy a stack. <a href="#gc115f451db17f6509048018bdef1ffe6"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g2ad434c6a6cd2e66033195a9cee5919f">gdsl_stack_flush</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Flush a stack. <a href="#g2ad434c6a6cd2e66033195a9cee5919f"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gf8e7609d8785a3c5f458b996aa42baef">gdsl_stack_get_name</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Getsthe name of a stack. <a href="#gf8e7609d8785a3c5f458b996aa42baef"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g9c34ac44da309b004570530c8cec8a0e">ulong</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g240a364616309e15eb374469af80a019">gdsl_stack_get_size</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Get the size of a stack. <a href="#g240a364616309e15eb374469af80a019"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g9c34ac44da309b004570530c8cec8a0e">ulong</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g89fc03e3da09672b366c6e3f1dd3bb4c">gdsl_stack_get_growing_factor</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Get the growing factor of a stack. <a href="#g89fc03e3da09672b366c6e3f1dd3bb4c"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#gf6a258d8f3ee5206d682d799316314b1">bool</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g05718ea5cff27449f3f63e2d7bdbea3b">gdsl_stack_is_empty</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Check if a stack is empty. <a href="#g05718ea5cff27449f3f63e2d7bdbea3b"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#ga8464560e005bf2cb91fa12055359b95">gdsl_stack_get_top</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Get the top of a stack. <a href="#ga8464560e005bf2cb91fa12055359b95"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g09b1e39af6f153586bcd44be16678fd8">gdsl_stack_get_bottom</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Get the bottom of a stack. <a href="#g09b1e39af6f153586bcd44be16678fd8"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gc1ae848edf02e7e2ce06ce0f0b84c249">gdsl_stack_set_name</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, const char *NEW_NAME)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Set the name of a stack. <a href="#gc1ae848edf02e7e2ce06ce0f0b84c249"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gb913e793c095b977856a3367a58ea161">gdsl_stack_set_growing_factor</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#g9c34ac44da309b004570530c8cec8a0e">ulong</a> G)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Set the growing factor of a stack. <a href="#gb913e793c095b977856a3367a58ea161"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gc3566b143b4e3129719840660c9824b3">gdsl_stack_insert</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, void *VALUE)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Insert an element in a stack (PUSH). <a href="#gc3566b143b4e3129719840660c9824b3"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gab5fda5eded58afa96fe179937697940">gdsl_stack_remove</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Remove an element from a stack (POP). <a href="#gab5fda5eded58afa96fe179937697940"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gabe9364e7e4d4df0ec2c43a9c94f17bd">gdsl_stack_search</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#g200177a9a1ac3f2363e228b0e5faeda7">gdsl_compare_func_t</a> COMP_F, void *VALUE)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Search for a particular element in a stack. <a href="#gabe9364e7e4d4df0ec2c43a9c94f17bd"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g025af567070bbc933a380c4efcf8a529">gdsl_stack_search_by_position</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#g9c34ac44da309b004570530c8cec8a0e">ulong</a> POS)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Search for an element by its position in a stack. <a href="#g025af567070bbc933a380c4efcf8a529"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g09c4e7d90846c987e009070395db9519">gdsl_stack_map_forward</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#g2500bfaaec5df890e72b43f448f13ee8">gdsl_map_func_t</a> MAP_F, void *USER_DATA)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Parse a stack from bottom to top. <a href="#g09c4e7d90846c987e009070395db9519"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__gdsl__types.html#g0e2b9d7fb5ca9e6d50100e5d9e4bcae7">gdsl_element_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gaec1bfd42894b1d163a59f3a06194c93">gdsl_stack_map_backward</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#g2500bfaaec5df890e72b43f448f13ee8">gdsl_map_func_t</a> MAP_F, void *USER_DATA)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Parse a stack from top to bottom. <a href="#gaec1bfd42894b1d163a59f3a06194c93"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#g5862ed3924559830be65c7e6b364d217">gdsl_stack_write</a> (const <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#gfc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a> WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Write all the elements of a stack to a file. <a href="#g5862ed3924559830be65c7e6b364d217"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gce0385f078efc764f4da7bf68b71942a">gdsl_stack_write_xml</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#gfc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a> WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Write the content of a stack to a file into XML. <a href="#gce0385f078efc764f4da7bf68b71942a"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__gdsl__stack.html#gcdd3cfc7a7060ecc8278be39a7a79219">gdsl_stack_dump</a> (<a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> S, <a class="el" href="group__gdsl__types.html#gfc7394b6c8e0a5bd92df75e24512dfd6">gdsl_write_func_t</a> WRITE_F, FILE *OUTPUT_FILE, void *USER_DATA)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">Dump the internal structure of a stack to a file. <a href="#gcdd3cfc7a7060ecc8278be39a7a79219"></a><br></td></tr></table><hr><h2>Typedef Documentation</h2><a class="anchor" name="ged560443d2612fcdb10a55a51687cbbb"></a><!-- doxytag: member="gdsl_stack.h::gdsl_stack_t" ref="ged560443d2612fcdb10a55a51687cbbb" args="" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">typedef struct _gdsl_stack* <a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> </td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>GDSL stack type. <p>This type is voluntary opaque. Variables of this kind could'nt be directly used, but by the functions of this module. <p>Definition at line <a class="el" href="gdsl__stack_8h-source.html#l00053">53</a> of file <a class="el" href="gdsl__stack_8h-source.html">gdsl_stack.h</a>. </td> </tr></table><hr><h2>Function Documentation</h2><a class="anchor" name="g226386196ca32ee4eae9441f9229a990"></a><!-- doxytag: member="gdsl_stack.h::gdsl_stack_alloc" ref="g226386196ca32ee4eae9441f9229a990" args="(const char *NAME, gdsl_alloc_func_t ALLOC_F, gdsl_free_func_t FREE_F)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"><a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> gdsl_stack_alloc </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const char * </td> <td class="mdname" nowrap> <em>NAME</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__gdsl__types.html#g32a9b4e8b9665183c2741d28a5ced64f">gdsl_alloc_func_t</a> </td> <td class="mdname" nowrap> <em>ALLOC_F</em>, </td> </tr> <tr> <td class="md" nowrap align="right"></td> <td class="md"></td> <td class="md" nowrap><a class="el" href="group__gdsl__types.html#g2c6b3f96b291b5b39d2799f93e350053">gdsl_free_func_t</a> </td> <td class="mdname" nowrap> <em>FREE_F</em></td> </tr> <tr> <td class="md"></td> <td class="md">) </td> <td class="md" colspan="2"></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>Create a new stack. <p>Allocate a new stack data structure which name is set to a copy of NAME. The functions pointers ALLOC_F and FREE_F could be used to respectively, alloc and free elements in the stack. These pointers could be set to NULL to use the default ones:<ul><li>the default ALLOC_F simply returns its argument</li><li>the default FREE_F does nothing</li></ul><p><dl compact><dt><b>Note:</b></dt><dd>Complexity: O( 1 ) </dd></dl><dl compact><dt><b>Precondition:</b></dt><dd>nothing. </dd></dl><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>NAME</em> </td><td>The name of the new stack to create </td></tr> <tr><td valign="top"></td><td valign="top"><em>ALLOC_F</em> </td><td>Function to alloc element when inserting it in a stack </td></tr> <tr><td valign="top"></td><td valign="top"><em>FREE_F</em> </td><td>Function to free element when deleting it from a stack </td></tr> </table></dl><dl compact><dt><b>Returns:</b></dt><dd>the newly allocated stack in case of success. <p>NULL in case of insufficient memory. </dd></dl><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__stack.html#gc115f451db17f6509048018bdef1ffe6">gdsl_stack_free()</a> <p><a class="el" href="group__gdsl__stack.html#g2ad434c6a6cd2e66033195a9cee5919f">gdsl_stack_flush()</a> </dd></dl> </td> </tr></table><a class="anchor" name="gc115f451db17f6509048018bdef1ffe6"></a><!-- doxytag: member="gdsl_stack.h::gdsl_stack_free" ref="gc115f451db17f6509048018bdef1ffe6" args="(gdsl_stack_t S)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void gdsl_stack_free </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> </td> <td class="mdname1" valign="top" nowrap> <em>S</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap></td> </tr> </table> </td> </tr></table><table cellspacing="5" cellpadding="0" border="0"> <tr> <td> </td> <td><p>Destroy a stack. <p>Deallocate all the elements of the stack S by calling S's FREE_F function passed to <a class="el" href="group__gdsl__stack.html#g226386196ca32ee4eae9441f9229a990">gdsl_stack_alloc()</a>. The name of S is deallocated and S is deallocated itself too.<p><dl compact><dt><b>Note:</b></dt><dd>Complexity: O( |S| ) </dd></dl><dl compact><dt><b>Precondition:</b></dt><dd>S must be a valid gdsl_stack_t </dd></dl><dl compact><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>S</em> </td><td>The stack to destroy </td></tr> </table></dl><dl compact><dt><b>See also:</b></dt><dd><a class="el" href="group__gdsl__stack.html#g226386196ca32ee4eae9441f9229a990">gdsl_stack_alloc()</a> <p><a class="el" href="group__gdsl__stack.html#g2ad434c6a6cd2e66033195a9cee5919f">gdsl_stack_flush()</a> </dd></dl> </td> </tr></table><a class="anchor" name="g2ad434c6a6cd2e66033195a9cee5919f"></a><!-- doxytag: member="gdsl_stack.h::gdsl_stack_flush" ref="g2ad434c6a6cd2e66033195a9cee5919f" args="(gdsl_stack_t S)" --><p><table class="mdTable" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top">void gdsl_stack_flush </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top"><a class="el" href="group__gdsl__stack.html#ged560443d2612fcdb10a55a51687cbbb">gdsl_stack_t</a> </td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -