Improve README.md
This commit is contained in:
parent
3d750ada08
commit
35850df15e
31
README.md
31
README.md
|
@ -15,6 +15,28 @@ The reflection implementation used behind the scenes of this library is exchange
|
||||||
* When native reflection becomes standardized, it would be possible to make use of it as well. In this case,
|
* When native reflection becomes standardized, it would be possible to make use of it as well. In this case,
|
||||||
the code generator could still act as a fallback.
|
the code generator could still act as a fallback.
|
||||||
|
|
||||||
|
## Current state
|
||||||
|
The basic functionality is implemented, tested and documented:
|
||||||
|
|
||||||
|
* serialization and deserialization of datatypes listed above
|
||||||
|
* nesting and inheritance is possible
|
||||||
|
* basic error handling when deserializing
|
||||||
|
* CMake macro to conveniently include the code generator into the build process
|
||||||
|
* allow to use Boost.Hana
|
||||||
|
|
||||||
|
### TODOs
|
||||||
|
There are still things missing which would likely be very useful in practise. The following list contains
|
||||||
|
the most important TODOs:
|
||||||
|
|
||||||
|
* [ ] Allow to specify which member variables should be considered.
|
||||||
|
* This could work similar to Qt's Signals & Slots
|
||||||
|
* but there should also be a way to do this for 3rdparty types.
|
||||||
|
* Note that currently, *all* public member variables are (de)serialized.
|
||||||
|
* [ ] Support getter/setter methods
|
||||||
|
* [ ] Allow to serialize the result of methods.
|
||||||
|
* [ ] Allow to pass a deserialized value to a method.
|
||||||
|
* [ ] Validate enum values when deserializing.
|
||||||
|
|
||||||
## Supported datatypes
|
## Supported datatypes
|
||||||
The following table shows the mapping of supported C++ types to supported JSON types:
|
The following table shows the mapping of supported C++ types to supported JSON types:
|
||||||
|
|
||||||
|
@ -229,8 +251,13 @@ An example for such custom (de)serialization can be found in the file
|
||||||
* It is currently not possible to ignore a specific member.
|
* It is currently not possible to ignore a specific member.
|
||||||
|
|
||||||
### Further examples
|
### Further examples
|
||||||
Checkout the test cases for further examples. Relevant files are in
|
* Checkout the test cases for further examples. Relevant files are in
|
||||||
the directories `lib/tests` and `generator/tests`.
|
the directories `lib/tests` and `generator/tests`.
|
||||||
|
* There's also my
|
||||||
|
[tag editor](https://github.com/Martchus/tageditor), which uses Reflective RapidJSON to provide
|
||||||
|
a JSON export.
|
||||||
|
See [json.h](https://github.com/Martchus/tageditor/blob/master/cli/json.h) and
|
||||||
|
[mainfeatures.cpp#exportToJson](https://github.com/Martchus/tageditor/blob/master/cli/mainfeatures.cpp#L856).
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
The following diagram gives an overview about the architecture of the code generator and wrapper library
|
The following diagram gives an overview about the architecture of the code generator and wrapper library
|
||||||
|
|
Loading…
Reference in New Issue