ponder

C++ reflection library with Lua binding, and JSON and XML serialisation.

517
80
C++

Ponder

Linux & OSX: Build Status -
Windows: Build status

Currents status: 3.2-alpha. API is unstable as features added/changed.

New: Version 3

V1 replaced Boost with C++11. V2 added Lua bindings. V3 refactored to remove some warts,
ease future development, and re-add serialisation. API is evolving.

About

Ponder is a C++ multi-purpose reflection library. It provides an abstraction for most
of the high-level concepts of C++: classes, enumerations, functions, properties.

C++1x supplies better support for compile-time reflection. Runtime reflection involves
baking compile-time reflection into the executable so this can be used at runtime. Ponder
presents a simple API for baking your objects so that they can be used at runtime. The baking
can also, optionally, userdata and support for Lua scripting.

Features:

  • API to expose C++ objects.
  • Runtime API to create objects, call functions, and read and modify properties.
  • Automatic Lua binding generation.

Links

Build

Compilers supported. Requires C++17.

  • MSVC 2017+
  • Xcode 8+
  • GCC 7+
  • Clang 3.9+

Ponder uses CMake to generate project files which are then used to build the project (Build
docs
). E.g. Use make to build Ponder (but you can use any build system CMake supports):

git clone https://github.com/billyquith/ponder.git
cd ponder
mkdir build && cd build
cmake -G "Unix Makefiles" ..
make

Package Managers

Windows vcpkg:

vcpkg install ponder

History

Ponder is a fork of CAMP, which has been retired by the original authors. CAMP relies
on Boost, and is pre-C11. In Ponder, the Boost dependency has been removed, and instead,
C
11 features are used. CAMP was developed by Technogerma Systems France and then by Tegesoft.

See CHANGELOG.md and release notes for more details on Ponder changes.