addon: add missing WL_EXPORT
[platform/core/uifw/libds.git] / src / addon.c
1 #include <assert.h>
2
3 #include "libds/util/addon.h"
4 #include "util.h"
5
6 WL_EXPORT void
7 ds_addon_set_init(struct ds_addon_set *set)
8 {
9     wl_list_init(&set->addons);
10 }
11
12 WL_EXPORT void
13 ds_addon_set_finish(struct ds_addon_set *set)
14 {
15     struct ds_addon *addon, *tmp;
16
17     wl_list_for_each_safe(addon, tmp, &set->addons, link) {
18         ds_addon_finish(addon);
19         addon->impl->destroy(addon);
20     }
21 }
22
23 WL_EXPORT void
24 ds_addon_init(struct ds_addon *addon, struct ds_addon_set *set,
25         const void *owner, const struct ds_addon_interface *impl)
26 {
27     struct ds_addon *iter;
28
29     DS_ASSERT(owner && impl);
30
31     wl_list_for_each(iter, &set->addons, link) {
32         DS_ASSERT(iter->owner == addon->owner && iter->impl == addon->impl);
33     }
34
35     wl_list_insert(&set->addons, &addon->link);
36
37     addon->owner = owner;
38     addon->impl = impl;
39 }
40
41 WL_EXPORT void
42 ds_addon_finish(struct ds_addon *addon)
43 {
44     wl_list_remove(&addon->link);
45     wl_list_init(&addon->link);
46 }
47
48 WL_EXPORT struct ds_addon *
49 ds_addon_find(struct ds_addon_set *set, const void *owner,
50         const struct ds_addon_interface *impl)
51 {
52     struct ds_addon *addon;
53
54     wl_list_for_each(addon, &set->addons, link) {
55         if (addon->owner == owner && addon->impl == impl)
56             return addon;
57     }
58
59     return NULL;
60 }