The cppintrospection library was a part of the OpenSceneGraph library before version 2.9.8. And it is then removed from the kernel and work as an independent project. It is initially created and managed by Macro Jez and Robert Osfield, and then managed by Wang Rui. It has been renamed to cppintrospection by Mike Wozniewski, Tristan Matthews and Alexandre Quessy in 2011.
cppintrospection provides a reflection mechanism which could do non-intrusive callings of properties and methods at runtime. This makes OSG able to work with languages other than C/C++.
cppintrospection is ideal for providing non native language binding to the OpenSceneGraph, convenient means for editing properties in a generic way, such as required in scene graph editors, and also facilitates the automatic serialization of objects.
cppintrospection can be used to provide introspection support to 3rd Party libraries without the need to modify them to add this support, the wrappers providing the actual binding can be automatically generated by parsing header files via gen_wrapper utility. All the core OpenSceneGraph libraries have pre built wrappers available for you use.Here are some good examples that are using or have used osgIntrospection for own purposes.
- SPIN Framework: http://www.spinframework.org
- osgDotNet: http://www.openscenegraph.org/projects/osgDotNet
- osgEdit: http://osgedit.sourceforge.net/
- osgLua: http://svn.pplux.com/lab/osgLua/
- osgPython: http://mescriva.codemaniacs.com/svn/osgPython/
Maco Jez's genwrapper is a utiltiy program that reads C++ header files and then automatically generates osgWrapper code from to use alongside osgIntrospection.
GenWrapper was created as an 'ad-hoc' tool to support the development of osgIntrospection and it was never intended to be used with anything other than OSG source files, nor it was designed to meet requirements other than the author's ones. GenWrapper was tested on the OSG source tree ONLY and it's not known to work with anything else. If you want to use GenWrapper on your own application's source tree, try to follow OSG coding conventions and directory layout in order to minimize the risk of failure. GENWRAPPER MAY OVERWRITE AND DESTROY YOUR FILES, USE AT YOUR OWN RISK. ALWAYS MAKE BACKUPS!!!
Wrappers are generated from a two-phases process. The first phase requires an XML description of source files to be created with Doxygen (GenWrapper can build a Doxyfile for you). In the second phase GenWrapper takes the XML input and generates C++ introspection wrappers and optionally GNU makefiles and VS6 project files.
The osgIntrospection project was maintained in a Subversion repository on http://www.openscenegraph.org/svn/osg/osgIntrospection/trunk and has been forked and renamed to cppintrospection by Alexandre Quessy, Mike Wozniewski and Tristan Matthews in 2011. They packaged it using the GNU Autotools, but left the CMake files there too, as an alternative build system.
GenWrapper only overwrites files whose content has actually changed. Wrapper files are written into output_dir/src/osgWrappers. VS6 project files are written into output_dir/VisualStudio/osgWrappers. Change lists (option -l) are created as three text files for each target directory. Such files are named "removed.gw" (list of removed files), "added.gw" (list of added files) and "modified.gw" (list of modified files).
Tested Doxygen version is 1.4.1. GenWrapper may not work with other versions.
2006 - Written by Maco Jez
2010 - Updated by Mike Wozniewski, Tristan Matthews and Alexandre Quessy
Copyright (C) 2002 Robert Osfield
Copyright (C) 2006 Maco Jez
Copyright (C) 2006 Wang Rui
Copyright (C) 2010 Mike Wozniewski
Copyright (C) 2010 Tristan Matthews
Copyright (C) 2010 Alexandre Quessy
Released under the terms of the OpenSceneGraph Public License, Version 0.0
Notes: the OSGPL is based on the LGPL, with the 4 exceptions laid in the wxWindows.