pyogre with pyplusplus

lakin.wecker

19-06-2006 01:27:20

In this thread, http://www.ogre3d.org/phpBB2addons/view ... c&start=30 Roman Yakovenko recommended trying pyplusplus to build and maintain our python bindings for Ogre. Most people were reluctant to try it out, but because I've never been able to get PyOgre to compile and run in linux with my ATI Card (I should post more about this in a different thread when I get the time), and because pyplusplus seemed to encourage a better approach, I decided to try it out.
The following are the results of my efforts:
http://lakin.weckers.net/index_ogre_python.html

In general, I've really liked working with pyplusplus. I've probably spent 20-30 hours working on these bindings, and they are very close to being equivalent to the PyOgre bindings (when I last used them). I assume the current PyOgre bindings are further along now. Most notably pyplusplus would give us many benefits.

  1. Rule based approach which eases maintenance. Example: python properties for these bindings have been implemented in such a way that future Ogre Accessors will automatically have properties added if possible.[/*:m]
  2. pyplusplus already does most of the bindings automatically, and provides hooks into the process to specialize the bindings. In general, C++ code is avoided as pyplusplus is already flexible enough that you can simply apply options to certain types of declarations.[/*:m]
  3. to facilitate defining these rules, pyplusplus provides an amazing selection interface allows for simple specification of where and when to apply certain techniques.[/*:m]
  4. Boost.Python and pyplusplus provide a nice way to wrap methods which return SharedPtr's, ptrs, and references such that a uniform python interface is available for them all.[/*:m]
  5. Many of the pyogre bindings already run (with some small changes)[/*:m]
  6. However, There is still much left to do,[/*:m][/list:u]

    I personally think that pyplusplus bindings are the way to go for pyogre in it's future, and I will continue pursuing them, as, currently, they are the only way for me to use Ogre with Python with my setup. In my opinion pyplusplus really accellerates the wrapping process and allows you to setup robust rules that will continue to work in the future, which results in much less maintenance as the Ogre API grows and changes. Using pyplusplus will allow us to quickly and easily bind new Ogre Addons as they crop up. Additionally, we will be able to do this in a uniform way which takes advantage of the same rules already in use in the Ogre bindings.

    Please, ask questions, post comments and most of all try out the bindings if you get the chance. I haven't had the opportunity to compile them in Windows, but pyplusplus does work in windows. It would be great if someone submitted a patch to the build system to get these bindings building in windows.

griminventions

20-06-2006 17:22:40

You make a strong case. I don't have time to try the bindings on Windows right now, but this sounds very good. Hope you don't stop working on it! :)

ice

06-07-2006 17:53:22

Hi, I'm trying your bindings using the following packages:
Python 2.4
CMake 2.4.2
GCC-XML CVS
pygccxml SVN
pyplusplus SVN
boost 1.33.1
python-ogre bzr

The CVS/SVN/bzr stuff is all checked out today.
It took quite a while to get all the tools and install them, but I managed to do it.

To get ogre_generate_code.py to run, I had to change some things.

There was an error in python-ogre's properties.py:19:
Get rid of the second parameter in the call to
code_creators.code_creator_t.__init__

That must have been due to some pyplusplus SVN change.

So the bindings generated with the following output:


/usr/lib/python2.4/site-packages/pygccxml/parser/scanner.py:271: UserWarning:
unable to find out array size from expression "(_Nw - 1)"
warnings.warn( 'unable to find out array size from expression "%s"' % attrs[
XML_AN_MAX ] )
6
-- Adding held type for class: ::Ogre::Compositor of type:
::Ogre::CompositorPtr
-- Adding held type for class: ::Ogre::PatchMesh of type: ::Ogre::PatchMeshPtr
-- Adding held type for class: ::Ogre::HardwareIndexBuffer of type:
::Ogre::HardwareIndexBufferSharedPtr
-- Adding held type for class: ::Ogre::HardwareVertexBuffer of type:
::Ogre::HardwareVertexBufferSharedPtr
-- Adding held type for class: ::Ogre::Texture of type: ::Ogre::TexturePtr
-- Adding held type for class: ::Ogre::Skeleton of type: ::Ogre::SkeletonPtr
-- Adding held type for class: ::Ogre::Mesh of type: ::Ogre::MeshPtr
-- Adding held type for class: ::Ogre::Material of type: ::Ogre::MaterialPtr
-- Adding held type for class: ::Ogre::HighLevelGpuProgram of type:
::Ogre::HighLevelGpuProgramPtr
-- Adding held type for class: ::Ogre::HardwarePixelBuffer of type:
::Ogre::HardwarePixelBufferSharedPtr
-- Adding held type for class: ::Ogre::GpuProgram of type:
::Ogre::GpuProgramPtr
Setting held_type for SharedPtr typedefs ...
--------------------------------------------------------------------------------
-- Setting held type of: ::Ogre::SharedPtr<Ogre::ControllerFunction<float> >
-- for: ::Ogre::ControllerFunction<float> -- to
::Ogre::SharedPtr<Ogre::ControllerFunction<float> >
-- Setting held type of: ::Ogre::SharedPtr<Ogre::ControllerValue<float> >
-- for: ::Ogre::ControllerValue<float> -- to
::Ogre::SharedPtr<Ogre::ControllerValue<float> >
-- Setting held type of: ::Ogre::SharedPtr<Ogre::GpuProgramParameters>
-- for: ::Ogre::GpuProgramParameters -- to
::Ogre::SharedPtr<Ogre::GpuProgramParameters>
-- Setting held type of: ::Ogre::SharedPtr<Ogre::Resource>
-- for: ::Ogre::Resource -- to ::Ogre::SharedPtr<Ogre::Resource>
-- Setting held type of: ::Ogre::SharedPtr<std::vector<Ogre::FileInfo,
std::allocator<Ogre::FileInfo> > >
Not Exporting ... trying to find out why: -- NotExportable:
Ogre::SharedPtr<std::vector<Ogre::FileInfo, std::allocator<Ogre::FileInfo> > >
[class_declaration]

-- Setting held type of: ::Ogre::SharedPtr<Ogre::MemoryDataStream>
Not Exporting ... trying to find out why: -- NotExportable:
Ogre::SharedPtr<Ogre::MemoryDataStream> [class_declaration]

-- Setting held type of:
::Ogre::SharedPtr<std::list<Ogre::SharedPtr<Ogre::DataStream>,
std::allocator<Ogre::SharedPtr<Ogre::DataStream> > > >
Not Exporting ... trying to find out why: -- NotExportable:
Ogre::SharedPtr<std::list<Ogre::SharedPtr<Ogre::DataStream>,
std::allocator<Ogre::SharedPtr<Ogre::DataStream> > > > [class_declaration]

-- Setting held type of: ::Ogre::SharedPtr<Ogre::DataStream>
Not Exporting ... trying to find out why: -- NotExportable:
Ogre::SharedPtr<Ogre::DataStream> [class_declaration]

-- Setting held type of: ::Ogre::SharedPtr<Ogre::AnimableValue>
-- for: ::Ogre::AnimableValue -- to ::Ogre::SharedPtr<Ogre::AnimableValue>
-- Setting held type of: ::Ogre::SharedPtr<std::vector<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::allocator<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > > > >
Not Exporting ... trying to find out why: -- NotExportable:
Ogre::SharedPtr<std::vector<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, std::allocator<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > > > > [class_declaration]

Function ' ( ::Ogre::Matrix4::* )(
::Ogre::Real,::Ogre::Real,::Ogre::Real,::Ogre::Real,::Ogre::Real,::Ogre::Real,::
Ogre::Real,::Ogre::Real,::Ogre::Real,::Ogre::Real,::Ogre::Real,::Ogre::Real,::
Ogre::Real,::Ogre::Real,::Ogre::Real,::Ogre::Real ) ' with more then 10
arguments( 16 ). You should adjest BOOST_PYTHON_MAX_ARITY For more information
see: http://mail.python.org/pipermail/c++-sig/2002-June/001554.html
Function '::Ogre::MeshPtr ( ::Ogre::MeshManager::* )( ::Ogre::String const
&,::Ogre::String const &,::Ogre::Plane const
&,::Ogre::Real,::Ogre::Real,int,int,bool,int,::Ogre::Real,::Ogre::Real,::Ogre::
Vector3 const
&,::Ogre::HardwareBuffer::Usage,::Ogre::HardwareBuffer::Usage,bool,bool ) ' with
more then 10 arguments( 16 ). You should adjest BOOST_PYTHON_MAX_ARITY For more
information see: http://mail.python.org/pipermail/c++-sig/2002-June/001554.html
Function '::Ogre::MeshPtr ( ::Ogre::MeshManager::* )( ::Ogre::String const
&,::Ogre::String const &,::Ogre::Plane const
&,::Ogre::Real,::Ogre::Real,::Ogre::Real,int,int,bool,int,::Ogre::Real,::Ogre::
Real,::Ogre::Vector3 const &,::Ogre::Quaternion const
&,::Ogre::HardwareBuffer::Usage,::Ogre::HardwareBuffer::Usage,bool,bool,int ) '
with more then 10 arguments( 19 ). You should adjest BOOST_PYTHON_MAX_ARITY For
more information see:
http://mail.python.org/pipermail/c++-sig/2002-June/001554.html
Function '::Ogre::MeshPtr ( ::Ogre::MeshManager::* )( ::Ogre::String const
&,::Ogre::String const &,::Ogre::Plane const
&,::Ogre::Real,::Ogre::Real,::Ogre::Real,int,int,bool,int,::Ogre::Real,::Ogre::
Real,::Ogre::Vector3 const
&,::Ogre::HardwareBuffer::Usage,::Ogre::HardwareBuffer::Usage,bool,bool ) ' with
more then 10 arguments( 17 ). You should adjest BOOST_PYTHON_MAX_ARITY For more
information see: http://mail.python.org/pipermail/c++-sig/2002-June/001554.html
WARNING: pyplusplus found "vector<const Ogre::Image*,std::allocator<const
Ogre::Image*> >" instantiation declaration, but can not find out value type!
This class will not be exported!
WARNING: pyplusplus found
"set<Ogre::Entity*,std::less<Ogre::Entity*>,std::allocator<Ogre::Entity*> >"
instantiation declaration, but can not find out value type!
This class will not be exported!
Function 'void ( ::Ogre::SceneManager::* )( bool,::Ogre::String const
&,::Ogre::Real,::Ogre::Real,::Ogre::Real,bool,::Ogre::Quaternion const
&,int,int,int,::Ogre::String const & ) ' with more then 10 arguments( 11 ). You
should adjest BOOST_PYTHON_MAX_ARITY For more information see:
http://mail.python.org/pipermail/c++-sig/2002-June/001554.html
SWITCHING: getTrans instead of getTrans
SWITCHING: getChild instead of getChild
SWITCHING: getViewMatrix instead of getViewMatrix
Found : set FarClipDistance in Frustum
Found : set NearClipDistance in Frustum
SWITCHING: getStatistics instead of getStatistics
SWITCHING: getSubEntity instead of getSubEntity
Found : get RenderQueueGroup in MovableObject
SWITCHING: getSubMesh instead of getSubMesh
SWITCHING: getAnimation instead of getAnimation
SWITCHING: getNumLodLevels instead of getNumLodLevels
Found : get RenderQueueGroup in MovableObject
SWITCHING: getVertexOffsetIterator instead of getVertexOffsetIterator
--------------------------------------------------------------------------------
Improper Getters 192
Improper Setters 30
Looking for map<std::string, std::string, std::less<std::string>,
std::allocator<std::pair<std::string const, std::string> > >
Looking for map<std::string, bool, std::less<std::string>,
std::allocator<std::pair<std::string const, bool> > >
Looking for map<std::string, Ogre::MovableObject*, std::less<std::string>,
std::allocator<std::pair<std::string const, Ogre::MovableObject*> > >
Looking for vector<float, std::allocator<float> >
Looking for map<std::string, Ogre::OverlayElement*, std::less<std::string>,
std::allocator<std::pair<std::string const, Ogre::OverlayElement*> > >
Looking for vector<std::string, std::allocator<std::string> >
file "__array_1.pypp.hpp" - updated( 0.000000 seconds )
file "Vector3.pypp.hpp" - updated( 0.000000 seconds )
file "Vector3.pypp.cpp" - updated( 0.000000 seconds )
file "Matrix4.pypp.hpp" - updated( 0.000000 seconds )
file "Matrix4.pypp.cpp" - updated( 0.000000 seconds )
file "ShadowCaster.pypp.hpp" - updated( 0.000000 seconds )
file "ShadowCaster.pypp.cpp" - updated( 0.000000 seconds )
file "AnimableObject.pypp.hpp" - updated( 0.000000 seconds )
file "AnimableObject.pypp.cpp" - updated( 0.000000 seconds )
file "MovableObject.pypp.hpp" - updated( 0.000000 seconds )
file "MovableObject.pypp.cpp" - updated( 0.010000 seconds )
file "Renderable.pypp.hpp" - updated( 0.000000 seconds )
file "Renderable.pypp.cpp" - updated( 0.000000 seconds )
file "Frustum.pypp.hpp" - updated( 0.000000 seconds )
file "Frustum.pypp.cpp" - updated( 0.000000 seconds )
file "Quaternion.pypp.hpp" - updated( 0.000000 seconds )
file "Quaternion.pypp.cpp" - updated( 0.000000 seconds )
file "Node.pypp.hpp" - updated( 0.000000 seconds )
file "Node.pypp.cpp" - updated( 0.000000 seconds )
file "SceneNode.pypp.hpp" - updated( 0.000000 seconds )
file "SceneNode.pypp.cpp" - updated( 0.000000 seconds )
file "Camera.pypp.hpp" - updated( 0.000000 seconds )
file "Camera.pypp.cpp" - updated( 0.000000 seconds )
file "KeyFrame.pypp.hpp" - updated( 0.000000 seconds )
file "KeyFrame.pypp.cpp" - updated( 0.000000 seconds )
file "TransformKeyFrame.pypp.hpp" - updated( 0.000000 seconds )
file "TransformKeyFrame.pypp.cpp" - updated( 0.000000 seconds )
file "ScriptLoader.pypp.hpp" - updated( 0.000000 seconds )
file "ScriptLoader.pypp.cpp" - updated( 0.000000 seconds )
file "VertexPoseKeyFrame.pypp.hpp" - updated( 0.000000 seconds )
file "VertexPoseKeyFrame.pypp.cpp" - updated( 0.000000 seconds )
file "Math.pypp.hpp" - updated( 0.010000 seconds )
file "Math.pypp.cpp" - updated( 0.000000 seconds )
file "MovableObjectFactory.pypp.hpp" - updated( 0.000000 seconds )
file "MovableObjectFactory.pypp.cpp" - updated( 0.000000 seconds )
file "EntityFactory.pypp.hpp" - updated( 0.000000 seconds )
file "EntityFactory.pypp.cpp" - updated( 0.000000 seconds )
file "CompositionPass.pypp.hpp" - updated( 0.000000 seconds )
file "CompositionPass.pypp.cpp" - updated( 0.000000 seconds )
file "EventTarget.pypp.hpp" - updated( 0.000000 seconds )
file "EventTarget.pypp.cpp" - updated( 0.000000 seconds )
file "PositionTarget.pypp.hpp" - updated( 0.000000 seconds )
file "PositionTarget.pypp.cpp" - updated( 0.000000 seconds )
file "MouseTarget.pypp.hpp" - updated( 0.000000 seconds )
file "MouseTarget.pypp.cpp" - updated( 0.000000 seconds )
file "Serializer.pypp.hpp" - updated( 0.000000 seconds )
file "Serializer.pypp.cpp" - updated( 0.000000 seconds )
file "ControllerValue_less_float_grate_.pypp.hpp" - updated( 0.000000 seconds )
file "ControllerValue_less_float_grate_.pypp.cpp" - updated( 0.000000 seconds )
file "IntersectionSceneQueryListener.pypp.hpp" - updated( 0.000000 seconds )
file "IntersectionSceneQueryListener.pypp.cpp" - updated( 0.000000 seconds )
file "SceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "SceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "IntersectionSceneQuery.pypp.hpp" - updated( 0.010000 seconds )
file "IntersectionSceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "ManualResourceLoader.pypp.hpp" - updated( 0.000000 seconds )
file "ManualResourceLoader.pypp.cpp" - updated( 0.000000 seconds )
file "ResourceManager.pypp.hpp" - updated( 0.000000 seconds )
file "ResourceManager.pypp.cpp" - updated( 0.000000 seconds )
file "CompositorManager.pypp.hpp" - updated( 0.000000 seconds )
file "CompositorManager.pypp.cpp" - updated( 0.000000 seconds )
file "RenderTarget.pypp.hpp" - updated( 0.000000 seconds )
file "RenderTarget.pypp.cpp" - updated( 0.000000 seconds )
file "RenderTexture.pypp.hpp" - updated( 0.000000 seconds )
file "RenderTexture.pypp.cpp" - updated( 0.000000 seconds )
file "CompositorSerializer.pypp.hpp" - updated( 0.000000 seconds )
file "CompositorSerializer.pypp.cpp" - updated( 0.000000 seconds )
file "PlatformManager.pypp.hpp" - updated( 0.000000 seconds )
file "PlatformManager.pypp.cpp" - updated( 0.000000 seconds )
file "ColourValue.pypp.hpp" - updated( 0.000000 seconds )
file "ColourValue.pypp.cpp" - updated( 0.000000 seconds )
file "Billboard.pypp.hpp" - updated( 0.000000 seconds )
file "Billboard.pypp.cpp" - updated( 0.000000 seconds )
file "ControllerFunction_less_float_grate_.pypp.hpp" - updated( 0.000000 seconds
)
file "ControllerFunction_less_float_grate_.pypp.cpp" - updated( 0.000000 seconds
)
file "PassthroughControllerFunction.pypp.hpp" - updated( 0.000000 seconds )
file "PassthroughControllerFunction.pypp.cpp" - updated( 0.000000 seconds )
file "RenderTargetViewportEvent.pypp.hpp" - updated( 0.000000 seconds )
file "RenderTargetViewportEvent.pypp.cpp" - updated( 0.000000 seconds )
file "ParticleSystemManager.pypp.hpp" - updated( 0.000000 seconds )
file "ParticleSystemManager.pypp.cpp" - updated( 0.000000 seconds )
file "TexCoordModifierControllerValue.pypp.hpp" - updated( 0.000000 seconds )
file "TexCoordModifierControllerValue.pypp.cpp" - updated( 0.000000 seconds )
file "RenderQueueGroup.pypp.hpp" - updated( 0.000000 seconds )
file "RenderQueueGroup.pypp.cpp" - updated( 0.000000 seconds )
file "Radian.pypp.hpp" - updated( 0.000000 seconds )
file "Radian.pypp.cpp" - updated( 0.010000 seconds )
file "StringInterface.pypp.hpp" - updated( 0.000000 seconds )
file "StringInterface.pypp.cpp" - updated( 0.000000 seconds )
file "OverlayElement.pypp.hpp" - updated( 0.000000 seconds )
file "OverlayElement.pypp.cpp" - updated( 0.000000 seconds )
file "OverlayContainer.pypp.hpp" - updated( 0.000000 seconds )
file "OverlayContainer.pypp.cpp" - updated( 0.000000 seconds )
file "OverlayManager.pypp.hpp" - updated( 0.000000 seconds )
file "OverlayManager.pypp.cpp" - updated( 0.000000 seconds )
file "RibbonTrailFactory.pypp.hpp" - updated( 0.000000 seconds )
file "RibbonTrailFactory.pypp.cpp" - updated( 0.000000 seconds )
file "TextureUnitState.pypp.hpp" - updated( 0.000000 seconds )
file "TextureUnitState.pypp.cpp" - updated( 0.000000 seconds )
file "AnimationTrack.pypp.hpp" - updated( 0.000000 seconds )
file "AnimationTrack.pypp.cpp" - updated( 0.000000 seconds )
file "NodeAnimationTrack.pypp.hpp" - updated( 0.000000 seconds )
file "NodeAnimationTrack.pypp.cpp" - updated( 0.000000 seconds )
file "Box.pypp.hpp" - updated( 0.000000 seconds )
file "Box.pypp.cpp" - updated( 0.000000 seconds )
file "IlluminationPass.pypp.hpp" - updated( 0.000000 seconds )
file "IlluminationPass.pypp.cpp" - updated( 0.000000 seconds )
file "Profiler.pypp.hpp" - updated( 0.000000 seconds )
file "Profiler.pypp.cpp" - updated( 0.000000 seconds )
file "LayerBlendModeEx.pypp.hpp" - updated( 0.000000 seconds )
file "LayerBlendModeEx.pypp.cpp" - updated( 0.000000 seconds )
file "RenderOperation.pypp.hpp" - updated( 0.000000 seconds )
file "RenderOperation.pypp.cpp" - updated( 0.000000 seconds )
file "EdgeListBuilder.pypp.hpp" - updated( 0.000000 seconds )
file "EdgeListBuilder.pypp.cpp" - updated( 0.000000 seconds )
file "MeshManager.pypp.hpp" - updated( 0.000000 seconds )
file "MeshManager.pypp.cpp" - updated( 0.000000 seconds )
file "VertexCacheProfiler.pypp.hpp" - updated( 0.000000 seconds )
file "VertexCacheProfiler.pypp.cpp" - updated( 0.000000 seconds )
file "SimpleRenderable.pypp.hpp" - updated( 0.000000 seconds )
file "SimpleRenderable.pypp.cpp" - updated( 0.000000 seconds )
file "Rectangle2D.pypp.hpp" - updated( 0.000000 seconds )
file "Rectangle2D.pypp.cpp" - updated( 0.000000 seconds )
file "VertexBufferBinding.pypp.hpp" - updated( 0.000000 seconds )
file "VertexBufferBinding.pypp.cpp" - updated( 0.000000 seconds )
file "CompositionTargetPass.pypp.hpp" - updated( 0.000000 seconds )
file "CompositionTargetPass.pypp.cpp" - updated( 0.000000 seconds )
file "HighLevelGpuProgramFactory.pypp.hpp" - updated( 0.000000 seconds )
file "HighLevelGpuProgramFactory.pypp.cpp" - updated( 0.010000 seconds )
file "IntersectionSceneQueryResult.pypp.hpp" - updated( 0.000000 seconds )
file "IntersectionSceneQueryResult.pypp.cpp" - updated( 0.000000 seconds )
file "FrameListener.pypp.hpp" - updated( 0.000000 seconds )
file "FrameListener.pypp.cpp" - updated( 0.000000 seconds )
file "KeyTarget.pypp.hpp" - updated( 0.000000 seconds )
file "KeyTarget.pypp.cpp" - updated( 0.000000 seconds )
file "MouseMotionTarget.pypp.hpp" - updated( 0.000000 seconds )
file "MouseMotionTarget.pypp.cpp" - updated( 0.000000 seconds )
file "EventProcessor.pypp.hpp" - updated( 0.000000 seconds )
file "EventProcessor.pypp.cpp" - updated( 0.000000 seconds )
file "MeshSerializer.pypp.hpp" - updated( 0.000000 seconds )
file "MeshSerializer.pypp.cpp" - updated( 0.000000 seconds )
file "ParameterDef.pypp.hpp" - updated( 0.000000 seconds )
file "ParameterDef.pypp.cpp" - updated( 0.000000 seconds )
file "VertexDeclaration.pypp.hpp" - updated( 0.000000 seconds )
file "VertexDeclaration.pypp.cpp" - updated( 0.000000 seconds )
file "Resource.pypp.hpp" - updated( 0.000000 seconds )
file "Resource.pypp.cpp" - updated( 0.000000 seconds )
file "Texture.pypp.hpp" - updated( 0.000000 seconds )
file "Texture.pypp.cpp" - updated( 0.000000 seconds )
file "Light.pypp.hpp" - updated( 0.000000 seconds )
file "Light.pypp.cpp" - updated( 0.000000 seconds )
file "Pass.pypp.hpp" - updated( 0.000000 seconds )
file "Pass.pypp.cpp" - updated( 0.000000 seconds )
file "MaterialSerializer.pypp.hpp" - updated( 0.000000 seconds )
file "MaterialSerializer.pypp.cpp" - updated( 0.000000 seconds )
file "SubMesh.pypp.hpp" - updated( 0.000000 seconds )
file "SubMesh.pypp.cpp" - updated( 0.000000 seconds )
file "Ray.pypp.hpp" - updated( 0.000000 seconds )
file "Ray.pypp.cpp" - updated( 0.000000 seconds )
file "Timer.pypp.hpp" - updated( 0.000000 seconds )
file "Timer.pypp.cpp" - updated( 0.000000 seconds )
file "AnimableValue.pypp.hpp" - updated( 0.000000 seconds )
file "AnimableValue.pypp.cpp" - updated( 0.000000 seconds )
file "MaterialScriptProgramDefinition.pypp.hpp" - updated( 0.000000 seconds )
file "MaterialScriptProgramDefinition.pypp.cpp" - updated( 0.000000 seconds )
file "NumericAnimationTrack.pypp.hpp" - updated( 0.000000 seconds )
file "NumericAnimationTrack.pypp.cpp" - updated( 0.000000 seconds )
file "SceneManagerFactory.pypp.hpp" - updated( 0.000000 seconds )
file "SceneManagerFactory.pypp.cpp" - updated( 0.000000 seconds )
file "DefaultSceneManagerFactory.pypp.hpp" - updated( 0.000000 seconds )
file "DefaultSceneManagerFactory.pypp.cpp" - updated( 0.000000 seconds )
file "FloatGpuParameterControllerValue.pypp.hpp" - updated( 0.000000 seconds )
file "FloatGpuParameterControllerValue.pypp.cpp" - updated( 0.000000 seconds )
file "FrameTimeControllerValue.pypp.hpp" - updated( 0.000000 seconds )
file "FrameTimeControllerValue.pypp.cpp" - updated( 0.000000 seconds )
file "RaySceneQueryListener.pypp.hpp" - updated( 0.000000 seconds )
file "RaySceneQueryListener.pypp.cpp" - updated( 0.000000 seconds )
file "RotationalSpline.pypp.hpp" - updated( 0.000000 seconds )
file "RotationalSpline.pypp.cpp" - updated( 0.000000 seconds )
file "RenderSystem.pypp.hpp" - updated( 0.000000 seconds )
file "RenderSystem.pypp.cpp" - updated( 0.000000 seconds )
file "AutoParamDataSource.pypp.hpp" - updated( 0.000000 seconds )
file "AutoParamDataSource.pypp.cpp" - updated( 0.000000 seconds )
file "IndexData.pypp.hpp" - updated( 0.000000 seconds )
file "IndexData.pypp.cpp" - updated( 0.000000 seconds )
file "Log.pypp.hpp" - updated( 0.000000 seconds )
file "Log.pypp.cpp" - updated( 0.000000 seconds )
file "Entity.pypp.hpp" - updated( 0.000000 seconds )
file "Entity.pypp.cpp" - updated( 0.000000 seconds )
file "Mesh.pypp.hpp" - updated( 0.000000 seconds )
file "Mesh.pypp.cpp" - updated( 0.000000 seconds )
file "PatchMesh.pypp.hpp" - updated( 0.000000 seconds )
file "PatchMesh.pypp.cpp" - updated( 0.000000 seconds )
file "RaySceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "RaySceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "DefaultRaySceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "DefaultRaySceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "RenderQueueInvocation.pypp.hpp" - updated( 0.000000 seconds )
file "RenderQueueInvocation.pypp.cpp" - updated( 0.000000 seconds )
file "Angle.pypp.hpp" - updated( 0.000000 seconds )
file "Angle.pypp.cpp" - updated( 0.010000 seconds )
file "ParamCommand.pypp.hpp" - updated( 0.000000 seconds )
file "ParamCommand.pypp.cpp" - updated( 0.000000 seconds )
file "ShadowRenderable.pypp.hpp" - updated( 0.000000 seconds )
file "ShadowRenderable.pypp.cpp" - updated( 0.010000 seconds )
file "SceneManager.pypp.hpp" - updated( 0.000000 seconds )
file "SceneManager.pypp.cpp" - updated( 0.000000 seconds )
file "SceneQueryListener.pypp.hpp" - updated( 0.000000 seconds )
file "SceneQueryListener.pypp.cpp" - updated( 0.000000 seconds )
file "RenderPriorityGroup.pypp.hpp" - updated( 0.000000 seconds )
file "RenderPriorityGroup.pypp.cpp" - updated( 0.000000 seconds )
file "Profile.pypp.hpp" - updated( 0.000000 seconds )
file "Profile.pypp.cpp" - updated( 0.000000 seconds )
file "Plane.pypp.hpp" - updated( 0.000000 seconds )
file "Plane.pypp.cpp" - updated( 0.000000 seconds )
file "SubEntity.pypp.hpp" - updated( 0.000000 seconds )
file "SubEntity.pypp.cpp" - updated( 0.000000 seconds )
file "FrameEvent.pypp.hpp" - updated( 0.000000 seconds )
file "FrameEvent.pypp.cpp" - updated( 0.000000 seconds )
file "TempBlendedBufferInfo.pypp.hpp" - updated( 0.000000 seconds )
file "TempBlendedBufferInfo.pypp.cpp" - updated( 0.000000 seconds )
file "TextureManager.pypp.hpp" - updated( 0.000000 seconds )
file "TextureManager.pypp.cpp" - updated( 0.000000 seconds )
file "AnimationControllerFunction.pypp.hpp" - updated( 0.000000 seconds )
file "AnimationControllerFunction.pypp.cpp" - updated( 0.000000 seconds )
file "AxisAlignedBox.pypp.hpp" - updated( 0.000000 seconds )
file "AxisAlignedBox.pypp.cpp" - updated( 0.000000 seconds )
file "Technique.pypp.hpp" - updated( 0.000000 seconds )
file "Technique.pypp.cpp" - updated( 0.000000 seconds )
file "ControllerManager.pypp.hpp" - updated( 0.000000 seconds )
file "ControllerManager.pypp.cpp" - updated( 0.000000 seconds )
file "Archive.pypp.hpp" - updated( 0.000000 seconds )
file "Archive.pypp.cpp" - updated( 0.000000 seconds )
file "ArchiveManager.pypp.hpp" - updated( 0.000000 seconds )
file "ArchiveManager.pypp.cpp" - updated( 0.000000 seconds )
file "ParticleAffector.pypp.hpp" - updated( 0.000000 seconds )
file "ParticleAffector.pypp.cpp" - updated( 0.000000 seconds )
file "LightFactory.pypp.hpp" - updated( 0.000000 seconds )
file "LightFactory.pypp.cpp" - updated( 0.000000 seconds )
file "RegionSceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "RegionSceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "SphereSceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "SphereSceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "GpuProgram.pypp.hpp" - updated( 0.000000 seconds )
file "GpuProgram.pypp.cpp" - updated( 0.000000 seconds )
file "HighLevelGpuProgram.pypp.hpp" - updated( 0.000000 seconds )
file "HighLevelGpuProgram.pypp.cpp" - updated( 0.000000 seconds )
file "NumericKeyFrame.pypp.hpp" - updated( 0.000000 seconds )
file "NumericKeyFrame.pypp.cpp" - updated( 0.000000 seconds )
file "MouseState.pypp.hpp" - updated( 0.000000 seconds )
file "MouseState.pypp.cpp" - updated( 0.000000 seconds )
file "StringUtil.pypp.hpp" - updated( 0.000000 seconds )
file "StringUtil.pypp.cpp" - updated( 0.000000 seconds )
file "RenderablePass.pypp.hpp" - updated( 0.000000 seconds )
file "RenderablePass.pypp.cpp" - updated( 0.000000 seconds )
file "MultiRenderTarget.pypp.hpp" - updated( 0.000000 seconds )
file "MultiRenderTarget.pypp.cpp" - updated( 0.000000 seconds )
file "UserDefinedObject.pypp.hpp" - updated( 0.000000 seconds )
file "UserDefinedObject.pypp.cpp" - updated( 0.010000 seconds )
file "Viewport.pypp.hpp" - updated( 0.000000 seconds )
file "Viewport.pypp.cpp" - updated( 0.000000 seconds )
file "MaterialScriptContext.pypp.hpp" - updated( 0.000000 seconds )
file "MaterialScriptContext.pypp.cpp" - updated( 0.000000 seconds )
file "QueuedRenderableVisitor.pypp.hpp" - updated( 0.010000 seconds )
file "QueuedRenderableVisitor.pypp.cpp" - updated( 0.000000 seconds )
file "InputReader.pypp.hpp" - updated( 0.000000 seconds )
file "InputReader.pypp.cpp" - updated( 0.000000 seconds )
file "SimpleSpline.pypp.hpp" - updated( 0.000000 seconds )
file "SimpleSpline.pypp.cpp" - updated( 0.000000 seconds )
file "ParticleSystemFactory.pypp.hpp" - updated( 0.000000 seconds )
file "ParticleSystemFactory.pypp.cpp" - updated( 0.000000 seconds )
file "SceneManagerEnumerator.pypp.hpp" - updated( 0.000000 seconds )
file "SceneManagerEnumerator.pypp.cpp" - updated( 0.000000 seconds )
file "ScaleControllerFunction.pypp.hpp" - updated( 0.000000 seconds )
file "ScaleControllerFunction.pypp.cpp" - updated( 0.000000 seconds )
file "ParticleVisualData.pypp.hpp" - updated( 0.000000 seconds )
file "ParticleVisualData.pypp.cpp" - updated( 0.000000 seconds )
file "RenderQueueListener.pypp.hpp" - updated( 0.000000 seconds )
file "RenderQueueListener.pypp.cpp" - updated( 0.000000 seconds )
file "WaveformControllerFunction.pypp.hpp" - updated( 0.000000 seconds )
file "WaveformControllerFunction.pypp.cpp" - updated( 0.000000 seconds )
file "ParticleEmitter.pypp.hpp" - updated( 0.000000 seconds )
file "ParticleEmitter.pypp.cpp" - updated( 0.000000 seconds )
file "RaySceneQueryResultEntry.pypp.hpp" - updated( 0.000000 seconds )
file "RaySceneQueryResultEntry.pypp.cpp" - updated( 0.000000 seconds )
file "ManualObjectFactory.pypp.hpp" - updated( 0.000000 seconds )
file "ManualObjectFactory.pypp.cpp" - updated( 0.000000 seconds )
file "VertexAnimationTrack.pypp.hpp" - updated( 0.000000 seconds )
file "VertexAnimationTrack.pypp.cpp" - updated( 0.000000 seconds )
file "RenderTargetEvent.pypp.hpp" - updated( 0.000000 seconds )
file "RenderTargetEvent.pypp.cpp" - updated( 0.000000 seconds )
file "Vector2.pypp.hpp" - updated( 0.000000 seconds )
file "Vector2.pypp.cpp" - updated( 0.000000 seconds )
file "DefaultIntersectionSceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "DefaultIntersectionSceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "Vector4.pypp.hpp" - updated( 0.000000 seconds )
file "Vector4.pypp.cpp" - updated( 0.000000 seconds )
file "Overlay.pypp.hpp" - updated( 0.000000 seconds )
file "Overlay.pypp.cpp" - updated( 0.000000 seconds )
file "TRect_less_float_grate_.pypp.hpp" - updated( 0.000000 seconds )
file "TRect_less_float_grate_.pypp.cpp" - updated( 0.000000 seconds )
file "GpuProgramManager.pypp.hpp" - updated( 0.000000 seconds )
file "GpuProgramManager.pypp.cpp" - updated( 0.000000 seconds )
file "ConfigFile.pypp.hpp" - updated( 0.000000 seconds )
file "ConfigFile.pypp.cpp" - updated( 0.000000 seconds )
file "Sphere.pypp.hpp" - updated( 0.000000 seconds )
file "Sphere.pypp.cpp" - updated( 0.000000 seconds )
file "RenderQueue.pypp.hpp" - updated( 0.000000 seconds )
file "RenderQueue.pypp.cpp" - updated( 0.000000 seconds )
file "PlaneBoundedVolumeListSceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "PlaneBoundedVolumeListSceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "DefaultPlaneBoundedVolumeListSceneQuery.pypp.hpp" - updated( 0.000000
seconds )
file "DefaultPlaneBoundedVolumeListSceneQuery.pypp.cpp" - updated( 0.000000
seconds )
file "Particle.pypp.hpp" - updated( 0.000000 seconds )
file "Particle.pypp.cpp" - updated( 0.000000 seconds )
file "DefaultSphereSceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "DefaultSphereSceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "ManualObject.pypp.hpp" - updated( 0.000000 seconds )
file "ManualObject.pypp.cpp" - updated( 0.000000 seconds )
file "AnimationStateSet.pypp.hpp" - updated( 0.000000 seconds )
file "AnimationStateSet.pypp.cpp" - updated( 0.000000 seconds )
file "TextureFrameControllerValue.pypp.hpp" - updated( 0.000000 seconds )
file "TextureFrameControllerValue.pypp.cpp" - updated( 0.000000 seconds )
file "Rectangle.pypp.hpp" - updated( 0.010000 seconds )
file "Rectangle.pypp.cpp" - updated( 0.000000 seconds )
file "SceneManagerMetaData.pypp.hpp" - updated( 0.000000 seconds )
file "SceneManagerMetaData.pypp.cpp" - updated( 0.000000 seconds )
file "SceneQueryResult.pypp.hpp" - updated( 0.000000 seconds )
file "SceneQueryResult.pypp.cpp" - updated( 0.000000 seconds )
file "AxisAlignedBoxSceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "AxisAlignedBoxSceneQuery.pypp.cpp" - updated( 0.000000 seconds )
file "DefaultAxisAlignedBoxSceneQuery.pypp.hpp" - updated( 0.000000 seconds )
file "DefaultAxisAlignedBoxSceneQuery.pypp.cpp" - updated( 0.010000 seconds )
file "LogManager.pypp.hpp" - updated( 0.000000 seconds )
file "LogManager.pypp.cpp" - updated( 0.000000 seconds )
file "CompositorInstance.pypp.hpp" - updated( 0.000000 seconds )
file "CompositorInstance.pypp.cpp" - updated( 0.000000 seconds )
file "ParamDictionary.pypp.hpp" - updated( 0.000000 seconds )
file "ParamDictionary.pypp.cpp" - updated( 0.000000 seconds )
file "PlaneBoundedVolume.pypp.hpp" - updated( 0.000000 seconds )
file "PlaneBoundedVolume.pypp.cpp" - updated( 0.000000 seconds )
file "EdgeData.pypp.hpp" - updated( 0.000000 seconds )
file "EdgeData.pypp.cpp" - updated( 0.000000 seconds )
file "BillboardSetFactory.pypp.hpp" - updated( 0.000000 seconds )
file "BillboardSetFactory.pypp.cpp" - updated( 0.000000 seconds )
file "Material.pypp.hpp" - updated( 0.000000 seconds )
file "Material.pypp.cpp" - updated( 0.000000 seconds )
file "LogListener.pypp.hpp" - updated( 0.000000 seconds )
file "LogListener.pypp.cpp" - updated( 0.000000 seconds )
file "DefaultSceneManager.pypp.hpp" - updated( 0.000000 seconds )
file "DefaultSceneManager.pypp.cpp" - updated( 0.000000 seconds )
file "Degree.pypp.hpp" - updated( 0.000000 seconds )
file "Degree.pypp.cpp" - updated( 0.000000 seconds )
file "RibbonTrail.pypp.hpp" - updated( 0.000000 seconds )
file "RibbonTrail.pypp.cpp" - updated( 0.000000 seconds )
file "BillboardSet.pypp.hpp" - updated( 0.000000 seconds )
file "BillboardSet.pypp.cpp" - updated( 0.000000 seconds )
file "HighLevelGpuProgramManager.pypp.hpp" - updated( 0.000000 seconds )
file "HighLevelGpuProgramManager.pypp.cpp" - updated( 0.000000 seconds )
file "Root.pypp.hpp" - updated( 0.000000 seconds )
file "Root.pypp.cpp" - updated( 0.000000 seconds )
file "AutomaticGuardUnguard.pypp.hpp" - updated( 0.000000 seconds )
file "AutomaticGuardUnguard.pypp.cpp" - updated( 0.000000 seconds )
file "RenderTargetListener.pypp.hpp" - updated( 0.000000 seconds )
file "RenderTargetListener.pypp.cpp" - updated( 0.000000 seconds )
file "CompositorChain.pypp.hpp" - updated( 0.000000 seconds )
file "CompositorChain.pypp.cpp" - updated( 0.000000 seconds )
file "MeshLodUsage.pypp.hpp" - updated( 0.000000 seconds )
file "MeshLodUsage.pypp.cpp" - updated( 0.000000 seconds )
file "RenderWindow.pypp.hpp" - updated( 0.000000 seconds )
file "RenderWindow.pypp.cpp" - updated( 0.000000 seconds )
file "Matrix3.pypp.hpp" - updated( 0.000000 seconds )
file "Matrix3.pypp.cpp" - updated( 0.000000 seconds )
file "ParticleSystem.pypp.hpp" - updated( 0.000000 seconds )
file "ParticleSystem.pypp.cpp" - updated( 0.000000 seconds )
file "RenderQueueInvocationSequence.pypp.hpp" - updated( 0.000000 seconds )
file "RenderQueueInvocationSequence.pypp.cpp" - updated( 0.000000 seconds )
file "Bone.pypp.hpp" - updated( 0.000000 seconds )
file "Bone.pypp.cpp" - updated( 0.000000 seconds )
file "AnimationState.pypp.hpp" - updated( 0.000000 seconds )
file "AnimationState.pypp.cpp" - updated( 0.000000 seconds )
file "ResourceGroupManager.pypp.hpp" - updated( 0.000000 seconds )
file "ResourceGroupManager.pypp.cpp" - updated( 0.000000 seconds )
file "VertexMorphKeyFrame.pypp.hpp" - updated( 0.000000 seconds )
file "VertexMorphKeyFrame.pypp.cpp" - updated( 0.000000 seconds )
file "Pose.pypp.hpp" - updated( 0.000000 seconds )
file "Pose.pypp.cpp" - updated( 0.000000 seconds )
file "Exception.pypp.hpp" - updated( 0.000000 seconds )
file "Exception.pypp.cpp" - updated( 0.000000 seconds )
file "StaticGeometry.pypp.hpp" - updated( 0.000000 seconds )
file "StaticGeometry.pypp.cpp" - updated( 0.000000 seconds )
file "DataStream.pypp.hpp" - updated( 0.000000 seconds )
file "DataStream.pypp.cpp" - updated( 0.000000 seconds )
file "CompositionTechnique.pypp.hpp" - updated( 0.000000 seconds )
file "CompositionTechnique.pypp.cpp" - updated( 0.000000 seconds )
file "ViewPoint.pypp.hpp" - updated( 0.000000 seconds )
file "ViewPoint.pypp.cpp" - updated( 0.000000 seconds )
file "VertexData.pypp.hpp" - updated( 0.000000 seconds )
file "VertexData.pypp.cpp" - updated( 0.000000 seconds )
file "Compositor.pypp.hpp" - updated( 0.000000 seconds )
file "Compositor.pypp.cpp" - updated( 0.000000 seconds )
file "MovablePlane.pypp.hpp" - updated( 0.000000 seconds )
file "MovablePlane.pypp.cpp" - updated( 0.000000 seconds )
file "AnimationStateControllerValue.pypp.hpp" - updated( 0.000000 seconds )
file "AnimationStateControllerValue.pypp.cpp" - updated( 0.000000 seconds )
file "QueuedRenderableCollection.pypp.hpp" - updated( 0.000000 seconds )
file "QueuedRenderableCollection.pypp.cpp" - updated( 0.000000 seconds )
file "ShadowListener.pypp.hpp" - updated( 0.000000 seconds )
file "ShadowListener.pypp.cpp" - updated( 0.000000 seconds )
file "Animation.pypp.hpp" - updated( 0.000000 seconds )
file "Animation.pypp.cpp" - updated( 0.000000 seconds )
file "MaterialManager.pypp.hpp" - updated( 0.000000 seconds )
file "MaterialManager.pypp.cpp" - updated( 0.000000 seconds )
file "RenderSystemCapabilities.pypp.hpp" - updated( 0.000000 seconds )
file "RenderSystemCapabilities.pypp.cpp" - updated( 0.000000 seconds )
file "FileInfo.pypp.hpp" - updated( 0.000000 seconds )
file "FileInfo.pypp.cpp" - updated( 0.000000 seconds )
file "ResourceGroupListener.pypp.hpp" - updated( 0.000000 seconds )
file "ResourceGroupListener.pypp.cpp" - updated( 0.000000 seconds )
file "VertexBufferBindingMap.pypp.hpp" - updated( 0.000000 seconds )
file "VertexBufferBindingMap.pypp.cpp" - updated( 0.000000 seconds )
file "RenderSystemOpPairs.pypp.hpp" - updated( 0.000000 seconds )
file "RenderSystemOpPairs.pypp.cpp" - updated( 0.000000 seconds )
file "ShadowRenderableList.pypp.hpp" - updated( 0.000000 seconds )
file "ShadowRenderableList.pypp.cpp" - updated( 0.000000 seconds )
file "AttribParserList.pypp.hpp" - updated( 0.000000 seconds )
file "AttribParserList.pypp.cpp" - updated( 0.000000 seconds )
file "PlaneList.pypp.hpp" - updated( 0.000000 seconds )
file "PlaneList.pypp.cpp" - updated( 0.000000 seconds )
file "MapOfStringToString.pypp.hpp" - updated( 0.000000 seconds )
file "MapOfStringToString.pypp.cpp" - updated( 0.000000 seconds )
file "RaySceneQueryResult.pypp.hpp" - updated( 0.000000 seconds )
file "RaySceneQueryResult.pypp.cpp" - updated( 0.000000 seconds )
file "CompiledState.pypp.hpp" - updated( 0.000000 seconds )
file "CompiledState.pypp.cpp" - updated( 0.000000 seconds )
file "ShadowCasterList.pypp.hpp" - updated( 0.000000 seconds )
file "ShadowCasterList.pypp.cpp" - updated( 0.000000 seconds )
file "EdgeGroupList.pypp.hpp" - updated( 0.000000 seconds )
file "EdgeGroupList.pypp.cpp" - updated( 0.000000 seconds )
file "NodeTrackList.pypp.hpp" - updated( 0.000000 seconds )
file "NodeTrackList.pypp.cpp" - updated( 0.000000 seconds )
file "PoseRefList.pypp.hpp" - updated( 0.000000 seconds )
file "PoseRefList.pypp.cpp" - updated( 0.000000 seconds )
file "VectorOfString.pypp.hpp" - updated( 0.000000 seconds )
file "VectorOfString.pypp.cpp" - updated( 0.000000 seconds )
file
"vector_less_Ogre_scope_HardwareBuffer_scope_Usage_comma_std_scope_allocator_les
s_Ogre_scope_HardwareBuffer_scope_Usage_grate___grate_.pypp.hpp" - updated(
0.000000 seconds )
file
"vector_less_Ogre_scope_HardwareBuffer_scope_Usage_comma_std_scope_allocator_les
s_Ogre_scope_HardwareBuffer_scope_Usage_grate___grate_.pypp.cpp" - updated(
0.000000 seconds )
ERROR: Failed to write code for class "map<std::basic_string<char,
std::char_traits<char>, std::allocator<char>
>,Ogre::_ConfigOption,std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, Ogre::_ConfigOption> > >" into
file. May be the class name is too long?. Error: [Errno 36] File name too long:
u'./build/
map_less_std_scope_basic_string_less_char_comma__std_scope_char_traits_less_char
_grate__comma__std_scope_allocator_less_char_grate___grate__comma_Ogre_scope__Co
nfigOption_comma_std_scope_less_less_std_scope_basic_string_less_char_comma__std
_scope_char_traits_less_char_grate__comma__std_scope_allocator_less_char_grate__
_grate___grate__comma_std_scope_allocator_less_std_scope_pair_less_const_std_sco
pe_basic_string_less_char_comma__std_scope_char_traits_less_char_grate__comma__s
td_scope_allocator_less_char_grate___grate__comma__Ogre_scope__ConfigOption_grat
e___grate___grate_.pypp.hpp'
Traceback (most recent call last):
File "ogre_generate_code.py", line 251, in ?
mb.split_module (ogre_settings.build_dir)
File "/usr/lib/python2.4/site-packages/pyplusplus/module_builder/builder.py",
line 235, in split_module
file_writers.write_multiple_files( self.code_creator, dir_name )
File "/usr/lib/python2.4/site-packages/pyplusplus/file_writers/__init__.py",
line 32, in write_multiple_files
mfs.write()
File
"/usr/lib/python2.4/site-packages/pyplusplus/file_writers/multiple_files.py",
line 291, in write
map( self.split_class, class_creators )
File
"/usr/lib/python2.4/site-packages/pyplusplus/file_writers/multiple_files.py",
line 190, in split_class
self.__split_class_impl( class_creator )
File
"/usr/lib/python2.4/site-packages/pyplusplus/file_writers/multiple_files.py",
line 162, in __split_class_impl
, self.create_function_code( function_name ) ) )
File "/usr/lib/python2.4/site-packages/pyplusplus/file_writers/writer.py",
line 82, in write_file
f = file( fpath, 'w+b' )
IOError: [Errno 36] File name too long:
u'./build/
map_less_std_scope_basic_string_less_char_comma__std_scope_char_traits_less_char
_grate__comma__std_scope_allocator_less_char_grate___grate__comma_Ogre_scope__Co
nfigOption_comma_std_scope_less_less_std_scope_basic_string_less_char_comma__std
_scope_char_traits_less_char_grate__comma__std_scope_allocator_less_char_grate__
_grate___grate__comma_std_scope_allocator_less_std_scope_pair_less_const_std_sco
pe_basic_string_less_char_comma__std_scope_char_traits_less_char_grate__comma__s
td_scope_allocator_less_char_grate___grate__comma__Ogre_scope__ConfigOption_grat
e___grate___grate_.pypp.hpp'


The last part about the long filename seems ok to ignore (?).

Now I try to compile it with scons -f sconscript.

I need to add the include dir of boost.python so I add the following after line 28 of sconscript:

CCFLAGS += ' -I/usr/local/include/boost-1_33_1'


I run scons again and get the following output:


scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o build/Angle.pypp.os -c `pkg-config --cflags OGRE` -I/usr/include/python2.4 -D"BOOST_PYTHON_MAX_ARITY=19" -O0 -g -I./ -I/usr/local/include/boost-1_33_1 -fPIC -Ibuild build/Angle.pypp.cpp
g++ -o build/AnimableObject.pypp.os -c `pkg-config --cflags OGRE` -I/usr/include/python2.4 -D"BOOST_PYTHON_MAX_ARITY=19" -O0 -g -I./ -I/usr/local/include/boost-1_33_1 -fPIC -Ibuild build/AnimableObject.pypp.cpp
g++ -o build/AnimableValue.pypp.os -c `pkg-config --cflags OGRE` -I/usr/include/python2.4 -D"BOOST_PYTHON_MAX_ARITY=19" -O0 -g -I./ -I/usr/local/include/boost-1_33_1 -fPIC -Ibuild build/AnimableValue.pypp.cpp
/usr/local/include/boost-1_33_1/boost/python/object/pointer_holder.hpp: In constructor `boost::python::objects::pointer_holder<Pointer, Value>::pointer_holder(PyObject*, A0) [with A0 = Ogre::AnimableValue::ValueType, Pointer = Ogre::SharedPtr<Ogre::AnimableValue>, Value = Ogre::AnimableValue]':
/usr/local/include/boost-1_33_1/boost/python/object/make_holder.hpp:83: instantiated from `static void boost::python::objects::make_holder<1>::apply<Holder, ArgList>::execute(PyObject*, typename boost::mpl::deref<typename boost::mpl::begin<ArgList>::type>::type) [with Holder = boost::python::objects::pointer_holder<Ogre::SharedPtr<Ogre::AnimableValue>, Ogre::AnimableValue>, ArgList = boost::mpl::vector1<Ogre::AnimableValue::ValueType>]'
/usr/local/include/boost-1_33_1/boost/python/detail/make_keyword_range_fn.hpp:60: instantiated from `boost::python::api::object boost::python::detail::make_keyword_range_constructor(const CallPolicies&, const boost::python::detail::keyword_range&, Holder*, ArgList*, Arity*) [with ArgList = boost::mpl::vector1<Ogre::AnimableValue::ValueType>, Arity = boost::mpl::size<boost::mpl::vector1<Ogre::AnimableValue::ValueType> >, Holder = boost::python::objects::pointer_holder<Ogre::SharedPtr<Ogre::AnimableValue>, Ogre::AnimableValue>, CallPolicies = boost::python::default_call_policies]'
/usr/local/include/boost-1_33_1/boost/python/init.hpp:330: instantiated from `void boost::python::detail::def_init_aux(ClassT&, const Signature&, NArgs, const CallPoliciesT&, const char*, const boost::python::detail::keyword_range&) [with ClassT = boost::python::class_<AnimableValue_wrapper, Ogre::SharedPtr<Ogre::AnimableValue>, boost::noncopyable, boost::python::detail::not_specified>, CallPoliciesT = boost::python::default_call_policies, Signature = boost::mpl::vector1<Ogre::AnimableValue::ValueType>, NArgs = boost::mpl::size<boost::mpl::vector1<Ogre::AnimableValue::ValueType> >]'
/usr/local/include/boost-1_33_1/boost/python/init.hpp:399: instantiated from `static void boost::python::detail::define_class_init_helper<0>::apply(ClassT&, const CallPoliciesT&, const Signature&, NArgs, const char*, const boost::python::detail::keyword_range&) [with ClassT = boost::python::class_<AnimableValue_wrapper, Ogre::SharedPtr<Ogre::AnimableValue>, boost::noncopyable, boost::python::detail::not_specified>, CallPoliciesT = boost::python::default_call_policies, Signature = boost::mpl::vector1<Ogre::AnimableValue::ValueType>, NArgs = boost::mpl::size<boost::mpl::vector1<Ogre::AnimableValue::ValueType> >]'
/usr/local/include/boost-1_33_1/boost/python/init.hpp:171: instantiated from `void boost::python::init_base<DerivedT>::visit(classT&) const [with classT = boost::python::class_<AnimableValue_wrapper, Ogre::SharedPtr<Ogre::AnimableValue>, boost::noncopyable, boost::python::detail::not_specified>, DerivedT = boost::python::init_with_call_policies<boost::python::default_call_policies, boost::python::init<Ogre::AnimableValue::ValueType, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_> >]'
/usr/local/include/boost-1_33_1/boost/python/def_visitor.hpp:31: instantiated from `static void boost::python::def_visitor_access::visit(const V&, classT&) [with V = boost::python::def_visitor<boost::python::init_with_call_policies<boost::python::default_call_policies, boost::python::init<Ogre::AnimableValue::ValueType, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_> > >, classT = boost::python::class_<AnimableValue_wrapper, Ogre::SharedPtr<Ogre::AnimableValue>, boost::noncopyable, boost::python::detail::not_specified>]'
/usr/local/include/boost-1_33_1/boost/python/def_visitor.hpp:67: instantiated from `void boost::python::def_visitor<DerivedVisitor>::visit(classT&) const [with classT = boost::python::class_<AnimableValue_wrapper, Ogre::SharedPtr<Ogre::AnimableValue>, boost::noncopyable, boost::python::detail::not_specified>, DerivedVisitor = boost::python::init_with_call_policies<boost::python::default_call_policies, boost::python::init<Ogre::AnimableValue::ValueType, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_> >]'
/usr/local/include/boost-1_33_1/boost/python/class.hpp:225: instantiated from `boost::python::class_<T, X1, X2, X3>& boost::python::class_<T, X1, X2, X3>::def(const boost::python::def_visitor<Derived>&) [with Derived = boost::python::init_with_call_policies<boost::python::default_call_policies, boost::python::init<Ogre::AnimableValue::ValueType, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_> >, W = AnimableValue_wrapper, X1 = Ogre::SharedPtr<Ogre::AnimableValue>, X2 = boost::noncopyable, X3 = boost::python::detail::not_specified]'
/usr/local/include/boost-1_33_1/boost/python/class.hpp:501: instantiated from `void boost::python::class_<T, X1, X2, X3>::initialize(const DefVisitor&) [with DefVisitor = boost::python::init_base<boost::python::init_with_call_policies<boost::python::default_call_policies, boost::python::init<Ogre::AnimableValue::ValueType, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_> > >, W = AnimableValue_wrapper, X1 = Ogre::SharedPtr<Ogre::AnimableValue>, X2 = boost::noncopyable, X3 = boost::python::detail::not_specified]'
/usr/local/include/boost-1_33_1/boost/python/class.hpp:208: instantiated from `boost::python::class_<T, X1, X2, X3>::class_(const char*, const boost::python::init_base<DerivedT>&) [with DerivedT = boost::python::init_with_call_policies<boost::python::default_call_policies, boost::python::init<Ogre::AnimableValue::ValueType, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_, mpl_::void_> >, W = AnimableValue_wrapper, X1 = Ogre::SharedPtr<Ogre::AnimableValue>, X2 = boost::noncopyable, X3 = boost::python::detail::not_specified]'
build/AnimableValue.pypp.cpp:448: instantiated from here
/usr/local/include/boost-1_33_1/boost/python/object/pointer_holder.hpp:180: error: cannot allocate an object of type `Ogre::AnimableValue'
/usr/local/include/boost-1_33_1/boost/python/object/pointer_holder.hpp:180: error: because the following virtual functions are abstract:
/usr/local/include/OGRE/OgreAnimable.h:122: error: virtual void Ogre::AnimableValue::setCurrentStateAsBaseValue()
scons: *** [build/AnimableValue.pypp.os] Error 1
scons: building terminated because of errors.


I'm not sure how to fix this. It seems like boost is trying to instantiate AnimableValue when it is abstract. Is it because it is being wrapped in a SharedPtr?

Your help is appreciated.

OvermindDL1

06-07-2006 22:21:16

To wrap a class in boost::python that is abstract, make sure to put "no_init" in the constructor, like this:
class_<someAbstractClass>("someAbstractClass", no_init)

So there should be a similar declaration in pyplusplus...

roman.yakovenko

09-07-2006 13:50:30

Hi, I'm trying your bindings using the following
Lakin is on vacation now. So I will try to answer your question or
problems that you found:

There was some effort to integrate new Boost.Python indexing suite
with pyplusplus. So, for some time the SVN was no in a good state( now it is ).
API have been changed and script ( properties.py ) get out of synchronization with the source tree.

Today I found time to work on Python-OGRE bindings on windows, using MSVC 7.1 compiler.
The situation is not bad. Most of the generated code compiles fine.

Problems:
There are few files that are too big, and needed to be split to few ones.

There is some problem with abstract classes and held type.
In this area there is something I don't understand, but it should not be too difficult to resolve the issue.
I will try to resolve is next few days. Also I don't know how those classes are expected to be used from
Python. For example do you create new class that derives from Resource class?

There is small problem with functionality defined in properties.py file. Generated code tries to return raw pointer to
some fundamental type. It should be exposed using another technique.

I hope, that we will have pretty soon Python scripts that generates hands-free code that actually works.
I can send you updated scripts, that works against pyplusplus SVN.

Lakin is searching for a home for Python-OGRE project. Until he find one, you can join pygccxml-development mailing
list( https://lists.sourceforge.net/lists/lis ... evelopment ) to help to move this project.

Roman

roman.yakovenko

09-07-2006 13:53:49

To wrap a class in boost::python that is abstract, make sure to put "no_init" in the constructor, like this:
class_<someAbstractClass>("someAbstractClass", no_init)



It depends on what you want. If you want to create some class, that derives from this one, than you should export constructor, if not no_init is the
way to go.

OvermindDL1

10-07-2006 21:48:37

Yea, I use no_init for classes that are only ever instanced in C++.

roman.yakovenko

11-07-2006 08:36:26

Yea, I use no_init for classes that are only ever instanced in C++.
May be you have an idea whether users of Python bindings to Ogre
need to create classes, that derive from classes defined in the library?

OvermindDL1

11-07-2006 20:32:41

:?: Do what?

roman.yakovenko

12-07-2006 12:37:20

:?: I don't know. I am not an Ogre user. For example, Ogre defines
Resource class. Do Python-Ogre users create new class in Python, that
derives from this one, in order to define new kind of resource?