make rendering much faster
[dana/dcompmgr.git] / plugin.c
1 #include "plugin.h"
2 #include "list.h"
3 #include <stdlib.h>
4
5 d_plugin_data_t*
6 plugin_data_new(int id, void *data)
7 {
8     d_plugin_data_t *pd = malloc(sizeof(d_plugin_data_t));
9     pd->id = id;
10     pd->data = data;
11     return pd;
12 }
13
14 void
15 plugin_data_free(d_plugin_data_t *pd)
16 {
17     if (pd) free(pd);
18 }
19
20 void
21 plugin_data_add(d_list_t *list, int id, void *data)
22 {
23     d_plugin_data_t *pd;
24     pd = plugin_data_new(id, data);
25     list_append(list, pd);
26 }
27
28 void*
29 plugin_data_find(d_list_t *list, int id)
30 {
31     d_list_it_t *it;
32     for (it = list_top(list); it; it = it->next) {
33         d_plugin_data_t *pd = it->data;
34         if (pd->id == id) return pd->data;
35     }
36     return NULL;
37 }
38
39 void
40 plugin_data_remove(d_list_t *list, int id)
41 {
42     d_list_it_t *it, *next;
43     for (it = list_top(list); it; it = next) {
44         d_plugin_data_t *pd = it->data;
45         next = it->next;
46         if (pd->id == id) list_delete_link(list, it);
47     }
48 }