From 0e0af4f77222002ddf029095ca36fea71c9ab049 Mon Sep 17 00:00:00 2001 From: Ines Almeida Date: Mon, 12 Jan 2015 20:10:07 +0100 Subject: BGE: python API cleanup - adding proper initialization to GameTypes --- source/gameengine/Ketsji/KX_PythonInitTypes.cpp | 42 ++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'source/gameengine/Ketsji/KX_PythonInitTypes.cpp') diff --git a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp index 7d38ce58eee..5c1ad56147e 100644 --- a/source/gameengine/Ketsji/KX_PythonInitTypes.cpp +++ b/source/gameengine/Ketsji/KX_PythonInitTypes.cpp @@ -171,8 +171,10 @@ void initPyTypes(void) * ..... */ + /* Use existing module where possible */ + PyObject *mod = initGameTypesPythonBinding(); + /* For now just do PyType_Ready */ - PyObject *mod = PyModule_New("GameTypes"); PyObject *dict = PyModule_GetDict(mod); PyDict_SetItemString(PySys_GetObject("modules"), "GameTypes", mod); Py_DECREF(mod); @@ -269,4 +271,42 @@ void initPyTypes(void) #endif } + +PyDoc_STRVAR(GameTypes_module_documentation, +"This module provides access to the game engine data types." +); +static struct PyModuleDef GameTypes_module_def = { + PyModuleDef_HEAD_INIT, + "GameTypes", /* m_name */ + GameTypes_module_documentation, /* m_doc */ + 0, /* m_size */ + NULL, /* m_methods */ + NULL, /* m_reload */ + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL, /* m_free */ +}; + + +PyMODINIT_FUNC initGameTypesPythonBinding(void) +{ + PyObject *m; + + /* Use existing module where possible */ + m = PyImport_ImportModule( "GameTypes" ); + if (m) { + Py_DECREF(m); + return m; + } + else { + PyErr_Clear(); + + // Create the module and add the functions + m = PyModule_Create(&GameTypes_module_def); + PyDict_SetItemString(PySys_GetObject("modules"), GameTypes_module_def.m_name, m); + } + + return m; +} + #endif // WITH_PYTHON -- cgit v1.2.3