Commit: 8c3aedcec5df97d7b46270dd89cc9d77c17ac77e
Author: Roman Pogribnyi
Date:   Tue Jul 8 21:31:15 2014 +0200
https://developer.blender.org/rB8c3aedcec5df97d7b46270dd89cc9d77c17ac77e

Big commit. Manta included in Blender Python. NOT ALL modules imported

===================================================================

M       extern/CMakeLists.txt
M       extern/SConscript
D       extern/manta_pp/CMakeLists.txt
D       extern/manta_pp/SConscript
D       extern/manta_pp/commonkernels.h
D       extern/manta_pp/commonkernels.h.reg
D       extern/manta_pp/commonkernels.h.reg.cpp
D       extern/manta_pp/conjugategrad.cpp
D       extern/manta_pp/conjugategrad.h
D       extern/manta_pp/conjugategrad.h.reg
D       extern/manta_pp/conjugategrad.h.reg.cpp
D       extern/manta_pp/cuda/buoyancy.cu
D       extern/manta_pp/cuda/cudatools.h
D       extern/manta_pp/cuda/curlnoise.cu
D       extern/manta_pp/cuda/curlnoise.h
D       extern/manta_pp/cuda/meshtools.cu
D       extern/manta_pp/cuda/particle.cu
D       extern/manta_pp/cuda/turbulence.cu
D       extern/manta_pp/edgecollapse.cpp
D       extern/manta_pp/edgecollapse.h
D       extern/manta_pp/edgecollapse.h.reg
D       extern/manta_pp/edgecollapse.h.reg.cpp
D       extern/manta_pp/fastmarch.cpp
D       extern/manta_pp/fastmarch.h
D       extern/manta_pp/fastmarch.h.reg
D       extern/manta_pp/fastmarch.h.reg.cpp
D       extern/manta_pp/fileio.cpp
D       extern/manta_pp/fileio.h
D       extern/manta_pp/fileio.h.reg
D       extern/manta_pp/fileio.h.reg.cpp
D       extern/manta_pp/flip.cpp
D       extern/manta_pp/flip.h
D       extern/manta_pp/flip.h.reg
D       extern/manta_pp/flip.h.reg.cpp
D       extern/manta_pp/fluidsolver.cpp
D       extern/manta_pp/fluidsolver.h
D       extern/manta_pp/fluidsolver.h.reg
D       extern/manta_pp/fluidsolver.h.reg.cpp
D       extern/manta_pp/general.cpp
D       extern/manta_pp/general.h
D       extern/manta_pp/general.h.reg
D       extern/manta_pp/general.h.reg.cpp
D       extern/manta_pp/grid.cpp
D       extern/manta_pp/grid.h
D       extern/manta_pp/grid.h.reg
D       extern/manta_pp/grid.h.reg.cpp
D       extern/manta_pp/gui/customctrl.cpp
D       extern/manta_pp/gui/customctrl.h
D       extern/manta_pp/gui/customctrl.h.reg
D       extern/manta_pp/gui/customctrl.h.reg.cpp
D       extern/manta_pp/gui/glwidget.cpp
D       extern/manta_pp/gui/glwidget.h
D       extern/manta_pp/gui/glwidget.h.reg
D       extern/manta_pp/gui/glwidget.h.reg.cpp
D       extern/manta_pp/gui/mainwindow.cpp
D       extern/manta_pp/gui/mainwindow.h
D       extern/manta_pp/gui/mainwindow.h.reg
D       extern/manta_pp/gui/mainwindow.h.reg.cpp
D       extern/manta_pp/gui/meshpainter.cpp
D       extern/manta_pp/gui/meshpainter.h
D       extern/manta_pp/gui/meshpainter.h.reg
D       extern/manta_pp/gui/meshpainter.h.reg.cpp
D       extern/manta_pp/gui/moc_customctrl.cxx
D       extern/manta_pp/gui/moc_customctrl.cxx_parameters
D       extern/manta_pp/gui/moc_glwidget.cxx
D       extern/manta_pp/gui/moc_glwidget.cxx_parameters
D       extern/manta_pp/gui/moc_mainwindow.cxx
D       extern/manta_pp/gui/moc_mainwindow.cxx_parameters
D       extern/manta_pp/gui/moc_meshpainter.cxx
D       extern/manta_pp/gui/moc_meshpainter.cxx_parameters
D       extern/manta_pp/gui/moc_painter.cxx
D       extern/manta_pp/gui/moc_painter.cxx_parameters
D       extern/manta_pp/gui/moc_particlepainter.cxx
D       extern/manta_pp/gui/moc_particlepainter.cxx_parameters
D       extern/manta_pp/gui/moc_qtmain.cxx
D       extern/manta_pp/gui/moc_qtmain.cxx_parameters
D       extern/manta_pp/gui/painter.cpp
D       extern/manta_pp/gui/painter.h
D       extern/manta_pp/gui/painter.h.reg
D       extern/manta_pp/gui/painter.h.reg.cpp
D       extern/manta_pp/gui/particlepainter.cpp
D       extern/manta_pp/gui/particlepainter.h
D       extern/manta_pp/gui/particlepainter.h.reg
D       extern/manta_pp/gui/particlepainter.h.reg.cpp
D       extern/manta_pp/gui/qtmain.cpp
D       extern/manta_pp/gui/qtmain.h
D       extern/manta_pp/gui/qtmain.h.reg
D       extern/manta_pp/gui/qtmain.h.reg.cpp
D       extern/manta_pp/hginfo.h
D       extern/manta_pp/kernel.cpp
D       extern/manta_pp/kernel.h
D       extern/manta_pp/kernel.h.reg
D       extern/manta_pp/kernel.h.reg.cpp
D       extern/manta_pp/levelset.cpp
D       extern/manta_pp/levelset.h
D       extern/manta_pp/levelset.h.reg
D       extern/manta_pp/levelset.h.reg.cpp
D       extern/manta_pp/manta.h
D       extern/manta_pp/mesh.cpp
D       extern/manta_pp/mesh.h
D       extern/manta_pp/mesh.h.reg
D       extern/manta_pp/mesh.h.reg.cpp
D       extern/manta_pp/movingobs.cpp
D       extern/manta_pp/movingobs.h
D       extern/manta_pp/movingobs.h.reg
D       extern/manta_pp/movingobs.h.reg.cpp
D       extern/manta_pp/noisefield.cpp
D       extern/manta_pp/noisefield.h
D       extern/manta_pp/noisefield.h.reg
D       extern/manta_pp/noisefield.h.reg.cpp
D       extern/manta_pp/particle.cpp
D       extern/manta_pp/particle.h
D       extern/manta_pp/particle.h.reg
D       extern/manta_pp/particle.h.reg.cpp
D       extern/manta_pp/plugin/advection.cpp
D       extern/manta_pp/plugin/extforces.cpp
D       extern/manta_pp/plugin/initplugins.cpp
D       extern/manta_pp/plugin/kepsilon.cpp
D       extern/manta_pp/plugin/meshplugins.cpp
D       extern/manta_pp/plugin/pressure.cpp
D       extern/manta_pp/plugin/vortexplugins.cpp
D       extern/manta_pp/plugin/waveletturbulence.cpp
D       extern/manta_pp/preprocessor/code.cpp
D       extern/manta_pp/preprocessor/code.h
D       extern/manta_pp/preprocessor/codegen_kernel.cpp
D       extern/manta_pp/preprocessor/codegen_python.cpp
D       extern/manta_pp/preprocessor/main.cpp
D       extern/manta_pp/preprocessor/main.h
D       extern/manta_pp/preprocessor/merge.cpp
D       extern/manta_pp/preprocessor/parse.cpp
D       extern/manta_pp/preprocessor/prep.h
D       extern/manta_pp/preprocessor/tokenize.cpp
D       extern/manta_pp/preprocessor/tokenize.h
D       extern/manta_pp/preprocessor/util.cpp
D       extern/manta_pp/preprocessor/util.h
D       extern/manta_pp/pwrapper/manta.h
D       extern/manta_pp/pwrapper/pclass.cpp
D       extern/manta_pp/pwrapper/pclass.h
D       extern/manta_pp/pwrapper/pconvert.cpp
D       extern/manta_pp/pwrapper/pconvert.h
D       extern/manta_pp/pwrapper/pvec3.cpp
D       extern/manta_pp/pwrapper/pymain.cpp
D       extern/manta_pp/pwrapper/pymain.h
D       extern/manta_pp/pwrapper/pythonInclude.h
D       extern/manta_pp/pwrapper/registry.cpp
D       extern/manta_pp/pwrapper/registry.h
D       extern/manta_pp/python/defines.py
D       extern/manta_pp/python/defines.py.reg
D       extern/manta_pp/python/defines.py.reg.cpp
D       extern/manta_pp/shapes.cpp
D       extern/manta_pp/shapes.h
D       extern/manta_pp/shapes.h.reg
D       extern/manta_pp/shapes.h.reg.cpp
D       extern/manta_pp/test.cpp
D       extern/manta_pp/turbulencepart.cpp
D       extern/manta_pp/turbulencepart.h
D       extern/manta_pp/turbulencepart.h.reg
D       extern/manta_pp/turbulencepart.h.reg.cpp
D       extern/manta_pp/util/integrator.h
D       extern/manta_pp/util/interpol.h
D       extern/manta_pp/util/interpolHigh.h
D       extern/manta_pp/util/mcubes.h
D       extern/manta_pp/util/quaternion.h
D       extern/manta_pp/util/randomstream.h
D       extern/manta_pp/util/solvana.h
D       extern/manta_pp/util/vectorbase.cpp
D       extern/manta_pp/util/vectorbase.h
D       extern/manta_pp/vortexfilament.cpp
D       extern/manta_pp/vortexfilament.h
D       extern/manta_pp/vortexpart.cpp
D       extern/manta_pp/vortexpart.h
D       extern/manta_pp/vortexpart.h.reg
D       extern/manta_pp/vortexpart.h.reg.cpp
D       extern/manta_pp/vortexsheet.cpp
D       extern/manta_pp/vortexsheet.h
D       extern/manta_pp/vortexsheet.h.reg
D       extern/manta_pp/vortexsheet.h.reg.cpp
M       intern/cycles/CMakeLists.txt
M       intern/smoke/intern/MANTA.h
M       intern/smoke/intern/smoke_API.cpp
M       source/blender/python/CMakeLists.txt
M       source/blender/python/SConscript
M       source/blender/python/intern/bpy_interface.c
A       source/blender/python/manta_pp/CMakeLists.txt
A       source/blender/python/manta_pp/SConscript
A       source/blender/python/manta_pp/commonkernels.h
A       source/blender/python/manta_pp/commonkernels.h.reg
A       source/blender/python/manta_pp/commonkernels.h.reg.cpp
A       source/blender/python/manta_pp/conjugategrad.cpp
A       source/blender/python/manta_pp/conjugategrad.h
A       source/blender/python/manta_pp/conjugategrad.h.reg
A       source/blender/python/manta_pp/conjugategrad.h.reg.cpp
A       source/blender/python/manta_pp/cuda/buoyancy.cu
A       source/blender/python/manta_pp/cuda/cudatools.h
A       source/blender/python/manta_pp/cuda/curlnoise.cu
A       source/blender/python/manta_pp/cuda/curlnoise.h
A       source/blender/python/manta_pp/cuda/meshtools.cu
A       source/blender/python/manta_pp/cuda/particle.cu
A       source/blender/python/manta_pp/cuda/turbulence.cu
A       source/blender/python/manta_pp/edgecollapse.cpp
A       source/blender/python/manta_pp/edgecollapse.h
A       source/blender/python/manta_pp/edgecollapse.h.reg
A       source/blender/python/manta_pp/edgecollapse.h.reg.cpp
A       source/blender/python/manta_pp/fastmarch.cpp
A       source/blender/python/manta_pp/fastmarch.h
A       source/blender/python/manta_pp/fastmarch.h.reg
A       source/blender/python/manta_pp/fastmarch.h.reg.cpp
A       source/blender/python/manta_pp/fileio.cpp
A       source/blender/python/manta_pp/fileio.h
A       source/blender/python/manta_pp/fileio.h.reg
A       source/blender/python/manta_pp/fileio.h.reg.cpp
A       source/blender/python/manta_pp/flip.cpp
A       source/blender/python/manta_pp/flip.h
A       source/blender/python/manta_pp/flip.h.reg
A       source/blender/python/manta_pp/flip.h.reg.cpp
A       source/blender/python/manta_pp/fluidsolver.cpp
A       source/blender/python/manta_pp/fluidsolver.h
A       source/blender/python/manta_pp/fluidsolver.h.reg
A       source/blender/python/manta_pp/fluidsolver.h.reg.cpp
A       source/blender/python/manta_pp/general.cpp
A       source/blender/python/manta_pp/general.h
A       source/blender/python/manta_pp/general.h.reg
A       source/blender/python/manta_pp/general.h.reg.cpp
A       source/blender/python/manta_pp/grid.cpp
A       source/blender/python/manta_pp/grid.h
A       source/blender/python/manta_pp/grid.h.reg
A       source/blender/python/manta_pp/grid.h.reg.cpp
A       source/blender/python/manta_pp/gui/customctrl.cpp
A       source/blender/python/manta_pp/gui/customctrl.h
A       source/blender/python/manta_pp/gui/customctrl.h.reg
A       source/blender/python/manta_pp/gui/customctrl.h.reg.cpp
A       source/blender/python/manta_pp/gui/glwidget.cpp
A       source/blender/python/manta_pp/gui/glwidget.h
A       source/blender/python/manta_pp/gui/glwidget.h.reg
A       source/blender/python/manta_pp/gui/glwidget.h.reg.cpp
A       source/blender/python/manta_pp/gui/mainwindow.cpp
A       source/blender/python/manta_pp/gui/mainwindow.h
A       source/blender/python/manta_pp/gui/mainwindow.h.reg
A       source/blender/python/manta_pp/gui/mainwindow.h.reg.cpp
A       source/blender/python/manta_pp/gui/meshpainter.cpp
A       source/blender/python/manta_pp/gui/meshpainter.h
A       source/blender/python/manta_pp/gui/meshpainter.h.reg
A       source/blender/python/manta_pp/gui/meshpainter.h.reg.cpp
A       source/blender/python/manta_pp/gui/moc_customctrl.cxx
A       source/blender/python/manta_pp/gui/moc_customctrl.cxx_parameters
A       source/blender/python/manta_pp/gui/moc_glwidget.cxx
A       source/blender/python/manta_pp/gui/moc_glwidget.cxx_parameters
A       source/blender/python/manta_pp/gui/moc_mainwindow.cxx
A       source/blender/python/manta_pp/gui/moc_mainwindow.cxx_parameters
A       source/blender/python/manta_pp/gui/moc_meshpainter.cxx
A       source/blender/python/manta_pp/gui/moc_meshpainter.cxx_parameters
A       source/blender/python/manta_pp/gui/moc_painter.cxx
A       source/blender/python/manta_pp/gui/moc_painter.cxx_parameters
A       source/blender/python/manta_pp/gui/moc_particlepainter.cxx
A       source/blender/python/manta_pp/gui/moc_particlepainter.cxx_parameters
A       source/blender/python/manta_pp/gui/moc_qtmain.cxx
A       source/blender/python/manta_pp/gui/moc_qtmain.cxx_parameters
A       source/blender/python/manta_pp/gui/painter.cpp
A       source/blender/python/manta_pp/gui/painter.h
A       source/blender/python/manta_pp/gui/painter.h.reg
A       source/blender/python/manta_pp/gui/painter.h.reg.cpp
A       source/blender/python/manta_pp/gui/particlepainter.cpp
A       source/blender/python/manta_pp/gui/particlepainter.h
A       source/blender/python/manta_pp/gui/particlepainter.h.reg
A       source/blender/python/manta_pp/gui/particlepainter.h.reg.cpp
A       source/blender/python/manta_pp/gui/qtmain.cpp
A       source/blender/python/manta_pp/gui/qtmain.h
A       source/blender/python/manta_pp/gui/qtmain.h.reg
A       source/blender/python/manta_pp/gui/qtmain.h.reg.cpp
A       source/blender/python/manta_pp/hginfo.h
A       source/blender/python/manta_pp/kernel.cpp
A       source/blender/python/manta_pp/kernel.h
A       source/blender/python/manta_pp/kernel.h.reg
A       source/blender/python/manta_pp/kernel.h.reg.cpp
A       source/blender/python/manta_pp/levelset.cpp
A       source/blender/python/manta_pp/levelset.h
A       source/blender/python/manta_pp/levelset.h.reg
A       source/blender/python/manta_pp/levelset.h.reg.cpp
A       source/blender/python/manta_pp/manta.h
A       source/blender/python/manta_pp/mesh.cpp
A       source/blender/python/manta_pp/mesh.h
A       source/blender/python/manta_pp/mesh.h.reg
A       source/blender/python/manta_pp/mesh.h.reg.cpp
A       source/blender/python/manta_pp/movingobs.cpp
A       source/blender/python/manta_pp/movingobs.h
A       source/blender/python/manta_pp/movingobs.h.reg
A       source/blender/python/manta_pp/movingobs.h.reg.cpp
A       source/blender/python/manta_pp/noisefield.cpp
A       source/blender/python/manta_pp/noisefield.h
A       source/blender/python/manta_pp/noisefield.h.reg
A       source/blender/python/manta_pp/noisefield.h.reg.cpp
A       source/blender/python/manta_pp/particle.cpp
A       source/blender/python/manta_pp/particle.h
A       source/blender/python/manta_pp/particle.h.reg
A       source/blender/python/manta_pp/particle.h.reg.cpp
A       source/blender/python/manta_pp/plugin/advection.cpp
A       source/blender/python/manta_pp/plugin/extforces.cpp
A       source/blender/python/manta_pp/plugin/initplugins.cpp
A       source/blender/python/manta_pp/plugin/kepsilon.cpp
A       source/blender/python/manta_pp/plugin/meshplugins.cpp
A       source/blender/python/manta_pp/plugin/pressure.cpp
A       source/blender/python/manta_pp/plugin/vortexplugins.cpp
A       source/blender/python/manta_pp/plugin/waveletturbulence.cpp
A       source/blender/python/manta_pp/preprocessor/code.cpp
A       source/blender/python/manta_pp/preprocessor/code.h
A       source/blender/python/manta_pp/preprocessor/codegen_kernel.cpp
A       source/blender/python/manta_pp/preprocessor/codegen_python.cpp
A       source/blender/python/manta_pp/preprocessor/main.cpp
A       source/blender/python/manta_pp/preprocessor/main.h
A       source/blender/python/manta_pp/preprocessor/merge.cpp
A       source/blender/python/manta_pp/preprocessor/parse.cpp
A       source/blender/python/manta_pp/preprocessor/prep.h
A       source/blender/python/manta_pp/preprocessor/tokenize.cpp
A       source/blender/python/manta_pp/preprocessor/tokenize.h
A       source/blender/python/manta_pp/preprocessor/util.cpp
A       source/blender/python/manta_pp/preprocessor/util.h
A       source/blender/python/manta_pp/pwrapper/manta.h
A       source/blender/python/manta_pp/pwrapper/manta_api.h
A       source/blender/python/manta_pp/pwrapper/pclass.cpp
A       source/blender/python/manta_pp/pwrapper/pclass.h
A       source/blender/python/manta_pp/pwrapper/pconvert.cpp
A       source/blender/python/manta_pp/pwrapper/pconvert.h
A       source/blender/python/manta_pp/pwrapper/pvec3.cpp
A       source/blender/python/manta_pp/pwrapper/pymain.cpp
A       source/blender/python/manta_pp/pwrapper/pymain.h
A       source/blender/python/manta_pp/pwrapper/pythonInclude.h
A       source/blender/python/manta_pp/pwrapper/registry.cpp
A       source/blender/python/manta_pp/pwrapper/registry.h
A       source/blender/python/manta_pp/python/defines.py
A       source/blender/python/manta_pp/python/defines.py.reg
A       source/blender/python/manta_pp/python/defines.py.reg.cpp
A       source/blender/python/manta_pp/shapes.cpp
A       source/blender/python/manta_pp/shapes.h
A       source/blender/python/manta_pp/shapes.h.reg
A       source/blender/python/manta_pp/shapes.h.reg.cpp
A       source/blender/python/manta_pp/test.cpp
A       source/blender/python/manta_pp/turbulencepart.cpp
A       source/blender/python/manta_pp/turbulencepart.h
A       source/blender/python/manta_pp/turbulencepart.h.reg
A       source/blender/python/manta_pp/turbulencepart.h.reg.cpp
A       source/blender/python/manta_pp/util/integrator.h
A       source/blender/python/manta_pp/util/interpol.h
A       source/blender/python/manta_pp/util/interpolHigh.h
A       source/blender/python/manta_pp/util/mcubes.h
A       source/blender/python/manta_pp/util/quaternion.h
A       source/blender/python/manta_pp/util/randomstream.h
A       source/blender/python/manta_pp/util/solvana.h
A       source/blender/python/manta_pp/util/vectorbase.cpp
A       source/blender/python/manta_pp/util/vectorbase.h
A       source/blender/python/manta_pp/vortexfilament.cpp
A       source/blender/python/manta_pp/vortexfilament.h
A       source/blender/python/manta_pp/vortexpart.cpp
A       source/blender/python/manta_pp/vortexpart.h
A       source/blender/python/manta_pp/vortexpart.h.reg
A       source/blender/python/manta_pp/vortexpart.h.reg.cpp
A       source/blender/python/manta_pp/vortexsheet.cpp
A       source/blender/python/manta_pp/vortexsheet.h
A       source/blender/python/manta_pp/vortexsheet.h.reg
A       source/blender/python/manta_pp/vortexsheet.h.reg.cpp
M       source/blenderplayer/CMakeLists.txt
M       source/creator/CMakeLists.txt

