- 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).

diff --git a/NEWS.txt b/NEWS.txt
index f09c71e..ae4005d 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -31,6 +31,17 @@
         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 @@
 
    /** \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 @@
     * - ".%" => 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 @@
    /** \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 @@
    /** \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 @@
 
    /** \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;