From a8afdd40af3c7799b45f432afdc9bb7d9425be31 Mon Sep 17 00:00:00 2001 From: Baptiste Lepilleur Date: Fri, 12 Apr 2013 14:10:13 +0000 Subject: [PATCH] - Patch #3393345: BOOST_FOREACH compatibility. Made Json::iterator more standard compliant, added missing iterator_category and value_type typedefs (contribued by Robert A. Iannucci). - Patch #3474563: added missing JSON_API on some classes causing link issues when building as a dynamic library on Windows (contributed by Francis Bolduc). --- NEWS.txt | 11 +++++++++++ doc/roadmap.dox | 1 + include/json/value.h | 13 ++++++++----- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/NEWS.txt b/NEWS.txt index f09c71e..ae4005d 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -31,6 +31,17 @@ New in SVN representable using an Int64, or asDouble() combined with minInt64 and maxInt64 to figure out whether it is approximately representable. +* Value + - Patch #3393345: BOOST_FOREACH compatibility. Made Json::iterator more + standard compliant, added missing iterator_category and value_type + typedefs (contribued by Robert A. Iannucci). + +* Compilation + + - Patch #3474563: added missing JSON_API on some classes causing link issues + when building as a dynamic library on Windows + (contributed by Francis Bolduc). + * Bug fixes - Patch #3539678: Copy constructor does not initialize allocated_ for stringValue (contributed by rmongia). diff --git a/doc/roadmap.dox b/doc/roadmap.dox index e6fc17a..0c29a90 100644 --- a/doc/roadmap.dox +++ b/doc/roadmap.dox @@ -2,6 +2,7 @@ \section ms_release Makes JsonCpp ready for release - Build system clean-up: - Fix build on Windows (shared-library build is broken) + - Compile and run tests using shared library on Windows to ensure no JSON_API macro is missing. - Add enable/disable flag for static and shared library build - Enhance help - Platform portability check: (Notes: was ok on last check) diff --git a/include/json/value.h b/include/json/value.h index b013c9b..6daa8d1 100644 --- a/include/json/value.h +++ b/include/json/value.h @@ -507,7 +507,7 @@ namespace Json { /** \brief Experimental and untested: represents an element of the "path" to access a node. */ - class PathArgument + class JSON_API PathArgument { public: friend class Path; @@ -540,7 +540,7 @@ namespace Json { * - ".%" => member name is provided as parameter * - ".[%]" => index is provied as parameter */ - class Path + class JSON_API Path { public: Path( const std::string &path, @@ -916,9 +916,10 @@ public: // overridden from ValueArrayAllocator /** \brief base class for Value iterators. * */ - class ValueIteratorBase + class JSON_API ValueIteratorBase { public: + typedef std::bidirectional_iterator_tag iterator_category; typedef unsigned int size_t; typedef int difference_type; typedef ValueIteratorBase SelfType; @@ -986,10 +987,11 @@ public: // overridden from ValueArrayAllocator /** \brief const iterator for object and array value. * */ - class ValueConstIterator : public ValueIteratorBase + class JSON_API ValueConstIterator : public ValueIteratorBase { friend class Value; public: + typedef const Value value_type; typedef unsigned int size_t; typedef int difference_type; typedef const Value &reference; @@ -1044,10 +1046,11 @@ public: // overridden from ValueArrayAllocator /** \brief Iterator for object and array value. */ - class ValueIterator : public ValueIteratorBase + class JSON_API ValueIterator : public ValueIteratorBase { friend class Value; public: + typedef Value value_type; typedef unsigned int size_t; typedef int difference_type; typedef Value &reference;