diff --git a/README.md b/README.md index 6b58a7c..51f7eb1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,57 @@ # reflective-rapidjson -Code generator for serializing/deserializing C++ objects to/from JSON using Clang and RapidJSON +The main goal of this project is to provide a code generator for serializing/deserializing C++ objects to/from JSON +using Clang and RapidJSON. + +However, extending the generator to generate code for other applications of reflection or provide generic +functionallity would be possible as well. + +## Usage +This example shows how the library can be used to make a `struct` serializable: +``` +TODO +``` + +Note that the header included at the bottom must be generated by invoking the code generator appropriately: +``` +TODO +``` + +It is possible to use the provided CMake macro to automate this task: +``` +TODO +``` + +### Using Boost.Hana instead of code generator +The same example as above. However, this time Boost.Hana is used. So it doesn't required to invoking the generator. + +``` +TODO +``` + +## Install instructions + +### Dependencies +* C++ compiler and standard library supporting at least C++14 +* the CMake build system +* LibTooling from Clang for the code generator +* RapidJSON for JSON (de)serialization +* `c++utilities` for various helper functions + +Optional: + +* CppUnit for building and running the tests +* Doxygen for generating API documentation +* Graphviz for diagrams in the API documentation + +Note that `reflective-rapidjson` and none of these dependencies are required at runtime by an application which +makes use of the `reflective-rapidjson`. + +### How to build +Install all required dependencies and ensure the CMake script finds them. It is possible to build `c++utilities` +together `reflective-rapidjson` to ease the build process. The following build script makes use of this. To use +system `c++utilities`, just skip any lines with `c++utilities` in it. + +``` +TODO +```