Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/billyquith/ponder
C++ reflection library with Lua binding, and JSON and XML serialisation.
https://github.com/billyquith/ponder
c-plus-plus camp cpp cpp-library introspection library lua-bindings reflection reflection-library serializer vcpkg
Last synced: about 2 months ago
JSON representation
C++ reflection library with Lua binding, and JSON and XML serialisation.
- Host: GitHub
- URL: https://github.com/billyquith/ponder
- Owner: billyquith
- License: other
- Created: 2015-12-31T13:22:02.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2022-10-31T03:52:31.000Z (about 2 years ago)
- Last Synced: 2024-07-31T22:46:57.248Z (4 months ago)
- Topics: c-plus-plus, camp, cpp, cpp-library, introspection, library, lua-bindings, reflection, reflection-library, serializer, vcpkg
- Language: C++
- Homepage: http://billyquith.github.io/ponder/
- Size: 8.88 MB
- Stars: 635
- Watchers: 34
- Forks: 93
- Open Issues: 36
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: COPYING.txt
Awesome Lists containing this project
- awesome-game-engine-dev - Ponder - Expose C++17 classes and objects so they can used as data. (Libraries / C++)
- AwesomeCppGameDev - ponder
README
Ponder
------Linux & OSX: [![Build Status](https://travis-ci.org/billyquith/ponder.svg?branch=master)](https://travis-ci.org/billyquith/ponder) -
Windows: [![Build status](https://ci.appveyor.com/api/projects/status/spskn9y93e8osve2/branch/master?svg=true)](https://ci.appveyor.com/project/billyquith/ponder/branch/master)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
- [Homepage & documentation](http://billyquith.github.io/ponder/).
- [GitHub project](https://github.com/billyquith/ponder).
- [Release notes][rel].
- [Maintainer blog](https://chinbilly.blogspot.com/search/label/ponder)### Build
Compilers supported. [Requires C++17][compsupp].
- 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][build]). E.g. Use `make` to build Ponder (but you can use any build system CMake supports):```bash
git clone https://github.com/billyquith/ponder.git
cd ponder
mkdir build && cd build
cmake -G "Unix Makefiles" ..
make
```### Package Managers
Windows [vcpkg][vcpkg]:
vcpkg install ponder
### History
Ponder is a fork of [CAMP][camp], which has been retired by the original authors. CAMP relies
on Boost, and is pre-C++11. 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][tege].See [CHANGELOG.md](CHANGELOG.md) and [release notes][rel] for more details on Ponder changes.
[rel]: https://billyquith.github.io/ponder/blog_ponder_3.html
[cl]: https://github.com/billyquith/ponder/CHANGELOG.md
[build]: https://billyquith.github.io/ponder/building_ponder.html
[tege]: http://www.tegesoft.com
[camp]: https://github.com/tegesoft/camp
[vcpkg]: https://docs.microsoft.com/en-us/cpp/build/vcpkg?view=msvc-160
[compsupp]: https://en.cppreference.com/w/cpp/compiler_support