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