Current File : //proc/thread-self/root/kunden/usr/share/doc/alsa-lib-devel/doxygen/html/group___configuration.html |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ALSA project - the C library reference: Configuration Interface</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">ALSA project - the C library reference
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#groups">Modules</a> |
<a href="#files">Files</a> |
<a href="#nested-classes">Data Structures</a> |
<a href="#define-members">Macros</a> |
<a href="#typedef-members">Typedefs</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a> |
<a href="#var-members">Variables</a> </div>
<div class="headertitle">
<div class="title">Configuration Interface</div> </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
Modules</h2></td></tr>
<tr class="memitem:group___hint"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___hint.html">Name Hint Interface</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a>
Files</h2></td></tr>
<tr class="memitem:conf_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="conf_8c.html">conf.c</a></td></tr>
<tr class="memdesc:conf_8c"><td class="mdescLeft"> </td><td class="mdescRight">Configuration helper functions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:confeval_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="confeval_8c.html">confeval.c</a></td></tr>
<tr class="memdesc:confeval_8c"><td class="mdescLeft"> </td><td class="mdescRight">Configuration helper functions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:confmisc_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="confmisc_8c.html">confmisc.c</a></td></tr>
<tr class="memdesc:confmisc_8c"><td class="mdescLeft"> </td><td class="mdescRight">Configuration helper functions. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:names_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="names_8c.html">names.c</a></td></tr>
<tr class="memdesc:names_8c"><td class="mdescLeft"> </td><td class="mdescRight">Configuration helper functions - device names. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:namehint_8c"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="namehint_8c.html">namehint.c</a></td></tr>
<tr class="memdesc:namehint_8c"><td class="mdescLeft"> </td><td class="mdescRight">Give device name hints. <br /></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structsnd__devname.html">snd_devname_t</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:ga96fd234b2ce9c03a9e82f4e854cc65ce"><td class="memItemLeft" align="right" valign="top"><a id="ga96fd234b2ce9c03a9e82f4e854cc65ce"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga96fd234b2ce9c03a9e82f4e854cc65ce">SND_CONFIG_DLSYM_VERSION_EVALUATE</a>   _dlsym_config_evaluate_001</td></tr>
<tr class="memdesc:ga96fd234b2ce9c03a9e82f4e854cc65ce"><td class="mdescLeft"> </td><td class="mdescRight"><code>dlsym</code> version for the config evaluate callback. <br /></td></tr>
<tr class="separator:ga96fd234b2ce9c03a9e82f4e854cc65ce"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga948b35b3df554e2e06ba5bb9f5452704"><td class="memItemLeft" align="right" valign="top"><a id="ga948b35b3df554e2e06ba5bb9f5452704"></a>
#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga948b35b3df554e2e06ba5bb9f5452704">SND_CONFIG_DLSYM_VERSION_HOOK</a>   _dlsym_config_hook_001</td></tr>
<tr class="memdesc:ga948b35b3df554e2e06ba5bb9f5452704"><td class="mdescLeft"> </td><td class="mdescRight"><code>dlsym</code> version for the config hook callback. <br /></td></tr>
<tr class="separator:ga948b35b3df554e2e06ba5bb9f5452704"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac3f21333e1f9b602cad9b06cb418fa80"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac3f21333e1f9b602cad9b06cb418fa80">snd_config_for_each</a>(pos, next, node)    for (pos = <a class="el" href="group___configuration.html#gac8965466674c10b9a119d591ed484cef">snd_config_iterator_first</a>(node), next = <a class="el" href="group___configuration.html#ga10c27ddc83c78680d91a167dd2f0a3cb">snd_config_iterator_next</a>(pos); pos != <a class="el" href="group___configuration.html#gac08a30bc630481f69feb2170fed4afda">snd_config_iterator_end</a>(node); pos = next, next = <a class="el" href="group___configuration.html#ga10c27ddc83c78680d91a167dd2f0a3cb">snd_config_iterator_next</a>(pos))</td></tr>
<tr class="memdesc:gac3f21333e1f9b602cad9b06cb418fa80"><td class="mdescLeft"> </td><td class="mdescRight">Helper macro to iterate over the children of a compound node. <a href="group___configuration.html#gac3f21333e1f9b602cad9b06cb418fa80">More...</a><br /></td></tr>
<tr class="separator:gac3f21333e1f9b602cad9b06cb418fa80"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
Typedefs</h2></td></tr>
<tr class="memitem:ga1c20905af775ae77d04d1a5696f67985"><td class="memItemLeft" align="right" valign="top">typedef struct _snd_config </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a></td></tr>
<tr class="memdesc:ga1c20905af775ae77d04d1a5696f67985"><td class="mdescLeft"> </td><td class="mdescRight">Internal structure for a configuration node object. <a href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">More...</a><br /></td></tr>
<tr class="separator:ga1c20905af775ae77d04d1a5696f67985"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6c621ab8875a222e1fcb56e9feed6ec6"><td class="memItemLeft" align="right" valign="top">typedef struct _snd_config_iterator * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a></td></tr>
<tr class="memdesc:ga6c621ab8875a222e1fcb56e9feed6ec6"><td class="mdescLeft"> </td><td class="mdescRight">Type for a configuration compound iterator. <a href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">More...</a><br /></td></tr>
<tr class="separator:ga6c621ab8875a222e1fcb56e9feed6ec6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab10b229189a94e3fcbac7f6ca5794cc0"><td class="memItemLeft" align="right" valign="top">typedef struct _snd_config_update </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a></td></tr>
<tr class="memdesc:gab10b229189a94e3fcbac7f6ca5794cc0"><td class="mdescLeft"> </td><td class="mdescRight">Internal structure for a configuration private update object. <a href="group___configuration.html#gab10b229189a94e3fcbac7f6ca5794cc0">More...</a><br /></td></tr>
<tr class="separator:gab10b229189a94e3fcbac7f6ca5794cc0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaec958403bc070bdfa1bcc89285614087"><td class="memItemLeft" align="right" valign="top">typedef int(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaec958403bc070bdfa1bcc89285614087">snd_config_expand_fcn_t</a>) (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **dst, const char *s, void *private_data)</td></tr>
<tr class="memdesc:gaec958403bc070bdfa1bcc89285614087"><td class="mdescLeft"> </td><td class="mdescRight">custom expansion callback <a href="group___configuration.html#gaec958403bc070bdfa1bcc89285614087">More...</a><br /></td></tr>
<tr class="separator:gaec958403bc070bdfa1bcc89285614087"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gaa41083e55d19c7755c5d624030e06887"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> { <br />
  <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a>
, <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a>
, <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a>
, <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a>
, <br />
  <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a>
, <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887a82b5c1a9dbadaa4e36815fc1f01fc2f7">SND_CONFIG_TYPE_COMPOUND</a> = 1024
<br />
}</td></tr>
<tr class="memdesc:gaa41083e55d19c7755c5d624030e06887"><td class="mdescLeft"> </td><td class="mdescRight">Configuration node type. <a href="group___configuration.html#gaa41083e55d19c7755c5d624030e06887">More...</a><br /></td></tr>
<tr class="separator:gaa41083e55d19c7755c5d624030e06887"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga122e8b1d09be7b060eabe59cd1fb2772"><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga122e8b1d09be7b060eabe59cd1fb2772">snd_config_topdir</a> (void)</td></tr>
<tr class="memdesc:ga122e8b1d09be7b060eabe59cd1fb2772"><td class="mdescLeft"> </td><td class="mdescRight">Returns the default top-level config directory. <a href="group___configuration.html#ga122e8b1d09be7b060eabe59cd1fb2772">More...</a><br /></td></tr>
<tr class="separator:ga122e8b1d09be7b060eabe59cd1fb2772"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf563d57ea9d576a94578368a3d2382c3"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaf563d57ea9d576a94578368a3d2382c3">snd_config_top</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config)</td></tr>
<tr class="memdesc:gaf563d57ea9d576a94578368a3d2382c3"><td class="mdescLeft"> </td><td class="mdescRight">Creates a top level configuration node. <a href="group___configuration.html#gaf563d57ea9d576a94578368a3d2382c3">More...</a><br /></td></tr>
<tr class="separator:gaf563d57ea9d576a94578368a3d2382c3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga51f79d1f24a519e126415c72210525b0"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga51f79d1f24a519e126415c72210525b0">snd_config_load</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> *in)</td></tr>
<tr class="memdesc:ga51f79d1f24a519e126415c72210525b0"><td class="mdescLeft"> </td><td class="mdescRight">Loads a configuration tree. <a href="group___configuration.html#ga51f79d1f24a519e126415c72210525b0">More...</a><br /></td></tr>
<tr class="separator:ga51f79d1f24a519e126415c72210525b0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3ae9f6b0d8f708a839c44e6d4af4b93c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga3ae9f6b0d8f708a839c44e6d4af4b93c">snd_config_load_string</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *s, size_t size)</td></tr>
<tr class="memdesc:ga3ae9f6b0d8f708a839c44e6d4af4b93c"><td class="mdescLeft"> </td><td class="mdescRight">Loads a configuration tree from a string. <a href="group___configuration.html#ga3ae9f6b0d8f708a839c44e6d4af4b93c">More...</a><br /></td></tr>
<tr class="separator:ga3ae9f6b0d8f708a839c44e6d4af4b93c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga27334922bab8391aa2ef1813f48f4d70"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga27334922bab8391aa2ef1813f48f4d70">snd_config_load_override</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> *in)</td></tr>
<tr class="memdesc:ga27334922bab8391aa2ef1813f48f4d70"><td class="mdescLeft"> </td><td class="mdescRight">Loads a configuration tree and overrides existing configuration nodes. <a href="group___configuration.html#ga27334922bab8391aa2ef1813f48f4d70">More...</a><br /></td></tr>
<tr class="separator:ga27334922bab8391aa2ef1813f48f4d70"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gafac08a29a1e04b03a22028a8c70f78bd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gafac08a29a1e04b03a22028a8c70f78bd">snd_config_save</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___output.html#ga49729cc6454539495c1f5b6e95cd474a">snd_output_t</a> *out)</td></tr>
<tr class="memdesc:gafac08a29a1e04b03a22028a8c70f78bd"><td class="mdescLeft"> </td><td class="mdescRight">Dumps the contents of a configuration node or tree. <a href="group___configuration.html#gafac08a29a1e04b03a22028a8c70f78bd">More...</a><br /></td></tr>
<tr class="separator:gafac08a29a1e04b03a22028a8c70f78bd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga41a3d2202cfb9016e33aa85ea70a4c9c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga41a3d2202cfb9016e33aa85ea70a4c9c">snd_config_update</a> (void)</td></tr>
<tr class="memdesc:ga41a3d2202cfb9016e33aa85ea70a4c9c"><td class="mdescLeft"> </td><td class="mdescRight">Updates <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> by rereading the global configuration files (if needed). <a href="group___configuration.html#ga41a3d2202cfb9016e33aa85ea70a4c9c">More...</a><br /></td></tr>
<tr class="separator:ga41a3d2202cfb9016e33aa85ea70a4c9c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga06e80976c3c00fdc786f9b213e5c40f7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga06e80976c3c00fdc786f9b213e5c40f7">snd_config_update_r</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **top, <a class="el" href="group___configuration.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> **update, const char *path)</td></tr>
<tr class="memdesc:ga06e80976c3c00fdc786f9b213e5c40f7"><td class="mdescLeft"> </td><td class="mdescRight">Updates a configuration tree by rereading the configuration files (if needed). <a href="group___configuration.html#ga06e80976c3c00fdc786f9b213e5c40f7">More...</a><br /></td></tr>
<tr class="separator:ga06e80976c3c00fdc786f9b213e5c40f7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8f781ac635a0233fb2f58766a83d65cd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga8f781ac635a0233fb2f58766a83d65cd">snd_config_update_free</a> (<a class="el" href="group___configuration.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> *update)</td></tr>
<tr class="memdesc:ga8f781ac635a0233fb2f58766a83d65cd"><td class="mdescLeft"> </td><td class="mdescRight">Frees a private update structure. <a href="group___configuration.html#ga8f781ac635a0233fb2f58766a83d65cd">More...</a><br /></td></tr>
<tr class="separator:ga8f781ac635a0233fb2f58766a83d65cd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga51dbc0ff1d9b34d753706d09d768116b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga51dbc0ff1d9b34d753706d09d768116b">snd_config_update_free_global</a> (void)</td></tr>
<tr class="memdesc:ga51dbc0ff1d9b34d753706d09d768116b"><td class="mdescLeft"> </td><td class="mdescRight">Frees the global configuration tree in <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a>. <a href="group___configuration.html#ga51dbc0ff1d9b34d753706d09d768116b">More...</a><br /></td></tr>
<tr class="separator:ga51dbc0ff1d9b34d753706d09d768116b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga568fcf6f45808319725ac066714b25a8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga568fcf6f45808319725ac066714b25a8">snd_config_update_ref</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **top)</td></tr>
<tr class="memdesc:ga568fcf6f45808319725ac066714b25a8"><td class="mdescLeft"> </td><td class="mdescRight">Updates <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> and takes its reference. <a href="group___configuration.html#ga568fcf6f45808319725ac066714b25a8">More...</a><br /></td></tr>
<tr class="separator:ga568fcf6f45808319725ac066714b25a8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae8baa15082818d721607932bb99f318d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gae8baa15082818d721607932bb99f318d">snd_config_ref</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *top)</td></tr>
<tr class="memdesc:gae8baa15082818d721607932bb99f318d"><td class="mdescLeft"> </td><td class="mdescRight">Take the reference of the config tree. <a href="group___configuration.html#gae8baa15082818d721607932bb99f318d">More...</a><br /></td></tr>
<tr class="separator:gae8baa15082818d721607932bb99f318d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac87538403cb6f8125468a1af56f42e33"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac87538403cb6f8125468a1af56f42e33">snd_config_unref</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *top)</td></tr>
<tr class="memdesc:gac87538403cb6f8125468a1af56f42e33"><td class="mdescLeft"> </td><td class="mdescRight">Unreference the config tree. <a href="group___configuration.html#gac87538403cb6f8125468a1af56f42e33">More...</a><br /></td></tr>
<tr class="separator:gac87538403cb6f8125468a1af56f42e33"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabafb8cac2181c4c1e34b99f54421d1c6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gabafb8cac2181c4c1e34b99f54421d1c6">snd_config_search</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *key, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr>
<tr class="memdesc:gabafb8cac2181c4c1e34b99f54421d1c6"><td class="mdescLeft"> </td><td class="mdescRight">Searches for a node in a configuration tree. <a href="group___configuration.html#gabafb8cac2181c4c1e34b99f54421d1c6">More...</a><br /></td></tr>
<tr class="separator:gabafb8cac2181c4c1e34b99f54421d1c6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7b2f5723e44a1b69f2a8555d469803d1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga7b2f5723e44a1b69f2a8555d469803d1">snd_config_searchv</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result,...)</td></tr>
<tr class="memdesc:ga7b2f5723e44a1b69f2a8555d469803d1"><td class="mdescLeft"> </td><td class="mdescRight">Searches for a node in a configuration tree. <a href="group___configuration.html#ga7b2f5723e44a1b69f2a8555d469803d1">More...</a><br /></td></tr>
<tr class="separator:ga7b2f5723e44a1b69f2a8555d469803d1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad7c23084ee4052ad33d77db6278db46f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gad7c23084ee4052ad33d77db6278db46f">snd_config_search_definition</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *base, const char *key, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr>
<tr class="memdesc:gad7c23084ee4052ad33d77db6278db46f"><td class="mdescLeft"> </td><td class="mdescRight">Searches for a definition in a configuration tree, using aliases and expanding hooks and arguments. <a href="group___configuration.html#gad7c23084ee4052ad33d77db6278db46f">More...</a><br /></td></tr>
<tr class="separator:gad7c23084ee4052ad33d77db6278db46f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga424067becc332aa426689d2780b08c1d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga424067becc332aa426689d2780b08c1d">snd_config_expand_custom</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *root, <a class="el" href="group___configuration.html#gaec958403bc070bdfa1bcc89285614087">snd_config_expand_fcn_t</a> fcn, void *private_data, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr>
<tr class="memdesc:ga424067becc332aa426689d2780b08c1d"><td class="mdescLeft"> </td><td class="mdescRight">Expands a configuration node, applying arguments and functions. <a href="group___configuration.html#ga424067becc332aa426689d2780b08c1d">More...</a><br /></td></tr>
<tr class="separator:ga424067becc332aa426689d2780b08c1d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7759f41c3757ce72ee9bd118976071c2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga7759f41c3757ce72ee9bd118976071c2">snd_config_expand</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *root, const char *args, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *private_data, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr>
<tr class="memdesc:ga7759f41c3757ce72ee9bd118976071c2"><td class="mdescLeft"> </td><td class="mdescRight">Expands a configuration node, applying arguments and functions. <a href="group___configuration.html#ga7759f41c3757ce72ee9bd118976071c2">More...</a><br /></td></tr>
<tr class="separator:ga7759f41c3757ce72ee9bd118976071c2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1a51645a07e204d4e814d890452da558"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga1a51645a07e204d4e814d890452da558">snd_config_evaluate</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *root, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *private_data, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **result)</td></tr>
<tr class="memdesc:ga1a51645a07e204d4e814d890452da558"><td class="mdescLeft"> </td><td class="mdescRight">Evaluates a configuration node at runtime. <a href="group___configuration.html#ga1a51645a07e204d4e814d890452da558">More...</a><br /></td></tr>
<tr class="separator:ga1a51645a07e204d4e814d890452da558"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3465f450244d9ee5cedcc6e85b403c68"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga3465f450244d9ee5cedcc6e85b403c68">snd_config_evaluate_string</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **dst, const char *s, <a class="el" href="group___configuration.html#gaec958403bc070bdfa1bcc89285614087">snd_config_expand_fcn_t</a> fcn, void *private_data)</td></tr>
<tr class="memdesc:ga3465f450244d9ee5cedcc6e85b403c68"><td class="mdescLeft"> </td><td class="mdescRight">Evaluate an math expression in the string. <a href="group___configuration.html#ga3465f450244d9ee5cedcc6e85b403c68">More...</a><br /></td></tr>
<tr class="separator:ga3465f450244d9ee5cedcc6e85b403c68"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6f011f2a8063dafd80bd8af506dd621e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga6f011f2a8063dafd80bd8af506dd621e">snd_config_add</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *child)</td></tr>
<tr class="memdesc:ga6f011f2a8063dafd80bd8af506dd621e"><td class="mdescLeft"> </td><td class="mdescRight">Adds a child to a compound configuration node. <a href="group___configuration.html#ga6f011f2a8063dafd80bd8af506dd621e">More...</a><br /></td></tr>
<tr class="separator:ga6f011f2a8063dafd80bd8af506dd621e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3bd36661e3aa30c51e836fa7b44ca2d5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga3bd36661e3aa30c51e836fa7b44ca2d5">snd_config_add_before</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *before, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *child)</td></tr>
<tr class="memdesc:ga3bd36661e3aa30c51e836fa7b44ca2d5"><td class="mdescLeft"> </td><td class="mdescRight">Adds a child before another child configuration node. <a href="group___configuration.html#ga3bd36661e3aa30c51e836fa7b44ca2d5">More...</a><br /></td></tr>
<tr class="separator:ga3bd36661e3aa30c51e836fa7b44ca2d5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad8cc6279c458110f47d7759e308c4ea4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gad8cc6279c458110f47d7759e308c4ea4">snd_config_add_after</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *after, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *child)</td></tr>
<tr class="memdesc:gad8cc6279c458110f47d7759e308c4ea4"><td class="mdescLeft"> </td><td class="mdescRight">Adds a child after another child configuration node. <a href="group___configuration.html#gad8cc6279c458110f47d7759e308c4ea4">More...</a><br /></td></tr>
<tr class="separator:gad8cc6279c458110f47d7759e308c4ea4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad4d69b003662e09e8206a7892e849d27"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gad4d69b003662e09e8206a7892e849d27">snd_config_remove</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr>
<tr class="memdesc:gad4d69b003662e09e8206a7892e849d27"><td class="mdescLeft"> </td><td class="mdescRight">Removes a configuration node from its tree. <a href="group___configuration.html#gad4d69b003662e09e8206a7892e849d27">More...</a><br /></td></tr>
<tr class="separator:gad4d69b003662e09e8206a7892e849d27"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2a006b942faa3335a958a7df7bcea17e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga2a006b942faa3335a958a7df7bcea17e">snd_config_delete</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr>
<tr class="memdesc:ga2a006b942faa3335a958a7df7bcea17e"><td class="mdescLeft"> </td><td class="mdescRight">Frees a configuration node. <a href="group___configuration.html#ga2a006b942faa3335a958a7df7bcea17e">More...</a><br /></td></tr>
<tr class="separator:ga2a006b942faa3335a958a7df7bcea17e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaec120883e56ecb510e064151e0b11d51"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaec120883e56ecb510e064151e0b11d51">snd_config_delete_compound_members</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr>
<tr class="memdesc:gaec120883e56ecb510e064151e0b11d51"><td class="mdescLeft"> </td><td class="mdescRight">Deletes the children of a node. <a href="group___configuration.html#gaec120883e56ecb510e064151e0b11d51">More...</a><br /></td></tr>
<tr class="separator:gaec120883e56ecb510e064151e0b11d51"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga30f30bd27d13fbb3527270b3fc9e1676"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga30f30bd27d13fbb3527270b3fc9e1676">snd_config_copy</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **dst, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *src)</td></tr>
<tr class="memdesc:ga30f30bd27d13fbb3527270b3fc9e1676"><td class="mdescLeft"> </td><td class="mdescRight">Creates a copy of a configuration node. <a href="group___configuration.html#ga30f30bd27d13fbb3527270b3fc9e1676">More...</a><br /></td></tr>
<tr class="separator:ga30f30bd27d13fbb3527270b3fc9e1676"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0c4acd2de7999ad6e477d398662485c2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga0c4acd2de7999ad6e477d398662485c2">snd_config_substitute</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *dst, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *src)</td></tr>
<tr class="memdesc:ga0c4acd2de7999ad6e477d398662485c2"><td class="mdescLeft"> </td><td class="mdescRight">Substitutes one configuration node to another. <a href="group___configuration.html#ga0c4acd2de7999ad6e477d398662485c2">More...</a><br /></td></tr>
<tr class="separator:ga0c4acd2de7999ad6e477d398662485c2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga83e903a000d87c649ecea6945ae37e71"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga83e903a000d87c649ecea6945ae37e71">snd_config_merge</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *dst, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *src, int override)</td></tr>
<tr class="memdesc:ga83e903a000d87c649ecea6945ae37e71"><td class="mdescLeft"> </td><td class="mdescRight">In-place merge of two config handles. <a href="group___configuration.html#ga83e903a000d87c649ecea6945ae37e71">More...</a><br /></td></tr>
<tr class="separator:ga83e903a000d87c649ecea6945ae37e71"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac570ecbaba611ccc12bc235a1f4d0181"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac570ecbaba611ccc12bc235a1f4d0181">snd_config_make</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, <a class="el" href="group___configuration.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> <a class="el" href="ump__msg_8h.html#ad44b615021ed3ccb734fcaf583ef4a03">type</a>)</td></tr>
<tr class="memdesc:gac570ecbaba611ccc12bc235a1f4d0181"><td class="mdescLeft"> </td><td class="mdescRight">Creates a configuration node. <a href="group___configuration.html#gac570ecbaba611ccc12bc235a1f4d0181">More...</a><br /></td></tr>
<tr class="separator:gac570ecbaba611ccc12bc235a1f4d0181"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga838fac581e115574acc3711cad9f5877"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga838fac581e115574acc3711cad9f5877">snd_config_make_integer</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr>
<tr class="memdesc:ga838fac581e115574acc3711cad9f5877"><td class="mdescLeft"> </td><td class="mdescRight">Creates an integer configuration node. <a href="group___configuration.html#ga838fac581e115574acc3711cad9f5877">More...</a><br /></td></tr>
<tr class="separator:ga838fac581e115574acc3711cad9f5877"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2c27175c162fe5027e3f1b3d5420afbb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga2c27175c162fe5027e3f1b3d5420afbb">snd_config_make_integer64</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr>
<tr class="memdesc:ga2c27175c162fe5027e3f1b3d5420afbb"><td class="mdescLeft"> </td><td class="mdescRight">Creates a 64-bit-integer configuration node. <a href="group___configuration.html#ga2c27175c162fe5027e3f1b3d5420afbb">More...</a><br /></td></tr>
<tr class="separator:ga2c27175c162fe5027e3f1b3d5420afbb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8f175813bfc2556bd08fd580f05d36e6"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga8f175813bfc2556bd08fd580f05d36e6">snd_config_make_real</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr>
<tr class="memdesc:ga8f175813bfc2556bd08fd580f05d36e6"><td class="mdescLeft"> </td><td class="mdescRight">Creates a real number configuration node. <a href="group___configuration.html#ga8f175813bfc2556bd08fd580f05d36e6">More...</a><br /></td></tr>
<tr class="separator:ga8f175813bfc2556bd08fd580f05d36e6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6764115f489629be027b434c4e323cff"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga6764115f489629be027b434c4e323cff">snd_config_make_string</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr>
<tr class="memdesc:ga6764115f489629be027b434c4e323cff"><td class="mdescLeft"> </td><td class="mdescRight">Creates a string configuration node. <a href="group___configuration.html#ga6764115f489629be027b434c4e323cff">More...</a><br /></td></tr>
<tr class="separator:ga6764115f489629be027b434c4e323cff"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadbcce71d8d3a78709fc2a78d6f543584"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gadbcce71d8d3a78709fc2a78d6f543584">snd_config_make_pointer</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key)</td></tr>
<tr class="memdesc:gadbcce71d8d3a78709fc2a78d6f543584"><td class="mdescLeft"> </td><td class="mdescRight">Creates a pointer configuration node. <a href="group___configuration.html#gadbcce71d8d3a78709fc2a78d6f543584">More...</a><br /></td></tr>
<tr class="separator:gadbcce71d8d3a78709fc2a78d6f543584"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2ce24133c1d6828e2afe366284c61e01"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga2ce24133c1d6828e2afe366284c61e01">snd_config_make_compound</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, int join)</td></tr>
<tr class="memdesc:ga2ce24133c1d6828e2afe366284c61e01"><td class="mdescLeft"> </td><td class="mdescRight">Creates an empty compound configuration node. <a href="group___configuration.html#ga2ce24133c1d6828e2afe366284c61e01">More...</a><br /></td></tr>
<tr class="separator:ga2ce24133c1d6828e2afe366284c61e01"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0f06e02ee428cb05b4efc507ce8e3cff"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga0f06e02ee428cb05b4efc507ce8e3cff">snd_config_make_path</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *root, const char *key, int join, int override)</td></tr>
<tr class="memdesc:ga0f06e02ee428cb05b4efc507ce8e3cff"><td class="mdescLeft"> </td><td class="mdescRight">Creates an empty compound configuration node in the path. <a href="group___configuration.html#ga0f06e02ee428cb05b4efc507ce8e3cff">More...</a><br /></td></tr>
<tr class="separator:ga0f06e02ee428cb05b4efc507ce8e3cff"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gafeb0552cbed09a3badbb5e74c7a7973d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gafeb0552cbed09a3badbb5e74c7a7973d">snd_config_imake_integer</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const long value)</td></tr>
<tr class="memdesc:gafeb0552cbed09a3badbb5e74c7a7973d"><td class="mdescLeft"> </td><td class="mdescRight">Creates an integer configuration node with the given initial value. <a href="group___configuration.html#gafeb0552cbed09a3badbb5e74c7a7973d">More...</a><br /></td></tr>
<tr class="separator:gafeb0552cbed09a3badbb5e74c7a7973d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga04cfbfda89dc17c19a5a4076271a4d07"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga04cfbfda89dc17c19a5a4076271a4d07">snd_config_imake_integer64</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const long long value)</td></tr>
<tr class="memdesc:ga04cfbfda89dc17c19a5a4076271a4d07"><td class="mdescLeft"> </td><td class="mdescRight">Creates a 64-bit-integer configuration node with the given initial value. <a href="group___configuration.html#ga04cfbfda89dc17c19a5a4076271a4d07">More...</a><br /></td></tr>
<tr class="separator:ga04cfbfda89dc17c19a5a4076271a4d07"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga968e5bb773dfea922b5272636b26e9c2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga968e5bb773dfea922b5272636b26e9c2">snd_config_imake_real</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const double value)</td></tr>
<tr class="memdesc:ga968e5bb773dfea922b5272636b26e9c2"><td class="mdescLeft"> </td><td class="mdescRight">Creates a real number configuration node with the given initial value. <a href="group___configuration.html#ga968e5bb773dfea922b5272636b26e9c2">More...</a><br /></td></tr>
<tr class="separator:ga968e5bb773dfea922b5272636b26e9c2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa83035f79027a464bf9d5d31e0a20547"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaa83035f79027a464bf9d5d31e0a20547">snd_config_imake_string</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const char *ascii)</td></tr>
<tr class="memdesc:gaa83035f79027a464bf9d5d31e0a20547"><td class="mdescLeft"> </td><td class="mdescRight">Creates a string configuration node with the given initial value. <a href="group___configuration.html#gaa83035f79027a464bf9d5d31e0a20547">More...</a><br /></td></tr>
<tr class="separator:gaa83035f79027a464bf9d5d31e0a20547"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5bb83b269c6e41717a3524abcec5f787"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga5bb83b269c6e41717a3524abcec5f787">snd_config_imake_safe_string</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const char *ascii)</td></tr>
<tr class="memdesc:ga5bb83b269c6e41717a3524abcec5f787"><td class="mdescLeft"> </td><td class="mdescRight">Creates a string configuration node with the given initial value. <a href="group___configuration.html#ga5bb83b269c6e41717a3524abcec5f787">More...</a><br /></td></tr>
<tr class="separator:ga5bb83b269c6e41717a3524abcec5f787"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac7c6ce28a676169fff594aa4222705b2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac7c6ce28a676169fff594aa4222705b2">snd_config_imake_pointer</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **config, const char *key, const void *ptr)</td></tr>
<tr class="memdesc:gac7c6ce28a676169fff594aa4222705b2"><td class="mdescLeft"> </td><td class="mdescRight">Creates a pointer configuration node with the given initial value. <a href="group___configuration.html#gac7c6ce28a676169fff594aa4222705b2">More...</a><br /></td></tr>
<tr class="separator:gac7c6ce28a676169fff594aa4222705b2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6def4c43ce325abaa3ddfba5a4f4d138"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___configuration.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga6def4c43ce325abaa3ddfba5a4f4d138">snd_config_get_type</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr>
<tr class="memdesc:ga6def4c43ce325abaa3ddfba5a4f4d138"><td class="mdescLeft"> </td><td class="mdescRight">Returns the type of a configuration node. <a href="group___configuration.html#ga6def4c43ce325abaa3ddfba5a4f4d138">More...</a><br /></td></tr>
<tr class="separator:ga6def4c43ce325abaa3ddfba5a4f4d138"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae369d6f289748726617834b5d02047ff"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gae369d6f289748726617834b5d02047ff">snd_config_is_array</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr>
<tr class="memdesc:gae369d6f289748726617834b5d02047ff"><td class="mdescLeft"> </td><td class="mdescRight">Returns if the compound is an array (and count of items). <a href="group___configuration.html#gae369d6f289748726617834b5d02047ff">More...</a><br /></td></tr>
<tr class="separator:gae369d6f289748726617834b5d02047ff"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac2f424a17a2fb56fd22103a64b45bdb5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac2f424a17a2fb56fd22103a64b45bdb5">snd_config_is_empty</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config)</td></tr>
<tr class="memdesc:gac2f424a17a2fb56fd22103a64b45bdb5"><td class="mdescLeft"> </td><td class="mdescRight">Returns if the compound has no fields (is empty). <a href="group___configuration.html#gac2f424a17a2fb56fd22103a64b45bdb5">More...</a><br /></td></tr>
<tr class="separator:gac2f424a17a2fb56fd22103a64b45bdb5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga550948931d44695b6d8e8f148f87cb54"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga550948931d44695b6d8e8f148f87cb54">snd_config_set_id</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *id)</td></tr>
<tr class="memdesc:ga550948931d44695b6d8e8f148f87cb54"><td class="mdescLeft"> </td><td class="mdescRight">Sets the id of a configuration node. <a href="group___configuration.html#ga550948931d44695b6d8e8f148f87cb54">More...</a><br /></td></tr>
<tr class="separator:ga550948931d44695b6d8e8f148f87cb54"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga6fd3be48221cae9cee9c7245a0804d73"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga6fd3be48221cae9cee9c7245a0804d73">snd_config_set_integer</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long value)</td></tr>
<tr class="memdesc:ga6fd3be48221cae9cee9c7245a0804d73"><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of an integer configuration node. <a href="group___configuration.html#ga6fd3be48221cae9cee9c7245a0804d73">More...</a><br /></td></tr>
<tr class="separator:ga6fd3be48221cae9cee9c7245a0804d73"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gafdb63c78c07e11194a28d591b0fbffc4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gafdb63c78c07e11194a28d591b0fbffc4">snd_config_set_integer64</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long long value)</td></tr>
<tr class="memdesc:gafdb63c78c07e11194a28d591b0fbffc4"><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a 64-bit-integer configuration node. <a href="group___configuration.html#gafdb63c78c07e11194a28d591b0fbffc4">More...</a><br /></td></tr>
<tr class="separator:gafdb63c78c07e11194a28d591b0fbffc4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga46c71d5d36c64f0a06ceae956a39fedc"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga46c71d5d36c64f0a06ceae956a39fedc">snd_config_set_real</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, double value)</td></tr>
<tr class="memdesc:ga46c71d5d36c64f0a06ceae956a39fedc"><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a real-number configuration node. <a href="group___configuration.html#ga46c71d5d36c64f0a06ceae956a39fedc">More...</a><br /></td></tr>
<tr class="separator:ga46c71d5d36c64f0a06ceae956a39fedc"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0f76f8ad47dce7f90580c8d59c6e44f8"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga0f76f8ad47dce7f90580c8d59c6e44f8">snd_config_set_string</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *value)</td></tr>
<tr class="memdesc:ga0f76f8ad47dce7f90580c8d59c6e44f8"><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a string configuration node. <a href="group___configuration.html#ga0f76f8ad47dce7f90580c8d59c6e44f8">More...</a><br /></td></tr>
<tr class="separator:ga0f76f8ad47dce7f90580c8d59c6e44f8"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac1810a11f576fe339074502f4fed4a91"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac1810a11f576fe339074502f4fed4a91">snd_config_set_ascii</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *ascii)</td></tr>
<tr class="memdesc:gac1810a11f576fe339074502f4fed4a91"><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a configuration node. <a href="group___configuration.html#gac1810a11f576fe339074502f4fed4a91">More...</a><br /></td></tr>
<tr class="separator:gac1810a11f576fe339074502f4fed4a91"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga037c3bf96326bb6f5dfd340475b34fbf"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga037c3bf96326bb6f5dfd340475b34fbf">snd_config_set_pointer</a> (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const void *ptr)</td></tr>
<tr class="memdesc:ga037c3bf96326bb6f5dfd340475b34fbf"><td class="mdescLeft"> </td><td class="mdescRight">Changes the value of a pointer configuration node. <a href="group___configuration.html#ga037c3bf96326bb6f5dfd340475b34fbf">More...</a><br /></td></tr>
<tr class="separator:ga037c3bf96326bb6f5dfd340475b34fbf"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae366751e8ea98aeb69f9ef876f7b949c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gae366751e8ea98aeb69f9ef876f7b949c">snd_config_get_id</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char **value)</td></tr>
<tr class="memdesc:gae366751e8ea98aeb69f9ef876f7b949c"><td class="mdescLeft"> </td><td class="mdescRight">Returns the id of a configuration node. <a href="group___configuration.html#gae366751e8ea98aeb69f9ef876f7b949c">More...</a><br /></td></tr>
<tr class="separator:gae366751e8ea98aeb69f9ef876f7b949c"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabfbc36060fd4f5d1d929938443f95559"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gabfbc36060fd4f5d1d929938443f95559">snd_config_get_integer</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long *value)</td></tr>
<tr class="memdesc:gabfbc36060fd4f5d1d929938443f95559"><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of an integer configuration node. <a href="group___configuration.html#gabfbc36060fd4f5d1d929938443f95559">More...</a><br /></td></tr>
<tr class="separator:gabfbc36060fd4f5d1d929938443f95559"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf4d9e68918f7d49d7b4b14ffbe94afc1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaf4d9e68918f7d49d7b4b14ffbe94afc1">snd_config_get_integer64</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, long long *value)</td></tr>
<tr class="memdesc:gaf4d9e68918f7d49d7b4b14ffbe94afc1"><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a 64-bit-integer configuration node. <a href="group___configuration.html#gaf4d9e68918f7d49d7b4b14ffbe94afc1">More...</a><br /></td></tr>
<tr class="separator:gaf4d9e68918f7d49d7b4b14ffbe94afc1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad4d23c0bf941527d80aeb6f991bf88c9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gad4d23c0bf941527d80aeb6f991bf88c9">snd_config_get_real</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, double *value)</td></tr>
<tr class="memdesc:gad4d23c0bf941527d80aeb6f991bf88c9"><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a real-number configuration node. <a href="group___configuration.html#gad4d23c0bf941527d80aeb6f991bf88c9">More...</a><br /></td></tr>
<tr class="separator:gad4d23c0bf941527d80aeb6f991bf88c9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga79738baffa6fa7722b1027ab84ac61bb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga79738baffa6fa7722b1027ab84ac61bb">snd_config_get_ireal</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, double *value)</td></tr>
<tr class="memdesc:ga79738baffa6fa7722b1027ab84ac61bb"><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a real or integer configuration node. <a href="group___configuration.html#ga79738baffa6fa7722b1027ab84ac61bb">More...</a><br /></td></tr>
<tr class="separator:ga79738baffa6fa7722b1027ab84ac61bb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5ab99983d1d93ddbcde9bb69a1e4f9fb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga5ab99983d1d93ddbcde9bb69a1e4f9fb">snd_config_get_string</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char **value)</td></tr>
<tr class="memdesc:ga5ab99983d1d93ddbcde9bb69a1e4f9fb"><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a string configuration node. <a href="group___configuration.html#ga5ab99983d1d93ddbcde9bb69a1e4f9fb">More...</a><br /></td></tr>
<tr class="separator:ga5ab99983d1d93ddbcde9bb69a1e4f9fb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa26f97e098a0dd2cd5e28299b6b6c132"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaa26f97e098a0dd2cd5e28299b6b6c132">snd_config_get_ascii</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, char **value)</td></tr>
<tr class="memdesc:gaa26f97e098a0dd2cd5e28299b6b6c132"><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a configuration node as a string. <a href="group___configuration.html#gaa26f97e098a0dd2cd5e28299b6b6c132">More...</a><br /></td></tr>
<tr class="separator:gaa26f97e098a0dd2cd5e28299b6b6c132"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga54868e0fa30458ef1c259772a8e7c6d7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga54868e0fa30458ef1c259772a8e7c6d7">snd_config_get_pointer</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const void **value)</td></tr>
<tr class="memdesc:ga54868e0fa30458ef1c259772a8e7c6d7"><td class="mdescLeft"> </td><td class="mdescRight">Returns the value of a pointer configuration node. <a href="group___configuration.html#ga54868e0fa30458ef1c259772a8e7c6d7">More...</a><br /></td></tr>
<tr class="separator:ga54868e0fa30458ef1c259772a8e7c6d7"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaeec157fd161a138e402c9bd243bbd408"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaeec157fd161a138e402c9bd243bbd408">snd_config_test_id</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *config, const char *id)</td></tr>
<tr class="memdesc:gaeec157fd161a138e402c9bd243bbd408"><td class="mdescLeft"> </td><td class="mdescRight">Compares the id of a configuration node to a given string. <a href="group___configuration.html#gaeec157fd161a138e402c9bd243bbd408">More...</a><br /></td></tr>
<tr class="separator:gaeec157fd161a138e402c9bd243bbd408"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac8965466674c10b9a119d591ed484cef"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac8965466674c10b9a119d591ed484cef">snd_config_iterator_first</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *node)</td></tr>
<tr class="memdesc:gac8965466674c10b9a119d591ed484cef"><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to a node's first child. <a href="group___configuration.html#gac8965466674c10b9a119d591ed484cef">More...</a><br /></td></tr>
<tr class="separator:gac8965466674c10b9a119d591ed484cef"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga10c27ddc83c78680d91a167dd2f0a3cb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga10c27ddc83c78680d91a167dd2f0a3cb">snd_config_iterator_next</a> (const <a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> iterator)</td></tr>
<tr class="memdesc:ga10c27ddc83c78680d91a167dd2f0a3cb"><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator pointing to the next sibling. <a href="group___configuration.html#ga10c27ddc83c78680d91a167dd2f0a3cb">More...</a><br /></td></tr>
<tr class="separator:ga10c27ddc83c78680d91a167dd2f0a3cb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac08a30bc630481f69feb2170fed4afda"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gac08a30bc630481f69feb2170fed4afda">snd_config_iterator_end</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *node)</td></tr>
<tr class="memdesc:gac08a30bc630481f69feb2170fed4afda"><td class="mdescLeft"> </td><td class="mdescRight">Returns an iterator that ends a node's children list. <a href="group___configuration.html#gac08a30bc630481f69feb2170fed4afda">More...</a><br /></td></tr>
<tr class="separator:gac08a30bc630481f69feb2170fed4afda"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaa91fe1d926d88041ed516a6a7293f606"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaa91fe1d926d88041ed516a6a7293f606">snd_config_iterator_entry</a> (const <a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> iterator)</td></tr>
<tr class="memdesc:gaa91fe1d926d88041ed516a6a7293f606"><td class="mdescLeft"> </td><td class="mdescRight">Returns the configuration node handle pointed to by an iterator. <a href="group___configuration.html#gaa91fe1d926d88041ed516a6a7293f606">More...</a><br /></td></tr>
<tr class="separator:gaa91fe1d926d88041ed516a6a7293f606"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga11dfab861b537b564f0c76d9b1eb2935"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga11dfab861b537b564f0c76d9b1eb2935">snd_config_get_bool_ascii</a> (const char *ascii)</td></tr>
<tr class="memdesc:ga11dfab861b537b564f0c76d9b1eb2935"><td class="mdescLeft"> </td><td class="mdescRight">Gets the boolean value from the given ASCII string. <a href="group___configuration.html#ga11dfab861b537b564f0c76d9b1eb2935">More...</a><br /></td></tr>
<tr class="separator:ga11dfab861b537b564f0c76d9b1eb2935"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae5d80ee31e779992fd14672fd850a3d1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gae5d80ee31e779992fd14672fd850a3d1">snd_config_get_bool</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *conf)</td></tr>
<tr class="memdesc:gae5d80ee31e779992fd14672fd850a3d1"><td class="mdescLeft"> </td><td class="mdescRight">Gets the boolean value from a configuration node. <a href="group___configuration.html#gae5d80ee31e779992fd14672fd850a3d1">More...</a><br /></td></tr>
<tr class="separator:gae5d80ee31e779992fd14672fd850a3d1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga93e5814988a9d4be54b0ceba4fa260ba"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga93e5814988a9d4be54b0ceba4fa260ba">snd_config_get_card</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *conf)</td></tr>
<tr class="memdesc:ga93e5814988a9d4be54b0ceba4fa260ba"><td class="mdescLeft"> </td><td class="mdescRight">Gets the card number from a configuration node. <a href="group___configuration.html#ga93e5814988a9d4be54b0ceba4fa260ba">More...</a><br /></td></tr>
<tr class="separator:ga93e5814988a9d4be54b0ceba4fa260ba"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5759c972706da4bd3be35c9336568bfd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga5759c972706da4bd3be35c9336568bfd">snd_config_get_ctl_iface_ascii</a> (const char *ascii)</td></tr>
<tr class="memdesc:ga5759c972706da4bd3be35c9336568bfd"><td class="mdescLeft"> </td><td class="mdescRight">Gets the control interface index from the given ASCII string. <a href="group___configuration.html#ga5759c972706da4bd3be35c9336568bfd">More...</a><br /></td></tr>
<tr class="separator:ga5759c972706da4bd3be35c9336568bfd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaaf1c1ea4801961e3107ca23ba89bd429"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaaf1c1ea4801961e3107ca23ba89bd429">snd_config_get_ctl_iface</a> (const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *conf)</td></tr>
<tr class="memdesc:gaaf1c1ea4801961e3107ca23ba89bd429"><td class="mdescLeft"> </td><td class="mdescRight">Gets the control interface index from a configuration node. <a href="group___configuration.html#gaaf1c1ea4801961e3107ca23ba89bd429">More...</a><br /></td></tr>
<tr class="separator:gaaf1c1ea4801961e3107ca23ba89bd429"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf35b51ab61fd7ea628ab088a1b444aa4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#gaf35b51ab61fd7ea628ab088a1b444aa4">snd_names_list</a> (const char *iface, snd_devname_t **list)</td></tr>
<tr class="memdesc:gaf35b51ab61fd7ea628ab088a1b444aa4"><td class="mdescLeft"> </td><td class="mdescRight">This function is unimplemented. <a href="group___configuration.html#gaf35b51ab61fd7ea628ab088a1b444aa4">More...</a><br /></td></tr>
<tr class="separator:gaf35b51ab61fd7ea628ab088a1b444aa4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga665741321b3c1c3f07a6eeb969406cb8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga665741321b3c1c3f07a6eeb969406cb8">snd_names_list_free</a> (snd_devname_t *list)</td></tr>
<tr class="memdesc:ga665741321b3c1c3f07a6eeb969406cb8"><td class="mdescLeft"> </td><td class="mdescRight">This function is unimplemented. <a href="group___configuration.html#ga665741321b3c1c3f07a6eeb969406cb8">More...</a><br /></td></tr>
<tr class="separator:ga665741321b3c1c3f07a6eeb969406cb8"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:ga6cf7955d3a072d354dab4d7b536c7831"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831">snd_config</a></td></tr>
<tr class="memdesc:ga6cf7955d3a072d354dab4d7b536c7831"><td class="mdescLeft"> </td><td class="mdescRight">Configuration top-level node (the global configuration). <a href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831">More...</a><br /></td></tr>
<tr class="separator:ga6cf7955d3a072d354dab4d7b536c7831"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>The configuration functions and types allow you to read, enumerate, modify and write the contents of ALSA configuration files. </p>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a id="gac3f21333e1f9b602cad9b06cb418fa80"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac3f21333e1f9b602cad9b06cb418fa80">◆ </a></span>snd_config_for_each</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">#define snd_config_for_each</td>
<td>(</td>
<td class="paramtype"> </td>
<td class="paramname">pos, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">next, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname">node </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td>    for (pos = <a class="el" href="group___configuration.html#gac8965466674c10b9a119d591ed484cef">snd_config_iterator_first</a>(node), next = <a class="el" href="group___configuration.html#ga10c27ddc83c78680d91a167dd2f0a3cb">snd_config_iterator_next</a>(pos); pos != <a class="el" href="group___configuration.html#gac08a30bc630481f69feb2170fed4afda">snd_config_iterator_end</a>(node); pos = next, next = <a class="el" href="group___configuration.html#ga10c27ddc83c78680d91a167dd2f0a3cb">snd_config_iterator_next</a>(pos))</td>
</tr>
</table>
</div><div class="memdoc">
<p>Helper macro to iterate over the children of a compound node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">pos</td><td>Iterator variable for the current node. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">next</td><td>Temporary iterator variable for the next node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">node</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"><div class="line"><a class="code" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> pos, next;</div>
<div class="line"><a class="code" href="group___configuration.html#gac3f21333e1f9b602cad9b06cb418fa80">snd_config_for_each</a>(pos, next, node) {</div>
<div class="line"> <a class="code" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> *entry = <a class="code" href="group___configuration.html#gaa91fe1d926d88041ed516a6a7293f606">snd_config_iterator_entry</a>(pos);</div>
<div class="line"> ...</div>
<div class="line">}</div>
<div class="ttc" id="agroup___configuration_html_ga1c20905af775ae77d04d1a5696f67985"><div class="ttname"><a href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a></div><div class="ttdeci">struct _snd_config snd_config_t</div><div class="ttdoc">Internal structure for a configuration node object.</div><div class="ttdef"><b>Definition:</b> conf.h:69</div></div>
<div class="ttc" id="agroup___configuration_html_ga6c621ab8875a222e1fcb56e9feed6ec6"><div class="ttname"><a href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a></div><div class="ttdeci">struct _snd_config_iterator * snd_config_iterator_t</div><div class="ttdoc">Type for a configuration compound iterator.</div><div class="ttdef"><b>Definition:</b> conf.h:77</div></div>
<div class="ttc" id="agroup___configuration_html_gaa91fe1d926d88041ed516a6a7293f606"><div class="ttname"><a href="group___configuration.html#gaa91fe1d926d88041ed516a6a7293f606">snd_config_iterator_entry</a></div><div class="ttdeci">snd_config_t * snd_config_iterator_entry(const snd_config_iterator_t iterator)</div><div class="ttdoc">Returns the configuration node handle pointed to by an iterator.</div><div class="ttdef"><b>Definition:</b> conf.c:4865</div></div>
<div class="ttc" id="agroup___configuration_html_gac3f21333e1f9b602cad9b06cb418fa80"><div class="ttname"><a href="group___configuration.html#gac3f21333e1f9b602cad9b06cb418fa80">snd_config_for_each</a></div><div class="ttdeci">#define snd_config_for_each(pos, next, node)</div><div class="ttdoc">Helper macro to iterate over the children of a compound node.</div><div class="ttdef"><b>Definition:</b> conf.h:206</div></div>
</div><!-- fragment --><p>This macro allows deleting or removing the current node. </p>
</div>
</div>
<h2 class="groupheader">Typedef Documentation</h2>
<a id="gaec958403bc070bdfa1bcc89285614087"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaec958403bc070bdfa1bcc89285614087">◆ </a></span>snd_config_expand_fcn_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef int(* snd_config_expand_fcn_t) (<a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> **dst, const char *s, void *private_data)</td>
</tr>
</table>
</div><div class="memdoc">
<p>custom expansion callback </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>The function puts the handle to the new configuration node at the address specified by <em>dst</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>string the string to be expanded </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">private_data</td><td>Handle to the <code>private_data</code> node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A non-negative value if successful, otherwise a negative error code.</dd></dl>
<p>Use a function of this type to define a custom expansion </p>
</div>
</div>
<a id="ga6c621ab8875a222e1fcb56e9feed6ec6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6c621ab8875a222e1fcb56e9feed6ec6">◆ </a></span>snd_config_iterator_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct _snd_config_iterator* <a class="el" href="group___configuration.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 id="ga1c20905af775ae77d04d1a5696f67985"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1c20905af775ae77d04d1a5696f67985">◆ </a></span>snd_config_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct _snd_config <a class="el" href="group___configuration.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 id="gab10b229189a94e3fcbac7f6ca5794cc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab10b229189a94e3fcbac7f6ca5794cc0">◆ </a></span>snd_config_update_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef struct _snd_config_update <a class="el" href="group___configuration.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>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="gaa41083e55d19c7755c5d624030e06887"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa41083e55d19c7755c5d624030e06887">◆ </a></span>snd_config_type_t</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">enum <a class="el" href="group___configuration.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>Configuration node type. </p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7"></a>SND_CONFIG_TYPE_INTEGER </td><td class="fielddoc"><p>Integer number. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2"></a>SND_CONFIG_TYPE_INTEGER64 </td><td class="fielddoc"><p>64-bit integer number. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508"></a>SND_CONFIG_TYPE_REAL </td><td class="fielddoc"><p>Real number. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49"></a>SND_CONFIG_TYPE_STRING </td><td class="fielddoc"><p>Character string. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe"></a>SND_CONFIG_TYPE_POINTER </td><td class="fielddoc"><p>Pointer (runtime only, cannot be saved). </p>
</td></tr>
<tr><td class="fieldname"><a id="ggaa41083e55d19c7755c5d624030e06887a82b5c1a9dbadaa4e36815fc1f01fc2f7"></a>SND_CONFIG_TYPE_COMPOUND </td><td class="fielddoc"><p>Compound node. </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga6f011f2a8063dafd80bd8af506dd621e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6f011f2a8063dafd80bd8af506dd621e">◆ </a></span>snd_config_add()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>parent</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>child</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">parent</td><td>Handle to a compound configuration node. </td></tr>
<tr><td class="paramname">child</td><td>Handle to the configuration node to be added. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gad8cc6279c458110f47d7759e308c4ea4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad8cc6279c458110f47d7759e308c4ea4">◆ </a></span>snd_config_add_after()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_add_after </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>after</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>child</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a child after another child configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">after</td><td>Handle to the start configuration node. </td></tr>
<tr><td class="paramname">child</td><td>Handle to the configuration node to be added. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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 parent of the node <em>after</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="section user"><dt>Errors:</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>
</div>
</div>
<a id="ga3bd36661e3aa30c51e836fa7b44ca2d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3bd36661e3aa30c51e836fa7b44ca2d5">◆ </a></span>snd_config_add_before()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_add_before </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>before</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>child</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Adds a child before another child configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">before</td><td>Handle to the start configuration node. </td></tr>
<tr><td class="paramname">child</td><td>Handle to the configuration node to be added. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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 parent of the node <em>before</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="section user"><dt>Errors:</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>
</div>
</div>
<a id="ga30f30bd27d13fbb3527270b3fc9e1676"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga30f30bd27d13fbb3527270b3fc9e1676">◆ </a></span>snd_config_copy()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>src</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a copy of a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>The function puts the handle to the new configuration node at the address specified by <em>dst</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Handle to the source configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga2a006b942faa3335a958a7df7bcea17e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2a006b942faa3335a958a7df7bcea17e">◆ </a></span>snd_config_delete()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Frees a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node to be deleted. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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>
<p>The function is supposed to be called only for locally copied config trees. For the global tree, take the reference via <a class="el" href="group___configuration.html#ga568fcf6f45808319725ac066714b25a8" title="Updates snd_config and takes its reference.">snd_config_update_ref</a> and free it via <a class="el" href="group___configuration.html#gac87538403cb6f8125468a1af56f42e33" title="Unreference the config tree.">snd_config_unref</a>.</p>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___configuration.html#gad4d69b003662e09e8206a7892e849d27" title="Removes a configuration node from its tree.">snd_config_remove</a> </dd></dl>
</div>
</div>
<a id="gaec120883e56ecb510e064151e0b11d51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaec120883e56ecb510e064151e0b11d51">◆ </a></span>snd_config_delete_compound_members()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Deletes the children of a node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the compound configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a compound node. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga1a51645a07e204d4e814d890452da558"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1a51645a07e204d4e814d890452da558">◆ </a></span>snd_config_evaluate()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>root</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>private_data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>result</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluates a configuration node at runtime. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">config</td><td>Handle to the source configuration node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">root</td><td>Handle to the root of the source configuration. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">private_data</td><td>Handle to the private data node for runtime evaluation. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">result</td><td>Must be <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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 id="ga3465f450244d9ee5cedcc6e85b403c68"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3465f450244d9ee5cedcc6e85b403c68">◆ </a></span>snd_config_evaluate_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_evaluate_string </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#gaec958403bc070bdfa1bcc89285614087">snd_config_expand_fcn_t</a> </td>
<td class="paramname"><em>fcn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>private_data</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Evaluate an math expression in the string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>The function puts the handle to the new configuration node at the address specified by <em>dst</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>A string to evaluate </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">fcn</td><td>A function to get the variable contents </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">private_data</td><td>A private value for the variable contents function </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if successful, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="ga7759f41c3757ce72ee9bd118976071c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7759f41c3757ce72ee9bd118976071c2">◆ </a></span>snd_config_expand()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>root</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>args</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>private_data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>result</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">root</td><td>Handle to the root configuration node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">args</td><td>Arguments string, can be <code>NULL</code>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">private_data</td><td>Handle to the private data node for functions. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">result</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="section return"><dt>Returns</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___configuration.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 id="ga424067becc332aa426689d2780b08c1d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga424067becc332aa426689d2780b08c1d">◆ </a></span>snd_config_expand_custom()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_expand_custom </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>root</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#gaec958403bc070bdfa1bcc89285614087">snd_config_expand_fcn_t</a> </td>
<td class="paramname"><em>fcn</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>result</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">root</td><td>Handle to the root configuration node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">fcn</td><td>Custom function to obtain the referred variable name </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">private_data</td><td>Private data node for the custom function </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">result</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="section return"><dt>Returns</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___configuration.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>
<p>The new tree is not evaluated (<a class="el" href="group___configuration.html#ga1a51645a07e204d4e814d890452da558">snd_config_evaluate</a>). </p>
</div>
</div>
<a id="gaa26f97e098a0dd2cd5e28299b6b6c132"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa26f97e098a0dd2cd5e28299b6b6c132">◆ </a></span>snd_config_get_ascii()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char ** </td>
<td class="paramname"><em>ascii</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ascii</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="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a>, <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a>, <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a>, and <a class="el" href="group___configuration.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a>.</p>
<dl class="section user"><dt>Errors:</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gae5d80ee31e779992fd14672fd850a3d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae5d80ee31e779992fd14672fd850a3d1">◆ </a></span>snd_config_get_bool()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>conf</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the boolean value from a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conf</td><td>Handle to the configuration node to be parsed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 or 1 if successful, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="ga11dfab861b537b564f0c76d9b1eb2935"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga11dfab861b537b564f0c76d9b1eb2935">◆ </a></span>snd_config_get_bool_ascii()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_get_bool_ascii </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>ascii</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the boolean value from the given ASCII string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ascii</td><td>The string to be parsed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 or 1 if successful, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="ga93e5814988a9d4be54b0ceba4fa260ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga93e5814988a9d4be54b0ceba4fa260ba">◆ </a></span>snd_config_get_card()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_get_card </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>conf</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the card number from a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conf</td><td>Handle to the configuration node to be parsed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The card number if successful, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="gaaf1c1ea4801961e3107ca23ba89bd429"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaf1c1ea4801961e3107ca23ba89bd429">◆ </a></span>snd_config_get_ctl_iface()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>conf</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the control interface index from a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">conf</td><td>Handle to the configuration node to be parsed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The control interface index if successful, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="ga5759c972706da4bd3be35c9336568bfd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5759c972706da4bd3be35c9336568bfd">◆ </a></span>snd_config_get_ctl_iface_ascii()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_get_ctl_iface_ascii </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>ascii</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Gets the control interface index from the given ASCII string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">ascii</td><td>The string to be parsed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The control interface index if successful, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="gae366751e8ea98aeb69f9ef876f7b949c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae366751e8ea98aeb69f9ef876f7b949c">◆ </a></span>snd_config_get_id()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char ** </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the id of a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">id</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="section return"><dt>Returns</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gabfbc36060fd4f5d1d929938443f95559"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabfbc36060fd4f5d1d929938443f95559">◆ </a></span>snd_config_get_integer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long * </td>
<td class="paramname"><em>ptr</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ptr</td><td>The node's value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not an integer node. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gaf4d9e68918f7d49d7b4b14ffbe94afc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf4d9e68918f7d49d7b4b14ffbe94afc1">◆ </a></span>snd_config_get_integer64()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long long * </td>
<td class="paramname"><em>ptr</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ptr</td><td>The node's value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a 64-bit-integer node. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga79738baffa6fa7722b1027ab84ac61bb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga79738baffa6fa7722b1027ab84ac61bb">◆ </a></span>snd_config_get_ireal()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double * </td>
<td class="paramname"><em>ptr</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ptr</td><td>The node's value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a number node. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga54868e0fa30458ef1c259772a8e7c6d7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga54868e0fa30458ef1c259772a8e7c6d7">◆ </a></span>snd_config_get_pointer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void ** </td>
<td class="paramname"><em>ptr</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ptr</td><td>The function puts the node's value at the address specified by <em>ptr</em>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a string node. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="gad4d23c0bf941527d80aeb6f991bf88c9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad4d23c0bf941527d80aeb6f991bf88c9">◆ </a></span>snd_config_get_real()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double * </td>
<td class="paramname"><em>ptr</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ptr</td><td>The node's value. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a real-number node. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga5ab99983d1d93ddbcde9bb69a1e4f9fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5ab99983d1d93ddbcde9bb69a1e4f9fb">◆ </a></span>snd_config_get_string()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char ** </td>
<td class="paramname"><em>ptr</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">ptr</td><td>The function puts the node's value at the address specified by <em>ptr</em>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a string node. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga6def4c43ce325abaa3ddfba5a4f4d138"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6def4c43ce325abaa3ddfba5a4f4d138">◆ </a></span>snd_config_get_type()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___configuration.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> snd_config_get_type </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the type of a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The node's type.</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gafeb0552cbed09a3badbb5e74c7a7973d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafeb0552cbed09a3badbb5e74c7a7973d">◆ </a></span>snd_config_imake_integer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const long </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The initial value of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a> and with value <em>value</em>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga04cfbfda89dc17c19a5a4076271a4d07"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga04cfbfda89dc17c19a5a4076271a4d07">◆ </a></span>snd_config_imake_integer64()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const long long </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The initial value of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a> and with value <em>value</em>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gac7c6ce28a676169fff594aa4222705b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac7c6ce28a676169fff594aa4222705b2">◆ </a></span>snd_config_imake_pointer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The initial value of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a> and with value <code>value</code>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga968e5bb773dfea922b5272636b26e9c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga968e5bb773dfea922b5272636b26e9c2">◆ </a></span>snd_config_imake_real()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const double </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The initial value of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a> and with value <em>value</em>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga5bb83b269c6e41717a3524abcec5f787"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5bb83b269c6e41717a3524abcec5f787">◆ </a></span>snd_config_imake_safe_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_imake_safe_string </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The initial value of the new node. May be <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a>. The node contains with a copy of the string <code>value</code>, replacing any character other than alphanumeric, space, or '-' with the character '_'.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gaa83035f79027a464bf9d5d31e0a20547"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa83035f79027a464bf9d5d31e0a20547">◆ </a></span>snd_config_imake_string()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The initial value of the new node. May be <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a> and with a copy of the string <code>value</code>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gae369d6f289748726617834b5d02047ff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae369d6f289748726617834b5d02047ff">◆ </a></span>snd_config_is_array()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_is_array </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns if the compound is an array (and count of items). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A count of items in array, zero when the compound is not an array, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="gac2f424a17a2fb56fd22103a64b45bdb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac2f424a17a2fb56fd22103a64b45bdb5">◆ </a></span>snd_config_is_empty()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_is_empty </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns if the compound has no fields (is empty). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A positive value when true, zero when false, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="gac08a30bc630481f69feb2170fed4afda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac08a30bc630481f69feb2170fed4afda">◆ </a></span>snd_config_iterator_end()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> snd_config_iterator_end </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an iterator that ends a node's children list. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to a configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gaa91fe1d926d88041ed516a6a7293f606"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa91fe1d926d88041ed516a6a7293f606">◆ </a></span>snd_config_iterator_entry()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a>* snd_config_iterator_entry </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td>
<td class="paramname"><em>iterator</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the configuration node handle pointed to by an iterator. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">iterator</td><td>A configuration node iterator. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The configuration node handle pointed to by <em>iterator</em>.</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gac8965466674c10b9a119d591ed484cef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac8965466674c10b9a119d591ed484cef">◆ </a></span>snd_config_iterator_first()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> snd_config_iterator_first </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an iterator pointing to a node's first child. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to a configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#gac08a30bc630481f69feb2170fed4afda" title="Returns an iterator that ends a node's children list.">snd_config_iterator_end</a> on <em>config</em>.</p>
<p>Use <a class="el" href="group___configuration.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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga10c27ddc83c78680d91a167dd2f0a3cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga10c27ddc83c78680d91a167dd2f0a3cb">◆ </a></span>snd_config_iterator_next()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> snd_config_iterator_next </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="group___configuration.html#ga6c621ab8875a222e1fcb56e9feed6ec6">snd_config_iterator_t</a> </td>
<td class="paramname"><em>iterator</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns an iterator pointing to the next sibling. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">iterator</td><td>An iterator pointing to a child configuration node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#gac08a30bc630481f69feb2170fed4afda" title="Returns an iterator that ends a node's children list.">snd_config_iterator_end</a> on the node's parent.</p>
<p>Use <a class="el" href="group___configuration.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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga51f79d1f24a519e126415c72210525b0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga51f79d1f24a519e126415c72210525b0">◆ </a></span>snd_config_load()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Loads a configuration tree. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to a top level configuration node. </td></tr>
<tr><td class="paramname">in</td><td>Input handle to read the configuration from. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd>Any errors encountered when parsing the input or returned by hooks or functions.</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga27334922bab8391aa2ef1813f48f4d70"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga27334922bab8391aa2ef1813f48f4d70">◆ </a></span>snd_config_load_override()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___input.html#ga39165553a2907c5a27f325e3ce4e8301">snd_input_t</a> * </td>
<td class="paramname"><em>in</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to a top level configuration node. </td></tr>
<tr><td class="paramname">in</td><td>Input handle to read the configuration from. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.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 id="ga3ae9f6b0d8f708a839c44e6d4af4b93c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3ae9f6b0d8f708a839c44e6d4af4b93c">◆ </a></span>snd_config_load_string()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_load_string </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>s</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t </td>
<td class="paramname"><em>size</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Loads a configuration tree from a string. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the configuration node loaded from the file(s) at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">s</td><td>String with the ASCII configuration </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">size</td><td>String size, if zero, a C string is expected (with termination) </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<p>The definitions loaded from the string are put to <em>config</em>, which is created as a new top node.</p>
<dl class="section user"><dt>Errors:</dt><dd>Any errors encountered when parsing the input or returned by hooks or functions. </dd></dl>
</div>
</div>
<a id="gac570ecbaba611ccc12bc235a1f4d0181"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac570ecbaba611ccc12bc235a1f4d0181">◆ </a></span>snd_config_make()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#gaa41083e55d19c7755c5d624030e06887">snd_config_type_t</a> </td>
<td class="paramname"><em>type</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">type</td><td>The type of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga2ce24133c1d6828e2afe366284c61e01"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2ce24133c1d6828e2afe366284c61e01">◆ </a></span>snd_config_make_compound()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>join</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates an empty compound configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">join</td><td>Join flag. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.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"><div class="line">a {</div>
<div class="line"> b <span class="stringliteral">"hello"</span></div>
<div class="line"> c 42</div>
<div class="line">}</div>
</div><!-- fragment --><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"><div class="line">a.b <span class="stringliteral">"hello"</span></div>
<div class="line">a.c 42</div>
</div><!-- fragment --><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="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga838fac581e115574acc3711cad9f5877"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga838fac581e115574acc3711cad9f5877">◆ </a></span>snd_config_make_integer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates an integer configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887aaa9d6e02cd0eb42db96122c925c023e7">SND_CONFIG_TYPE_INTEGER</a> and with value <code>0</code>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___configuration.html#gafeb0552cbed09a3badbb5e74c7a7973d" title="Creates an integer configuration node with the given initial value.">snd_config_imake_integer</a> </dd></dl>
</div>
</div>
<a id="ga2c27175c162fe5027e3f1b3d5420afbb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2c27175c162fe5027e3f1b3d5420afbb">◆ </a></span>snd_config_make_integer64()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a 64-bit-integer configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a710f962ebb93e3824ddee2d833f735a2">SND_CONFIG_TYPE_INTEGER64</a> and with value <code>0</code>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___configuration.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 id="ga0f06e02ee428cb05b4efc507ce8e3cff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0f06e02ee428cb05b4efc507ce8e3cff">◆ </a></span>snd_config_make_path()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_make_path </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>root</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>join</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>override</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates an empty compound configuration node in the path. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new or existing compound node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">root</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The id of the new node. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">join</td><td>Join flag. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">override</td><td>Override flag. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a82b5c1a9dbadaa4e36815fc1f01fc2f7">SND_CONFIG_TYPE_COMPOUND</a> if the path does not exist. Otherwise, the node from the current configuration tree is returned without any modification. The <em>join</em> argument is ignored in this case.</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"><div class="line">a {</div>
<div class="line"> b <span class="stringliteral">"hello"</span></div>
<div class="line"> c 42</div>
<div class="line">}</div>
</div><!-- fragment --><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"><div class="line">a.b <span class="stringliteral">"hello"</span></div>
<div class="line">a.c 42</div>
</div><!-- fragment --><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="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
<dt>-EACCESS</dt>
<dd>Path exists, but it's not a compound (!override) </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="gadbcce71d8d3a78709fc2a78d6f543584"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadbcce71d8d3a78709fc2a78d6f543584">◆ </a></span>snd_config_make_pointer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a pointer configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a> and with value <code>NULL</code>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___configuration.html#gac7c6ce28a676169fff594aa4222705b2" title="Creates a pointer configuration node with the given initial value.">snd_config_imake_pointer</a> </dd></dl>
</div>
</div>
<a id="ga8f175813bfc2556bd08fd580f05d36e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8f175813bfc2556bd08fd580f05d36e6">◆ </a></span>snd_config_make_real()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a real number configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a0a938daae4006e204150082ab9c73508">SND_CONFIG_TYPE_REAL</a> and with value <code>0.0</code>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___configuration.html#ga968e5bb773dfea922b5272636b26e9c2" title="Creates a real number configuration node with the given initial value.">snd_config_imake_real</a> </dd></dl>
</div>
</div>
<a id="ga6764115f489629be027b434c4e323cff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6764115f489629be027b434c4e323cff">◆ </a></span>snd_config_make_string()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a string configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>The function puts the handle to the new node at the address specified by <em>config</em>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">id</td><td>The id of the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887a99eed49f50d4f62a7fc0c95301918f49">SND_CONFIG_TYPE_STRING</a> and with value <code>NULL</code>.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___configuration.html#gaa83035f79027a464bf9d5d31e0a20547" title="Creates a string configuration node with the given initial value.">snd_config_imake_string</a> </dd></dl>
</div>
</div>
<a id="ga83e903a000d87c649ecea6945ae37e71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga83e903a000d87c649ecea6945ae37e71">◆ </a></span>snd_config_merge()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_merge </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>src</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>override</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>In-place merge of two config handles. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">dst</td><td>Config handle for the merged contents </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">src</td><td>Config handle to merge into dst (may be NULL) </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">override</td><td>Override flag </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<p>This function merges all fields from the source compound to the destination compound. When the <em>override</em> flag is set, the related subtree in <em>dst</em> is replaced from <em>src</em>.</p>
<p>When <em>override</em> is not set, the child compounds are traversed and merged.</p>
<p>The configuration elements other than compounds are always substituted (overwritten) from the <em>src</em> config handle.</p>
<p>The src handle is deleted.</p>
<p>Note: On error, config handles may be modified.</p>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EEXIST</dt>
<dd>identifier already exists (!override) </dd>
<dt>-ENOMEM</dt>
<dd>not enough memory </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="gae8baa15082818d721607932bb99f318d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae8baa15082818d721607932bb99f318d">◆ </a></span>snd_config_ref()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void snd_config_ref </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>cfg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Take the reference of the config tree. </p>
<p>Increases a reference counter of the given config tree.</p>
<p>This function is supposed to be thread-safe. </p>
</div>
</div>
<a id="gad4d69b003662e09e8206a7892e849d27"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad4d69b003662e09e8206a7892e849d27">◆ </a></span>snd_config_remove()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_remove </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Removes a configuration node from its tree. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node to be removed. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<p>This function makes <em>config</em> a top-level node, i.e., if <em>config</em> has a parent, then <em>config</em> is removed from the list of the parent's children.</p>
<p>This functions does <em>not</em> free the removed node.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group___configuration.html#ga2a006b942faa3335a958a7df7bcea17e" title="Frees a configuration node.">snd_config_delete</a> </dd></dl>
</div>
</div>
<a id="gafac08a29a1e04b03a22028a8c70f78bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafac08a29a1e04b03a22028a8c70f78bd">◆ </a></span>snd_config_save()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___output.html#ga49729cc6454539495c1f5b6e95cd474a">snd_output_t</a> * </td>
<td class="paramname"><em>out</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the (root) configuration node. </td></tr>
<tr><td class="paramname">out</td><td>Output handle. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</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___configuration.html#ggaa41083e55d19c7755c5d624030e06887ab0b5d34e2f16e81d4eb5f933c30158fe">SND_CONFIG_TYPE_POINTER</a>. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gabafb8cac2181c4c1e34b99f54421d1c6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabafb8cac2181c4c1e34b99f54421d1c6">◆ </a></span>snd_config_search()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>result</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the root of the configuration (sub)tree to search. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>Search key: one or more node ids, separated with dots. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">result</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="section return"><dt>Returns</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"><div class="line">config {</div>
<div class="line"> a 42 # <span class="stringliteral">"a"</span></div>
<div class="line"> b { # <span class="stringliteral">"b"</span></div>
<div class="line"> c <span class="stringliteral">"cee"</span> # <span class="stringliteral">"b.c"</span></div>
<div class="line"> d { # <span class="stringliteral">"b.d"</span></div>
<div class="line"> e 2.71828 # <span class="stringliteral">"b.d.e"</span></div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line">}</div>
</div><!-- fragment --><dl class="section user"><dt>Errors:</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gad7c23084ee4052ad33d77db6278db46f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad7c23084ee4052ad33d77db6278db46f">◆ </a></span>snd_config_search_definition()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>result</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the configuration (sub)tree to search. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">base</td><td>Implicit key base, or <code>NULL</code> for none. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>Key suffix, optionally with arguments. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">result</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="section return"><dt>Returns</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___configuration.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="section user"><dt>Errors:</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 id="ga7b2f5723e44a1b69f2a8555d469803d1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7b2f5723e44a1b69f2a8555d469803d1">◆ </a></span>snd_config_searchv()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>result</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"> </td>
<td class="paramname"><em>...</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">config</td><td>Handle to the root of the configuration (sub)tree to search. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">result</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 class="paramdir">[in]</td><td class="paramname">...</td><td>One or more concatenated dot-separated search keys, terminated with <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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___configuration.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"><div class="line"><a class="code" href="group___configuration.html#ga7b2f5723e44a1b69f2a8555d469803d1">snd_config_searchv</a>(cfg, &res, <span class="stringliteral">"a"</span>, <span class="stringliteral">"b.c"</span>, <span class="stringliteral">"d.e"</span>, NULL);</div>
<div class="ttc" id="agroup___configuration_html_ga7b2f5723e44a1b69f2a8555d469803d1"><div class="ttname"><a href="group___configuration.html#ga7b2f5723e44a1b69f2a8555d469803d1">snd_config_searchv</a></div><div class="ttdeci">int snd_config_searchv(snd_config_t *config, snd_config_t **result,...)</div><div class="ttdoc">Searches for a node in a configuration tree.</div><div class="ttdef"><b>Definition:</b> conf.c:3719</div></div>
</div><!-- fragment --><p> is equivalent to the call </p><div class="fragment"><div class="line"><a class="code" href="group___configuration.html#gabafb8cac2181c4c1e34b99f54421d1c6">snd_config_search</a>(cfg, <span class="stringliteral">"a.b.c.d.e"</span>, &res);</div>
<div class="ttc" id="agroup___configuration_html_gabafb8cac2181c4c1e34b99f54421d1c6"><div class="ttname"><a href="group___configuration.html#gabafb8cac2181c4c1e34b99f54421d1c6">snd_config_search</a></div><div class="ttdeci">int snd_config_search(snd_config_t *config, const char *key, snd_config_t **result)</div><div class="ttdoc">Searches for a node in a configuration tree.</div><div class="ttdef"><b>Definition:</b> conf.c:3628</div></div>
</div><!-- fragment --><dl class="section user"><dt>Errors:</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gac1810a11f576fe339074502f4fed4a91"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac1810a11f576fe339074502f4fed4a91">◆ </a></span>snd_config_set_ascii()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>ascii</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Changes the value of a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">ascii</td><td>The new value for the node, as an ASCII string. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga550948931d44695b6d8e8f148f87cb54"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga550948931d44695b6d8e8f148f87cb54">◆ </a></span>snd_config_set_id()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Sets the id of a configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">id</td><td>The new node id, must not be <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</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 id="ga6fd3be48221cae9cee9c7245a0804d73"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6fd3be48221cae9cee9c7245a0804d73">◆ </a></span>snd_config_set_integer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">value</td><td>The new value for the node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not an integer node. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="gafdb63c78c07e11194a28d591b0fbffc4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafdb63c78c07e11194a28d591b0fbffc4">◆ </a></span>snd_config_set_integer64()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">long long </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">value</td><td>The new value for the node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a 64-bit-integer node. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga037c3bf96326bb6f5dfd340475b34fbf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga037c3bf96326bb6f5dfd340475b34fbf">◆ </a></span>snd_config_set_pointer()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">value</td><td>The new value for the node. May be <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a pointer node. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga46c71d5d36c64f0a06ceae956a39fedc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga46c71d5d36c64f0a06ceae956a39fedc">◆ </a></span>snd_config_set_real()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">double </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">value</td><td>The new value for the node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a real-number node. </dd>
</dl>
</dd></dl>
</div>
</div>
<a id="ga0f76f8ad47dce7f90580c8d59c6e44f8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0f76f8ad47dce7f90580c8d59c6e44f8">◆ </a></span>snd_config_set_string()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>value</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">value</td><td>The new value for the node. May be <code>NULL</code>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-EINVAL</dt>
<dd><em>config</em> is not a string node. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga0c4acd2de7999ad6e477d398662485c2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0c4acd2de7999ad6e477d398662485c2">◆ </a></span>snd_config_substitute()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_substitute </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>dst</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>src</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Substitutes one configuration node to another. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">dst</td><td>Handle to the destination node. </td></tr>
<tr><td class="paramname">src</td><td>Handle to the source node. Must not be the same as <em>dst</em>. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code.</dd></dl>
<p>If both nodes are compounds, the source compound node members will be moved to the destination compound node. The original destination compound node members will be deleted (overwritten).</p>
<p>If the destination node is a compound and the source node is an ordinary type, the compound members are deleted (including their contents).</p>
<p>Otherwise, the source node's value replaces the destination node's value.</p>
<p>In any case, a successful call to this function frees the source node. </p>
</div>
</div>
<a id="gaeec157fd161a138e402c9bd243bbd408"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaeec157fd161a138e402c9bd243bbd408">◆ </a></span>snd_config_test_id()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>config</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>id</em> </td>
</tr>
<tr>
<td></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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">config</td><td>Handle to the configuration node. </td></tr>
<tr><td class="paramname">id</td><td>ASCII id. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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 id="gaf563d57ea9d576a94578368a3d2382c3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf563d57ea9d576a94578368a3d2382c3">◆ </a></span>snd_config_top()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>config</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Creates a top level configuration node. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">config</td><td>Handle to the new node. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</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="section user"><dt>Errors:</dt><dd><dl>
<dt>-ENOMEM</dt>
<dd>Out of memory. </dd>
</dl>
</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga122e8b1d09be7b060eabe59cd1fb2772"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga122e8b1d09be7b060eabe59cd1fb2772">◆ </a></span>snd_config_topdir()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* snd_config_topdir </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns the default top-level config directory. </p>
<dl class="section return"><dt>Returns</dt><dd>The top-level config directory path string</dd></dl>
<p>This function returns the string of the top-level config directory path. If the path is specified via the environment variable <code>ALSA_CONFIG_DIR</code> and the value is a valid path, it returns this value. If unspecified, it returns the default value, "/usr/share/alsa". </p>
</div>
</div>
<a id="gac87538403cb6f8125468a1af56f42e33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac87538403cb6f8125468a1af56f42e33">◆ </a></span>snd_config_unref()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void snd_config_unref </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> * </td>
<td class="paramname"><em>cfg</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Unreference the config tree. </p>
<p>Decreases a reference counter of the given config tree, and eventually deletes the tree if all references are gone. This is the counterpart of <a class="el" href="group___configuration.html#gac87538403cb6f8125468a1af56f42e33" title="Unreference the config tree.">snd_config_unref</a>.</p>
<p>Also, the config taken via <a class="el" href="group___configuration.html#ga568fcf6f45808319725ac066714b25a8" title="Updates snd_config and takes its reference.">snd_config_update_ref</a> must be unreferenced by this function, too.</p>
<p>This function is supposed to be thread-safe. </p>
</div>
</div>
<a id="ga41a3d2202cfb9016e33aa85ea70a4c9c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga41a3d2202cfb9016e33aa85ea70a4c9c">◆ </a></span>snd_config_update()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_update </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> by rereading the global configuration files (if needed). </p>
<dl class="section return"><dt>Returns</dt><dd>0 if <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> was up to date, 1 if <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> was updated, otherwise a negative error code.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Whenever <a class="el" href="group___configuration.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. For safer operations, use <a class="el" href="group___configuration.html#ga568fcf6f45808319725ac066714b25a8" title="Updates snd_config and takes its reference.">snd_config_update_ref</a> and release the config via <a class="el" href="group___configuration.html#gac87538403cb6f8125468a1af56f42e33" title="Unreference the config tree.">snd_config_unref</a>.</dd></dl>
<dl class="section user"><dt>Errors:</dt><dd>Any errors encountered when parsing the input or returned by hooks or functions.</dd></dl>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
<a id="ga8f781ac635a0233fb2f58766a83d65cd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga8f781ac635a0233fb2f58766a83d65cd">◆ </a></span>snd_config_update_free()</h2>
<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___configuration.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> * </td>
<td class="paramname"><em>update</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Frees a private update structure. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">update</td><td>The private update structure to free. </td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Zero if successful, otherwise a negative error code. </dd></dl>
</div>
</div>
<a id="ga51dbc0ff1d9b34d753706d09d768116b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga51dbc0ff1d9b34d753706d09d768116b">◆ </a></span>snd_config_update_free_global()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_update_free_global </td>
<td>(</td>
<td class="paramtype">void </td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Frees the global configuration tree in <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a>. </p>
<dl class="section return"><dt>Returns</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___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> to <code>NULL</code>.</p>
<dl class="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
<dl class="section examples"><dt>Examples</dt><dd><a class="el" href="_2test_2latency_8c-example.html#a56">/test/latency.c</a>.</dd>
</dl>
</div>
</div>
<a id="ga06e80976c3c00fdc786f9b213e5c40f7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga06e80976c3c00fdc786f9b213e5c40f7">◆ </a></span>snd_config_update_r()</h2>
<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___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>_top</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group___configuration.html#gab10b229189a94e3fcbac7f6ca5794cc0">snd_config_update_t</a> ** </td>
<td class="paramname"><em>_update</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>cfgs</em> </td>
</tr>
<tr>
<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 class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in,out]</td><td class="paramname">_top</td><td>Address of the handle to the top-level node. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">_update</td><td>Address of a pointer to private update information. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">cfgs</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="section return"><dt>Returns</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___configuration.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="section warning"><dt>Warning</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="section user"><dt>Errors:</dt><dd>Any errors encountered when parsing the input or returned by hooks or functions. </dd></dl>
</div>
</div>
<a id="ga568fcf6f45808319725ac066714b25a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga568fcf6f45808319725ac066714b25a8">◆ </a></span>snd_config_update_ref()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_config_update_ref </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a> ** </td>
<td class="paramname"><em>top</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Updates <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> and takes its reference. </p>
<dl class="section return"><dt>Returns</dt><dd>0 if <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> was up to date, 1 if <a class="el" href="group___configuration.html#ga6cf7955d3a072d354dab4d7b536c7831" title="Configuration top-level node (the global configuration).">snd_config</a> was updated, otherwise a negative error code.</dd></dl>
<p>Unlike <a class="el" href="group___configuration.html#ga41a3d2202cfb9016e33aa85ea70a4c9c" title="Updates snd_config by rereading the global configuration files (if needed).">snd_config_update</a>, this function increases a reference counter so that the obtained tree won't be deleted until unreferenced by <a class="el" href="group___configuration.html#gac87538403cb6f8125468a1af56f42e33" title="Unreference the config tree.">snd_config_unref</a>.</p>
<p>This function is supposed to be thread-safe. </p>
</div>
</div>
<a id="gaf35b51ab61fd7ea628ab088a1b444aa4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf35b51ab61fd7ea628ab088a1b444aa4">◆ </a></span>snd_names_list()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int snd_names_list </td>
<td>(</td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>iface</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">snd_devname_t ** </td>
<td class="paramname"><em>list</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is unimplemented. </p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Since 1.0.14 </dd></dl>
</div>
</div>
<a id="ga665741321b3c1c3f07a6eeb969406cb8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga665741321b3c1c3f07a6eeb969406cb8">◆ </a></span>snd_names_list_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void snd_names_list_free </td>
<td>(</td>
<td class="paramtype">snd_devname_t * </td>
<td class="paramname"><em>list</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>This function is unimplemented. </p>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Since 1.0.14 </dd></dl>
</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a id="ga6cf7955d3a072d354dab4d7b536c7831"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6cf7955d3a072d354dab4d7b536c7831">◆ </a></span>snd_config</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___configuration.html#ga1c20905af775ae77d04d1a5696f67985">snd_config_t</a>* snd_config</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">extern</span></span> </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___configuration.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___configuration.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___configuration.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="section warning"><dt>Warning</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="section user"><dt>Conforming to:</dt><dd>LSB 3.2 </dd></dl>
</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>