Lumiera 0.pre.04~rc.1
»edit your freedom«
Loading...
Searching...
No Matches
interfaceregistry.h
Go to the documentation of this file.
1/*
2 INTERFACEREGISTRY.h - Lumiera interface registry
3
4 Copyright (C)
5 2008, Christian Thaeter <ct@pipapo.org>
6
7  **Lumiera** is free software; you can redistribute it and/or modify it
8  under the terms of the GNU General Public License as published by the
9  Free Software Foundation; either version 2 of the License, or (at your
10  option) any later version. See the file COPYING for further details.
11
12*/
13
14
22#ifndef LUMIERA_INTERFACEREGISTRY_H
23#define LUMIERA_INTERFACEREGISTRY_H
24
25#include "lib/mutex.h"
26#include "lib/recmutex.h"
27#include "lib/psplay.h"
28
29#include "common/interface.h"
30#include "common/plugin.h"
31
32#include <nobug.h>
33
34
36extern lumiera_recmutex lumiera_interface_mutex;
37
38
44typedef struct lumiera_interfacenode_struct lumiera_interfacenode;
45typedef lumiera_interfacenode* LumieraInterfacenode;
46
70
71
75void
77
78void
80
81
82void
84
85void
87
88void
90
91void
93
95lumiera_interfaceregistry_interfacenode_find (const char* interface, unsigned version, const char* name);
96
98lumiera_interfaceregistry_interface_find (const char* interface, unsigned version, const char* name);
99
100
101
102
103#endif /* LUMIERA_INTERFACEREGISTRY_H */
104/*
105// Local Variables:
106// mode: C
107// c-file-style: "gnu"
108// indent-tabs-mode: nil
109// End:
110*/
Lumiera interface macros and structures.
lumiera_interface * LumieraInterface
Definition interface.h:355
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
Definition plugin.h:64
Probabilistic splay tree.
psplay * PSplay
Definition psplay.h:82
Mutual exclusion locking, header.