147 Commits

Author SHA1 Message Date
Philipp A. Hartmann
86c47a6a8b document.h: move inclusion of template meta functions
In order to activate the suppression of "-Weffc++" warnings in the
template meta function classes (non-virtual destructor), move the
inclusion of the meta-function header `internal/meta.h` after the
suppression pragma.
2014-07-03 14:56:43 +02:00
Philipp A. Hartmann
43737ef310 GenericValue::FindMember: return MemberEnd, if member doesn't exist 2014-07-03 14:33:56 +02:00
Philipp A. Hartmann
17a8804cf3 document.h: add GenericMemberIterator
Add dedicated class-based member iterator to prepare the switch to a
(safe) API change to return MemberEnd() from FindMember().

Pointer-based iterator can be kept by defining
RAPIDJSON_NOMEMBERITERATORCLASS. This may be useful for platforms without
a working <iterator> header.
2014-07-03 14:29:57 +02:00
Milo Yip
5a186104f4 Fixes warnings 2014-07-03 00:59:35 +08:00
miloyip
a9356c09c0 Fixes IBM XL C/C++ for AIX issue
Move rapidjson::GenericValue::Member to rapidjson::GenericMember

https://code.google.com/p/rapidjson/issues/detail?id=64
2014-06-30 19:07:58 +08:00
miloyip
389fe87cd8 Merge branch 'master' into issue23errorcode
Conflicts:
	example/condense/condense.cpp
	include/rapidjson/reader.h
	test/unittest/readertest.cpp
