Ponder
C++ reflection library with Lua binding, and JSON and XML
...It provides an abstraction for most of the high-level concepts of C++ like classes, enumerations, properties, functions, and objects. By wrapping all these concepts into abstract structures, Ponder provides an extra layer of flexibility to programs and allows them to expose and manipulate their data structures at runtime. Many applications can take advantage of Ponder, in order to automate tasks that would otherwise require a huge amount of work. For example, Ponder can be used to expose and edit objects' attributes in a graphical user interface. It can also be used to do automatic binding of C++ classes to script languages such as Python or Lua. ...