<P>A function is defined with the id \c \@func and the function name. All other
values in the current compound are used as configuration for the function.
-If the compound func.<function_name> is defined in the root node, then the
+If the compound func.\<function_name\> is defined in the root node, then the
library and function from this compound configuration are used, otherwise
'snd_func_' is prefixed to the string and code from the ALSA library is used.
The definition of a function looks like:</P>
/**
* \brief Attach an HCTL to an opened mixer
* \param mixer Mixer handle
- * \param name HCTL name (see #snd_hctl_open)
+ * \param hctl the HCTL to be attached
* \return 0 on success otherwise a negative error code
*/
int snd_mixer_attach_hctl(snd_mixer_t *mixer, snd_hctl_t *hctl)
return mixer->compare(*(const snd_mixer_elem_t * const *)a, *(const snd_mixer_elem_t * const *)b);
}
-typedef int (*qsort_func)(const void *, const void *);
static int snd_mixer_sort(snd_mixer_t *mixer)
{
unsigned int k;
/**
* \brief Set callback function for a mixer
- * \param mixer mixer handle
- * \param callback callback function
+ * \param obj mixer handle
+ * \param val callback function
*/
void snd_mixer_set_callback(snd_mixer_t *obj, snd_mixer_callback_t val)
{
/**
* \brief Set callback private value for a mixer
* \param mixer mixer handle
- * \param callback_private callback private value
+ * \param val callback private value
*/
void snd_mixer_set_callback_private(snd_mixer_t *mixer, void * val)
{
/**
* \brief frees a previously allocated #snd_mixer_class_t
- * \param pointer to object to free
+ * \param obj pointer to object to free
*/
void snd_mixer_class_free(snd_mixer_class_t *obj)
{
/**
* \brief Set mixer compare callback to given mixer class
* \param obj Mixer simple class identifier
+ * \param compare the compare callback to be used
* \return zero if success, otherwise a negative error code
*/
int snd_mixer_class_set_compare(snd_mixer_class_t *obj, snd_mixer_compare_t compare)
return -ENXIO;
}
+#ifndef DOC_HIDDEN
+
#define CHECK_BASIC(xelem) \
{ \
assert(xelem); \
#define COND_CAPS(xelem, what) \
!!(((sm_selem_t *)(elem)->private_data)->caps & (what))
+#endif /* !DOC_HIDDEN */
+
#ifndef DOC_HIDDEN
int snd_mixer_selem_compare(const snd_mixer_elem_t *c1, const snd_mixer_elem_t *c2)
{
/**
* \brief frees a previously allocated #snd_mixer_selem_id_t
- * \param pointer to object to free
+ * \param obj pointer to object to free
*/
void snd_mixer_selem_id_free(snd_mixer_selem_id_t *obj)
{
#include "asoundlib.h"
#include "mixer_simple.h"
+#ifndef DOC_HIDDEN
+
#define SO_PATH PKGLIBDIR "/smixer"
typedef struct _class_priv {
typedef int (*snd_mixer_sbasic_init_t)(snd_mixer_class_t *class);
+#endif /* !DOC_HIDDEN */
+
static int try_open(snd_mixer_class_t *class, const char *lib)
{
class_priv_t *priv = snd_mixer_class_get_private(class);
}
/**
- * \brief Set private data for basic abstraction
+ * \brief Set private data free callback for basic abstraction
* \param class Mixer class
- * \param private_data Private data
+ * \param private_free free callback for private data
*/
void snd_mixer_sbasic_set_private_free(const snd_mixer_class_t *class, void (*private_free)(snd_mixer_class_t *class))
{