2014-06-30 09:44:24 +08:00
Milo Yip
1d14748bc9 Added overloaded functions for default parseFlags
Can write d.Parse(...) instead of d.Parse<0>(...)
Hope to reduce strangeness and confusion for beginner.
2014-06-29 15:03:38 +08:00
Philipp A. Hartmann
0277ebdc3c document.h: avoid casting away const
Another instance of casting away constness via C-style cast
has been missed (introduced by #20).
2014-06-27 10:27:35 +02:00
Milo Yip
3693d61f5a Add parse error codes and API for converting error code to text.
Parse errors is represented as enum type `ParseErrorCode`.
Error texts are optional for user.
Added  `GetParseError_En()` in `error/en.h`, user can localize this file
into other files. User may dynamically change the locale in runtime.
2014-06-27 01:53:56 +08:00
Philipp A. Hartmann
8bde3be116 GenericValue: add copy constructor and CopyFrom
To allow deep copying from an existing GenericValue, an
explicit "copy constructor" (with required Allocator param)
and an "CopyFrom" assignment function are added.

  Document d; Document::AllocatorType& a = d.GetAllocator();
  Value v1("foo");
  // Value v2(v1); // not allowed

  Value v2(v1,a);                             // make a copy
  RAPIDJSON_ASSERT(v1.IsString());            // v1 untouched
  d.SetArray().PushBack(v1,a).PushBack(v2,a);
  RAPIDJSON_ASSERT(v1.Empty() && v2.Empty());

  v2.CopyFrom(d,a);                           // copy whole document
  RAPIDJSON_ASSERT(d.IsArray() && d.Size());  // d untouched
  v1.SetObject().AddMember( "array", v2, a );
  d.PushBack(v1,a);

Additionally, the Handler implementation in GenericDocument is made
private again, restricting access to GenericReader and GenericValue.
2014-06-25 18:09:26 +02:00
Philipp A. Hartmann
a0e5e68fdb GenericDocument::Accept: deep-copy strings, if needed
Instead of always just shallowly referencing the potentially allocated
strings when calling the Handler::String function, request a copy in
case the string has been allocated from an Allocator before.

This is necessary to avoid double free()s of the string memory,
especially when using the Handler to create a deep copy of a Value.

The explicit comparison against '0' is done to suppress the warning
C4800 on MSVC, see pah/rapidjson#5.
2014-06-25 18:09:26 +02:00
Milo Yip
60b8c11909 Merge branch 'master' of https://github.com/miloyip/rapidjson 2014-06-25 23:57:04 +08:00
Milo Yip
ce1fece245 Use thirdparty stdint.h for Visual Studio 2014-06-25 23:40:12 +08:00
Milo Yip
f1a2c28ac7 Merge pull request #14 from pah/fixes/misc
some minor fixes
2014-06-25 23:23:12 +08:00
Milo Yip
a56a051737 Merge pull request #13 from pah/fixes/107
GenericDocument::ParseStream: make SourceEncoding optional
2014-06-25 23:23:00 +08:00
Milo Yip
87770399a1 Merge pull request #12 from pah/fixes/72
GenericDocument: forward allocator to GenericReader
2014-06-25 23:22:47 +08:00
Milo Yip
9b92a9781b Merge pull request #11 from pah/fixes/70
GenericValue: explicit constructors
2014-06-25 23:22:00 +08:00
Milo Yip
fc80636c6d Merge pull request #10 from pah/fixes/57
GenericValue: fixup construction from NumberType
2014-06-25 23:20:49 +08:00
Milo Yip
609381fc2e Fixed some clang -Weverything warnings. 2014-06-25 23:14:32 +08:00
Milo Yip
adf6629223 Fixed VC which doesn't have INT64_C()/UINT64_C macros. 2014-06-25 22:38:18 +08:00
Philipp A. Hartmann
72de00f672 GenericValue/GenericDocument: fix alloctaor/Alloactor typos
This patch fixes some misspellings of "allocator" in document.h.
Fixes the Doxygen documentation of GenericDocument as well.
2014-06-25 13:57:04 +02:00
Philipp A. Hartmann
7fb82c2528 GenericDocument::ParseStream: make SourceEncoding optional
The ParseStream() function current requires explicitly passing
the SourceEncoding parameter as explicit template argument
while the other Parse*() functions provide overloads to omit
this parameter and use the document's own encoding by default.

This patch adds the corresponding overload for ParseStream(),
enabling the simple usage again:

  rapidjson::FileStream is(fp);
  rapidjson::Document   d;
  d.ParseStream<0>(is);
2014-06-25 13:56:07 +02:00
Philipp A. Hartmann
37b3acf40c GenericDocument: forward allocator to GenericReader
Fixes http://code.google.com/p/rapidjson/issues/detail?id=72.
2014-06-25 13:56:06 +02:00
Philipp A. Hartmann
e1a97561ba GenericValue: explicit constructors
In case of overloaded functions taking either a GenericValue or another
class that can also be constructed from the same primitive types
(e.g. std::string, which can be constructed from const char*), the
overloading becomes ambiguous:

  void foo( const std::string& );
  void foo( const rapidjson::Value & );

Declaring the GenericValue constructors taking primitive types as
'explicit' avoids this problem.  This should not have any negative
side-effects, since a GenericValue can't be copied or implicitly
converted to other types.

Fixes http://code.google.com/p/rapidjson/issues/detail?id=70.
2014-06-25 13:56:06 +02:00
Philipp A. Hartmann
d4ff956b2d GenericValue: fixup construction from NumberType
Constructing an empty GenericValue with a specific Type has failed
for any kNumberType (Int, Int64, Double...) due to incomplete definition
of the corresponding default flag value.

This patch adds a new constant kNumberAnyFlag to the flags enumeration
in GenericValue to cover this case.

This fixes http://code.google.com/p/rapidjson/issues/detail?id=57
2014-06-25 13:56:06 +02:00
Milo Yip
be8433737f Fixed some clang -Weverything warnings. 2014-06-25 19:21:17 +08:00
Milo Yip
dfe201e3c1 Revert "Adds GenericDocument::ParseStream() overload to make SourceEncoding optional"
This reverts commit 84f64ba58a73a0898ad78ea239323942b63c6d51.
2014-06-25 01:06:04 +08:00
Milo Yip
84f64ba58a Adds GenericDocument::ParseStream() overload to make SourceEncoding optional
https://github.com/pah/rapidjson/commit/77e5c6b1
2014-06-24 22:22:37 +08:00
Milo Yip
02673bec74 Fixed out of bound read in FindMember() and added related new APIs
The original FindMember() may access out-of-bound of the 'const char*
name' parameter.
This commit firstly follows
f86af8c232

However, this must incur an StrLen() for name. A better API is by using
Value as the name, which provides the length of string internally. So a
set of new API are added:

operator[](const GenericValue& name)
FindMember(const GenericValue& name)
RemoveMember(const GenericValue& name)

During refactoring, it also adds an API:

RemoveMember(MemberIterator m)

which can be used for other purpose, such as removing a member while
iterating an object.

Fixes #7
2014-06-20 19:14:45 +08:00
Milo Yip
0a56e6496f GenericValue: avoid memset/memcpy(this,...)
To avoid writing outside of the current GenericValue object and to
follow the C++ standard more closely, this patch drops the
memset/memcpy(this,...) occurences in GenericValue in favour of explicit
initialisations/assignments of the data_ and flag_ members.

https://code.google.com/p/rapidjson/issues/detail?id=11
https://github.com/pah/rapidjson/commit/7475a969
2014-06-20 16:18:08 +08:00
miloyip@gmail.com
23056abad1 Added #include <new> for placement new operator.
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@105 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-16 14:33:03 +00:00
miloyip@gmail.com
47d60859d0 Additional fixes for Issue 48: incorrect return type of GetUint64()
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@89 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-15 07:16:26 +00:00
miloyip@gmail.com
90f983ced2 Fixed Issue 46: old style cast to 'void*' casts away const in document.h
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@88 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-15 03:46:14 +00:00
miloyip@gmail.com
b7d12d8ab5 Fixed Issue 48: incorrect return type of GetUint64()
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@86 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-15 03:01:17 +00:00
miloyip@gmail.com
7606d05fed Fixed Issue 45: const Value cannot be stringify
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@84 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-14 07:14:46 +00:00
miloyip@gmail.com
9b960b6b0a Fixed Issue 7: GenericValue& operator[](const Ch* name) - bug if key not found
Makes GenericValue::FindMember() public.
Added array element and object member iteration APIs in examples.

git-svn-id: https://rapidjson.googlecode.com/svn/trunk@83 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-14 07:07:06 +00:00
miloyip@gmail.com
4ee17e67b1 Fixed Issue 38: Segmentation fault with CrtAllocator
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@80 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-14 03:33:10 +00:00
miloyip@gmail.com
790b7f127c Fixed Issue 27 Default allocator is used for GenericReader in GenericDocument::ParseStream
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@77 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-14 02:53:04 +00:00
miloyip@gmail.com
9fb77b114b Fixed Issue 22 memory corruption via operator =
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@74 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-14 02:44:45 +00:00
miloyip@gmail.com
152c2eff6c Fixed Issue 41 Incorrect parsing of unsigned int number types
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@72 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-14 02:36:23 +00:00
miloyip@gmail.com
22ddf37cf0 Fixed issue 30
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@70 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-13 09:46:54 +00:00
miloyip@gmail.com
9c68ce986e Fixed a lots of vc2008/vs2010 and gcc3/4 warnings with the maximum warning level.
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@67 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-13 08:02:22 +00:00
miloyip@gmail.com
821c6ab73c Fixed Issue 44 SetStringRaw doesn't work with wchar_t
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@65 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-11-13 02:58:56 +00:00
miloyip@gmail.com
4fdd805c7d Fixed issue 18 from 0.1x branch
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@64 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-03-06 05:36:42 +00:00
miloyip@gmail.com
c008d5176b Fixed several issues (10, 11, 13, 14) from 0.1x branch
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@57 c5894555-1306-4e8d-425f-1f6f381ee07c
2012-02-19 15:42:58 +00:00
miloyip@gmail.com
a8d631fbc2 Added Transcoder for converting Encoding during parsing.
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@39 c5894555-1306-4e8d-425f-1f6f381ee07c
2011-11-28 09:30:32 +00:00
miloyip@gmail.com
8f8e905306 Initial version (0.1)
git-svn-id: https://rapidjson.googlecode.com/svn/trunk@2 c5894555-1306-4e8d-425f-1f6f381ee07c
2011-11-18 17:01:23 +00:00