Release 0.5.0

This commit is contained in:
Baptiste Lepilleur 2010-03-11 21:09:07 +00:00
commit 66464f2c62
4 changed files with 44 additions and 15 deletions

1
LICENSE Normal file
View File

@ -0,0 +1 @@
The json-cpp library and this documentation are in Public Domain.

View File

@ -4,7 +4,7 @@
<a HREF="http://www.json.org/">JSON (JavaScript Object Notation)</a> <a HREF="http://www.json.org/">JSON (JavaScript Object Notation)</a>
is a lightweight data-interchange format. is a lightweight data-interchange format.
It can represents integer, real number, string, an ordered sequence of value, and It can represent integer, real number, string, an ordered sequence of value, and
a collection of name/value pairs. a collection of name/value pairs.
Here is an example of JSON data: Here is an example of JSON data:
@ -28,8 +28,16 @@ Here is an example of JSON data:
\section _features Features \section _features Features
- read and write JSON document - read and write JSON document
- attach C and C++ style comments to element during parsing
- rewrite JSON document preserving original comments - rewrite JSON document preserving original comments
Notes: Comments used to be supported in JSON but where removed for
portability (C like comments are not supported in Python). Since
comments are useful in configuration/input file, this feature was
preserved.
\section _example Code example
\code \code
Json::Value root; // will contains the root value after parsing. Json::Value root; // will contains the root value after parsing.
Json::Reader reader; Json::Reader reader;
@ -57,7 +65,7 @@ setIndentUseSpace( root["indent"].get("use_space", true).asBool() );
// ... // ...
// At application shutdown to make the new configuration document: // At application shutdown to make the new configuration document:
// Since Json::Value has implicit constructor for all value types, it is not // Since Json::Value has implicit constructor for all value types, it is not
// necessary to explicitely construct the Json::Value object: // necessary to explicitly construct the Json::Value object:
root["encoding"] = getCurrentEncoding(); root["encoding"] = getCurrentEncoding();
root["indent"]["length"] = getCurrentIndentLength(); root["indent"]["length"] = getCurrentIndentLength();
root["indent"]["use_space"] = getCurrentIndentUseSpace(); root["indent"]["use_space"] = getCurrentIndentUseSpace();
@ -75,11 +83,22 @@ std::cout << root;
\endcode \endcode
\section _plinks Build instructions \section _plinks Build instructions
The build instruction are located in the file The build instructions are located in the file
<a HREF="README.txt">README.txt</a> in the top-directory of the project. <a HREF="README.txt">README.txt</a> in the top-directory of the project.
Permanent link to the lastest revision of the file in subversion: Permanent link to the latest revision of the file in subversion:
<a HREF="http://svn.sourceforge.net/viewcvs.cgi/jsoncpp/README.txt?view=markup">lastest README.txt</a> <a HREF="http://svn.sourceforge.net/viewcvs.cgi/jsoncpp/README.txt?view=markup">latest README.txt</a>
\section _pdownload Download
The sources can be downloaded from
<a HREF="http://sourceforge.net/projects/jsoncpp/files/">SourceForge download page</a>.
The latest version of the source is available in the project's subversion repository:
<a HREF="http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/">
http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/</a>
To checkout the source, see the following
<a HREF="http://sourceforge.net/scm/?type=svn&group_id=144446">instructions</a>.
\section _plinks Project links \section _plinks Project links
- <a HREF="http://jsoncpp.sourceforge.net">json-cpp home</a> - <a HREF="http://jsoncpp.sourceforge.net">json-cpp home</a>

View File

