Merge branch 'master' into blender2.8
[blender.git] / source / blender / blenkernel / BKE_addon.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor(s): Campbell Barton
19  *
20  * ***** END GPL LICENSE BLOCK *****
21  */
22 #ifndef __BKE_ADDON_H__
23 #define __BKE_ADDON_H__
24
25 /** \file BKE_addon.h
26  *  \ingroup bke
27  */
28
29
30 struct ListBase;
31 struct bAddon;
32
33 #ifdef __RNA_TYPES_H__
34 typedef struct bAddonPrefType {
35         /* type info */
36         char idname[64]; // best keep the same size as BKE_ST_MAXNAME
37
38         /* RNA integration */
39         ExtensionRNA ext;
40 } bAddonPrefType;
41
42 #else
43 typedef struct bAddonPrefType bAddonPrefType;
44 #endif
45
46 bAddonPrefType *BKE_addon_pref_type_find(const char *idname, bool quiet);
47 void            BKE_addon_pref_type_add(bAddonPrefType *apt);
48 void            BKE_addon_pref_type_remove(const bAddonPrefType *apt);
49
50 void            BKE_addon_pref_type_init(void);
51 void            BKE_addon_pref_type_free(void);
52
53 struct bAddon  *BKE_addon_new(void);
54 struct bAddon  *BKE_addon_find(struct ListBase *addon_list, const char *module);
55 struct bAddon  *BKE_addon_ensure(struct ListBase *addon_list, const char *module);
56 bool            BKE_addon_remove_safe(struct ListBase *addon_list, const char *module);
57 void            BKE_addon_free(struct bAddon *addon);
58
59 #endif  /* __BKE_ADDON_H__ */