PipeWire  0.3.59
hook.h File Reference

spa/utils/hook.h More...

Go to the source code of this file.

Data Structures

struct  spa_callbacks
 Callbacks, contains the structure with functions and the data passed to the functions. More...
 
struct  spa_interface
 
struct  spa_hook_list
 A list of hooks. More...
 
struct  spa_hook
 A hook, contains the structure with functions and the data passed to the functions. More...
 

Macros

#define SPA_CALLBACK_VERSION_MIN(c, v)   ((c) && ((v) == 0 || (c)->version > (v)-1))
 Check if a callback c is of at least version v. More...
 
#define SPA_CALLBACK_CHECK(c, m, v)   (SPA_CALLBACK_VERSION_MIN(c,v) && (c)->m)
 Check if a callback c has method m of version v. More...
 
#define SPA_CALLBACKS_INIT(_funcs, _data)   ((struct spa_callbacks){ (_funcs), (_data), })
 Initialize the set of functions funcs as a spa_callbacks, together with _data. More...
 
#define SPA_INTERFACE_INIT(_type, _version, _funcs, _data)    (struct spa_interface){ _type, _version, SPA_CALLBACKS_INIT(_funcs,_data), }
 Initialize a spa_interface. More...
 
#define spa_callbacks_call(callbacks, type, method, vers, ...)
 Invoke method named method in the callbacks. More...
 
#define spa_callback_version_min(callbacks, type, vers)
 True if the callbacks are of version vers, false otherwise. More...
 
#define spa_callback_check(callbacks, type, method, vers)
 True if the callbacks contains method of version vers, false otherwise. More...
 
#define spa_callbacks_call_res(callbacks, type, res, method, vers, ...)
 Invoke method named method in the callbacks. More...
 
#define spa_interface_callback_version_min(iface, method_type, vers)    spa_callback_version_min(&(iface)->cb, method_type, vers)
 True if the iface's callbacks are of version vers, false otherwise. More...
 
#define spa_interface_callback_check(iface, method_type, method, vers)    spa_callback_check(&(iface)->cb, method_type, method, vers)
 True if the iface's callback method is of version vers and exists, false otherwise. More...
 
#define spa_interface_call(iface, method_type, method, vers, ...)    spa_callbacks_call(&(iface)->cb,method_type,method,vers,##__VA_ARGS__)
 Invoke method named method in the callbacks on the given interface object. More...
 
#define spa_interface_call_res(iface, method_type, res, method, vers, ...)    spa_callbacks_call_res(&(iface)->cb,method_type,res,method,vers,##__VA_ARGS__)
 Invoke method named method in the callbacks on the given interface object. More...
 
#define spa_hook_list_call_simple(l, type, method, vers, ...)
 
#define spa_hook_list_do_call(l, start, type, method, vers, once, ...)
 Call all hooks in a list, starting from the given one and optionally stopping after calling the first non-NULL function, returns the number of methods called. More...
 
#define spa_hook_list_call(l, t, m, v, ...)   spa_hook_list_do_call(l,NULL,t,m,v,false,##__VA_ARGS__)
 Call the method named m for each element in list l. More...
 
#define spa_hook_list_call_once(l, t, m, v, ...)   spa_hook_list_do_call(l,NULL,t,m,v,true,##__VA_ARGS__)
 Call the method named m for each element in list l, stopping after the first invocation. More...
 
#define spa_hook_list_call_start(l, s, t, m, v, ...)   spa_hook_list_do_call(l,s,t,m,v,false,##__VA_ARGS__)
 
#define spa_hook_list_call_once_start(l, s, t, m, v, ...)   spa_hook_list_do_call(l,s,t,m,v,true,##__VA_ARGS__)
 

Functions

static void spa_hook_list_init (struct spa_hook_list *list)
 Initialize a hook list to the empty list. More...
 
static bool spa_hook_list_is_empty (struct spa_hook_list *list)
 
static void spa_hook_list_append (struct spa_hook_list *list, struct spa_hook *hook, const void *funcs, void *data)
 Append a hook. More...
 
static void spa_hook_list_prepend (struct spa_hook_list *list, struct spa_hook *hook, const void *funcs, void *data)
 Prepend a hook. More...
 
static void spa_hook_remove (struct spa_hook *hook)
 Remove a hook. More...
 
static void spa_hook_list_clean (struct spa_hook_list *list)
 Remove all hooks from the list. More...
 
static void spa_hook_list_isolate (struct spa_hook_list *list, struct spa_hook_list *save, struct spa_hook *hook, const void *funcs, void *data)
 
static void spa_hook_list_join (struct spa_hook_list *list, struct spa_hook_list *save)
 

Detailed Description