PyAPI: Iniital gawain API for Python
[blender.git] / source / blender / python / gawain / gwn_py_api.c
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  * ***** END GPL LICENSE BLOCK *****
19  */
20
21 /** \file blender/python/gawain/gwn_py_api.c
22  *  \ingroup pygawain
23  *
24  * Experimental Python API, not considered public yet (called '_gawain'),
25  * we may re-expose as public later.
26  */
27
28 #include <Python.h>
29
30 #include "gawain/gwn_batch.h"
31 #include "gawain/gwn_vertex_format.h"
32
33 #include "gwn_py_api.h"
34 #include "gwn_py_types.h"
35
36 #include "BLI_utildefines.h"
37
38 #include "../generic/python_utildefines.h"
39
40 PyDoc_STRVAR(GWN_doc,
41 "This module provides access to gawain drawing functions."
42 );
43 static struct PyModuleDef GWN_module_def = {
44         PyModuleDef_HEAD_INIT,
45         .m_name = "_gawain",  /* m_name */
46         .m_doc = GWN_doc,  /* m_doc */
47 };
48
49 PyObject *BPyInit_gawain(void)
50 {
51         PyObject *sys_modules = PyThreadState_GET()->interp->modules;
52         PyObject *submodule;
53         PyObject *mod;
54
55         mod = PyModule_Create(&GWN_module_def);
56
57         /* _gawain.types */
58         PyModule_AddObject(mod, "types", (submodule = BPyInit_gawain_types()));
59         PyDict_SetItem(sys_modules, PyModule_GetNameObject(submodule), submodule);
60         Py_INCREF(submodule);
61
62         return mod;
63 }