diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d20fb29 --- /dev/null +++ b/LICENSE @@ -0,0 +1 @@ +The json-cpp library and this documentation are in Public Domain. diff --git a/doc/jsoncpp.dox b/doc/jsoncpp.dox index fc7b530..abaac6c 100644 --- a/doc/jsoncpp.dox +++ b/doc/jsoncpp.dox @@ -4,7 +4,7 @@ JSON (JavaScript Object Notation) 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. Here is an example of JSON data: @@ -28,8 +28,16 @@ Here is an example of JSON data: \section _features Features - read and write JSON document +- attach C and C++ style comments to element during parsing - 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 Json::Value root; // will contains the root value after parsing. Json::Reader reader; @@ -57,7 +65,7 @@ setIndentUseSpace( root["indent"].get("use_space", true).asBool() ); // ... // At application shutdown to make the new configuration document: // 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["indent"]["length"] = getCurrentIndentLength(); root["indent"]["use_space"] = getCurrentIndentUseSpace(); @@ -75,11 +83,22 @@ std::cout << root; \endcode \section _plinks Build instructions -The build instruction are located in the file +The build instructions are located in the file README.txt in the top-directory of the project. -Permanent link to the lastest revision of the file in subversion: -lastest README.txt +Permanent link to the latest revision of the file in subversion: +latest README.txt + +\section _pdownload Download +The sources can be downloaded from +SourceForge download page. + +The latest version of the source is available in the project's subversion repository: + +http://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/ + +To checkout the source, see the following +instructions. \section _plinks Project links - json-cpp home diff --git a/include/json/value.h b/include/json/value.h index d575b70..58bfd88 100644 --- a/include/json/value.h +++ b/include/json/value.h @@ -513,7 +513,7 @@ namespace Json { 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 * free an Json::objectValue member name. @@ -785,7 +785,7 @@ namespace Json { 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 * memory pool). \code @@ -873,7 +873,7 @@ public: // overridden from ValueArrayAllocator #endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP - /** \brief Experimental and untested: base class for Value iterators. + /** \brief base class for Value iterators. * */ class ValueIteratorBase @@ -943,7 +943,7 @@ public: // overridden from ValueArrayAllocator #endif }; - /** \brief Experimental and untested: const iterator for object and array value. + /** \brief const iterator for object and array value. * */ 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 { diff --git a/makerelease.py b/makerelease.py index f6826c2..b760fae 100644 --- a/makerelease.py +++ b/makerelease.py @@ -58,7 +58,7 @@ def check_no_pending_commit(): for entry in etree.getiterator( 'entry' ): path = entry.get('path') 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) ) if msg: 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 True +def svn_commit( message ): + """Commit the sandbox, providing the specified comment. + """ + svn_command( 'ci', '-m', message ) + def svn_tag_sandbox( tag_url, message ): """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() options, args = parser.parse_args() - if len(args) < 1: + if len(args) != 2: parser.error( 'release_version missing on command-line.' ) release_version = args[0] + next_version = args[1] if not options.platforms and not options.no_test: 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: print 'Setting version to', release_version set_version( release_version ) + svn_commit( 'Release ' + release_version ) tag_url = svn_join_url( SVN_TAG_ROOT, release_version ) if svn_check_if_tag_exist( tag_url ): 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, [source_tarball_path, doc_tarball_path], user=options.user, sftp=options.sftp ) - print 'Tarball uploaded' + print 'Source and doc release tarballs uploaded' else: print 'No upload user specified. Web site and download tarbal were not uploaded.' 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: sys.stderr.write( msg + '\n' )