Martchus
933d14ef1d
Check whether include dirs for generator exist at configure time
2018-08-04 15:22:32 +02:00
Martchus
29cd810507
Use C++ standard from target in CMake macro
2018-07-27 17:40:15 +02:00
Martchus
25e7891573
Apply clang-format
2018-06-26 00:10:44 +02:00
Martchus
da56134456
binary (de)serialization: Prevent duplicating shared pointer
2018-06-26 00:10:09 +02:00
Martchus
f140c7f436
Use C++ 17
2018-06-26 00:07:59 +02:00
Martchus
6117ef3e1d
Rename functions of BinarySerializable
...
So the names are more like the ones in JsonSerializable.
2018-06-23 17:24:28 +02:00
Martchus
04dccdbd74
Make binary (de)serialization for chrono utils inline
2018-06-23 17:23:37 +02:00
Martchus
ac1fe81497
Add Boost.Hana support for binary (de)serialization
2018-06-23 15:30:51 +02:00
Martchus
9dc7bd371c
Apply clang-format
2018-06-23 14:35:53 +02:00
Martchus
316c1ba838
Add library for basic binary (de)serialization
2018-06-23 14:35:43 +02:00
Martchus
8628427e6d
Fix usage of enable_if with GCC 8
...
Seems like the trick with the three dots isn't working
with GCC 8 anymore. So let's make it a default template
parameter then.
Not sure whether GCC 8 is here correct and whether this
workaround causes further trouble.
2018-05-07 23:48:37 +02:00
Martchus
03e3a4bc67
Support std::(unordered_)?(multi)?set
2018-02-26 22:39:09 +01:00
Martchus
9e11d805c1
Prevent running Qt's generator on files from this generator
2018-02-05 21:21:56 +01:00
Martchus
54d4a15d4f
Set Clang's resource dir and platform triple correctly
...
* The option `-resource-dir` must be specified to
point to Clang's resource directory containing built-in
header files. Then the massive warnings are gone.
* Setting the platform triple seems to be the right way
for cross-compilation. Note that the stdlib.h still needs
to be worked around.
2018-02-03 15:44:10 +01:00
Martchus
cb1741de89
Add PATHS to find_program(REFLECTION_GENERATOR_EXECUTABLE
2018-01-20 21:15:14 +01:00
Martchus
cb095b936a
Add include directory for build time
...
This dir is used when building eg. tageditor and reflective
rapidjson as one big project.
2018-01-20 21:14:48 +01:00
Martchus
c36279665d
Fix cross-compilation with mingw-w64
2018-01-20 18:10:58 +01:00
Martchus
742511ba10
Add CMake module paths of c++utilities for library
2018-01-12 15:55:10 +01:00
Martchus
ca2a6acb2a
Add dummy for pulling C-style string
...
So at least everything can compile and the type-check
is done.
2017-12-24 02:13:16 +01:00
Martchus
272ec99bb0
Allow parsing any number as any kind of integral/floating point
...
Makes sense because JSON does not distinguish different kinds of
numbers anyways
2017-12-24 02:12:01 +01:00
Martchus
0bb06d5190
Ensure all pull helper are declared prior to the call site
2017-12-24 00:57:08 +01:00
Martchus
ec66f14e4c
Just use IsNumber() to check for numbers
...
Otherwise deserializing doubles does not work
when there's no explicit decimal point in the
JSON file.
2017-12-22 20:44:04 +01:00
Martchus
489d4c71c0
Fix typo
2017-12-22 20:31:48 +01:00
Martchus
29b39bc7bc
Use uint64/int64 to serialize enums
...
Otherwise, enums using char as underlying types
can not not be serialized.
2017-12-22 20:30:55 +01:00
Martchus
9a2c2cfef6
Deserialize enums as well
2017-12-22 20:30:01 +01:00
Martchus
86a577748e
Allow direct serialization of iteratables
2017-11-18 00:28:24 +01:00
Martchus
add8ddaeec
Apply clang-format
2017-11-17 22:04:11 +01:00
Martchus
f5a240649f
Separate RapidJSON specific parts
...
So when extending this for further applications of
reflection, the JSON-specific parts can be made optional.
2017-11-17 22:04:01 +01:00
Martchus
227d3f3942
Allow passing target config to generator invocation
...
So the code generator 'sees' the source code in the same
way as the compiler does.
2017-11-17 21:42:49 +01:00
Martchus
19cab9c791
Bundle c++utilities correctly
...
* Use the c++utilities source directory for includes rather
than the locations where headers are goint to be installed
* Call find_package for c++utilities only once
2017-11-17 21:21:34 +01:00
Martchus
d5144d8e75
Restore GCC compatibility
2017-11-16 01:56:04 +01:00
Martchus
a7f587cb84
Support std::map and std::unordered_map
2017-11-13 20:16:43 +01:00
Martchus
f24390a00b
Support smart pointer
2017-11-12 23:18:01 +01:00
Martchus
ce89e3d878
Only include required Boost.Hana headers
2017-11-12 20:13:17 +01:00
Martchus
61a343bda1
Refactor redundant type checks
2017-11-12 20:07:43 +01:00
Martchus
e9324f0ec3
Fix incomplete use of AdaptedJsonSerializable and handling tuple
2017-11-12 00:44:47 +01:00
Martchus
ee0ca561c0
Allow exporting generated functions and don't inline by default
2017-11-11 22:53:40 +01:00
Martchus
0d74d915f8
Allow optionally (de)serializing private members
2017-11-09 01:11:00 +01:00
Martchus
062f8c0d27
Allow enabling (de)serialization for 3rd party structs
2017-11-06 23:27:27 +01:00
Martchus
eac2d20638
Allow specifying Clang options and JSON classes in CMake macro
2017-11-06 20:10:06 +01:00
Martchus
516f80b325
Use "is_base_of"-trait also for pushing objects
2017-11-04 15:16:05 +01:00
Martchus
f212fc8de7
Prevent overflow on size type conversion
2017-11-04 15:15:12 +01:00
Martchus
a4fac7c515
Further simplify JSON reflector
2017-11-04 02:33:34 +01:00
Martchus
4dbb5a3982
Prevent code duplication for iterator variants of pull()
2017-11-03 23:00:15 +01:00
Martchus
423d9ee393
Move all helper functions inside JsonReflector namespace
2017-11-03 22:42:18 +01:00
Martchus
8b61fcc29a
Make location of code generator customizable
2017-11-03 22:41:51 +01:00
Martchus
76a8f649bc
Add example for custom (de)serialization
2017-11-03 17:45:16 +01:00
Martchus
daf1a8602c
Rename Reflector -> JsonReflector
...
So helper methods for other applications of reflections
would go into a separate namespace to prevent conflicts.
2017-11-02 23:35:56 +01:00
Martchus
407de04d91
Allow deserializing tuples
2017-10-29 22:53:02 +01:00
Martchus
d849144504
Allow serializing tuples
2017-10-29 22:14:04 +01:00
Martchus
5e95127185
Exclude tuple from the types considered 'user defined'
2017-10-29 21:41:18 +01:00
Martchus
ae3d8030b6
Allow serializing enums
...
Note that deserializing is not so simple because
we would need to check whether the integer actually
is an item of the expected enumeration type.
2017-10-29 21:31:23 +01:00
Martchus
0520341411
Fix passing temporary to Reflector::push()
2017-10-28 18:29:15 +02:00
Martchus
104e362762
Imporve documentation and build script
2017-10-28 18:24:12 +02:00
Martchus
c94c896f6c
Refactor RapidJSON wrapper
...
* Move all JSON related files into own directory
* Move helper for error handling in own header
* Remove some leftovers from debugging
* Rename classes, use Json instead of JSON
2017-10-28 16:23:39 +02:00
Martchus
5d441cf5ab
Fix Boost.Hana tests
...
Boost.Hana doesn't make the record name accessible so
it can not be provided in the error case.
2017-10-28 15:53:16 +02:00
Martchus
ad03afb1f2
Keep track of errors and fix usage of Boost.Hana
...
* Optionally save errors which occur during deserialization
to allow error handling
* Don't operate on copies when using Boost.Hana
2017-10-28 15:50:16 +02:00
Martchus
1b1d07ef8c
Improve error handling
...
* Throw ParseResult when parsing error occurs
* Silence type mismatch or missing members for now
2017-10-27 20:59:08 +02:00
Martchus
97f1dc57cf
Make use of reserve() and size() if possible
2017-10-27 18:26:36 +02:00
Martchus
31c37a8ee4
Add helper to ease disambiguation
2017-10-27 15:48:55 +02:00
Martchus
ef6a91076f
Apply clang-format
2017-10-27 15:48:26 +02:00
Martchus
34779dcf4b
Remove unused files
2017-10-25 19:23:50 +02:00
Martchus
8922c26c3d
Add some documentation
2017-10-25 19:18:13 +02:00
Martchus
0d17d5f20b
Allow using Boost.Hana instead of code generator
2017-10-25 19:16:55 +02:00
Martchus
b725f59e78
Rename moc -> generator
2017-10-25 17:41:19 +02:00
Martchus
3889031247
Handle multiple input files correctly
...
by invoking the generator multiple times
2017-10-25 17:32:03 +02:00
Martchus
617ee58b91
Clear interatables before pulling array elements
2017-10-25 16:37:49 +02:00
Martchus
8679263f09
Add CMake macro and actually test the generated code
2017-10-24 01:00:40 +02:00
Martchus
4a8ebc99a3
Rename Reflectable -> JSONSerializable
...
This allows to provide multiple independently
functional reflection features by simply using
different base classes for them.
2017-10-23 00:41:10 +02:00
Martchus
8344a99778
Add project basic project structure
...
* Implement simple RapidJSON wrapper
* Add skeleton for code generator to play around with
LibTooling and LibClang
2017-10-19 01:10:51 +02:00