ponder 3.1
C++ reflection library
Ponder 3.x Release Notes

3.0 Release Notes

date: 2018-09-08

Extensive refactoring of the API.

The API has be refactored internally to address some hacks from V1 when Boost was removed. Some of the API has been simplified and removed.

Changed UserObject reference semantics.

When we construct a UserObject we can use a reference or a pointer. A reference will copy the object, and a pointer will make reference to the object. This is important because if you modify the copied object, the change will be lost when the UserObject is destroyed. This may not be the behaviour that you want.

All types have common ancestor: Type.

See ponder::Type.

Added UserData per Type. (#98)

See ponder::UserData.

Refactored serialisation. Removed ponder-xml. (#43).

  • Added RapidJSON for use by JSON serialiser (#43).
  • Added RapidXML for use by XML serialiser (#43).

Note, in Ponder 3.0 we only have XML serialisation support.

dynamic read/write attribute from properties. (#91)

This was a simplification of the API. Similar functionality might be implemented by wrapping a property, perhaps with a lambda function

Remove TagHolder. (#92)

Tagholder removed. This could now be implemented with Userdata.

Removed ponder::classByIndex().

Use ponder::classIterator() instead.

Cmake project name changed to "ponder" to match namespace (#95).

Following convention.

Removed composed property getter

Use lambdas instead.

3.1 Release Notes

date: 2018-01-22

Change internal class registration to by type instead of by name

Objects are now registered interally using their typeid. They were previously registered via a string name, however, if we only have a type we could not always get the metaclass information if the metaclass had been renamed. This was a problem for the object factory. This is now fixed. There is also a mapping of string name to typeid so that you can rename metaclasses, however, you must always use the new name. This fixes issue #108.

Drop support for MSVC 2015.

Ponder requires full C++14 support. MSVC 2015 lacks this as it does not support N3652: "Relaxing constraints on constexpr functions constexpr member functions and implicit const". We could work around this but time is limited and it is just a complication when the latest compilers all support it.