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
2014-06-25 00:04:24 +08:00
2011-11-18 17:01:23 +00:00
2011-11-18 17:01:23 +00:00

Rapidjson v0.1

Copyright (c) 2011 Milo Yip (miloyip@gmail.com)

http://code.google.com/p/rapidjson/

19 Nov 2011

1. Introduction
Rapidjson is a JSON parser and generator for C++. It was inspired by rapidxml http://rapidxml.sourceforge.net/
Rapidjson is small but complete. It supports both SAX and DOM style API. The SAX parser is only a half thousand lines of code.
Rapidjson is fast. Its performance can be comparable to strlen(). It also optionally supports SSE2/SSE4.1 for acceleration.
Rapidjson is self-contained. It does not depend on external libraries such as BOOST. It even does not depend on STL.
Rapidjson is memory friendly. Each JSON value costs exactly 16/20 bytes for 32/64-bit machines (excluding text string). By default it uses a fast memory allocator, and the parser allocates memory compactly during parsing. 

For the full features please refer to the user guide.

JSON(JavaScript Object Notation) is a light-weight data exchange format.
More information about JSON can be obtained at
http://json.org/
http://www.ietf.org/rfc/rfc4627.txt

2. Installation

Rapidjson is a header-only C++ library. Just copy the rapidjson/include/rapidjson folder to system or project's include path.

To build the tests and examples,
1. obtain premake4 http://industriousone.com/premake/download
2. Copy premake4 executable to rapidjson/build
3. Run rapidjson/build/premake.bat on Windows, rapidjson/build/premake on Linux or other platforms
4. On Windows, build the solution at rapidjson/build/vs2008/ or /vs2010/
5. On other platforms, run GNU make at rapidjson/build/gmake/ (e.g., make -f test.make config=release32, make -f example.make config=debug32)
6. On success, the executable are generated at rapidjson/bin

Description
A fast JSON parser/generator for C++ with both SAX/DOM style API
Readme 9.3 MiB
Languages
C++ 95.8%
C 2.2%
CMake 1.2%
Python 0.6%
Shell 0.2%