Release 0.6.0-rc1

This commit is contained in:
Baptiste Lepilleur 2011-05-01 22:12:16 +00:00
parent 5349225f43
commit 3269eefd84
17 changed files with 105 additions and 33 deletions

View File

@ -13,6 +13,10 @@
Notes: you need to setup the environment by running vcvars32.bat Notes: you need to setup the environment by running vcvars32.bat
(e.g. MSVC 2008 command prompt in start menu) before running scons. (e.g. MSVC 2008 command prompt in start menu) before running scons.
- Added support for amalgated source and header generation (a la sqlite).
Refer to README.txt section "Generating amalgated source and header"
for detail.
* Value * Value
- Removed experimental ValueAllocator, it caused static - Removed experimental ValueAllocator, it caused static

View File

@ -5,8 +5,8 @@ JSON (JavaScript Object Notation) is a lightweight data-interchange format.
It can represent integer, real number, string, an ordered sequence of It can represent integer, real number, string, an ordered sequence of
value, and a collection of name/value pairs. value, and a collection of name/value pairs.
JsonCpp is a simple API to manipulate JSON value, handle serialization JsonCpp (http://jsoncpp.sourceforge.net/) is a simple API to manipulate
and unserialization to string. JSON value, handle serialization and unserialization to string.
It can also preserve existing comment in unserialization/serialization steps, It can also preserve existing comment in unserialization/serialization steps,
making it a convenient format to store user input files. making it a convenient format to store user input files.
@ -90,6 +90,39 @@ Notes that the documentation is also available for download as a tarball.
The documentation of the latest release is available online at: The documentation of the latest release is available online at:
http://jsoncpp.sourceforge.net/ http://jsoncpp.sourceforge.net/
* Generating amalgated source and header
======================================
JsonCpp is provided with a script to generate a single header and a single
source file to ease inclusion in an existing project.
The amalgated source can be generated at any time by running the following
command from the top-directory (requires python 2.6):
python amalgate.py
It is possible to specify header name. See -h options for detail. By default,
the following files are generated:
- dist/jsoncpp.cpp: source file that need to be added to your project
- dist/json/json.h: header file corresponding to use in your project. It is
equivalent to including json/json.h in non-amalgated source. This header
only depends on standard headers.
- dist/json/json-forwards.h: header the provides forward declaration
of all JsonCpp types. This typically what should be included in headers to
speed-up compilation.
The amalgated sources are generated by concatenating JsonCpp source in the
correct order and defining macro JSON_IS_AMALGATED to prevent inclusion of
other headers.
* Using json-cpp in your project:
===============================
include/ should be added to your compiler include path. jsoncpp headers
should be included as follow:
#include <json/json.h>
* Adding a reader/writer test: * Adding a reader/writer test:
============================ ============================

View File

@ -1,14 +1,4 @@
/*! \page roadmap JsonCpp roadmap /*! \page roadmap JsonCpp roadmap
\section ms_64bits Adds support for 64 bits integer
There has been many request to add support for 64 bits integer. Use case for this are:
- time is nowdays commonly represented with a 64 bits integer
- 64 bits integer are frequently used as primary key id in many systems
Plans to add support is:
- must be optional, a configuration option since not all platforms provides 64 bits integer types.
- move definition of Int and UInt from forwards.h to config.h, with the required platform magic.
- C++ defines no standard to define 64 bits integer. Rely on msvc extension, and long long type that
is widely supported.
\section ms_release Makes JsonCpp ready for release \section ms_release Makes JsonCpp ready for release
- Build system clean-up: - Build system clean-up:
- Fix build on Windows (shared-library build is broken) - Fix build on Windows (shared-library build is broken)
@ -34,7 +24,7 @@
Some typical use-case involve an application specific structure to/from a JSON document. Some typical use-case involve an application specific structure to/from a JSON document.
- Event base parser to allow unserializing a Json document directly in datastructure instead of - Event base parser to allow unserializing a Json document directly in datastructure instead of
using the intermediate Json::Value. using the intermediate Json::Value.
- "Stream" based parser to serialized a Json document without using Json::Value as input. - Stream based parser to serialized a Json document without using Json::Value as input.
- Performance oriented parser/writer: - Performance oriented parser/writer:
- Provides an event based parser. Should allow pulling & skipping events for ease of use. - Provides an event based parser. Should allow pulling & skipping events for ease of use.
- Provides a JSON document builder: fast only. - Provides a JSON document builder: fast only.

View File

@ -28,6 +28,12 @@
/// instead of C assert macro. /// instead of C assert macro.
# define JSON_USE_EXCEPTION 1 # define JSON_USE_EXCEPTION 1
/// If defined, indicates that the source file is amalgated
/// to prevent private header inclusion.
/// Remarks: it is automatically defined in the generated amalgated header.
// #define JSON_IS_AMALGATED
# ifdef JSON_IN_CPPTL # ifdef JSON_IN_CPPTL
# include <cpptl/config.h> # include <cpptl/config.h>
# ifndef JSON_USE_CPPTL # ifndef JSON_USE_CPPTL

View File

@ -6,7 +6,9 @@
#ifndef CPPTL_JSON_FEATURES_H_INCLUDED #ifndef CPPTL_JSON_FEATURES_H_INCLUDED
# define CPPTL_JSON_FEATURES_H_INCLUDED # define CPPTL_JSON_FEATURES_H_INCLUDED
#if !defined(JSON_IS_AMALGATED)
# include "forwards.h" # include "forwards.h"
#endif // if !defined(JSON_IS_AMALGATED)
namespace Json { namespace Json {

View File

@ -6,7 +6,9 @@
#ifndef JSON_FORWARDS_H_INCLUDED #ifndef JSON_FORWARDS_H_INCLUDED
# define JSON_FORWARDS_H_INCLUDED # define JSON_FORWARDS_H_INCLUDED
#if !defined(JSON_IS_AMALGATED)
# include "config.h" # include "config.h"
#endif // if !defined(JSON_IS_AMALGATED)
namespace Json { namespace Json {

View File

@ -6,8 +6,10 @@
#ifndef CPPTL_JSON_READER_H_INCLUDED #ifndef CPPTL_JSON_READER_H_INCLUDED
# define CPPTL_JSON_READER_H_INCLUDED # define CPPTL_JSON_READER_H_INCLUDED
#if !defined(JSON_IS_AMALGATED)
# include "features.h" # include "features.h"
# include "value.h" # include "value.h"
#endif // if !defined(JSON_IS_AMALGATED)
# include <deque> # include <deque>
# include <stack> # include <stack>
# include <string> # include <string>
@ -49,7 +51,9 @@ namespace Json {
bool collectComments = true ); bool collectComments = true );
/** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a> document. /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a> document.
* \param document UTF-8 encoded string containing the document to read. * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the document to read.
* \param endDoc Pointer on the end of the UTF-8 encoded string of the document to read.
\ Must be >= beginDoc.
* \param root [out] Contains the root value of the document if it was * \param root [out] Contains the root value of the document if it was
* successfully parsed. * successfully parsed.
* \param collectComments \c true to collect comment and allow writing them back during * \param collectComments \c true to collect comment and allow writing them back during

View File

@ -6,7 +6,9 @@
#ifndef CPPTL_JSON_H_INCLUDED #ifndef CPPTL_JSON_H_INCLUDED
# define CPPTL_JSON_H_INCLUDED # define CPPTL_JSON_H_INCLUDED
#if !defined(JSON_IS_AMALGATED)
# include "forwards.h" # include "forwards.h"
#endif // if !defined(JSON_IS_AMALGATED)
# include <string> # include <string>
# include <vector> # include <vector>

View File

@ -6,7 +6,9 @@
#ifndef JSON_WRITER_H_INCLUDED #ifndef JSON_WRITER_H_INCLUDED
# define JSON_WRITER_H_INCLUDED # define JSON_WRITER_H_INCLUDED
#if !defined(JSON_IS_AMALGATED)
# include "value.h" # include "value.h"
#endif // if !defined(JSON_IS_AMALGATED)
# include <vector> # include <vector>
# include <string> # include <string>
# include <iostream> # include <iostream>

View File

@ -6,7 +6,7 @@ Example of invocation (use to test the script):
python makerelease.py --platform=msvc6,msvc71,msvc80,msvc90,mingw -ublep 0.6.0 0.7.0-dev python makerelease.py --platform=msvc6,msvc71,msvc80,msvc90,mingw -ublep 0.6.0 0.7.0-dev
When testing this script: When testing this script:
python makerelease.py --force --retag --platform=msvc6,msvc71,msvc80,mingw -ublep test-0.5.0 test-0.6.0-dev python makerelease.py --force --retag --platform=msvc6,msvc71,msvc80,mingw -ublep test-0.6.0 test-0.6.1-dev
Example of invocation when doing a release: Example of invocation when doing a release:
python makerelease.py 0.5.0 0.6.0-dev python makerelease.py 0.5.0 0.6.0-dev
@ -23,6 +23,7 @@ import tempfile
import os import os
import time import time
from devtools import antglob, fixeol, tarball from devtools import antglob, fixeol, tarball
import amalgate
SVN_ROOT = 'https://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/' SVN_ROOT = 'https://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/'
SVN_TAG_ROOT = SVN_ROOT + 'tags/jsoncpp' SVN_TAG_ROOT = SVN_ROOT + 'tags/jsoncpp'
@ -322,6 +323,14 @@ Warning: --force should only be used when developping/testing the release script
print 'Generating source tarball to', source_tarball_path print 'Generating source tarball to', source_tarball_path
tarball.make_tarball( source_tarball_path, [export_dir], export_dir, prefix_dir=source_dir ) tarball.make_tarball( source_tarball_path, [export_dir], export_dir, prefix_dir=source_dir )
amalgated_tarball_path = 'dist/%s-amalgated.tar.gz' % source_dir
print 'Generating amalgated source tarball to', amalgated_tarball_path
amalgated_dir = 'dist/amalgated'
amalgate.amalgate_source( export_dir, '%s/jsoncpp.cpp' % amalgated_dir, 'json/json.h' )
amalgated_source_dir = 'jsoncpp-src-amalgated' + release_version
tarball.make_tarball( amalgated_tarball_path, [amalgated_dir],
amalgated_dir, prefix_dir=amalgated_source_dir )
# Decompress source tarball, download and install scons-local # Decompress source tarball, download and install scons-local
distcheck_dir = 'dist/distcheck' distcheck_dir = 'dist/distcheck'
distcheck_top_dir = distcheck_dir + '/' + source_dir distcheck_top_dir = distcheck_dir + '/' + source_dir

View File

@ -4,7 +4,8 @@
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
// included by json_value.cpp // included by json_value.cpp
// everything is within Json namespace
namespace Json {
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
@ -451,3 +452,5 @@ ValueInternalArray::compare( const ValueInternalArray &other ) const
} }
return 0; return 0;
} }
} // namespace Json

View File

@ -4,7 +4,8 @@
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
// included by json_value.cpp // included by json_value.cpp
// everything is within Json namespace
namespace Json {
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
@ -610,3 +611,5 @@ ValueInternalMap::distance( const IteratorState &x, const IteratorState &y )
increment( it ); increment( it );
return offset; return offset;
} }
} // namespace Json

View File

@ -3,9 +3,11 @@
// recognized in your jurisdiction. // recognized in your jurisdiction.
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
#include <json/reader.h> #if !defined(JSON_IS_AMALGATED)
#include <json/value.h> # include <json/reader.h>
#include "json_tool.h" # include <json/value.h>
# include "json_tool.h"
#endif // if !defined(JSON_IS_AMALGATED)
#include <utility> #include <utility>
#include <cstdio> #include <cstdio>
#include <cassert> #include <cassert>

View File

@ -3,9 +3,14 @@
// recognized in your jurisdiction. // recognized in your jurisdiction.
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
#if !defined(JSON_IS_AMALGATED)
# include <json/value.h>
# include <json/writer.h>
# ifndef JSON_USE_SIMPLE_INTERNAL_ALLOCATOR
# include "json_batchallocator.h"
# endif // #ifndef JSON_USE_SIMPLE_INTERNAL_ALLOCATOR
#endif // if !defined(JSON_IS_AMALGATED)
#include <iostream> #include <iostream>
#include <json/value.h>
#include <json/writer.h>
#include <utility> #include <utility>
#include <stdexcept> #include <stdexcept>
#include <cstring> #include <cstring>
@ -14,9 +19,6 @@
# include <cpptl/conststring.h> # include <cpptl/conststring.h>
#endif #endif
#include <cstddef> // size_t #include <cstddef> // size_t
#ifndef JSON_USE_SIMPLE_INTERNAL_ALLOCATOR
# include "json_batchallocator.h"
#endif // #ifndef JSON_USE_SIMPLE_INTERNAL_ALLOCATOR
#define JSON_ASSERT_UNREACHABLE assert( false ) #define JSON_ASSERT_UNREACHABLE assert( false )
#define JSON_ASSERT( condition ) assert( condition ); // @todo <= change this into an exception throw #define JSON_ASSERT( condition ) assert( condition ); // @todo <= change this into an exception throw
@ -70,6 +72,7 @@ releaseStringValue( char *value )
free( value ); free( value );
} }
} // namespace Json
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
@ -79,13 +82,16 @@ releaseStringValue( char *value )
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
#ifdef JSON_VALUE_USE_INTERNAL_MAP #if !defined(JSON_IS_AMALGATED)
# ifdef JSON_VALUE_USE_INTERNAL_MAP
# include "json_internalarray.inl" # include "json_internalarray.inl"
# include "json_internalmap.inl" # include "json_internalmap.inl"
#endif // JSON_VALUE_USE_INTERNAL_MAP # endif // JSON_VALUE_USE_INTERNAL_MAP
# include "json_valueiterator.inl" # include "json_valueiterator.inl"
#endif // if !defined(JSON_IS_AMALGATED)
namespace Json {
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////

View File

@ -4,8 +4,8 @@
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
// included by json_value.cpp // included by json_value.cpp
// everything is within Json namespace
namespace Json {
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
// ////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////
@ -295,3 +295,5 @@ ValueIterator::operator =( const SelfType &other )
copy( other ); copy( other );
return *this; return *this;
} }
} // namespace Json

View File

@ -3,8 +3,10 @@
// recognized in your jurisdiction. // recognized in your jurisdiction.
// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
#include <json/writer.h> #if !defined(JSON_IS_AMALGATED)
#include "json_tool.h" # include <json/writer.h>
# include "json_tool.h"
#endif // if !defined(JSON_IS_AMALGATED)
#include <utility> #include <utility>
#include <assert.h> #include <assert.h>
#include <stdio.h> #include <stdio.h>

View File

@ -1 +1 @@
0.6.0-dev 0.6.0-rc1