22#ifndef LUMIERA_INTERFACEREGISTRY_H
23#define LUMIERA_INTERFACEREGISTRY_H
Lumiera interface macros and structures.
lumiera_interface * LumieraInterface
void lumiera_interfaceregistry_register_interface(LumieraInterface self, LumieraPlugin plugin)
void lumiera_interfaceregistry_init(void)
Initialise the interface registry.
LumieraInterfacenode lumiera_interfaceregistry_interfacenode_find(const char *interface, unsigned version, const char *name)
LumieraPlugin plugin
backreference to its plugin if it comes from a plugin, else NULL
void lumiera_interfaceregistry_remove_interface(LumieraInterface self)
unsigned refcnt
reference counters and link used for internal reference management
lumiera_interfacenode * LumieraInterfacenode
lumiera_recmutex lumiera_interface_mutex
void lumiera_interfaceregistry_bulkremove_interfaces(LumieraInterface *self)
LumieraInterface lumiera_interfaceregistry_interface_find(const char *interface, unsigned version, const char *name)
void lumiera_interfaceregistry_destroy(void)
PSplay lumiera_interfaceregistry
size_t deps_size
allocated size of the following dependency table
LumieraInterfacenode * deps
NULL terminated table of all dependencies (interfaces opened on initialisation)
LumieraInterfacenode lnk
temporary used to stack interfaces when recursively opening/closing them
void lumiera_interfaceregistry_bulkregister_interfaces(LumieraInterface *self, LumieraPlugin plugin)
psplaynode node
all known interfaces are registered in a tree
LumieraInterface interface
the interface itself
Interface management node.
Mutual exclusion locking, header.
Lumiera plugins define 'interfaces' as shown in interface.h, the plugin system handles the loading of...
lumiera_plugin * LumieraPlugin
Probabilistic splay tree.
Mutual exclusion locking, header.