@ -513,7 +513,7 @@ namespace Json {
Args args_; Args args_;
}; };
/** \brief Allocator to customize member name and string value memory management done by Value. /** \brief Experimental do not use: Allocator to customize member name and string value memory management done by Value.
* *
* - makeMemberName() and releaseMemberName() are called to respectively duplicate and * - makeMemberName() and releaseMemberName() are called to respectively duplicate and
* free an Json::objectValue member name. * free an Json::objectValue member name.
@ -785,7 +785,7 @@ namespace Json {
PageIndex pageCount_; PageIndex pageCount_;
}; };
/** \brief Allocator to customize Value internal array. /** \brief Experimental: do not use. Allocator to customize Value internal array.
* Below is an example of a simple implementation (actual implementation use * Below is an example of a simple implementation (actual implementation use
* memory pool). * memory pool).
\code \code
@ -873,7 +873,7 @@ public: // overridden from ValueArrayAllocator
#endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP #endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP
/** \brief Experimental and untested: base class for Value iterators. /** \brief base class for Value iterators.
* *
*/ */
class ValueIteratorBase class ValueIteratorBase
@ -943,7 +943,7 @@ public: // overridden from ValueArrayAllocator
#endif #endif
}; };
/** \brief Experimental and untested: const iterator for object and array value. /** \brief const iterator for object and array value.
* *
*/ */
class ValueConstIterator : public ValueIteratorBase class ValueConstIterator : public ValueIteratorBase
@ -1002,7 +1002,7 @@ public: // overridden from ValueArrayAllocator
}; };
/** \brief Experimental and untested: iterator for object and array value. /** \brief Iterator for object and array value.
*/ */
class ValueIterator : public ValueIteratorBase class ValueIterator : public ValueIteratorBase
{ {

View File

@ -58,7 +58,7 @@ def check_no_pending_commit():
for entry in etree.getiterator( 'entry' ): for entry in etree.getiterator( 'entry' ):
path = entry.get('path') path = entry.get('path')
status = entry.find('wc-status').get('item') status = entry.find('wc-status').get('item')
if status != 'unversioned': if status != 'unversioned' and path != 'version':
msg.append( 'File "%s" has pending change (status="%s")' % (path, status) ) msg.append( 'File "%s" has pending change (status="%s")' % (path, status) )
if msg: if msg:
msg.insert(0, 'Pending change to commit found in sandbox. Commit them first!' ) msg.insert(0, 'Pending change to commit found in sandbox. Commit them first!' )
@ -84,6 +84,11 @@ def svn_check_if_tag_exist( tag_url ):
return False return False
return True return True
def svn_commit( message ):
"""Commit the sandbox, providing the specified comment.
"""
svn_command( 'ci', '-m', message )
def svn_tag_sandbox( tag_url, message ): def svn_tag_sandbox( tag_url, message ):
"""Makes a tag based on the sandbox revisions. """Makes a tag based on the sandbox revisions.
""" """
@ -272,9 +277,10 @@ Warning: --force should only be used when developping/testing the release script
parser.enable_interspersed_args() parser.enable_interspersed_args()
options, args = parser.parse_args() options, args = parser.parse_args()
if len(args) < 1: if len(args) != 2:
parser.error( 'release_version missing on command-line.' ) parser.error( 'release_version missing on command-line.' )
release_version = args[0] release_version = args[0]
next_version = args[1]
if not options.platforms and not options.no_test: if not options.platforms and not options.no_test:
parser.error( 'You must specify either --platform or --no-test option.' ) parser.error( 'You must specify either --platform or --no-test option.' )
@ -286,6 +292,7 @@ Warning: --force should only be used when developping/testing the release script
if not msg: if not msg:
print 'Setting version to', release_version print 'Setting version to', release_version
set_version( release_version ) set_version( release_version )
svn_commit( 'Release ' + release_version )
tag_url = svn_join_url( SVN_TAG_ROOT, release_version ) tag_url = svn_join_url( SVN_TAG_ROOT, release_version )
if svn_check_if_tag_exist( tag_url ): if svn_check_if_tag_exist( tag_url ):
if options.retag_release: if options.retag_release:
@ -346,12 +353,14 @@ Warning: --force should only be used when developping/testing the release script
sourceforge_release_tarball( SOURCEFORGE_PROJECT, sourceforge_release_tarball( SOURCEFORGE_PROJECT,
[source_tarball_path, doc_tarball_path], [source_tarball_path, doc_tarball_path],
user=options.user, sftp=options.sftp ) user=options.user, sftp=options.sftp )
print 'Tarball uploaded' print 'Source and doc release tarballs uploaded'
else: else:
print 'No upload user specified. Web site and download tarbal were not uploaded.' print 'No upload user specified. Web site and download tarbal were not uploaded.'
print 'Tarball can be found at:', doc_tarball_path print 'Tarball can be found at:', doc_tarball_path
#@todo:
#upload source & doc tarballs # Set next version number and commit
set_version( next_version )
svn_commit( 'Released ' + release_version )
else: else:
sys.stderr.write( msg + '\n' ) sys.stderr.write( msg + '\n' )