649 Commits

Author SHA1 Message Date
Philipp A. Hartmann
2aab79207e GenericValue: improve copying performance
The GenericValue "copy" constructor (with Allocator) uses a temporary
GenericDocument object to perform the deep copying with the provided
allocator.  This leads to the temporary allocation of the `Stack`
memory, even in case of shallow values (numbers, etc.).

This patch improves the performance of this operation by only resorting
the the SAX Handler implementation in case of Array or Object values.
2014-11-26 23:11:00 +01:00
Anton Indrawan
5a96c1f93e Compile all examples with the Dinkum C++ of QNX 6.6
QCC -Wall -Wextra -Vgcc_ntoarmv7le -I../include <example>
2014-11-23 21:03:57 +01:00
Milo Yip
0a17e1a634 Fix namespace compilation errors 2014-11-23 18:59:35 +08:00
Milo Yip
b855c3f73a Minor optimization of strtod 2014-11-23 16:45:07 +08:00
Milo Yip
3679c280dd Merge remote-tracking branch 'origin/master' into issue120floatprecision_customstrtod 2014-11-23 08:48:03 +08:00
Philipp A. Hartmann
3220438aa5 GenericDocument: explicitly prohibit copying
See #201.
2014-11-21 13:05:54 +01:00
Philipp A. Hartmann
c88cc331d5 DiyFp: avoid shadowing (closes #195) 2014-11-17 13:31:24 +01:00
Philipp A. Hartmann
6b69662ce8 Writer: declare constructors as explicit
Avoids implicit conversion from an `OutputStream` (or an allocator pointer)
to a `Writer` instance.
2014-11-17 13:27:54 +01:00
Philipp A. Hartmann
c35bbe54d9 Writer: fix documentation of stackAllocator param (closes #196) 2014-11-17 13:26:49 +01:00
Milo Yip
57b91300fb Merge remote-tracking branch 'origin/master' into issue120floatprecision_customstrtod
Conflicts:
	include/rapidjson/internal/dtoa.h
	test/unittest/readertest.cpp
2014-11-14 22:23:16 +08:00
Milo Yip
22ca9312df Fix gcc/clang compilation errors and turn off exhaustive number test 2014-11-14 18:36:25 +08:00
Milo Yip
40852f4d6d Fixes StrtodDiyFp bugs 2014-11-14 18:23:51 +08:00
Philipp A. Hartmann
549dcb755d *.h: move to namespace macros 2014-11-06 20:52:49 +01:00
Philipp A. Hartmann
5d9125f51c add RAPIDJSON_NAMESPACE + _BEGIN, _END 2014-11-06 20:52:49 +01:00
miloyip
b4e2d58c74 Temp commit 2014-10-31 10:25:04 +08:00
Philipp A. Hartmann
e8f5d9f8ef MemoryPoolAllocator, Stack: lazily allocate Allocators
In order to make the constructors more efficient, especially
in the context of C++11 move semantics, the (dynamic) allocations
in MemoryPoolAllocator and Stack should be performed lazily.

Move the allocations to the first use of the allocator in both
classes.
2014-10-30 18:40:58 +01:00
Philipp A. Hartmann
d0c283254b Stack<>: add _ suffix to member ownAllocator_
For consistency, all member variables should follow the same pattern.
2014-10-30 18:21:27 +01:00
Philipp A. Hartmann
c557b230a6 Add customization macros for global new/delete
As mentioned in #181, some environments may require adaptations to
the internal calls to the global `new`/`delete` operators, like
adding explicit `NULL` checks to `delete.

This patch adds two new macros
 * RAPIDJSON_NEW(x)
 * RAPIDJSON_DELETE(x)
to allow user-defined expressions in these cases.

This fixes #181 in an alternative manner.
2014-10-30 11:20:46 +01:00
Sean Leather
716907b9fb Clarify documentation on RemoveMember, EraseMember ordering 2014-10-27 15:04:26 +02:00
Milo Yip
8fc0e57926 Merge pull request #177 from spl/use-deprecated
Use 'deprecated' instead of 'depreciated'
2014-10-27 14:53:29 +08:00
Sean Leather
32525a5d5e Use 'deprecated' instead of 'depreciated' 2014-10-26 14:51:35 +02:00
ecorm
b0328d2d3b GenericDocument move-assignment now uses std::foward to move-assign the base class. 2014-10-24 15:25:27 -03:00
ecorm
20a9cd2810 Merge branch 'master' into issue123movesupport 2014-10-24 14:09:30 -03:00
ecorm
fd12dcb3db Added MemoryPoolAllocator to GenericDocument moveunit tests. Added comment in GenericDocument move assignment operator explaining why the static_cast is needed to move the base class. 2014-10-24 14:05:32 -03:00
Philipp A. Hartmann
6bd5ecb08c GenericValue: improve documentation for operator[] 2014-10-24 14:45:48 +02:00
Philipp A. Hartmann
e8445e0bbc GenericValue: improve operator[] disambiguation
In the original disambiguation fix for `GenericValue::operator[]` (#170),
the documentation has been missing, which led to quite badly rendered
Doxygen pages.

During a cleanup, I've realized that a much simpler disambiguation is
possible:

````cpp
  GenericValue& operator[](SizeType idx); // array
  template <typename T>
  GenericValue& operator[](T* name);      // object
````

This approach works, as non-template functions are preferred over
template functions.

In order to improve the error messages, the pointer type is restricted
to `(const) Ch`.

Update `tutorial.md` to drop the ambiguity warning.
2014-10-24 13:55:26 +02:00
ecorm
cb33f910c3 Merge branch 'master' into issue123movesupport 2014-10-24 03:11:34 -03:00
ecorm
02f3b00ee6 Implemented C++11 move semantics for GenericDocument 2014-10-24 02:51:17 -03:00
Zhihao Yuan
7303d92990 Disambiguate GenericValue's [0] and ["string"] 2014-10-23 21:50:39 -04:00
Zhihao Yuan
0d90bcc709 No implicit conversion from Type to GenericValue 2014-10-23 21:50:39 -04:00
Sean Leather
0e715872c0 Fix MemoryStream::Peek() and add test for fix
MemoryStream::Peek() did not return '\0' if src_ == end_, but Peek() == '\0' is
used in parsing in the GenericReader. Without this change, parsing with
MemoryStream as the InputStream could result in a segmentation fault.
2014-10-23 00:31:19 +02:00
Milo Yip
faa877ff78 Partial StrtodDiyFp implementation [ci skip] 2014-09-19 08:59:36 +08:00
TyRoXx
b9608f2cf2 turn implicit integer conversions into static_casts to avoid -Wconversion warnings 2014-09-17 20:30:19 +02:00
Milo Yip
475b242087 Minor refactoring before optimization trial 2014-09-16 19:38:18 +08:00
Milo Yip
5171775d4c Minor optimizations in BigInteger 2014-09-16 19:23:28 +08:00
Milo Yip
299e9f1e32 Added missing files 2014-09-16 18:47:35 +08:00
Philipp A. Hartmann
5117f9e555 explicitly qualify C(++) library functions
Some compilers do not export the standard C library functions
to the global namespace, in case the C++ header variants are
included (<cstdlib>, <cstring>).

RapidJSON currently uses:
 * malloc, realloc, free
 * memcpy, memmove, memset, memcpy

Add an explicit namespace qualification to avoid lookup problems.
2014-09-16 10:42:14 +02:00
Philipp A. Hartmann
c0bde81b03 rapidjson.h: explicitly import std::size_t to rapidjson namespace 2014-09-16 10:37:37 +02:00
Philipp A. Hartmann
e052c727b2 GenericValue: drop forced packing pragma 2014-09-16 10:19:40 +02:00
Milo Yip
74b81fa510 Extract classes into various files. 2014-09-16 15:23:18 +08:00
Milo Yip
4f99e25b9d Minor code cleaning 2014-09-16 15:06:44 +08:00
Milo Yip
a425ad5552 Trimming leading/trailing zeros and correct underflow case 2014-09-16 10:52:40 +08:00
miloyip
50fc3fedb2 Fix round towards even 2014-09-15 16:53:57 +08:00
miloyip
b29acfb90d Limit significand to 17 digits for fast path
Should fix gcc debug error in tranvis. May need further refactoring.
2014-09-15 15:54:15 +08:00
Milo Yip
bea4fa7f6a Remove unused BigInteger::operator+=(const BigInteger&) 2014-09-15 00:31:38 +08:00
Milo Yip
cbd7475242 Fix normal-subnormal boundary and add more boundary cases in unit tests. 2014-09-15 00:30:22 +08:00
Milo Yip
4c2128818f Add 32-bit support for custom strtod 2014-09-14 12:42:58 +08:00
Milo Yip
855da06d0f Makes gcc x64 runnable, but failed on one case. [ci skip] 2014-09-14 10:52:33 +08:00
Milo Yip
98dd0a0a64 Make custom strtod work for denormal numbers and some boundary cases [ci skip] 2014-09-13 23:24:40 +08:00
Milo Yip
4bd240abee Implementing custom strtod, fail on some cases [ci skip] 2014-09-12 23:03:20 +08:00