Sophie

Sophie

distrib > Mandriva > 2010.2 > i586 > by-pkgid > 34546d63baef3ab2a7675f37737b66ab > files > 64

libalsa2-docs-1.0.23-2.1mdv2010.1.i586.rpm

<!-- 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&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;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 &nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga96fd234b2ce9c03a9e82f4e854cc65ce">SND_CONFIG_DLSYM_VERSION_EVALUATE</a>&nbsp;&nbsp;&nbsp;_dlsym_config_evaluate_001</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga948b35b3df554e2e06ba5bb9f5452704">SND_CONFIG_DLSYM_VERSION_HOOK</a>&nbsp;&nbsp;&nbsp;_dlsym_config_hook_001</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gac3f21333e1f9b602cad9b06cb418fa80">snd_config_for_each</a>(pos, next, node)&nbsp;&nbsp;&nbsp;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">&nbsp;</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&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</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 *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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 &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> { <br/>
&nbsp;&nbsp;<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/>
&nbsp;&nbsp;<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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</td><td class="mdescRight">Loads a configuration tree.  <a href="#ga51f79d1f24a519e126415c72210525b0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</td><td class="mdescRight">Frees a configuration node.  <a href="#ga2a006b942faa3335a958a7df7bcea17e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</td><td class="mdescRight">Creates a configuration node.  <a href="#gac570ecbaba611ccc12bc235a1f4d0181"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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>&nbsp;</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">&nbsp;</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> *&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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&nbsp;</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">&nbsp;</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> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831">snd_config</a></td></tr>
<tr><td class="mdescLeft">&nbsp;</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> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="group___config.html#ga6cf7955d3a072d354dab4d7b536c7831">snd_config</a> = NULL</td></tr>
<tr><td class="mdescLeft">&nbsp;</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&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td>&nbsp;&nbsp;&nbsp;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>&nbsp;</td><td valign="top"><em>pos</em>&nbsp;</td><td>Iterator variable for the current node. </td></tr>
    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>next</em>&nbsp;</td><td>Temporary iterator variable for the next node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>node</em>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>child</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to a compound configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>child</em>&nbsp;</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> **&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>src</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>dst</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>src</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</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> *&nbsp;</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> *&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the source configuration node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>root</em>&nbsp;</td><td>Handle to the root of the source configuration. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>private_data</em>&nbsp;</td><td>Handle to the private data node for runtime evaluation. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>result</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>root</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</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> *&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>root</em>&nbsp;</td><td>Handle to the root configuration node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>args</em>&nbsp;</td><td>Arguments string, can be <code>NULL</code>. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>private_data</em>&nbsp;</td><td>Handle to the private data node for functions. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>result</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>ascii</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>ascii</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>conf</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>ascii</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>conf</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>ascii</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long *&nbsp;</td>
          <td class="paramname"> <em>ptr</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>ptr</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long long *&nbsp;</td>
          <td class="paramname"> <em>ptr</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>ptr</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>ptr</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>ptr</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void **&nbsp;</td>
          <td class="paramname"> <em>ptr</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>ptr</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&nbsp;</td>
          <td class="paramname"> <em>ptr</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>ptr</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char **&nbsp;</td>
          <td class="paramname"> <em>ptr</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>ptr</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const long&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the new node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const long long&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the new node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the new node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the new node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the new node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>value</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>iterator</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td><td valign="top"><em>iterator</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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&#39;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>&nbsp;</td>
          <td class="paramname"> <em>iterator</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td><td valign="top"><em>iterator</em>&nbsp;</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&#39;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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to a top level configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to a top level configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</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>&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the new node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>type</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>join</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</td><td>The id of the new node. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>join</em>&nbsp;</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">&quot;hello&quot;</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">&quot;hello&quot;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>id</em>&nbsp;</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> *&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>out</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the (root) configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>out</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the root of the configuration (sub)tree to search. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>key</em>&nbsp;</td><td>Search key: one or more node ids, separated with dots. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>result</em>&nbsp;</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">&quot;a&quot;</span>
     b {                # <span class="stringliteral">&quot;b&quot;</span>
         c <span class="stringliteral">&quot;cee&quot;</span>        # <span class="stringliteral">&quot;b.c&quot;</span>
         d {            # <span class="stringliteral">&quot;b.d&quot;</span>
             e 2.71828  # <span class="stringliteral">&quot;b.d.e&quot;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>result</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the configuration (sub)tree to search. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>base</em>&nbsp;</td><td>Implicit key base, or <code>NULL</code> for none. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>name</em>&nbsp;</td><td>Key suffix, optionally with arguments. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>result</em>&nbsp;</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> *&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>result</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</td><td>Handle to the root of the configuration (sub)tree to search. </td></tr>
    <tr><td valign="top"><tt>[out]</tt>&nbsp;</td><td valign="top"><em>result</em>&nbsp;</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>&nbsp;</td><td valign="top"><em>...</em>&nbsp;</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, &amp;res, <span class="stringliteral">&quot;a&quot;</span>, <span class="stringliteral">&quot;b.c&quot;</span>, <span class="stringliteral">&quot;d.e&quot;</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">&quot;a.b.c.d.e&quot;</span>, &amp;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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ascii</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ascii</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long long&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>value</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>value</em>&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>config</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>id</em></td><td>&nbsp;</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>&nbsp;</td><td>Handle to the configuration node. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>id</em>&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>config</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td><td valign="top"><em>config</em>&nbsp;</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&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</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> *&nbsp;</td>
          <td class="paramname"> <em>update</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</td><td valign="top"><em>update</em>&nbsp;</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&nbsp;</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</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> **&nbsp;</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> **&nbsp;</td>
          <td class="paramname"> <em>_update</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>cfgs</em></td><td>&nbsp;</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>&nbsp;</td><td valign="top"><em>_top</em>&nbsp;</td><td>Address of the handle to the top-level node. </td></tr>
    <tr><td valign="top"><tt>[in,out]</tt>&nbsp;</td><td valign="top"><em>_update</em>&nbsp;</td><td>Address of a pointer to private update information. </td></tr>
    <tr><td valign="top"><tt>[in]</tt>&nbsp;</td><td valign="top"><em>cfgs</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>iface</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">snd_devname_t **&nbsp;</td>
          <td class="paramname"> <em>list</em></td><td>&nbsp;</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>&nbsp;</td><td>a string identifying interface ("pcm", "ctl", "seq", "rawmidi") </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list</em>&nbsp;</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 *&nbsp;</td>
          <td class="paramname"> <em>list</em></td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&nbsp;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&nbsp;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&nbsp;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&nbsp;</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&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address>
</body>
</html>