64 Commits

Author SHA1 Message Date
Erik Martin
4b4f726dd8 Fix an issue with Windows x64. Including the rapidjson reader.h requires <intrin.h> to be included or _umul128 will be undefined. 2015-01-07 13:50:23 -05: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
c88cc331d5 DiyFp: avoid shadowing (closes #195) 2014-11-17 13:31:24 +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
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
ecorm
02f3b00ee6 Implemented C++11 move semantics for GenericDocument 2014-10-24 02:51:17 -03: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
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
Milo Yip
359ebc78c0 Extract conversion code to strtod.h [ci skip] 2014-09-10 23:36:09 +08:00
Philipp A. Hartmann
296c7db140 Stack: adjust growth factor
The growth factor for the `internal::Stack` helper has not been updated
together with the growth factors used in GenericValue (#130).
2014-09-09 10:49:40 +02:00
miloyip
d0f98d2da1 Fix a bug in dtoa on gcc
Discovered in https://github.com/miloyip/dtoa-benchmark/issues/1 with
assertion fail.
2014-09-07 15:20:09 +08:00
Milo Yip
bc9d7866be Merge pull request #128 from pah/feature/cxx11-move
Initial C++11 move support
2014-09-03 09:37:35 +08:00
Philipp A. Hartmann
5656078a38 detect rvalue reference support (RAPIDJSON_HAS_CXX11_RVALUE_REFS) 2014-08-31 17:32:31 +02:00
Philipp A. Hartmann
5f6967b083 meta.h: disallow direct inclusion 2014-08-31 17:32:31 +02:00
Philipp A. Hartmann
1da0784331 GenericValue: add and use IsGenericValue meta function
This commit adds an IsGenericValue meta function to match arbitrary
instantiations of the GenericValue template (or derived classes).

This meta function is used in the SFINAE-checks to avoid matching
the generic APIs (operator=,==,!=; AddMember, PushBack) for instances
of the main template.  This avoids ambiguities with the GenericValue
overloads.
2014-08-31 11:01:05 +02:00
Philipp A. Hartmann
f076faca3d meta.h: add IsBaseOf meta function
In order to match GenericValue and its derived classes for the
SFINAE-implementation of some of the operators/functions, this
meta-function matches all types equal to or derived from a given
class.  See std::is_base_of<B,D> available in C++11.

Define RAPIDJSON_HAS_CXX_TYPETRAITS to use the C++11 implementation.
2014-08-30 16:10:53 +02:00
Philipp A. Hartmann
ed282b8141 meta.h: simplify meta programming helpers
Some (older) compilers have problems with compile-time constants.
This commit simplifies the implementation of the helper classes
in order to improve compiler support, especially be removing the
need of partial template specialisation.

No functional changes.
2014-08-30 15:55:06 +02:00
Philipp A. Hartmann
b56641106b improve EN/DISABLEIF macros to support complex templated parameters 2014-08-30 12:52:36 +02:00
Milo Yip
4a2ddf8075 Add Stack::ShrinkToFit() and some refactoring.
Lazy allocation. (so Document not for parsing don't need to allocate
stack).
Remove redundant stackCapacity member variable.
2014-08-17 18:29:37 +08:00
Philipp A. Hartmann
3755470f0f BaseReaderHandler: allow overriding of Default() implementation
By adding an optional CRTP template parameter, the BaseReaderHandler
can call the "overridden" `Default()` function from the `Derived`
class.

See https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern
2014-08-11 17:15:07 +02:00
Milo Yip
0dbcc1cf2e Add license and change indents from tab to space. 2014-08-11 22:26:45 +08:00
Milo Yip
c54915297b Change CountDecimalDigit32() to simple implementation
It is simple and pure C++. And it is found in performance test that it
is even faster than the original version, due to distribution of n. But
the performance gain is not obvious in RapidJSON.
2014-08-11 00:30:31 +08:00
Milo Yip
0d915644a4 Fixed gcc effc++ warning in dtoa.h 2014-08-09 21:27:32 +08:00
Milo Yip
a7762a3453 Custom dtoa() impleemntation
Modified from Milo's Grisu2 implementation. 99.9% cases return shortest
decimal format.
2014-08-09 21:12:58 +08:00
Milo Yip
6978778884 Change double parsing with fast-path conversion
Accurate rounding in normal numerical ranges, also reduce lookup table
size.
2014-08-09 21:11:37 +08:00
Milo Yip
5e5fb7b3d8 Change UINT64_C() to RAPIDJSON_UINT64_C2()
Fix #94
2014-08-08 21:34:43 +08:00
Milo Yip
2f9544620b Add UINT64_C() macros for 64-bit integer literals in u64toa() 2014-08-01 00:25:56 +08:00