===================================================================

diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt
index d0e072f..9878072 100644
--- a/extern/CMakeLists.txt
+++ b/extern/CMakeLists.txt
@@ -30,7 +30,7 @@ add_subdirectory(colamd)
 add_subdirectory(rangetree)
 add_subdirectory(wcwidth)
 add_subdirectory(libmv)
-add_subdirectory(manta_pp)
+#add_subdirectory(manta_pp)
 
 if(WITH_BULLET)
        if(NOT WITH_SYSTEM_BULLET)
diff --git a/extern/SConscript b/extern/SConscript
index 74acd35..164b773 100644
--- a/extern/SConscript
+++ b/extern/SConscript
@@ -7,7 +7,7 @@ SConscript(['colamd/SConscript'])
 SConscript(['rangetree/SConscript'])
 SConscript(['wcwidth/SConscript'])
 SConscript(['libmv/SConscript'])
-SConscript(['manta_pp/SConscript'])
+#SConscript(['manta_pp/SConscript'])
 
 if env['WITH_BF_GAMEENGINE']:
     SConscript(['recastnavigation/SConscript'])
diff --git a/extern/manta_pp/pwrapper/registry.cpp 
b/extern/manta_pp/pwrapper/registry.cpp
deleted file mode 100644
index 0880b88..0000000
--- a/extern/manta_pp/pwrapper/registry.cpp
+++ /dev/null
@@ -1,683 +0,0 @@
-/******************************************************************************
- *
- * MantaFlow fluid solver framework
- * Copyright 2011-2014 Tobias Pfaff, Nils Thuerey 
- *
- * This program is free software, distributed under the terms of the
- * GNU General Public License (GPL) 
- * http://www.gnu.org/licenses
- *
- * Auto python registry
- *
- 
******************************************************************************/
-
-#include "pythonInclude.h"
-#include "structmember.h"
-#include "manta.h"
-#include "registry.h"
-using namespace std;
-
-const string gDefaultModuleName = "manta";
-
-namespace Pb {
-
-//******************************************************************************
-// Custom object definition
-
-struct Method {
-       Method(const string& n, const string& d, GenericFunction f) : name(n), 
doc(d), func(f) {}
-       string name, doc;
-       GenericFunction func;
-       
-       PyMethodDef def() {
-               PyMethodDef def = {&name[0], (PyCFunction)func, METH_VARARGS | 
METH_KEYWORDS, &doc[0]};
-               return def;
-       }
-};
-struct GetSet {
-       GetSet() : getter(0),setter(0) {}
-       GetSet(const string& n, const string& d, Getter g, Setter s) : name(n), 
doc(d), getter(g), setter(s) {}
-       string name, doc;
-       Getter getter;
-       Setter setter;
-
-       PyGetSetDef def() {
-               PyGetSetDef def = {&name[0], getter, setter, &doc[0], NULL};
-               return def;
-       }
-};
-
-struct ClassData {
-       string cName, pyName;
-       string cPureName, cTemplate;
-       InitFunc init;
-       PyTypeObject typeInfo;
-       PyNumberMethods numInfo;
-       //PySequenceMethods seqInfo;
-       vector<Method> methods;
-       map<string,GetSet> getset;
-       map<string,OperatorFunction> ops;
-       ClassData* baseclass;
-       string baseclassName;
-       Constructor constructor;
-
-       vector<PyMethodDef> genMethods;
-       vector<PyGetSetDef> genGetSet;
-};
-
-struct PbObject {
-       PyObject_HEAD
-       Manta::PbClass *instance;
-       ClassData *classdef;
-};
-
-//******************************************************
-// Internal wrapper class
-
-//! Registers all classes and methods exposed to Python. 
-/*! This class is only used internally by Pb:: framwork. 
- *  Please use the functionality of PbClass to lookup and translate pointers. 
*/
-class WrapperRegistry {
-public:
-       static WrapperRegistry& instance();
-       void addClass(const std::string& name, const std::string& internalName, 
const std::string& baseclass);
-       void addExternalInitializer(InitFunc func);
-       void addMethod(const std::string& classname, const std::string& 
methodname, GenericFunction method);
-       void addOperator(const std::string& classname, const std::string& 
methodname, OperatorFunction method);
-       void addConstructor(const std::string& classname, Constructor method);
-       void addGetSet(const std::string& classname, const std::string& 
property, Getter getfunc, Setter setfunc);
-       void addPythonPath(const std::string& path);
-       void addPythonCode(const std::string& file, const std::string& code);
-       PyObject* createPyObject(const std::string& classname, const 
std::string& name, Manta::PbArgs& args, Manta::PbClass *parent);
-       void construct(const std::string& scriptname, const vector<string>& 
args);
-       void cleanup();
-       void renameObjects();
-       void runPreInit();
-       PyObject* initModule();
-       ClassData* lookup(const std::string& name);
-       bool canConvert(ClassData* from, ClassData* to);
-       PyThreadState *state;
-       /*blender integration*/
-       PyGILState_STATE mMainGilState;     
-    PyThreadState* mOldThreadState;    
-    PyThreadState* mNewThreadState;     
-    PyThreadState* mSubThreadState;     
-    PyGILState_STATE mSubGilState;      
-
-private:
-       ClassData* getOrConstructClass(const string& name);
-       void registerBaseclasses();
-       void registerDummyTypes();
-       void registerMeta();
-       void addConstants(PyObject* module);
-       void registerOperators(ClassData* cls);
-       void addParentMethods(ClassData* cls, ClassData* base);
-       WrapperRegistry();
-       std::map<std::string, ClassData*> mClasses;
-       std::vector<ClassData*> mClassList;
-       std::vector<InitFunc> mExtInitializers;
-       std::vector<std::string> mPaths;
-       std::string mCode, mScriptName;
-       std::vector<std::string> args;
-};
-
-//******************************************************************************
-// Callback functions
-
-PyObject* cbGetClass(PbObject* self, void* cl) {
-       return Manta::toPy(self->classdef->cPureName);
-}
-
-PyObject* cbGetTemplate(PbObject* self, void* cl) {
-       return Manta::toPy(self->classdef->cTemplate);
-}
-
-PyObject* cbGetCName(PbObject* self, void* cl) {
-       return Manta::toPy(self->classdef->cName);
-}
-
-void cbDealloc(PbObject* self) {
-       //cout << "dealloc " << self->instance->getName() << " " << 
self->classdef->cName << endl;
-       if (self->instance) {
-               // don't delete top-level objects
-               if (self->instance->getParent() != self->instance)
-                       delete self->instance;
-       }
-       Py_TYPE(self)->tp_free((PyObject*)self);
-}
-
-PyObject* cbNew(PyTypeObject *type, PyObject *args, PyObject *kwds) {
-       PbObject *self = (PbObject*) type->tp_alloc(type, 0);
-       if (self != NULL) {
-               // lookup and link classdef
-               self->classdef = 
WrapperRegistry::instance().lookup(type->tp_name);
-               self->instance = NULL;
-               //cout << "creating " << self->classdef->cName << endl;
-       } else
-               errMsg("can't allocate new python class object");
-       return (PyObject*) self;
-}
-
-int cbDisableConstructor(PyObject* self, PyObject* args, PyObject* kwds) {
-       errMsg("Can't instantiate a class template without template arguments");
-       return -1;
-}
-
-PyMODINIT_FUNC PyInit_Main(void) {
-#if PY_MAJOR_VERSION >= 3
-       return WrapperRegistry::instance().initModule();   
-#else
-       WrapperRegistry::instance().initModule();   
-#endif
-}
-
-//******************************************************
-// WrapperRegistry
-
-WrapperRegistry::WrapperRegistry() {
-       addClass("__modclass__", "__modclass__" , "");
-       addClass("PbClass", "PbClass", "");
-}
-
-ClassData* WrapperRegistry::getOrConstructClass(const string& classname) {
-       map<string,ClassData*>::iterator it = mClasses.find(classname);
-
-       if (it != mClasses.end())
-               return it->second;
-       ClassData* data = new ClassData;
-       data->cName = classname;
-       data->cPureName = classname;
-       data->cTemplate = "";
-       size_t tplIdx = classname.find('<');
-       if (tplIdx != string::npos) {
-               data->cPureName = classname.substr(0,tplIdx);
-               data->cTemplate = classname.substr(tplIdx+1, 
classname.find('>')-tplIdx-1);
-       }
-       data->baseclass = NULL;
-       data->constructor = cbDisableConstructor;
-       mClasses[classname] = data;
-       mClassList.push_back(data);
-       return data;
-}
-
-void replaceAll(string& source, string const& find, string const& replace) {
-       for(string::size_type i = 0; (i = source.find(find, i)) != 
std::string::npos;)
-       {
-               source.replace(i, find.length(), replace);
-               i += replace.length() - find.length() + 1;
-       }
-}
-
-void WrapperRegistry::addClass(const string& pyName, const string& 
internalName, const string& baseclass) {
-       ClassData* data = getOrConstructClass(internalName);
-       
-       // regularize python name
-       string pythonName = pyName;
-       replaceAll(pythonName, "<", "_");
-       replaceAll(pythonName, ">", "");
-       replaceAll(pythonName, ",", "_");
-       
-       if (data->pyName.empty()) 
-               data->pyName = pythonName;
-       mClasses[pythonName] = data;
-       if (!baseclass.empty())
-               data->baseclassName = baseclass;    
-}
-
-void WrapperRegistry::addExternalInitializer(InitFunc func) {
-       mExtInitializers.push_back(func);
-}
-
-void WrapperRegistry::addPythonPath(const string& path) {
-       mPaths.push_back(path);
-}
-
-void WrapperRegistry::addPythonCode(const string& file, const string& code) {
-       mCode += code + "\n";
-}
-
-void WrapperRegistry::addGetSet(const string& classname, const string& 
property, Getter getfunc, Setter setfunc) {
-       ClassData* classdef = getOrConstructClass(classname);
-       GetSet& def = classdef->getset[property];
-       if (def.name.empty()) {
-               def.name = property;
-               def.doc = property;
-       }
-       if (getfunc) def.getter = getfunc;
-       if (setfunc) def.setter = setfunc;
-}
-
-void WrapperRegistry::addMethod(const string& classname, const string& 
methodname, GenericFunction func) {
-       string aclass = classname;
-       if (aclass.empty())
-               aclass = "__modclass__";
-       
-       ClassData* classdef = getOrConstructClass(aclass);
-       for(int i=0; i<(int)classdef->methods.size(); i++)
-               if (classdef->methods[i].name == methodname) return; // avoid 
duplicates
-       classdef->methods.push_back(Method(methodname,methodname,func)); 
-}
-
-void WrapperRegistry::addOperator(const string& classname, const string& 
methodname, OperatorFunction func) {
-       if (classname.empty())
-               errMsg("PYTHON operators have to be defined within classes.");
-       
-       string op = methodname.substr(8);
-       ClassData* classdef = getOrConstructClass(classname);
-       classdef->ops[op] = func;
-}
-
-void WrapperRegistry::addConstructor(const string& classname, Constructor 
func) {
-       ClassData* classdef = getOrConstructClass(classname);
-       classdef->constructor = func;
-}
-
-void WrapperRegistry::addParentMethods(ClassData* cur, ClassData* base) {
-       if (base == 0) return;
-
-       for (vector<Method>::iterator it = base->methods.begin(); it != 
base->methods.end(); ++it)
-               addMethod(cur->cName, it->name, it->func);
-
-       for (map<string,GetSet>::iterator it = base->getset.begin(); it != 
base->getset.end(); ++it)
-               addGetSet(cur->c

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to