Lumiera  0.pre.03
»edit your freedom«
interfaceregistry.h File Reference

Go to the source code of this file.

Description

Global registry for interfaces (extension points).

Interface instances are published and activated by registering them into a global registry, which is defined here. This instances are identified by their name and major version.

Definition in file interfaceregistry.h.

#include "lib/mutex.h"
#include "lib/recmutex.h"
#include "lib/psplay.h"
#include "common/interface.h"
#include "common/plugin.h"
#include <nobug.h>

Classes

struct  lumiera_interfacenode
 Interface management node. More...
 

Typedefs

typedef lumiera_interfacenode * LumieraInterfacenode
 

Functions

void lumiera_interfaceregistry_bulkregister_interfaces (LumieraInterface *self, LumieraPlugin plugin)
 
void lumiera_interfaceregistry_bulkremove_interfaces (LumieraInterface *self)
 
void lumiera_interfaceregistry_destroy (void)
 
void lumiera_interfaceregistry_init (void)
 Initialise the interface registry.
 
LumieraInterface lumiera_interfaceregistry_interface_find (const char *interface, unsigned version, const char *name)
 
LumieraInterfacenode lumiera_interfaceregistry_interfacenode_find (const char *interface, unsigned version, const char *name)
 
void lumiera_interfaceregistry_register_interface (LumieraInterface self, LumieraPlugin plugin)
 
void lumiera_interfaceregistry_remove_interface (LumieraInterface self)
 

Variables

lumiera_recmutex lumiera_interface_mutex
 
PSplay lumiera_interfaceregistry
 

Class Documentation

◆ lumiera_interfacenode_struct

struct lumiera_interfacenode_struct
Class Members
psplaynode node all known interfaces are registered in a tree
LumieraInterface interface the interface itself
unsigned refcnt reference counters and link used for internal reference management
LumieraPlugin plugin backreference to its plugin if it comes from a plugin, else NULL
LumieraInterfacenode lnk temporary used to stack interfaces when recursively opening/closing them
size_t deps_size allocated size of the following dependency table
LumieraInterfacenode * deps NULL terminated table of all dependencies (interfaces opened on initialisation)
+ Collaboration diagram for lumiera_interfacenode: