Milo Yip
808d362b88
Fix parsing numbers which are less than 1e-308
...
Overflow should check sign of exponent.
2014-07-30 23:27:17 +08:00
miloyip
a32e2ac1d0
Fix SIMD page fault by using aligned load
2014-07-29 16:05:54 +08:00
Milo Yip
e6f344637b
Merge pull request #83 from miloyip/issue75stopwhendone
...
Issue75stopwhendone
2014-07-28 18:45:06 +08:00
Milo Yip
c545895368
Merge pull request #84 from miloyip/issue79memorystreambuffer
...
Add MemoryBuffer and MemoryStream
2014-07-28 18:45:00 +08:00
Milo Yip
b60bcc2762
Add MemoryBuffer and MemoryStream
2014-07-27 19:29:57 +08:00
Milo Yip
e09b9d5c05
Merge remote-tracking branch 'origin/master' into issue75stopwhendone
2014-07-27 17:13:32 +08:00
Milo Yip
c81386413b
Add kParseStopWhenDoneFlag, its implementation and related unit tests
2014-07-27 17:10:32 +08:00
Milo Yip
2a389ad659
Merge remote-tracking branch 'origin/master' into IterativeParseOptimization
2014-07-27 15:50:16 +08:00
Milo Yip
c4ce48cde9
Merge pull request #80 from miloyip/issue31optimizeitoa
...
Issue31optimizeitoa
2014-07-27 15:49:36 +08:00
Milo Yip
857865a166
Fix parse error message
2014-07-27 00:36:23 +08:00
Milo Yip
b99a515ef2
Define RAPIDJSON_FORCEINLINE for gcc
...
Performance boost a lot!
2014-07-26 23:23:52 +08:00
Milo Yip
58e0fb89b2
In iterative parsing, always use SizeType to prevent potential alignment problem on some platforms.
2014-07-26 22:21:06 +08:00
Milo Yip
7fa194d165
Force inline some suitable functions.
2014-07-26 21:56:11 +08:00
Milo Yip
6f382fd907
Cleanup code
2014-07-26 21:51:38 +08:00
Milo Yip
e3e8fea0f3
Remove stack size limit feature
...
It is not very useful for iterative parsing as the worst case of heap
size is O(n) where n is number of character in JSON, for the worst
synthetic cases. This is reasonable and should not create stack overflow
security problem as in recursive parsing.
2014-07-26 21:40:11 +08:00
Milo Yip
89865cb919
Use lookup table for Tokenize()
2014-07-26 21:23:37 +08:00
Milo Yip
01126defd2
Make Stack::Push() force inline in normal path
2014-07-26 20:28:35 +08:00
Milo Yip
e9597255b4
Make variables in Transit() more localized
2014-07-26 19:14:07 +08:00
Milo Yip
6f1646138a
Fixes stack overflow
2014-07-25 00:59:19 +08:00
Milo Yip
86b2f51a58
Use branchlut implementation for itoa conversion.
2014-07-25 00:08:24 +08:00
thebusytypist
4a152646d9
Fix compilation error for gcc/clang.
2014-07-18 00:12:04 +08:00
Milo Yip
46eeb46a61
Implemented faster itoa with bit counting and reverse write
2014-07-17 02:26:20 +08:00
thebusytypist
fa25f93ddb
Merge remote-tracking branch 'upstream/master' into TransitionTable
2014-07-16 23:16:33 +08:00
thebusytypist
b22a89bf3f
Reduce times of stack size check; reduce transition table size.
2014-07-16 22:09:50 +08:00
miloyip
8b963dc7ad
Start benchmarking different itoa implementation
2014-07-16 19:14:00 +08:00
thebusytypist
1f53c6c041
Implement stack size limitation for iterative parsing.
2014-07-15 14:16:06 +08:00
miloyip
9974e35578
Merge conflicts and suppress VC warnings
2014-07-15 09:20:19 +08:00
Milo Yip
2d732794f0
Merge pull request #74 from miloyip/issue71endianness
...
Improves endian detection
2014-07-15 09:00:10 +08:00
thebusytypist
46e89dad0d
Add unittests for kParserErrorTermination; Fix bugs in last merge.
2014-07-15 00:51:34 +08:00
thebusytypist
d4da07c5fb
Merge upstream/master.
2014-07-14 23:49:57 +08:00
miloyip
d5218804bf
More endian detection
...
Since __BYTE_ORDER__ only avaliable since GCC 4.6.0, add more detection.
2014-07-14 14:16:34 +08:00
miloyip
065e3b1628
Do not assume little endian when detection fail, add more detections
2014-07-14 13:54:15 +08:00
Milo Yip
a37a1881a5
Fixes missing supportUnicode in AutoUTF
2014-07-14 00:03:40 +08:00
Milo Yip
b5436f7104
Add ASCII encoding which can fulfill #69
2014-07-13 23:51:56 +08:00
Milo Yip
27101d9cd1
Add API doc for Writer::Reset() and Writer::IsComplete()
2014-07-13 13:27:15 +08:00
Milo Yip
5babae98e5
Add Writer::IsComplete()
2014-07-13 13:21:25 +08:00
Milo Yip
b234007713
Fixes #66 by adding Writer::Reset() and multiple root check
...
Note it redefines RAPIDJSON_ASSERT() to throw exception in unittest and
check for assertion with gtest.
2014-07-13 13:16:03 +08:00
Milo Yip
9e3ed44e85
Suppress VS2013 warnings due to #64
2014-07-13 01:10:25 +08:00
Philipp A. Hartmann
ff5713faf0
error/en.h: fix typo, add termination string
2014-07-12 18:45:49 +02:00
Philipp A. Hartmann
c69610239a
error.h: add kParseErrorTermination (from #61 )
2014-07-12 18:44:31 +02:00
Philipp A. Hartmann
152db11ad6
Merge branch 'upstream/master' into feature/exception-support
...
Conflicts:
include/rapidjson/reader.h
2014-07-12 18:42:06 +02:00
Milo Yip
b55fcbd36a
Merge pull request #61 from miloyip/issue59terminate
...
Fixes #59 by adding bool return value for each event handler function
2014-07-12 23:42:50 +08:00
thebusytypist
3038a7855e
Revise unittests: reset the handler before the transition which we are going to test.
2014-07-11 16:03:38 +08:00
Philipp A. Hartmann
418a5829b3
update documentation of ParseResult and related functions
2014-07-11 09:39:20 +02:00
Philipp A. Hartmann
2fcb999749
add ParseResult
2014-07-11 09:39:20 +02:00
Philipp A. Hartmann
4475521177
GenericDocument: simplify error handling in ParseStream
...
* unconditionally store error state of reader after parsing
* clear stack after parsing by using a ClearStackOnExit scope guard
2014-07-11 09:39:20 +02:00
Philipp A. Hartmann
3c1d4bc21d
reader.h: prepare "early return path" for exception support
...
In case of a user-defined RAPIDJSON_PARSE_ERROR_NORETURN that throws
an exception instead of using the Rapidjson ParseError API, the early
return paths performing the stack unwinding manually can be omitted as
well.
This patch provides a customizable RAPIDJSON_PARSE_ERROR_EARLY_RETURN
macro to remove these (then unneeded) control paths from the parsing
implementation (with and without a return value).
Secondly, clearing the parse stack is moved to a small helper struct
that calls stack_.Clear() from its destructor. This avoids the need
for the 'goto' in the ParseStream function and ensures proper cleanup
even if e.g. a user-defined Allocator throws an exception.
2014-07-11 09:39:20 +02:00
Philipp A. Hartmann
b37bd85318
move ParseErrorCode to error/error.h
...
In order to enable the customization of the error macros
- RAPIDJSON_PARSE_ERROR_NORETURN
- RAPIDJSON_PARSE_ERROR_EARLY_RETURN
the user may need to have access to the ParseErrorCode enum
already. This requires a separate header location than the
GenericReader.
2014-07-11 09:39:20 +02:00
Philipp A. Hartmann
41d211cd51
GenericValue::operator= : fixup assignment operator
...
While MSVC doesn't like the explicit `.template operator=<...>` syntax
(see 4f40ed6), Clang 3.5 complains about the absence of it:
In file included from ../../test/perftest/rapidjsontest.cpp:6:
../../include/rapidjson/document.h:504:18: error: use 'template' keyword to treat 'operator =' as a dependent template name
return (*this).operator=<StringRefType>(str);
^
template
Delegate both operator=(StringRefType) and operator=(T) to operator(GenericValue&).
2014-07-11 08:27:28 +02:00
thebusytypist
36434b66c8
Merge remote-tracking branch 'upstream/master' into TransitionTable
2014-07-11 12:52:07 +08:00