cpgf -- open source C++ library for callback, reflection, script binding
cpgf library changes log
2012-05-19 version 1.4.1
- Added meta data for SFML library. All meta data is auto generated by the tool metagen.
- Added sample code to demonstrate using SFML in Lua and V8 Javascript.
- Rewrote the tool metagen in Java.
- Enhanced metagen to be able to handle more complicated classes.
- Added script runner to make executing script easier.
- Now a normal function can be reflected as meta constructor. Useful to add extra constructors to classes.
- Split CMakeLists.txt to several single files for better structure.
- Added separated temporary folders to CMake build for MinGW and VC.
- Changed build.config.txt do disable all non-core component, such as Lua, V8 binding, by default.
- Fixed a few compile errors when reflecting certain kind of classes.
- Fixed a bug that cause crash on bad pointer when reflecting nested classes.
- Fixed a bug that crashes when base class is not reflected in script binding.
- Fixed a bug in Lua binding that treated nil as 0, now nil will be converted to (void *)0.
2012-04-22 version 1.4.0
- Added serialization library.
- Added meta traits for script binding and serialization.
- The old meta converter of std::string is refactored to meta traits.
- Now GVariant supports wide string.
- Fixed a bug that annotation interface may point to NULL meta annotation.
- Added sample and unit tests for serialization.
2012-02-26 version 1.3.0
- Added a tool written in Perl to generate meta data from Doxygen XML files automatically. (Basic features, only tested with Box2D)
- Added meta data for Box2D physical engine.
- Added a sample application for Box2D binding.
- Now the OpenGL metadata can be compiled with GCC.
- Added the OpenGL sample to cmake build file.
- Added policy GMetaPolicyDestructorAbsent to allow meta data for class with private destructor.
- Added class GDefineMetaInfo in gmetadefine.h to ease splitting meta data building to different source files. (Reduce using templates).
- Added "dangle" and GDefineMetaDangle.
- Added function getStdTypeInfo to GTypeInfo to get C++ type info.
- Removed all virtual functions from meta templates to reduce code bloat (the unit test executable size is decreased by 10%).
- Fixed a bug that _class prototype in GMetaDefine is wrong.
2012-02-05 version 1.2.5
- Support parameters default value for meta invokable. Method, constructor and object functor operator.
- Refactored GMetaEnum to remove unnecessary code.
2012-01-28 version 1.2.4
- Added meta data for OpenGL, GLU, and GLUT.
- Added binary data support (via IByteArray) in script binding.
- Added a sample application to show how to use OpenGL in Lua and V8 Javascript.
- Extended meta enum to accept a GVariant. Now meta enum can be not only integer, but also float, pointer, string, etc. Useful to reflect constants.
- Fixed a bug in V8 binding that enum value can't be accessed through class.
2012-01-24 version 1.2.3
- Added script function wrapper. Now script can pass script function to C++ as method parameters.
- Added script object wrapper. Now script can pass script object to C++ as method parameters.
- Added meta data for STL iterator, vector, list and deque.
- V8 binding -- Added object property enumerator. Now using for..in will enumerate all meta data in the object.
- Added policy GMetaRuleGetterExplicitThis and GMetaRuleSetterExplicitThis for property getter and setter.
- Added vtInterface in GVariant.
- Improved code portability, now the library can compile in Intel C++ Compiler Composer XE and Embarcadero C++ Builder 2010.
- Fixed a bug that in script binding, if a method returns GVariant, the result will be wrongly converted to an object.
2012-01-07 version 1.2.2
- Added meta policy GMetaRuleExplicitThis.
- Support binding object functor as meta method.
- Support C++0x/C++11 rvalue reference in variant, callback and reflection.
- Support return reference to fundamental from script function. (Pass by value instead of reference)
- Renamed GDefineMetaClass::inner to GDefineMetaClass::declare.
- Now the meta class created by GDefineMetaClass::declare can be freed automatically if it's not added to other class.
- Refactored to make script binding less dependence on static variables.
- Fixed a bug that can't cast a variant with fundamental to const T &.
- Fixed a bug that crash when return unbound nested class from member function in V8 binding.
2011-12-18 version 1.2.1
- Fixed the code compatibility. Now the library can be compiled by GCC 3.4.2. (Tested with MingW GCC).
- Remove a type casting between void * and function pointer in gcallback. Now the library is more compatible with C++ standard.
- Added xcode project generating in CMake build.
2011-12-17 version 1.2.0
- Added new meta data definition syntax. Now no macro is required to build the meta data.
- Added bindAccessible in script binding.
- Removed gmetareflect .h and .cpp, which was macro based meta data reflection.
2011-12-10 version 1.1.0
- Added Google V8 Javascript engine binding.
- Added non-meta data support in script binding. The script can use arbitrary data type. (void *, T *, while T is not reflected).
- Added second parameter "void ** outInstance" to function GScriptObject::getMethod
- Refactored unit tests of script binding.
- Added unit tests for script binding of Lua and V8.
- Removed GScriptName and changed all name type to const char *
- Fixed a memory bug that cause binding engine wrong references to GScriptConfig on the stack.
- Fixed memory leak in GScopedInterface when call "reset" with same pointer.
- Fixed a bug that can't access a member object's member in script binding. (a.b.c = 1 will cause a.b be copied, now a.b is referenced)
2011-11-27 version 1.0.1
- Refactored Lua binding, using better and faster algorithm to travel for data and methods.
- Distinguish static and member data access in Lua binding.
- Add: class GMetaClassTraveller in gmetaclasstraveller.h to ease iterating class hierarchy.
- Add: function gdynamic_cast in gglobal.h for safe and fast dynamic cast.
- Add: unit tests test_lua_basic.cpp, test_lua_operator.cpp, test_lua_hierarchy.cpp
- Bug fix: binding Lua operators to wrong meta table.
- Bug fix: Lua passes two parameters to __unm operator that cpgf doesn't handle correctly.
- Bug fix: some exceptions raised by interface API were not detected in Lua binding. Now re-throw it to Lua.
- Memory leak fix: leak when exception is raised during any Lua callback.
- Remove: function getMethodList and getMethodListInHierarchy from GMetaClass and IMetaClass. They were replaced with better algorithm.
- Remove: error output to stderr in Lua binding.
- Add separate license file.
2011-11-05 version 1.0.0
Write a comment
- Required fields are marked with *
- Security Code is case sensitive, 'A' is different with 'a'.