<!-- This comment will put IE 6, 7 and 8 in quirks mode --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/> <title>ALSA project - the C library reference: Configuration Interface</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javaScript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.6.3 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> <li> <div id="MSearchBox" class="MSearchBoxInactive"> <img id="MSearchSelect" src="search/search.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </div> </li> </ul> </div> </div> <div class="contents"> <h1>Configuration Interface</h1><table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structsnd__devname.html">snd_devname_t</a></td></tr> <tr><td colspan="2"><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga96fd234b2ce9c03a9e82f4e854cc65ce"></a><!-- doxytag: member="Config::SND_CONFIG_DLSYM_VERSION_EVALUATE" ref="ga96fd234b2ce9c03a9e82f4e854cc65ce" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga96fd234b2ce9c03a9e82f4e854cc65ce">SND_CONFIG_DLSYM_VERSION_EVALUATE</a> _dlsym_config_evaluate_001</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><code>dlsym</code> version for the config evaluate callback. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga948b35b3df554e2e06ba5bb9f5452704"></a><!-- doxytag: member="Config::SND_CONFIG_DLSYM_VERSION_HOOK" ref="ga948b35b3df554e2e06ba5bb9f5452704" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga948b35b3df554e2e06ba5bb9f5452704">SND_CONFIG_DLSYM_VERSION_HOOK</a> _dlsym_config_hook_001</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><code>dlsym</code> version for the config hook callback. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gac3f21333e1f9b602cad9b06cb418fa80">snd_config_for_each</a>(pos, next, node) for (pos = snd_config_iterator_first(node), next = snd_config_iterator_next(pos); pos != snd_config_iterator_end(node); pos = next, next = snd_config_iterator_next(pos))</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Helper macro to iterate over the children of a compound node. <a href="#gac3f21333e1f9b602cad9b06cb418fa80"></a><br/></td></tr> <tr><td colspan="2"><h2>Typedefs</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_config </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Internal structure for a configuration node object. <a href="#ga1c20905af775ae77d04d1a5696f67985"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct <br class="typebreak"/> _snd_config_iterator * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Type for a configuration compound iterator. <a href="#ga6c621ab8875a222e1fcb56e9feed6ec6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef struct _snd_config_update </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Internal structure for a configuration private update object. <a href="#gab10b229189a94e3fcbac7f6ca5794cc0"></a><br/></td></tr> <tr><td colspan="2"><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> { <br/> <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a>, <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a>, <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a>, <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a>, <br/> <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a>, <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a82b5c1a9dbadaa4e36815fc1f01fc2f7">SND_CONFIG_TYPE_COMPOUND</a> = 1024 <br/> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>Configuration node type. </p> <a href="group___config.html#gaa41083e55d19c7755c5d624030e06887">More...</a><br/></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaf563d57ea9d576a94578368a3d2382c3">snd_config_top</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a top level configuration node. <a href="#gaf563d57ea9d576a94578368a3d2382c3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga51f79d1f24a519e126415c72210525b0">snd_config_load</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> *in)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Loads a configuration tree. <a href="#ga51f79d1f24a519e126415c72210525b0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga27334922bab8391aa2ef1813f48f4d70">snd_config_load_override</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> *in)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Loads a configuration tree and overrides existing configuration nodes. <a href="#ga27334922bab8391aa2ef1813f48f4d70"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gafac08a29a1e04b03a22028a8c70f78bd">snd_config_save</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___output.html#ga49729cc6454539495c1f5b6e95cd474a">snd_output_t</a> *out)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Dumps the contents of a configuration node or tree. <a href="#gafac08a29a1e04b03a22028a8c70f78bd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga41a3d2202cfb9016e33aa85ea70a4c9c">snd_config_update</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updates <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> by rereading the global configuration files (if needed). <a href="#ga41a3d2202cfb9016e33aa85ea70a4c9c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga06e80976c3c00fdc786f9b213e5c40f7">snd_config_update_r</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **top, <a class="el" href="group___config.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> **update, const char *path)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Updates a configuration tree by rereading the configuration files (if needed). <a href="#ga06e80976c3c00fdc786f9b213e5c40f7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga8f781ac635a0233fb2f58766a83d65cd">snd_config_update_free</a> (<a class="el" href="group___config.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> *update)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a private update structure. <a href="#ga8f781ac635a0233fb2f58766a83d65cd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga51dbc0ff1d9b34d753706d09d768116b">snd_config_update_free_global</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Frees the global configuration tree in <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a>. <a href="#ga51dbc0ff1d9b34d753706d09d768116b"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gabafb8cac2181c4c1e34b99f54421d1c6">snd_config_search</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *key, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Searches for a node in a configuration tree. <a href="#gabafb8cac2181c4c1e34b99f54421d1c6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga7b2f5723e44a1b69f2a8555d469803d1">snd_config_searchv</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result,...)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Searches for a node in a configuration tree. <a href="#ga7b2f5723e44a1b69f2a8555d469803d1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gad7c23084ee4052ad33d77db6278db46f">snd_config_search_definition</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *base, const char *key, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Searches for a definition in a configuration tree, using aliases and expanding hooks and arguments. <a href="#gad7c23084ee4052ad33d77db6278db46f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga7759f41c3757ce72ee9bd118976071c2">snd_config_expand</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *root, const char *args, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *private_data, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Expands a configuration node, applying arguments and functions. <a href="#ga7759f41c3757ce72ee9bd118976071c2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga1a51645a07e204d4e814d890452da558">snd_config_evaluate</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *root, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *private_data, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Evaluates a configuration node at runtime. <a href="#ga1a51645a07e204d4e814d890452da558"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaf62dd825828c05f1d63a62eee7046080">snd_config_add</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *leaf)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Adds a child to a compound configuration node. <a href="#gaf62dd825828c05f1d63a62eee7046080"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga2a006b942faa3335a958a7df7bcea17e">snd_config_delete</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Frees a configuration node. <a href="#ga2a006b942faa3335a958a7df7bcea17e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaec120883e56ecb510e064151e0b11d51">snd_config_delete_compound_members</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Deletes the children of a node. <a href="#gaec120883e56ecb510e064151e0b11d51"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga30f30bd27d13fbb3527270b3fc9e1676">snd_config_copy</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **dst, <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *src)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a copy of a configuration node. <a href="#ga30f30bd27d13fbb3527270b3fc9e1676"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gac570ecbaba611ccc12bc235a1f4d0181">snd_config_make</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, <a class="el" href="group___config.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a configuration node. <a href="#gac570ecbaba611ccc12bc235a1f4d0181"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga838fac581e115574acc3711cad9f5877">snd_config_make_integer</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an integer configuration node. <a href="#ga838fac581e115574acc3711cad9f5877"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga2c27175c162fe5027e3f1b3d5420afbb">snd_config_make_integer64</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a 64-bit-integer configuration node. <a href="#ga2c27175c162fe5027e3f1b3d5420afbb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga8f175813bfc2556bd08fd580f05d36e6">snd_config_make_real</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a real number configuration node. <a href="#ga8f175813bfc2556bd08fd580f05d36e6"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6764115f489629be027b434c4e323cff">snd_config_make_string</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string configuration node. <a href="#ga6764115f489629be027b434c4e323cff"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gadbcce71d8d3a78709fc2a78d6f543584">snd_config_make_pointer</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a pointer configuration node. <a href="#gadbcce71d8d3a78709fc2a78d6f543584"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga2ce24133c1d6828e2afe366284c61e01">snd_config_make_compound</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, int join)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an empty compound configuration node. <a href="#ga2ce24133c1d6828e2afe366284c61e01"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gafeb0552cbed09a3badbb5e74c7a7973d">snd_config_imake_integer</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const long value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates an integer configuration node with the given initial value. <a href="#gafeb0552cbed09a3badbb5e74c7a7973d"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga04cfbfda89dc17c19a5a4076271a4d07">snd_config_imake_integer64</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const long long value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a 64-bit-integer configuration node with the given initial value. <a href="#ga04cfbfda89dc17c19a5a4076271a4d07"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga968e5bb773dfea922b5272636b26e9c2">snd_config_imake_real</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const double value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a real number configuration node with the given initial value. <a href="#ga968e5bb773dfea922b5272636b26e9c2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaa83035f79027a464bf9d5d31e0a20547">snd_config_imake_string</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const char *ascii)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a string configuration node with the given initial value. <a href="#gaa83035f79027a464bf9d5d31e0a20547"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gac7c6ce28a676169fff594aa4222705b2">snd_config_imake_pointer</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const void *ptr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Creates a pointer configuration node with the given initial value. <a href="#gac7c6ce28a676169fff594aa4222705b2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___config.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6def4c43ce325abaa3ddfba5a4f4d138">snd_config_get_type</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the type of a configuration node. <a href="#ga6def4c43ce325abaa3ddfba5a4f4d138"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga550948931d44695b6d8e8f148f87cb54">snd_config_set_id</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *id)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Sets the id of a configuration node. <a href="#ga550948931d44695b6d8e8f148f87cb54"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6fd3be48221cae9cee9c7245a0804d73">snd_config_set_integer</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of an integer configuration node. <a href="#ga6fd3be48221cae9cee9c7245a0804d73"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gafdb63c78c07e11194a28d591b0fbffc4">snd_config_set_integer64</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long long value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a 64-bit-integer configuration node. <a href="#gafdb63c78c07e11194a28d591b0fbffc4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga46c71d5d36c64f0a06ceae956a39fedc">snd_config_set_real</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, double value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a real-number configuration node. <a href="#ga46c71d5d36c64f0a06ceae956a39fedc"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga0f76f8ad47dce7f90580c8d59c6e44f8">snd_config_set_string</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a string configuration node. <a href="#ga0f76f8ad47dce7f90580c8d59c6e44f8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gac1810a11f576fe339074502f4fed4a91">snd_config_set_ascii</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *ascii)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a configuration node. <a href="#gac1810a11f576fe339074502f4fed4a91"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga037c3bf96326bb6f5dfd340475b34fbf">snd_config_set_pointer</a> (<a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const void *ptr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a pointer configuration node. <a href="#ga037c3bf96326bb6f5dfd340475b34fbf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gae366751e8ea98aeb69f9ef876f7b949c">snd_config_get_id</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char **value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the id of a configuration node. <a href="#gae366751e8ea98aeb69f9ef876f7b949c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gabfbc36060fd4f5d1d929938443f95559">snd_config_get_integer</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long *value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of an integer configuration node. <a href="#gabfbc36060fd4f5d1d929938443f95559"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaf4d9e68918f7d49d7b4b14ffbe94afc1">snd_config_get_integer64</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long long *value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a 64-bit-integer configuration node. <a href="#gaf4d9e68918f7d49d7b4b14ffbe94afc1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gad4d23c0bf941527d80aeb6f991bf88c9">snd_config_get_real</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, double *value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a real-number configuration node. <a href="#gad4d23c0bf941527d80aeb6f991bf88c9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga79738baffa6fa7722b1027ab84ac61bb">snd_config_get_ireal</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, double *value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a real or integer configuration node. <a href="#ga79738baffa6fa7722b1027ab84ac61bb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga5ab99983d1d93ddbcde9bb69a1e4f9fb">snd_config_get_string</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char **value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a string configuration node. <a href="#ga5ab99983d1d93ddbcde9bb69a1e4f9fb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaa26f97e098a0dd2cd5e28299b6b6c132">snd_config_get_ascii</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, char **value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a configuration node as a string. <a href="#gaa26f97e098a0dd2cd5e28299b6b6c132"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga54868e0fa30458ef1c259772a8e7c6d7">snd_config_get_pointer</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const void **value)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a pointer configuration node. <a href="#ga54868e0fa30458ef1c259772a8e7c6d7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaeec157fd161a138e402c9bd243bbd408">snd_config_test_id</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *id)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Compares the id of a configuration node to a given string. <a href="#gaeec157fd161a138e402c9bd243bbd408"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gac8965466674c10b9a119d591ed484cef">snd_config_iterator_first</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *node)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to a node's first child. <a href="#gac8965466674c10b9a119d591ed484cef"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga10c27ddc83c78680d91a167dd2f0a3cb">snd_config_iterator_next</a> (const <a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> iterator)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to the next sibling. <a href="#ga10c27ddc83c78680d91a167dd2f0a3cb"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gac08a30bc630481f69feb2170fed4afda">snd_config_iterator_end</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *node)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator that ends a node's children list. <a href="#gac08a30bc630481f69feb2170fed4afda"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaa91fe1d926d88041ed516a6a7293f606">snd_config_iterator_entry</a> (const <a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> iterator)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Returns the configuration node handle pointed to by an iterator. <a href="#gaa91fe1d926d88041ed516a6a7293f606"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga11dfab861b537b564f0c76d9b1eb2935">snd_config_get_bool_ascii</a> (const char *ascii)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the boolean value from the given ASCII string. <a href="#ga11dfab861b537b564f0c76d9b1eb2935"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gae5d80ee31e779992fd14672fd850a3d1">snd_config_get_bool</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *conf)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the boolean value from a configuration node. <a href="#gae5d80ee31e779992fd14672fd850a3d1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga5759c972706da4bd3be35c9336568bfd">snd_config_get_ctl_iface_ascii</a> (const char *ascii)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the control interface index from the given ASCII string. <a href="#ga5759c972706da4bd3be35c9336568bfd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaaf1c1ea4801961e3107ca23ba89bd429">snd_config_get_ctl_iface</a> (const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *conf)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Gets the control interface index from a configuration node. <a href="#gaaf1c1ea4801961e3107ca23ba89bd429"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaf35b51ab61fd7ea628ab088a1b444aa4">snd_names_list</a> (const char *iface, snd_devname_t **list)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Give a list of device names and associated comments for selected interface. <a href="#gaf35b51ab61fd7ea628ab088a1b444aa4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga665741321b3c1c3f07a6eeb969406cb8">snd_names_list_free</a> (snd_devname_t *list)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Release the list of device names. <a href="#ga665741321b3c1c3f07a6eeb969406cb8"></a><br/></td></tr> <tr><td colspan="2"><h2>Variables</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831">snd_config</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Configuration top-level node (the global configuration). <a href="#ga6cf7955d3a072d354dab4d7b536c7831"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831">snd_config</a> = NULL</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Configuration top-level node (the global configuration). <a href="#ga6cf7955d3a072d354dab4d7b536c7831"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>The configuration functions and types allow you to read, enumerate, modify and write the contents of ALSA configuration files. </p> <hr/><h2>Define Documentation</h2> <a class="anchor" id="gac3f21333e1f9b602cad9b06cb418fa80"></a><!-- doxytag: member="conf.h::snd_config_for_each" ref="gac3f21333e1f9b602cad9b06cb418fa80" args="(pos, next, node)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define snd_config_for_each</td> <td>(</td> <td class="paramtype">pos, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">next, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">node </td> <td class="paramname"></td> <td> ) </td> <td> for (pos = snd_config_iterator_first(node), next = snd_config_iterator_next(pos); pos != snd_config_iterator_end(node); pos = next, next = snd_config_iterator_next(pos))</td> </tr> </table> </div> <div class="memdoc"> <p>Helper macro to iterate over the children of a compound node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>pos</em> </td><td>Iterator variable for the current node. </td></tr> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>next</em> </td><td>Temporary iterator variable for the next node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>node</em> </td><td>Handle to the compound configuration node to iterate over.</td></tr> </table> </dd> </dl> <p>Use this macro like a <code>for</code> statement, e.g.: </p> <div class="fragment"><pre class="fragment"> <a class="code" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6" title="Type for a configuration compound iterator.">snd_config_iterator_t</a> pos, next; <a class="code" href="group___config.html#gac3f21333e1f9b602cad9b06cb418fa80" title="Helper macro to iterate over the children of a compound node.">snd_config_for_each</a>(pos, next, node) { <a class="code" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985" title="Internal structure for a configuration node object.">snd_config_t</a> *entry = <a class="code" href="group___config.html#gaa91fe1d926d88041ed516a6a7293f606" title="Returns the configuration node handle pointed to by an iterator.">snd_config_iterator_entry</a>(pos); ... } </pre></div><p>This macro allows deleting or removing the current node. </p> </div> </div> <hr/><h2>Typedef Documentation</h2> <a class="anchor" id="ga6c621ab8875a222e1fcb56e9feed6ec6"></a><!-- doxytag: member="conf.h::snd_config_iterator_t" ref="ga6c621ab8875a222e1fcb56e9feed6ec6" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct _snd_config_iterator* <a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Type for a configuration compound iterator. </p> <p>The ALSA library uses this pointer type as a handle to a configuration compound iterator. Applications don't directly access the contents of the structure pointed to by this type. </p> </div> </div> <a class="anchor" id="ga1c20905af775ae77d04d1a5696f67985"></a><!-- doxytag: member="conf.h::snd_config_t" ref="ga1c20905af775ae77d04d1a5696f67985" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct _snd_config <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Internal structure for a configuration node object. </p> <p>The ALSA library uses a pointer to this structure as a handle to a configuration node. Applications don't access its contents directly. </p> </div> </div> <a class="anchor" id="gab10b229189a94e3fcbac7f6ca5794cc0"></a><!-- doxytag: member="conf.h::snd_config_update_t" ref="gab10b229189a94e3fcbac7f6ca5794cc0" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef struct _snd_config_update <a class="el" href="group___config.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Internal structure for a configuration private update object. </p> <p>The ALSA library uses this structure to save private update information. </p> </div> </div> <hr/><h2>Enumeration Type Documentation</h2> <a class="anchor" id="gaa41083e55d19c7755c5d624030e06887"></a><!-- doxytag: member="conf.h::snd_config_type_t" ref="gaa41083e55d19c7755c5d624030e06887" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="group___config.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a></td> </tr> </table> </div> <div class="memdoc"> <p>Configuration node type. </p> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7"></a><!-- doxytag: member="SND_CONFIG_TYPE_INTEGER" ref="ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7" args="" -->SND_CONFIG_TYPE_INTEGER</em> </td><td> <p>Integer number. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2"></a><!-- doxytag: member="SND_CONFIG_TYPE_INTEGER64" ref="ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2" args="" -->SND_CONFIG_TYPE_INTEGER64</em> </td><td> <p>64-bit integer number. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508"></a><!-- doxytag: member="SND_CONFIG_TYPE_REAL" ref="ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508" args="" -->SND_CONFIG_TYPE_REAL</em> </td><td> <p>Real number. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49"></a><!-- doxytag: member="SND_CONFIG_TYPE_STRING" ref="ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49" args="" -->SND_CONFIG_TYPE_STRING</em> </td><td> <p>Character string. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe"></a><!-- doxytag: member="SND_CONFIG_TYPE_POINTER" ref="ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe" args="" -->SND_CONFIG_TYPE_POINTER</em> </td><td> <p>Pointer (runtime only, cannot be saved). </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="ggaa41083e55d19c7755c5d624030e06887a82b5c1a9dbadaa4e36815fc1f01fc2f7"></a><!-- doxytag: member="SND_CONFIG_TYPE_COMPOUND" ref="ggaa41083e55d19c7755c5d624030e06887a82b5c1a9dbadaa4e36815fc1f01fc2f7" args="" -->SND_CONFIG_TYPE_COMPOUND</em> </td><td> <p>Compound node. </p> </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="gaf62dd825828c05f1d63a62eee7046080"></a><!-- doxytag: member="conf.h::snd_config_add" ref="gaf62dd825828c05f1d63a62eee7046080" args="(snd_config_t *config, snd_config_t *leaf)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_add </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>parent</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>child</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Adds a child to a compound configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>parent</em> </td><td>Handle to a compound configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>child</em> </td><td>Handle to the configuration node to be added. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function makes the node <em>child</em> a child of the node <em>parent</em>.</p> <p>The parent node then owns the child node, i.e., the child node gets deleted together with its parent.</p> <p><em>child</em> must have an id.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>child</em> does not have an id. </dd> <dt>-EINVAL</dt> <dd><em>child</em> already has a parent. </dd> <dt>-EEXIST</dt> <dd><em>parent</em> already contains a child node with the same id as <em>child</em>. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga30f30bd27d13fbb3527270b3fc9e1676"></a><!-- doxytag: member="conf.h::snd_config_copy" ref="ga30f30bd27d13fbb3527270b3fc9e1676" args="(snd_config_t **dst, snd_config_t *src)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_copy </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>dst</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>src</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a copy of a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>dst</em> </td><td>The function puts the handle to the new configuration node at the address specified by <em>dst</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>src</em> </td><td>Handle to the source configuration node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A non-negative value if successful, otherwise a negative error code.</dd></dl> <p>This function creates a deep copy, i.e., if <em>src</em> is a compound node, all children are copied recursively.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga2a006b942faa3335a958a7df7bcea17e"></a><!-- doxytag: member="conf.h::snd_config_delete" ref="ga2a006b942faa3335a958a7df7bcea17e" args="(snd_config_t *config)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_delete </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Frees a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node to be deleted. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function frees a configuration node and all its resources.</p> <p>If the node is a child node, it is removed from the tree before being deleted.</p> <p>If the node is a compound node, its descendants (the whole subtree) are deleted recursively.</p> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="conf_8c.html#ad4d69b003662e09e8206a7892e849d27" title="Removes a configuration node from its tree.">snd_config_remove</a> </dd></dl> </div> </div> <a class="anchor" id="gaec120883e56ecb510e064151e0b11d51"></a><!-- doxytag: member="conf.h::snd_config_delete_compound_members" ref="gaec120883e56ecb510e064151e0b11d51" args="(const snd_config_t *config)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_delete_compound_members </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Deletes the children of a node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the compound configuration node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function removes and frees all children of a configuration node.</p> <p>Any compound nodes among the children of <em>config</em> are deleted recursively.</p> <p>After a successful call to this function, <em>config</em> is an empty compound node.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a compound node. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga1a51645a07e204d4e814d890452da558"></a><!-- doxytag: member="conf.h::snd_config_evaluate" ref="ga1a51645a07e204d4e814d890452da558" args="(snd_config_t *config, snd_config_t *root, snd_config_t *private_data, snd_config_t **result)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_evaluate </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>root</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>private_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>result</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Evaluates a configuration node at runtime. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the source configuration node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>root</em> </td><td>Handle to the root of the source configuration. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>private_data</em> </td><td>Handle to the private data node for runtime evaluation. </td></tr> <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>Must be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A non-negative value if successful, otherwise a negative error code.</dd></dl> <p>This function evaluates any functions (<code>@func</code>) in <em>config</em> and replaces those nodes with the respective function results. </p> </div> </div> <a class="anchor" id="ga7759f41c3757ce72ee9bd118976071c2"></a><!-- doxytag: member="conf.h::snd_config_expand" ref="ga7759f41c3757ce72ee9bd118976071c2" args="(snd_config_t *config, snd_config_t *root, const char *args, snd_config_t *private_data, snd_config_t **result)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_expand </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>root</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>args</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>private_data</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>result</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Expands a configuration node, applying arguments and functions. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>root</em> </td><td>Handle to the root configuration node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>args</em> </td><td>Arguments string, can be <code>NULL</code>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>private_data</em> </td><td>Handle to the private data node for functions. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>result</em> </td><td>The function puts the handle to the result configuration node at the address specified by <em>result</em>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A non-negative value if successful, otherwise a negative error code.</dd></dl> <p>If <em>config</em> has arguments (defined by a child with id <code>@args</code>), this function replaces any string node beginning with $ with the respective argument value, or the default argument value, or nothing. Furthermore, any functions are evaluated (see <a class="el" href="group___config.html#ga1a51645a07e204d4e814d890452da558" title="Evaluates a configuration node at runtime.">snd_config_evaluate</a>). The resulting copy of <em>config</em> is returned in <em>result</em>. </p> </div> </div> <a class="anchor" id="gaa26f97e098a0dd2cd5e28299b6b6c132"></a><!-- doxytag: member="conf.h::snd_config_get_ascii" ref="gaa26f97e098a0dd2cd5e28299b6b6c132" args="(const snd_config_t *config, char **value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_ascii </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">char ** </td> <td class="paramname"> <em>ascii</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of a configuration node as a string. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>ascii</em> </td><td>The function puts the pointer to the returned string at the address specified by <em>ascii</em>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function dynamically allocates the returned string. The application is responsible for deleting it with <code>free()</code> when it is no longer used.</p> <p>For a string node with <code>NULL</code> value, the returned string is <code>NULL</code>.</p> <p>Supported node types are <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a>, <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a>, <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a>, and <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a (64-bit) integer or real number or string node. </dd> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gae5d80ee31e779992fd14672fd850a3d1"></a><!-- doxytag: member="conf.h::snd_config_get_bool" ref="gae5d80ee31e779992fd14672fd850a3d1" args="(const snd_config_t *conf)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_bool </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>conf</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the boolean value from a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>conf</em> </td><td>Handle to the configuration node to be parsed. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>0 or 1 if successful, otherwise a negative error code. </dd></dl> </div> </div> <a class="anchor" id="ga11dfab861b537b564f0c76d9b1eb2935"></a><!-- doxytag: member="conf.h::snd_config_get_bool_ascii" ref="ga11dfab861b537b564f0c76d9b1eb2935" args="(const char *ascii)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_bool_ascii </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>ascii</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the boolean value from the given ASCII string. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ascii</em> </td><td>The string to be parsed. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>0 or 1 if successful, otherwise a negative error code. </dd></dl> </div> </div> <a class="anchor" id="gaaf1c1ea4801961e3107ca23ba89bd429"></a><!-- doxytag: member="conf.h::snd_config_get_ctl_iface" ref="gaaf1c1ea4801961e3107ca23ba89bd429" args="(const snd_config_t *conf)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_ctl_iface </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>conf</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the control interface index from a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>conf</em> </td><td>Handle to the configuration node to be parsed. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The control interface index if successful, otherwise a negative error code. </dd></dl> </div> </div> <a class="anchor" id="ga5759c972706da4bd3be35c9336568bfd"></a><!-- doxytag: member="conf.h::snd_config_get_ctl_iface_ascii" ref="ga5759c972706da4bd3be35c9336568bfd" args="(const char *ascii)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_ctl_iface_ascii </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>ascii</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Gets the control interface index from the given ASCII string. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ascii</em> </td><td>The string to be parsed. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The control interface index if successful, otherwise a negative error code. </dd></dl> </div> </div> <a class="anchor" id="gae366751e8ea98aeb69f9ef876f7b949c"></a><!-- doxytag: member="conf.h::snd_config_get_id" ref="gae366751e8ea98aeb69f9ef876f7b949c" args="(const snd_config_t *config, const char **value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_id </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char ** </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the id of a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>id</em> </td><td>The function puts the pointer to the id string at the address specified by <em>id</em>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>The returned string is owned by the configuration node; the application must not modify or delete it, and the string becomes invalid when the node's id changes or when the node is freed.</p> <p>If the node does not have an id, <em>*id</em> is set to <code>NULL</code>.</p> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gabfbc36060fd4f5d1d929938443f95559"></a><!-- doxytag: member="conf.h::snd_config_get_integer" ref="gabfbc36060fd4f5d1d929938443f95559" args="(const snd_config_t *config, long *value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_integer </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">long * </td> <td class="paramname"> <em>ptr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of an integer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>ptr</em> </td><td>The node's value. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not an integer node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gaf4d9e68918f7d49d7b4b14ffbe94afc1"></a><!-- doxytag: member="conf.h::snd_config_get_integer64" ref="gaf4d9e68918f7d49d7b4b14ffbe94afc1" args="(const snd_config_t *config, long long *value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_integer64 </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">long long * </td> <td class="paramname"> <em>ptr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of a 64-bit-integer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>ptr</em> </td><td>The node's value. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a 64-bit-integer node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga79738baffa6fa7722b1027ab84ac61bb"></a><!-- doxytag: member="conf.h::snd_config_get_ireal" ref="ga79738baffa6fa7722b1027ab84ac61bb" args="(const snd_config_t *config, double *value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_ireal </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>ptr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of a real or integer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>ptr</em> </td><td>The node's value. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>If the node's type is integer or integer64, the value is converted to the <code>double</code> type on the fly.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a number node. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga54868e0fa30458ef1c259772a8e7c6d7"></a><!-- doxytag: member="conf.h::snd_config_get_pointer" ref="ga54868e0fa30458ef1c259772a8e7c6d7" args="(const snd_config_t *config, const void **value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_pointer </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void ** </td> <td class="paramname"> <em>ptr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of a pointer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>ptr</em> </td><td>The function puts the node's value at the address specified by <em>ptr</em>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a string node. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="gad4d23c0bf941527d80aeb6f991bf88c9"></a><!-- doxytag: member="conf.h::snd_config_get_real" ref="gad4d23c0bf941527d80aeb6f991bf88c9" args="(const snd_config_t *config, double *value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_real </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double * </td> <td class="paramname"> <em>ptr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of a real-number configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>ptr</em> </td><td>The node's value. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a real-number node. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga5ab99983d1d93ddbcde9bb69a1e4f9fb"></a><!-- doxytag: member="conf.h::snd_config_get_string" ref="ga5ab99983d1d93ddbcde9bb69a1e4f9fb" args="(const snd_config_t *config, const char **value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_get_string </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char ** </td> <td class="paramname"> <em>ptr</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the value of a string configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>ptr</em> </td><td>The function puts the node's value at the address specified by <em>ptr</em>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>The returned string is owned by the configuration node; the application must not modify or delete it, and the string becomes invalid when the node's value changes or when the node is freed.</p> <p>The string may be <code>NULL</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a string node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga6def4c43ce325abaa3ddfba5a4f4d138"></a><!-- doxytag: member="conf.h::snd_config_get_type" ref="ga6def4c43ce325abaa3ddfba5a4f4d138" args="(const snd_config_t *config)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___config.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> snd_config_get_type </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the type of a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The node's type.</dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gafeb0552cbed09a3badbb5e74c7a7973d"></a><!-- doxytag: member="conf.h::snd_config_imake_integer" ref="gafeb0552cbed09a3badbb5e74c7a7973d" args="(snd_config_t **config, const char *key, const long value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_imake_integer </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const long </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates an integer configuration node with the given initial value. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>value</em> </td><td>The initial value of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a> and with value <em>value</em>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga04cfbfda89dc17c19a5a4076271a4d07"></a><!-- doxytag: member="conf.h::snd_config_imake_integer64" ref="ga04cfbfda89dc17c19a5a4076271a4d07" args="(snd_config_t **config, const char *key, const long long value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_imake_integer64 </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const long long </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a 64-bit-integer configuration node with the given initial value. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>value</em> </td><td>The initial value of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a> and with value <em>value</em>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gac7c6ce28a676169fff594aa4222705b2"></a><!-- doxytag: member="conf.h::snd_config_imake_pointer" ref="gac7c6ce28a676169fff594aa4222705b2" args="(snd_config_t **config, const char *key, const void *ptr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_imake_pointer </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a pointer configuration node with the given initial value. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>value</em> </td><td>The initial value of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a> and with value <code>value</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga968e5bb773dfea922b5272636b26e9c2"></a><!-- doxytag: member="conf.h::snd_config_imake_real" ref="ga968e5bb773dfea922b5272636b26e9c2" args="(snd_config_t **config, const char *key, const double value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_imake_real </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const double </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a real number configuration node with the given initial value. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>value</em> </td><td>The initial value of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a> and with value <em>value</em>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="gaa83035f79027a464bf9d5d31e0a20547"></a><!-- doxytag: member="conf.h::snd_config_imake_string" ref="gaa83035f79027a464bf9d5d31e0a20547" args="(snd_config_t **config, const char *key, const char *ascii)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_imake_string </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a string configuration node with the given initial value. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>value</em> </td><td>The initial value of the new node. May be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a> and with a copy of the string <code>value</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gac08a30bc630481f69feb2170fed4afda"></a><!-- doxytag: member="conf.h::snd_config_iterator_end" ref="gac08a30bc630481f69feb2170fed4afda" args="(const snd_config_t *node)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> snd_config_iterator_end </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns an iterator that ends a node's children list. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to a configuration node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>An iterator that indicates the end of <em>config's</em> children list.</dd></dl> <p><em>config</em> must be a compound node.</p> <p>The return value can be understood as pointing past the last child of <em>config</em>.</p> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gaa91fe1d926d88041ed516a6a7293f606"></a><!-- doxytag: member="conf.h::snd_config_iterator_entry" ref="gaa91fe1d926d88041ed516a6a7293f606" args="(const snd_config_iterator_t iterator)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a>* snd_config_iterator_entry </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td> <td class="paramname"> <em>iterator</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns the configuration node handle pointed to by an iterator. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>iterator</em> </td><td>A configuration node iterator. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The configuration node handle pointed to by <em>iterator</em>.</dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gac8965466674c10b9a119d591ed484cef"></a><!-- doxytag: member="conf.h::snd_config_iterator_first" ref="gac8965466674c10b9a119d591ed484cef" args="(const snd_config_t *node)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> snd_config_iterator_first </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns an iterator pointing to a node's first child. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to a configuration node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>An iterator pointing to <em>config's</em> first child.</dd></dl> <p><em>config</em> must be a compound node.</p> <p>The returned iterator is valid if it is not equal to the return value of <a class="el" href="group___config.html#gac08a30bc630481f69feb2170fed4afda" title="Returns an iterator that ends a node's children list.">snd_config_iterator_end</a> on <em>config</em>.</p> <p>Use <a class="el" href="group___config.html#gaa91fe1d926d88041ed516a6a7293f606" title="Returns the configuration node handle pointed to by an iterator.">snd_config_iterator_entry</a> to get the handle of the node pointed to.</p> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga10c27ddc83c78680d91a167dd2f0a3cb"></a><!-- doxytag: member="conf.h::snd_config_iterator_next" ref="ga10c27ddc83c78680d91a167dd2f0a3cb" args="(const snd_config_iterator_t iterator)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> snd_config_iterator_next </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td> <td class="paramname"> <em>iterator</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Returns an iterator pointing to the next sibling. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>iterator</em> </td><td>An iterator pointing to a child configuration node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>An iterator pointing to the next sibling of <em>iterator</em>.</dd></dl> <p>The returned iterator is valid if it is not equal to the return value of <a class="el" href="group___config.html#gac08a30bc630481f69feb2170fed4afda" title="Returns an iterator that ends a node's children list.">snd_config_iterator_end</a> on the node's parent.</p> <p>Use <a class="el" href="group___config.html#gaa91fe1d926d88041ed516a6a7293f606" title="Returns the configuration node handle pointed to by an iterator.">snd_config_iterator_entry</a> to get the handle of the node pointed to.</p> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga51f79d1f24a519e126415c72210525b0"></a><!-- doxytag: member="conf.h::snd_config_load" ref="ga51f79d1f24a519e126415c72210525b0" args="(snd_config_t *config, snd_input_t *in)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_load </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> * </td> <td class="paramname"> <em>in</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Loads a configuration tree. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to a top level configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>Input handle to read the configuration from. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>The definitions loaded from the input are added to <em>config</em>, which must be a compound node.</p> <dl class="user"><dt><b>Errors:</b></dt><dd>Any errors encountered when parsing the input or returned by hooks or functions.</dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga27334922bab8391aa2ef1813f48f4d70"></a><!-- doxytag: member="conf.h::snd_config_load_override" ref="ga27334922bab8391aa2ef1813f48f4d70" args="(snd_config_t *config, snd_input_t *in)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_load_override </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> * </td> <td class="paramname"> <em>in</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Loads a configuration tree and overrides existing configuration nodes. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to a top level configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>in</em> </td><td>Input handle to read the configuration from. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function loads definitions from <em>in</em> into <em>config</em> like <a class="el" href="group___config.html#ga51f79d1f24a519e126415c72210525b0" title="Loads a configuration tree.">snd_config_load</a>, but the default mode for input nodes is 'override' (!) instead of 'merge+create' (+). </p> </div> </div> <a class="anchor" id="gac570ecbaba611ccc12bc235a1f4d0181"></a><!-- doxytag: member="conf.h::snd_config_make" ref="gac570ecbaba611ccc12bc235a1f4d0181" args="(snd_config_t **config, const char *key, snd_config_type_t type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_make </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> </td> <td class="paramname"> <em>type</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>type</em> </td><td>The type of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This functions creates a new node of the specified type. The new node has id <em>id</em>, which may be <code>NULL</code>.</p> <p>The value of the new node is zero (for numbers), or <code>NULL</code> (for strings and pointers), or empty (for compound nodes).</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga2ce24133c1d6828e2afe366284c61e01"></a><!-- doxytag: member="conf.h::snd_config_make_compound" ref="ga2ce24133c1d6828e2afe366284c61e01" args="(snd_config_t **config, const char *key, int join)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_make_compound </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>join</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates an empty compound configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>join</em> </td><td>Join flag. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new empty node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a82b5c1a9dbadaa4e36815fc1f01fc2f7">SND_CONFIG_TYPE_COMPOUND</a>.</p> <p><em>join</em> determines how the compound node's id is printed when the configuration is saved to a text file. For example, if the join flag of compound node <code>a</code> is zero, the output will look as follows: </p> <div class="fragment"><pre class="fragment"> a { b <span class="stringliteral">"hello"</span> c 42 } </pre></div><p> If, however, the join flag of <code>a</code> is nonzero, its id will be joined with its children's ids, like this: </p> <div class="fragment"><pre class="fragment"> a.b <span class="stringliteral">"hello"</span> a.c 42 </pre></div><p> An <em>empty</em> compound node with its join flag set would result in no output, i.e., after saving and reloading the configuration file, that compound node would be lost.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga838fac581e115574acc3711cad9f5877"></a><!-- doxytag: member="conf.h::snd_config_make_integer" ref="ga838fac581e115574acc3711cad9f5877" args="(snd_config_t **config, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_make_integer </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates an integer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a> and with value <code>0</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group___config.html#gafeb0552cbed09a3badbb5e74c7a7973d" title="Creates an integer configuration node with the given initial value.">snd_config_imake_integer</a> </dd></dl> </div> </div> <a class="anchor" id="ga2c27175c162fe5027e3f1b3d5420afbb"></a><!-- doxytag: member="conf.h::snd_config_make_integer64" ref="ga2c27175c162fe5027e3f1b3d5420afbb" args="(snd_config_t **config, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_make_integer64 </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a 64-bit-integer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a> and with value <code>0</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group___config.html#ga04cfbfda89dc17c19a5a4076271a4d07" title="Creates a 64-bit-integer configuration node with the given initial value.">snd_config_imake_integer64</a> </dd></dl> </div> </div> <a class="anchor" id="gadbcce71d8d3a78709fc2a78d6f543584"></a><!-- doxytag: member="conf.h::snd_config_make_pointer" ref="gadbcce71d8d3a78709fc2a78d6f543584" args="(snd_config_t **config, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_make_pointer </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a pointer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a> and with value <code>NULL</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group___config.html#gac7c6ce28a676169fff594aa4222705b2" title="Creates a pointer configuration node with the given initial value.">snd_config_imake_pointer</a> </dd></dl> </div> </div> <a class="anchor" id="ga8f175813bfc2556bd08fd580f05d36e6"></a><!-- doxytag: member="conf.h::snd_config_make_real" ref="ga8f175813bfc2556bd08fd580f05d36e6" args="(snd_config_t **config, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_make_real </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a real number configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a> and with value <code>0.0</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group___config.html#ga968e5bb773dfea922b5272636b26e9c2" title="Creates a real number configuration node with the given initial value.">snd_config_imake_real</a> </dd></dl> </div> </div> <a class="anchor" id="ga6764115f489629be027b434c4e323cff"></a><!-- doxytag: member="conf.h::snd_config_make_string" ref="ga6764115f489629be027b434c4e323cff" args="(snd_config_t **config, const char *key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_make_string </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a string configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>id</em> </td><td>The id of the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function creates a new node of type <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a> and with value <code>NULL</code>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2</dd></dl> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="group___config.html#gaa83035f79027a464bf9d5d31e0a20547" title="Creates a string configuration node with the given initial value.">snd_config_imake_string</a> </dd></dl> </div> </div> <a class="anchor" id="gafac08a29a1e04b03a22028a8c70f78bd"></a><!-- doxytag: member="conf.h::snd_config_save" ref="gafac08a29a1e04b03a22028a8c70f78bd" args="(snd_config_t *config, snd_output_t *out)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_save </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___output.html#ga49729cc6454539495c1f5b6e95cd474a">snd_output_t</a> * </td> <td class="paramname"> <em>out</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Dumps the contents of a configuration node or tree. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the (root) configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>out</em> </td><td>Output handle. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function writes a textual representation of <em>config's</em> value to the output <em>out</em>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd>A node in the tree has a type that cannot be printed, i.e., <a class="el" href="group___config.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a>. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gabafb8cac2181c4c1e34b99f54421d1c6"></a><!-- doxytag: member="conf.h::snd_config_search" ref="gabafb8cac2181c4c1e34b99f54421d1c6" args="(snd_config_t *config, const char *key, snd_config_t **result)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_search </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>key</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>result</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Searches for a node in a configuration tree. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the root of the configuration (sub)tree to search. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>key</em> </td><td>Search key: one or more node ids, separated with dots. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>result</em> </td><td>When <em>result</em> != <code>NULL</code>, the function puts the handle to the node found at the address specified by <em>result</em>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function searches for a child node of <em>config</em> that is identified by <em>key</em>, which contains either the id of a direct child node of <em>config</em>, or a series of ids, separated with dots, where each id specifies a node that is contained in the previous compound node.</p> <p>In the following example, the comment after each node shows the search key to find that node, assuming that <em>config</em> is a handle to the compound node with id <code>config:</code> </p> <div class="fragment"><pre class="fragment"> config { a 42 # <span class="stringliteral">"a"</span> b { # <span class="stringliteral">"b"</span> c <span class="stringliteral">"cee"</span> # <span class="stringliteral">"b.c"</span> d { # <span class="stringliteral">"b.d"</span> e 2.71828 # <span class="stringliteral">"b.d.e"</span> } } } </pre></div><dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOENT</dt> <dd>An id in <em>key</em> does not exist. </dd> <dt>-ENOENT</dt> <dd><em>config</em> or one of its child nodes to be searched is not a compound node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gad7c23084ee4052ad33d77db6278db46f"></a><!-- doxytag: member="conf.h::snd_config_search_definition" ref="gad7c23084ee4052ad33d77db6278db46f" args="(snd_config_t *config, const char *base, const char *key, snd_config_t **result)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_search_definition </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>base</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="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>result</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Searches for a definition in a configuration tree, using aliases and expanding hooks and arguments. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the configuration (sub)tree to search. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>base</em> </td><td>Implicit key base, or <code>NULL</code> for none. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>name</em> </td><td>Key suffix, optionally with arguments. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>result</em> </td><td>The function puts the handle to the expanded found node at the address specified by <em>result</em>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A non-negative value if successful, otherwise a negative error code.</dd></dl> <p>This functions searches for a child node of <em>config</em>, allowing aliases and expanding hooks, like <a class="el" href="conf_8c.html#a1f86a23e559213fb07097637feeac70f" title="Searches for a node in a configuration tree, using an alias and expanding hooks.">snd_config_search_alias_hooks</a>.</p> <p>If <em>name</em> contains a colon (:), the rest of the string after the colon contains arguments that are expanded as with <a class="el" href="group___config.html#ga7759f41c3757ce72ee9bd118976071c2" title="Expands a configuration node, applying arguments and functions.">snd_config_expand</a>.</p> <p>In any case, <em>result</em> is a new node that must be freed by the caller.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOENT</dt> <dd>An id in <em>key</em> or an alias id does not exist. </dd> <dt>-ENOENT</dt> <dd><em>config</em> or one of its child nodes to be searched is not a compound node. </dd> </dl> Additionally, any errors encountered when parsing the hook definitions or arguments, or returned by (hook) functions. </dd></dl> </div> </div> <a class="anchor" id="ga7b2f5723e44a1b69f2a8555d469803d1"></a><!-- doxytag: member="conf.h::snd_config_searchv" ref="ga7b2f5723e44a1b69f2a8555d469803d1" args="(snd_config_t *config, snd_config_t **result,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_searchv </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>result</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Searches for a node in a configuration tree. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the root of the configuration (sub)tree to search. </td></tr> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>result</em> </td><td>When <em>result</em> != <code>NULL</code>, the function puts the handle to the node found at the address specified by <em>result</em>. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>...</em> </td><td>One or more concatenated dot-separated search keys, terminated with <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This functions searches for a child node of <em>config</em> like <a class="el" href="group___config.html#gabafb8cac2181c4c1e34b99f54421d1c6" title="Searches for a node in a configuration tree.">snd_config_search</a>, but the search key is the concatenation of all passed search key strings. For example, the call </p> <div class="fragment"><pre class="fragment"> <a class="code" href="group___config.html#ga7b2f5723e44a1b69f2a8555d469803d1" title="Searches for a node in a configuration tree.">snd_config_searchv</a>(cfg, &res, <span class="stringliteral">"a"</span>, <span class="stringliteral">"b.c"</span>, <span class="stringliteral">"d.e"</span>, NULL); </pre></div><p> is equivalent to the call </p> <div class="fragment"><pre class="fragment"> <a class="code" href="group___config.html#gabafb8cac2181c4c1e34b99f54421d1c6" title="Searches for a node in a configuration tree.">snd_config_search</a>(cfg, <span class="stringliteral">"a.b.c.d.e"</span>, &res); </pre></div><dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOENT</dt> <dd>An id in a search key does not exist. </dd> <dt>-ENOENT</dt> <dd><em>config</em> or one of its child nodes to be searched is not a compound node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gac1810a11f576fe339074502f4fed4a91"></a><!-- doxytag: member="conf.h::snd_config_set_ascii" ref="gac1810a11f576fe339074502f4fed4a91" args="(snd_config_t *config, const char *ascii)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_set_ascii </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>ascii</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Changes the value of a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>ascii</em> </td><td>The new value for the node, as an ASCII string. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function changes the node's value to a new value that is parsed from the string <em>ascii</em>. <em>ascii</em> must not be <code>NULL</code>, not even for a string node.</p> <p>The node's type does not change, i.e., the string must contain a valid value with the same type as the node's type. For a string node, the node's new value is a copy of <em>ascii</em>.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a number or string node. </dd> <dt>-EINVAL</dt> <dd>The value in <em>ascii</em> cannot be parsed. </dd> <dt>-ERANGE</dt> <dd>The value in <em>ascii</em> is too big for the node's type. </dd> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga550948931d44695b6d8e8f148f87cb54"></a><!-- doxytag: member="conf.h::snd_config_set_id" ref="ga550948931d44695b6d8e8f148f87cb54" args="(snd_config_t *config, const char *id)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_set_id </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Sets the id of a configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>id</em> </td><td>The new node id, must not be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function stores a copy of <em>id</em> in the node.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EEXIST</dt> <dd>One of <em>config's</em> siblings already has the id <em>id</em>. </dd> <dt>-EINVAL</dt> <dd>The id of a node with a parent cannot be set to <code>NULL</code>. </dd> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga6fd3be48221cae9cee9c7245a0804d73"></a><!-- doxytag: member="conf.h::snd_config_set_integer" ref="ga6fd3be48221cae9cee9c7245a0804d73" args="(snd_config_t *config, long value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_set_integer </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">long </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Changes the value of an integer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The new value for the node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not an integer node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gafdb63c78c07e11194a28d591b0fbffc4"></a><!-- doxytag: member="conf.h::snd_config_set_integer64" ref="gafdb63c78c07e11194a28d591b0fbffc4" args="(snd_config_t *config, long long value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_set_integer64 </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">long long </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Changes the value of a 64-bit-integer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The new value for the node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a 64-bit-integer node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga037c3bf96326bb6f5dfd340475b34fbf"></a><!-- doxytag: member="conf.h::snd_config_set_pointer" ref="ga037c3bf96326bb6f5dfd340475b34fbf" args="(snd_config_t *config, const void *ptr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_set_pointer </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Changes the value of a pointer configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The new value for the node. May be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function does not free the old pointer in the node.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a pointer node. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga46c71d5d36c64f0a06ceae956a39fedc"></a><!-- doxytag: member="conf.h::snd_config_set_real" ref="ga46c71d5d36c64f0a06ceae956a39fedc" args="(snd_config_t *config, double value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_set_real </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">double </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Changes the value of a real-number configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The new value for the node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a real-number node. </dd> </dl> </dd></dl> </div> </div> <a class="anchor" id="ga0f76f8ad47dce7f90580c8d59c6e44f8"></a><!-- doxytag: member="conf.h::snd_config_set_string" ref="ga0f76f8ad47dce7f90580c8d59c6e44f8" args="(snd_config_t *config, const char *value)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_set_string </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>value</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Changes the value of a string configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>value</em> </td><td>The new value for the node. May be <code>NULL</code>. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This function deletes the old string in the node and stores a copy of <em>value</em> string in the node.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-EINVAL</dt> <dd><em>config</em> is not a string node. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="gaeec157fd161a138e402c9bd243bbd408"></a><!-- doxytag: member="conf.h::snd_config_test_id" ref="gaeec157fd161a138e402c9bd243bbd408" args="(const snd_config_t *config, const char *id)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_test_id </td> <td>(</td> <td class="paramtype">const <a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td> <td class="paramname"> <em>config</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Compares the id of a configuration node to a given string. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>config</em> </td><td>Handle to the configuration node. </td></tr> <tr><td valign="top"></td><td valign="top"><em>id</em> </td><td>ASCII id. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>The same value as the result of the <code>strcmp</code> function, i.e., less than zero if <em>config's</em> id is lexicographically less than <em>id</em>, zero if <em>config's</em> id is equal to id, greater than zero otherwise. </dd></dl> </div> </div> <a class="anchor" id="gaf563d57ea9d576a94578368a3d2382c3"></a><!-- doxytag: member="conf.h::snd_config_top" ref="gaf563d57ea9d576a94578368a3d2382c3" args="(snd_config_t **config)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_top </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>config</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Creates a top level configuration node. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[out]</tt> </td><td valign="top"><em>config</em> </td><td>Handle to the new node. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>The returned node is an empty compound node without a parent and without an id.</p> <dl class="user"><dt><b>Errors:</b></dt><dd><dl> <dt>-ENOMEM</dt> <dd>Out of memory. </dd> </dl> </dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga41a3d2202cfb9016e33aa85ea70a4c9c"></a><!-- doxytag: member="conf.h::snd_config_update" ref="ga41a3d2202cfb9016e33aa85ea70a4c9c" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_update </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Updates <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> by rereading the global configuration files (if needed). </p> <dl class="return"><dt><b>Returns:</b></dt><dd>0 if <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> was up to date, 1 if <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> was updated, otherwise a negative error code.</dd></dl> <dl class="warning"><dt><b>Warning:</b></dt><dd>Whenever <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> is updated, all string pointers and configuration node handles previously obtained from it may become invalid.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd>Any errors encountered when parsing the input or returned by hooks or functions.</dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga8f781ac635a0233fb2f58766a83d65cd"></a><!-- doxytag: member="conf.h::snd_config_update_free" ref="ga8f781ac635a0233fb2f58766a83d65cd" args="(snd_config_update_t *update)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_update_free </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> * </td> <td class="paramname"> <em>update</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Frees a private update structure. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>update</em> </td><td>The private update structure to free. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code. </dd></dl> </div> </div> <a class="anchor" id="ga51dbc0ff1d9b34d753706d09d768116b"></a><!-- doxytag: member="conf.h::snd_config_update_free_global" ref="ga51dbc0ff1d9b34d753706d09d768116b" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_update_free_global </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Frees the global configuration tree in <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a>. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>Zero if successful, otherwise a negative error code.</dd></dl> <p>This functions releases all resources of the global configuration tree, and sets <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> to <code>NULL</code>.</p> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga06e80976c3c00fdc786f9b213e5c40f7"></a><!-- doxytag: member="conf.h::snd_config_update_r" ref="ga06e80976c3c00fdc786f9b213e5c40f7" args="(snd_config_t **top, snd_config_update_t **update, const char *path)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_config_update_r </td> <td>(</td> <td class="paramtype"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td> <td class="paramname"> <em>_top</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="group___config.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> ** </td> <td class="paramname"> <em>_update</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>cfgs</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Updates a configuration tree by rereading the configuration files (if needed). </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>_top</em> </td><td>Address of the handle to the top-level node. </td></tr> <tr><td valign="top"><tt>[in,out]</tt> </td><td valign="top"><em>_update</em> </td><td>Address of a pointer to private update information. </td></tr> <tr><td valign="top"><tt>[in]</tt> </td><td valign="top"><em>cfgs</em> </td><td>A list of configuration file names, delimited with ':'. If <code>cfgs</code> is <code>NULL</code>, the default global configuration file is used. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>0 if <em>_top</em> was up to date, 1 if the configuration files have been reread, otherwise a negative error code.</dd></dl> <p>The variables pointed to by <em>_top</em> and <em>_update</em> can be initialized to <code>NULL</code> before the first call to this function. The private update information holds information about all used configuration files that allows this function to detects changes to them; this data can be freed with <a class="el" href="group___config.html#ga8f781ac635a0233fb2f58766a83d65cd" title="Frees a private update structure.">snd_config_update_free</a>.</p> <p>The global configuration files are specified in the environment variable <code>ALSA_CONFIG_PATH</code>.</p> <dl class="warning"><dt><b>Warning:</b></dt><dd>If the configuration tree is reread, all string pointers and configuration node handles previously obtained from this tree become invalid.</dd></dl> <dl class="user"><dt><b>Errors:</b></dt><dd>Any errors encountered when parsing the input or returned by hooks or functions. </dd></dl> </div> </div> <a class="anchor" id="gaf35b51ab61fd7ea628ab088a1b444aa4"></a><!-- doxytag: member="conf.h::snd_names_list" ref="gaf35b51ab61fd7ea628ab088a1b444aa4" args="(const char *iface, snd_devname_t **list)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int snd_names_list </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>iface</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">snd_devname_t ** </td> <td class="paramname"> <em>list</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Give a list of device names and associated comments for selected interface. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>iface</em> </td><td>a string identifying interface ("pcm", "ctl", "seq", "rawmidi") </td></tr> <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>result - a pointer to list </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>A non-negative value if successful, otherwise a negative error code. </dd></dl> <dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Since 1.0.14</dd></dl> <p>The global configuration files are specified in the environment variable <code>ALSA_NAMES_FILE</code>. </p> </div> </div> <a class="anchor" id="ga665741321b3c1c3f07a6eeb969406cb8"></a><!-- doxytag: member="conf.h::snd_names_list_free" ref="ga665741321b3c1c3f07a6eeb969406cb8" args="(snd_devname_t *list)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void snd_names_list_free </td> <td>(</td> <td class="paramtype">snd_devname_t * </td> <td class="paramname"> <em>list</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Release the list of device names. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>list</em> </td><td>the name list to release </td></tr> </table> </dd> </dl> <dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Since 1.0.14</dd></dl> <p>Releases the list of device names allocated via <a class="el" href="group___config.html#gaf35b51ab61fd7ea628ab088a1b444aa4" title="Give a list of device names and associated comments for selected interface.">snd_names_list()</a>. </p> </div> </div> <hr/><h2>Variable Documentation</h2> <a class="anchor" id="ga6cf7955d3a072d354dab4d7b536c7831"></a><!-- doxytag: member="conf.c::snd_config" ref="ga6cf7955d3a072d354dab4d7b536c7831" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a>* <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831">snd_config</a> = NULL</td> </tr> </table> </div> <div class="memdoc"> <p>Configuration top-level node (the global configuration). </p> <p>This variable contains a handle to the top-level configuration node, as loaded from global configuration file.</p> <p>This variable is initialized or updated by <a class="el" href="group___config.html#ga41a3d2202cfb9016e33aa85ea70a4c9c" title="Updates snd_config by rereading the global configuration files (if needed).">snd_config_update</a>. Functions like <a class="el" href="group___p_c_m.html#ga8340c7dc0ac37f37afe5e7c21d6c528b" title="Opens a PCM.">snd_pcm_open</a> (that use a device name from the global configuration) automatically call <a class="el" href="group___config.html#ga41a3d2202cfb9016e33aa85ea70a4c9c" title="Updates snd_config by rereading the global configuration files (if needed).">snd_config_update</a>. Before the first call to <a class="el" href="group___config.html#ga41a3d2202cfb9016e33aa85ea70a4c9c" title="Updates snd_config by rereading the global configuration files (if needed).">snd_config_update</a>, this variable is <code>NULL</code>.</p> <p>The global configuration files are specified in the environment variable <code>ALSA_CONFIG_PATH</code>. If this is not set, the default value is "/usr/share/alsa/alsa.conf".</p> <dl class="warning"><dt><b>Warning:</b></dt><dd>Whenever the configuration tree is updated, all string pointers and configuration node handles previously obtained from this variable may become invalid.</dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> <a class="anchor" id="ga6cf7955d3a072d354dab4d7b536c7831"></a><!-- doxytag: member="conf.h::snd_config" ref="ga6cf7955d3a072d354dab4d7b536c7831" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a>* <a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831">snd_config</a></td> </tr> </table> </div> <div class="memdoc"> <p>Configuration top-level node (the global configuration). </p> <p>This variable contains a handle to the top-level configuration node, as loaded from global configuration file.</p> <p>This variable is initialized or updated by <a class="el" href="group___config.html#ga41a3d2202cfb9016e33aa85ea70a4c9c" title="Updates snd_config by rereading the global configuration files (if needed).">snd_config_update</a>. Functions like <a class="el" href="group___p_c_m.html#ga8340c7dc0ac37f37afe5e7c21d6c528b" title="Opens a PCM.">snd_pcm_open</a> (that use a device name from the global configuration) automatically call <a class="el" href="group___config.html#ga41a3d2202cfb9016e33aa85ea70a4c9c" title="Updates snd_config by rereading the global configuration files (if needed).">snd_config_update</a>. Before the first call to <a class="el" href="group___config.html#ga41a3d2202cfb9016e33aa85ea70a4c9c" title="Updates snd_config by rereading the global configuration files (if needed).">snd_config_update</a>, this variable is <code>NULL</code>.</p> <p>The global configuration files are specified in the environment variable <code>ALSA_CONFIG_PATH</code>. If this is not set, the default value is "/usr/share/alsa/alsa.conf".</p> <dl class="warning"><dt><b>Warning:</b></dt><dd>Whenever the configuration tree is updated, all string pointers and configuration node handles previously obtained from this variable may become invalid.</dd></dl> <dl class="user"><dt><b>Conforming to:</b></dt><dd>LSB 3.2 </dd></dl> </div> </div> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Sat Nov 20 07:42:24 2010 for ALSA project - the C library reference by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>