Commit Graph

120 Commits

Author SHA1 Message Date
Martchus 2138491ee5 WIP 2021-07-10 23:28:02 +02:00
Martchus db0082c325 WIP: Versioning 2021-07-04 21:52:01 +02:00
Martchus 2c6c63579b WIP: Track version numbers 2021-07-03 22:26:50 +02:00
Martchus 2c243c3e41 WIP: Add marker macros for versioning 2021-07-03 22:26:50 +02:00
Martchus 5e72012ed5 Fix typos found via `codespell --skip .git -w` 2021-07-03 19:50:25 +02:00
Martchus 30735ba187 Fix warnings 2021-03-20 21:25:56 +01:00
Martchus 5110cff5eb Fix documentation for std::string_view's push/toJsonDocument function 2021-01-15 17:48:46 +01:00
Martchus 5c49a438ad Use header-only target of c++utilities
The current approach even distinguished between the build and install
interface. However, CPP_UTILITIES_INCLUDE_DIRS is not correctly evaluated
at the time PUBLIC_INCLUDE_DIRS is populated here because the variable
PACKAGE_PREFIX_DIR from the c++utilities config module still points to the
build directory at build time and using $<INSTALL_INTERFACE:…> can not help
with that.
2021-01-01 18:48:14 +01:00
Martchus 6252a7335a Apply cmake-format and clang-format 2020-12-05 21:29:55 +01:00
Martchus 1e95c3d1ca Don't use StringRef with RapidJSON's SetString and allocator
There is no overload taking a RAPIDJSON_NAMESPACE::StringRef and an
allocator. So the StringRef will be implicitly converted back to a plain
CharType pointer causing an additional length calculation.
2020-06-29 20:26:19 +02:00
Martchus c33e1687cb Support serializing std::string_view 2020-06-26 22:08:05 +02:00
Martchus c4f622df8d Apply cmake-format 2020-03-08 13:52:01 +01:00
Martchus 442359f5bf Add a function to format JSON deserialization errors 2020-02-29 22:35:02 +01:00
Martchus 86481fa459 Prevent CMake error when using CMake < 3.15.0 2020-02-18 19:40:48 +01:00
Martchus cf41f4596a Prevent passing "empty" flags to the code generator
Otherwise flags like "-D -I/foo" might be passed to clang which
will then complain that "-I/foo" is not a valid name for a macro.
2020-02-14 16:26:50 +01:00
Martchus 4b4d674f56 Allow adding clang options from dependencies 2020-01-31 20:43:01 +01:00
Martchus 891b96a38f Fix build with custom target suffix 2020-01-31 19:49:18 +01:00
Martchus c68d9ea384 Format CMake files with cmake-format 0.6.7 2020-01-26 20:42:03 +01:00
Martchus ed3f89953f Add missing symlinks to include directory 2020-01-26 20:38:47 +01:00
Martchus 6e4077eed2 Add JsonDeserializationErrors::ThrowOn::All 2020-01-26 20:38:24 +01:00
Martchus 2f1098ae3d Make m_pointer of BinarySerializer and BinaryDeserializer private 2020-01-12 00:50:30 +01:00
Martchus 7482c64931 Support --binary-visibility in CMake function 2020-01-11 14:54:14 +01:00
Martchus 72a11c22b1 Apply cmake-format 0.6.5 2019-12-27 01:43:41 +01:00
Martchus 48639b42b2 Support serialization of std::pair 2019-12-27 01:43:28 +01:00
Martchus 717fb2f037 Polish lib/binary/reflector.h 2019-12-27 01:42:34 +01:00
Martchus 450588af89 Support multimap and unordered_multimap
The previously (undocumented) implementation used non-unique
keys in JSON objects. This is not strictly forbidden by the
RFC but not recommended. Multiple values are now stored within
an array instead.
2019-12-27 01:40:34 +01:00
Martchus 1192c2d74a Apply cmake-format 0.6.2 2019-12-06 16:51:47 +01:00
Martchus 456702e009 Remove unused std::monostate handling
This wasn't useful after all.
2019-11-03 22:38:27 +01:00
Martchus 3374e4ea6c Fix passing C++ version in CMake macro 2019-11-03 22:37:55 +01:00
Martchus e29db0fa87 Prevent warnings about unused lambda captures 2019-11-03 22:37:19 +01:00
Martchus 1024b8e391 Use override in test fixtures 2019-11-03 22:33:29 +01:00
Martchus c3dc381425 Support `std::variant` 2019-11-03 22:02:56 +01:00
Martchus dd652b4de7 Apply CMake format 2019-10-12 19:04:17 +02:00
Martchus d8e626d259 Fix toJsonDocument() for maps 2019-10-05 01:05:48 +02:00
Martchus f21f255e94 Don't use the same enum names twice
Prevents

```
[  168s] /home/abuild/rpmbuild/BUILD/reflective-rapidjson-1563638877.5f7c18b/lib/tests/jsonreflector.cpp:41:12: warning: type 'SomeEnumClass' violates the C++ One Definition Rule [-Wodr]
[  168s]    41 | enum class SomeEnumClass {
[  168s]       |            ^
[  168s] /home/abuild/rpmbuild/BUILD/reflective-rapidjson-1563638877.5f7c18b/lib/tests/binaryreflector.cpp:39:12: note: a type with different precision is defined in another translation unit
[  168s]    39 | enum class SomeEnumClass : std::uint16_t {
[  168s]       |            ^
```

observed in LTO-enabled builds
2019-08-09 17:48:08 +02:00
Martchus a2b40753c3 Adapt adding include dirs to c++utilities 5 2019-06-20 22:53:03 +02:00
Martchus 6542eab80d Adapt to changes in c++utilities 2019-06-14 19:16:51 +02:00
Martchus 8cac133104 Adapt to changes in c++utilities 2019-06-10 22:46:06 +02:00
Martchus 2194000938 Apply cmake-format 0.5.1 2019-06-01 12:16:27 +02:00
Martchus dd174920fe Adapt to c++utilities v5 2019-05-04 16:09:58 +02:00
Martchus 9b80d662bb Catch polymorphic type by reference 2019-04-19 22:24:32 +02:00
Martchus 2b0acbdd1e Cast pointer to the right type on non 64-bit architectures
That could explain why the tests sometimes fail under armv7l (before
making the fix for big pointer IDs).
2019-03-08 17:44:20 +01:00
Martchus 0bf19df0d9 Add explicit test for type mismatch on binary serialization 2019-03-08 17:40:36 +01:00
Martchus 04852627b2 Fix binary serializiation of shared_ptr too big for variable length encoding
* Retain backward compatibility by using either variable length int
  or regular 64-bit int extending the flags
* Add test for both cases
2019-03-08 17:40:08 +01:00
Martchus 1f6fade6c2 Apply cmake-format 2019-02-09 21:25:11 +01:00
Martchus 39dcba215e Let CMake generate code for test application 2019-01-13 22:27:35 +01:00
Martchus 974c0b0396 Allow to obtain only the JSON document
So the final serialization can be customized
2018-11-11 22:55:59 +01:00
Martchus 712eb4fb28 Fix compiling with GCC
Template specializations produced by the macros apparently
must be in the same namespace for GCC (not sure whether this
is actually enforced by the standard).
2018-11-01 04:54:46 +00:00
Martchus d64174c000 Add experimental support for multimap
Makes sense for binary (de)serialization, not sure about
JSON (de)serialization
2018-11-01 04:54:46 +00:00
Martchus f77229471a Allow to teat custom types as std::map/std::set 2018-11-01 04:54:46 +00:00