diff options
author | Tilman Roeder <tilman.roder@qt.io> | 2018-07-23 14:19:25 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-08-22 06:58:20 +0000 |
commit | b550b4feb7b6009c1a9d18a604a16844bb9afbc0 (patch) | |
tree | abf7965c4dd997298559cfb98cfe43b0d0075a8d /sources/shiboken2/generator/shiboken2/cppgenerator.cpp | |
parent | 275da7f3749d99426ad107398f6f71e9c8db16c3 (diff) |
Expose Shiboken generated Python module object
This change exposes the module object (a PyObject*) to the global
namespace as Sbk[TYPESYSTEM NAME]ModuleObject. This is useful when
generating bindings for cases where Python will run embedded into
a host application.
This variable is also included in the headers, where it is
declared as `extern PyObject* Sbk[TYPESYSTEM NAME]ModuleObject;` for
the convenience of developers reading the generated sources.
Change-Id: Iaaa38b66b5d3aabc0fb8f995f964cd7aef2a11da
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'sources/shiboken2/generator/shiboken2/cppgenerator.cpp')
-rw-r--r-- | sources/shiboken2/generator/shiboken2/cppgenerator.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp index 455b77c6e..33a161f78 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp @@ -5346,10 +5346,13 @@ bool CppGenerator::finishGeneration() s << endl; s << "// Current module's type array." << endl; - s << "PyTypeObject** " << cppApiVariableName() << ';' << endl; + s << "PyTypeObject** " << cppApiVariableName() << " = nullptr;" << endl; + + s << "// Current module's PyObject pointer." << endl; + s << "PyObject* " << pythonModuleObjectName() << " = nullptr;" << endl; s << "// Current module's converter array." << endl; - s << "SbkConverter** " << convertersVariableName() << ';' << endl; + s << "SbkConverter** " << convertersVariableName() << " = nullptr;" << endl; const CodeSnipList snips = moduleEntry->codeSnips(); @@ -5520,6 +5523,9 @@ bool CppGenerator::finishGeneration() s << moduleName() << "_methods);" << endl; s << "#endif" << endl << endl; + s << INDENT << "// Make module available from global scope" << endl; + s << INDENT << pythonModuleObjectName() << " = module;" << endl << endl; + //s << INDENT << "// Initialize converters for primitive types." << endl; //s << INDENT << "initConverters();" << endl << endl; |