Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/miloyip/rapidjson.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-04-07Set RAPIDJSON_USE_MEMBERSMAP to use a (std::multi)map for object members.ylavic
When RAPIDJSON_USE_MEMBERSMAP is defined, an object Value will store its members in an (re)allocated array of Members like before, but also in an std::multimap<GenericValue::Data,SizeType> where the key and value reference the corresponding Member by its Data and index in the array, respectively, and in a relocatable manner. The layout of the members map/array is now: {multimap*}<>{capacity}<>{Member[capacity]}<>{multimap::iterator[capacity]} where <> stands for the RAPIDJSON_ALIGN-ment of each part, if needed. This layout needs to be reallocated when the current capacity is exhausted, which requires to take care of the multimap and its iterators explicitely. The multimap is allocated separately and only its pointer is saved in this layout, so it can easily be restored in its new position. As for the old/alive iterators, they must move to their new offset according to the new capacity. With this in place, it's immediate to get the multimap::iterator from a MemberIterator and vice versa, thus the same complexity applies for the operations with MemberIterator or MapIterator. For FindMember() and RemoveMember(), the complexity drops from O(n) to the multimap/rbtree's O(log n). For EraseMember() it drops from O(n-m) to O((log n)-m), m representing the move/copy of the trailing members. For AddMember() though, the complexity grows from O(1) to O(log n) due to the insertion in the multimap too. Consequently parsing will be slower, up to ~20% measured in perftests on my laptop (since it's mainly composed of insertions). But later work on the Document (usually the goal of parsing...) will be much faster; the new DocumentFind perftest included in this commit is 8 times faster with RAPIDJSON_USE_MEMBERSMAP (still on my laptop). Overall the tests are 4% slower (mainly composed of parsing), and notably 15% slower for schemas parsing/validation (which supposedly comes from the larger JSON files parsing, still). As a side note, when RAPIDJSON_USE_MEMBERSMAP is not defined, this commit does nothing (same results for perftest with regard to previous versions). Finally, the multimap is allocated and constructed using StdAllocator, so they will use the same Allocator than for any other Value allocation, and thus will benefit from the same performance/safety/security/whatever provided by the user given Allocator.
2021-03-30Handle C++17 (and C++11 with MSVC) in CI.ylavic
2019-11-11fix CMake policy CMP0048 warning #1154piratf
2019-01-24CMake: remove hardcoded CMAKECONFIG_INSTALL_DIR pathRuslan Bilovol
Currently this path is hardcoded to lib/cmake. Some distributions have different library path (like lib64). So reuse LIB_INSTALL_DIR for that to make CMAKECONFIG_INSTALL_DIR configurable and usable in such distros. Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
2018-02-19Misc. typosluz.paz
Found via `codespell -q 3` in downstream https://github.com/BlueBrain/Brayns
2017-11-24CMake: automatically handle C++11 settings if possibleRolf Eike Beer
2017-11-24CMake: do not pass -march=native or -mcpu=native when crosscompilingRolf Eike Beer
2017-11-24CMake: avoid neeless variable expansionRolf Eike Beer
CMake will automatically expand strings that are variable names in if().
2017-10-24Fixed typo in CMake fileM.Tayel
2017-10-16enable cross compiling by adding option to remove -march/-cpuM.Tayel
2017-10-09Use SOURCE_DIR instead of CMAKE_DIR for build treeCaptain Crutches
2017-10-03Make RapidJSON_INCLUDE_DIR non-blank in Config.cmakeCaptain Crutches
2017-09-02Fix processor check when emptyCrunkle
2017-05-12Remove -WeverythingMilo Yip
See #930
2017-03-14update to create config file which is independent from actual install locationClemens Arth
2017-01-19Treat signed-unsigned conversions as errors.Zhihao Yuan
2016-10-26support IBM PowerPC / ppc64 / ppc64le and XL compilerWu Zhao
Avoid POWER platform compiling error and support IBM XL C++ compiler on Linux / AIX.
2016-08-25Version 1.1.0Milo Yip
Change version numbers Fixed some document linkage Fix #648
2016-06-13support building with ASAN and UBSAN on Clang and GCCEli Fidler
2016-04-21Try to fix cmake CMP0054 warningMilo Yip
2016-04-04Try to fix all /W4 warnings in VC2015Milo Yip
2016-02-23Remerge #504Milo Yip
2016-01-30CMake use RelWithDebInfo as default #319Milo Yip
2016-01-23Try using c++0x for gcc 4.6.xMilo Yip
2016-01-23Fix warnings in clang for C++11Milo Yip
2015-07-22adding -Wno-missing-field-initializers to keep the googletest source from ↵Justin Scheiber
erroring out on a warning
2015-07-22use -Werrorscheiber
2015-05-14v1.0.2 releaseMilo Yip
2015-05-12Fix CMakeLists for include as a thirdparty in projectsPhyks
2015-04-25Change version to 1.0.1Milo Yip
2015-04-22Merge pull request #311 from miloyip/issue310_versionmacrov1.0.0Milo Yip
RapidJSON v1.0.0
2015-04-21Introduce option to select default gtest installation. Refs #309Andrii Senkovych
This will introduce RAPIDJSON_BUILD_THIRDPARTY_GTEST option. If it is set to TRUE, cmake will look for GTest installation in `thirdparty/gtest` before looking in other places. Current default value (OFF) for RAPIDJSON_BUILD_THIRDPARTY_GTEST represents previous behaviour when system-wide gtest installation is used whenever possible. This commit will as well eliminate problem described in #309 when source directory found is `thirdparty/gtest` while include files are found system-wide. This however won't give the user possibility to select gtest installation to use.
2015-04-21Add version macros for RapidJSONmiloyip
2015-03-24Exclude intermediate files from install.thebusytypist
2015-02-23Fix definitions for VS compilerAndrii Senkovych
2015-02-19Backport compiler options from premake configuration. Refs #240.Andrii Senkovych
2015-02-17removed tabs from cmake config fileunknown
2015-02-17add support for `AppVeyor` CI for checking Windows buildsunknown
2014-11-19Try new travis configurationAndriy Senkovych
2014-11-11Set separate directory to place binariesAndriy Senkovych
2014-11-11Add initial CMake supportAndriy Senkovych
* Support for both in-source and out-of-source builds * Set library version to 0.12 to map Debian package * Add separate options to build tests, examples and documentation * Add pkgconfig lookup support (if installed with `make install`) * Add CMake lookup support (if isntalled with `make install`) * Add Google Test Source lookup * Add CTest support for running tests (use `make test` or `ctest -V`)